What is bitcoinj?
It comes with full documentation and many large, well known Bitcoin apps and services are built on it.
- Highly optimised lightweight simplified payment verification (SPV) mode. In this mode, only a small part of the block chain is downloaded, making bitcoinj suitable for usage on constrained devices like smartphones or cheap virtual private servers.
- Experimental full verification mode, which does the same verification work as Bitcoin Core. In this mode, the unspent transaction output set (UTXO set) is calculated and, thanks to a PostgreSQL store, can be indexed into a database allowing for fast lookup of balance by address.
- A wallet class with encryption, fee calculation, multi-signing, deterministic key derivation, pluggable coin selection/coin control, extensions support and event listeners that let you stay up to date with changes in your balance.
- Support for micropayment channels that let you set up a multi-signature contract between client and server, and then negotiate on the channel, allowing fast micropayments that avoid miner fees.
- Provides both async and thread-per-connection for network IO, allowing you to choose between scalability and blocking-only features like SOCKS proxying.
- Easily implement apps that use Bitcoin’s contracts features.
- A simple GUI wallet app that you can use as the basis for your own apps. Watch or read a tutorial on how to customise it and build a native installer that does not require Java.
- Command line tools for working with wallet and chain files, the payment protocol, the network and more.
- Strong Bitcoin standards support.
- A friendly and helpful community!
Read the API documentation: 0.15.7 API documentation
There are also some more in depth articles covering various topics. For best understanding, read them in order.
- Limitations and missing features
- Understanding the bitcoinj security model
- Working with bitcoinj – basic patterns and things you should know
- How the different components of your app fit together
- How to test your software
Core APIs in depth
- Working with transactions
- Working with the wallet, which covers:
- Setting one up
- Receiving and sending money
- Crafting custom transactions and contracts
- Balances, coin selection and how to customise
- Wallet maintenance
- Encryption and passwords
- Watching/following wallets
- Multisig/married wallets and pluggable transaction signing
- Connecting the wallet to an external unspent outputs store e.g. for web wallets
- Working with monetary amounts
- How to use the network API
- Video tutorial: how to make a simple GUI wallet using the wallet template app
- Video tutorial: how to build and bundle a document timestamping contracts app in under 30 minutes
- API contexts
- How to use the experimental fully verifying mode
- Working with contracts
- Working with the BIP70 payment protocol
- Working with micropayment channels
- Information on block chain synchronisation optimisations
- Coding conventions in the library itself
You can read the release notes for each release starting from 0.3.
- View bitcoinj on Github – make sure to
- Ask questions and discuss improvements on the mailing list
- Search and report issues on the Issues Data Base (to ask for help please use the mailing list, not the Issues DB)
- Join our IRC channel, #bitcoinj on freenode.