A library for working with Bitcoin
  • Java 99.7%
  • Kotlin 0.2%
Find a file
dependabot[bot] 9958252ba3 build.gradle: bump com.google.errorprone:error_prone_core from 2.51.0 to 2.52.0
Bumps [com.google.errorprone:error_prone_core](https://github.com/google/error-prone) from 2.51.0 to 2.52.0.
- [Release notes](https://github.com/google/error-prone/releases)
- [Commits](https://github.com/google/error-prone/compare/v2.51.0...v2.52.0)

---
updated-dependencies:
- dependency-name: com.google.errorprone:error_prone_core
  dependency-version: 2.52.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-11-05 14:59:10 +01:00
.github build-gradle.yml: add JDK 27 to Temurin build matrix 2026-10-27 19:49:38 +01:00
base build.gradle: bump org.slf4j:slf4j-api and org.slf4j:slf4j-jdk14 from 2.0.19 to 2.0.20 2026-10-26 15:51:54 +01:00
core build.gradle: bump org.slf4j:slf4j-api and org.slf4j:slf4j-jdk14 from 2.0.19 to 2.0.20 2026-10-26 15:51:54 +01:00
designdocs modular-architecture.md: split 0.18 release into two, add 0.20 2026-07-31 16:17:27 +02:00
examples build.gradle: bump org.slf4j:slf4j-api and org.slf4j:slf4j-jdk14 from 2.0.19 to 2.0.20 2026-10-26 15:51:54 +01:00
examples-kotlin build.gradle: bump org.jetbrains.kotlin.jvm from 2.4.20 to 2.4.21 2026-10-25 15:10:18 +01:00
integration-test build.gradle: bump org.slf4j:slf4j-api and org.slf4j:slf4j-jdk14 from 2.0.19 to 2.0.20 2026-10-26 15:51:54 +01:00
test-support build.gradle: bump org.jspecify:jspecify from 1.0.0 to 1.0.1 2026-07-31 14:58:23 +02:00
tools build.gradle: bump org.slf4j:slf4j-api and org.slf4j:slf4j-jdk14 from 2.0.19 to 2.0.20 2026-10-26 15:51:54 +01:00
wallettemplate build.gradle: bump org.beryx.jlink from 4.1.1 to 4.2.0 2026-11-03 22:30:51 +01:00
wallettool build.gradle: bump org.graalvm.buildtools.native from 1.1.17 to 1.1.18 2026-11-03 22:37:11 +01:00
.dockerignore build.Containerfile: reproducible reference build via containerization 2023-09-21 11:46:34 +02:00
.gitattributes Add a logo. 2013-03-01 13:59:48 +01:00
.gitignore .gitignore: ignore directory .kotlin/ 2026-01-05 10:23:35 +01:00
.gitlab-ci.yml .gitlab-ci.yml: update host of reference build from Debian bookworm to trixie 2026-10-30 22:50:59 +01:00
AUTHORS AUTHORS: update from git 2021-11-03 09:20:32 +01:00
build-scan-agree.gradle gradle.yml, graalvm.yml: enable Gradle Build Scan 2023-10-15 14:11:08 +02:00
build.Containerfile build.Containerfile: update reference build to JDK 21 from JDK 17 2026-10-31 14:31:25 +01:00
build.gradle build.gradle: bump com.google.errorprone:error_prone_core from 2.51.0 to 2.52.0 2026-11-05 14:59:10 +01:00
COPYING Initial checkin of BitCoinJ 2011-03-07 10:17:10 +00:00
README.adoc build.Containerfile: update reference build to JDK 21 from JDK 17 2026-10-31 14:31:25 +01:00
SECURITY.md SECURITY.md: add initial security policy 2026-05-05 23:39:32 +02:00
settings-debian.gradle settings-debian.gradle: allow Gradle 4.7 (forky) and 4.9 (sid) 2026-10-31 15:50:27 -07:00
settings.gradle wallettemplate: target JDK 25 2025-12-24 19:13:01 +01:00

image:https://github.com/bitcoinj/bitcoinj/workflows/Java%20CI/badge.svg[GitHub Build Status,link=https://github.com/bitcoinj/bitcoinj/actions]
image:https://gitlab.com/bitcoinj/bitcoinj/badges/master/pipeline.svg[GitLab Build Status,link=https://gitlab.com/bitcoinj/bitcoinj/-/pipelines]
image:https://coveralls.io/repos/bitcoinj/bitcoinj/badge.png?branch=master[Coverage Status,link=https://coveralls.io/r/bitcoinj/bitcoinj?branch=master]

image::https://img.shields.io/badge/chat-Join%20bitcoinj--users%20on%20Matrix-blue[Join the bitcoinj-users Matrix room, link=https://matrix.to/#/#bitcoinj-users:matrix.org]

### Welcome to bitcoinj

The bitcoinj library is a Java implementation of the Bitcoin protocol, which allows it to maintain a wallet and send/receive transactions without needing a local copy of Bitcoin Core. It comes with full documentation and some example apps showing how to use it.

### Technologies

* Java 8+ (needs Java 8 API or Android 8.0 API, compiles to Java 8 bytecode) for `base` and `core` module
* Java 17+ for `tools`, `wallettool`, `examples`
* Java 25+ for the JavaFX-based `wallettemplate`
* https://gradle.org/[Gradle]
** Gradle 9.1+ for building the whole project or
** Debian Gradle 4.4 for just the `base`, `core`, `tools`, `wallettool` and `examples` modules (see "reference build" below)
* https://github.com/google/protobuf[Google Protocol Buffers] - for use with serialization and hardware communications

### Getting started

To get started, it is best to have the latest JDK and Gradle installed. The HEAD of the `master` branch contains the latest development code and various production releases are provided on feature branches.

#### Building from the command line

Official builds are currently using JDK 17. Our GitHub Actions build and test with JDK 17, 21 and 25.

```
gradle clean build
```
The outputs are under the `build` directory.

To perform a full build _without_ unit/integration _tests_ use:
```
gradle clean assemble
```

#### Building from an IDE

Alternatively, just import the project using your IDE. http://www.jetbrains.com/idea/download/[IntelliJ] has Gradle integration built-in and has a free Community Edition. Simply use `File | New | Project from Existing Sources` and locate the `build.gradle` in the root of the cloned project source tree.

### Building and Using the Wallet Tool

The *bitcoinj* `wallettool` subproject includes a command-line Wallet Tool (`wallet-tool`) that can be used to create and manage *bitcoinj*-based wallets (both the HD keychain and SPV blockchain state.) Using `wallet-tool` on Bitcoin's test net is a great way to learn about Bitcoin and *bitcoinj*.

To build an executable shell script that runs the command-line Wallet Tool, use:
```
gradle bitcoinj-wallettool:installDist
```

You can now run the `wallet-tool` without parameters to get help on its operation:
```
./wallettool/build/install/wallet-tool/bin/wallet-tool
```

To create a test net wallet file in `~/bitcoinj/bitcoinj-test.wallet`, you would use:
```
mkdir ~/bitcoinj
```
```
./wallettool/build/install/wallet-tool/bin/wallet-tool --net=TESTNET --wallet=$HOME/bitcoinj/bitcoinj-test.wallet create
```

To sync the newly created wallet in `~/bitcoinj/bitcoinj-test.wallet` with the test net, you would use:
```
./wallettool/build/install/wallet-tool/bin/wallet-tool --net=TESTNET --wallet=$HOME/bitcoinj/bitcoinj-test.wallet sync
```

To dump the state of the wallet in `~/bitcoinj/bitcoinj-test.wallet` with the test net, you would use:
```
./wallettool/build/install/wallet-tool/bin/wallet-tool --net=TESTNET --wallet=$HOME/bitcoinj/bitcoinj-test.wallet dump
```

NOTE: These instructions are for macOS/Linux, for Windows use the `wallettool/build/install/wallet-tool/bin/wallet-tool.bat` batch file with the equivalent Windows command-line commands and options.

### Building and Running the Wallet Template

The *bitcoinj* `wallettemplate` subproject includes a template JavaFX wallet application (`bitcoinj-wallettemplate`) that can be used as a starting point for building a JavaFX-based *bitcoinj* wallet application.

To build an executable shell script that runs the wallettemplate, use:
```
gradle bitcoinj-wallettemplate:installDist
```

You can now run `bitcoinj-wallettemplate` to launch the application:
```
./wallettemplate/build/install/bitcoinj-wallettemplate/bin/bitcoinj-wallettemplate
```

 NOTE: On Windows, use `bitcoinj-wallettemplate.bat`.

You can also use `jlink` to build and run the application with a bundled JVM runtime:
```
gradle bitcoinj-wallettemplate:jlink
./wallettemplate/build/image/bin/bitcoinj-wallettemplate
```

### Building the reference build

Our reference build (which is also used for our releases) is running within a container to provide good reproducibility.
Buildah 1.39+, Podman 5.4+ and Docker (with BuildKit) are supported. We tested various combinations of host OSes
(Debian, Ubuntu, macOS, Windows+WSL) and architectures (amd64, arm64). For usage instructions see `build.Containerfile`.

This uses Debian Gradle with the `settings-debian.gradle` settings. If you happen to use Debian and have Gradle
installed from the Debian repository, you can invoke these settings directly:

```
gradle --settings-file settings-debian.gradle clean build
```

### Example applications

These are found in the `examples` module.

### Where next?

Now you are ready to https://bitcoinj.github.io/getting-started[follow the tutorial].

### Testing a SNAPSHOT build

Building apps with official releases of *bitcoinj* is covered in the https://bitcoinj.github.io/getting-started[tutorial].

If you want to develop or test your app with a https://jitpack.io[Jitpack]-powered build of the latest `master` or `release-0.17` branch of *bitcoinj* follow the dynamically-generated instructions for that branch by following the correct link.

* https://jitpack.io/#bitcoinj/bitcoinj/master-SNAPSHOT[master] branch
* https://jitpack.io/#bitcoinj/bitcoinj/release-0.17-SNAPSHOT[release-0.17] branch