I'm pleased to announce the release of bitcoinj 0.9, a Java library for working with the Bitcoin protocol. Both simplified and full verification are supported. BitcoinJ has been used to create everything from end-user wallet apps to network crawlers to SatoshiDice.
To get bitcoinj 0.9, check out our source from git and then run git fetch --all; git checkout 67b187c4c4c4. This will place you on the 0.9 branch in a secure manner. The roots of trust are the announcement sent to bitcoinj-announce (which is signed by the google.comDKIM key) and the Maven page of the bitcoinj website. This paragraph is signed with the same key as the previous releases (16vSNFP5Acsa6RBbjEA7QYCCRDRGXRFH4m). In addition, the 0.9 release is signed by Andreas Schildbach (GPG key id 0x8B877A60, accessible via http://bitcoin.org/andreas_schildbach.asc) and can be verified with git tag -v 0.9 once you have his key.
Signature for the last paragraph: IEVMFkGVfE5Q7mezpNc2srdMXMkE66AEW2g7AtWa2KGa2PcK5ehqGbKPOWaL2oftcN/939VHWViMLnCKGrS3E9g=
We have a new article in the documentation library, Working with contracts. It shows how to create and use multi-signature transactions, signed by different parties, using a simple API.
New in this release
- Thanks to Matt Corallo, we now have a basic fee solver that will attach the correct (minimum) fee per kilobyte to a created transaction using the 0.8.2+ fee rules. Note that there's no attempt to minimize the size of a calculated transaction and thus fee, but some other optimisations are applied. By default bitcoinj will always attach a fee, to learn how to customise this refer to the article Working with the wallet.
- The wallet's re-org handling code was rewritten and simplified.
- A new class, WalletAppKit, simplifies the process of instantiating all the objects and files that are needed to run a basic app that can send/receive money.
- Add optional support for Pieter Wiulle's native secp256k1 implementation, which is significantly faster than Bouncy Castle.
-
Improvements to coin selection in the wallet.
- Many new functions and minor API improvements, for instance, it's now easier to tell the wallet to allow spending of unconfirmed coins.
- A new ScriptBuilder class simplifies the process of constructing various kinds of scripts.
- A new block importer tool can parse bitcoind block files and process them, which is faster than streaming them over a network connection.
-
Support for the regtest mode added by the C++ side pull req 2632. This makes app development and testing easier by eliminating the need to wait for a block.
- Many bug fixes and testing improvements.
API changes
- NetworkParameters has now been refactored into separate classes.
- Wallet extensions have been tweaked, please refer to the javadocs for details.
- Many other minor additions and changes that are mostly backwards compatible.
Known issues