<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><span style="color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); font-size: 14px;">Hello,</span><div style="color: rgb(34, 34, 34);"><span style="font-size: 14px;"><br></span></div><div style="color: rgb(34, 34, 34);"><span style="font-size: 14px;">I'm pleased to announce the release of bitcoinj 0.11, a library for writing Bitcoin applications that run on the JVM. BitcoinJ is widely used across the Bitcoin community; some users include Bitcoin Wallet for Android, MultiBit, Hive,&nbsp;<a href="https://www.blockchain.info/">blockchain.info</a>, the&nbsp;<a href="http://biteasy.com/">biteasy.com</a>&nbsp;block explorer (written in Lisp!),&nbsp;<a href="http://www.circle.com/">Circle</a>, Neo/Bee (Cypriot payment network),&nbsp;<a href="http://bitpos.me/">bitpos.me</a>,&nbsp;<a href="https://code.launchpad.net/bitcoin-app">Bitcoin Touch</a>, BlueMatt's relay network and DNS crawler, academic&nbsp;<a href="http://eprint.iacr.org/2013/837" style="color: rgb(17, 85, 204);">advanced contracts research</a>&nbsp;and more.</span></div><div style="color: rgb(34, 34, 34);"><span style="font-size: 14px;"><br></span></div><div style="color: rgb(34, 34, 34);"><span style="font-size: 14px;">The release-0.11 git tag is signed by Andreas Schildbach's GPG key. The commit hash is&nbsp;410d4547a7dd.&nbsp;<span style="background-color: rgb(255, 255, 255);">This paragraph is signed by the same Bitcoin key as with previous releases (check their release announcements to establish continuity). Additionally, this email is signed using DKIM and for the first time, a key that was ID verified by the Swiss government.</span></span></div><div style="color: rgb(34, 34, 34);"><span style="background-color: rgb(255, 255, 255); font-size: 14px;"><br></span></div><div style="color: rgb(34, 34, 34);"><span style="font-size: 14px;"><span style="background-color: rgb(255, 255, 255);">Key:&nbsp;</span>16vSNFP5Acsa6RBbjEA7QYCCRDRGXRFH4m</span></div><div style="color: rgb(34, 34, 34);"><span style="font-size: 14px;"><span style="background-color: rgb(255, 255, 255);">Signature for last paragraph:&nbsp;</span>H3DvWBqFHPxKW/cdYUdZ6OHjbq6ZtC5PHK4ebpeiE+FqTHyRLJ58BItbC0R2vo77h+DthpQigdEZ0V8ivSM7VIg=</span></div><div style="color: rgb(34, 34, 34);"><span style="font-size: 14px;"><br></span></div><div style="color: rgb(34, 34, 34);"><p style="line-height: 1.25em; max-width: 64em;"><b style="font-size: 14px;">Notable changes and new features</b></p><ul style="padding-left: 25px; max-width: 62em;"><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">Thanks to Ken Sedgwick, an implementation of&nbsp;<a href="https://en.bitcoin.it/wiki/BIP_0039" rel="nofollow" style="color: rgb(0, 0, 204);">BIP39 ("Mnemonic code for generating deterministic keys")</a>&nbsp;has been added. This is compatible with the latest Trezor implementation.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">Thanks to Mike Belshe, the wallet can now send to P2SH addresses.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">Thanks to Matt Corallo, the network layer was rewritten from scratch. It no longer depends on Netty, and it now supports both blocking and non-blocking sockets. In practice that means Java's built in support for transparent SSL and SOCKS becomes available again, which in turn means connecting via Tor is now possible. The new framework is lightweight, easy to understand and has been running a DNS seed crawler for some months now.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">Thanks to Kevin Greene, we've added some support for the BIP70 payment protocol. Wallet authors can now consume payment requests, check their signatures and submit payments with the new easy to use&nbsp;<tt style="max-width: 66em;">PaymentSession</tt>&nbsp;class. The wallet-tool command line UI has support and&nbsp;<a href="https://code.google.com/p/bitcoinj/wiki/PaymentProtocol" rel="nofollow" style="color: rgb(0, 0, 204);">an article explains how to use it</a>.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">Thanks to Miron Cuperman, the wallet can now watch arbitrary addresses and scripts. The wallet could previously watch an address as long as the public key was known. Now it's possible to watch for addresses even when the public key is not known.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">Also thanks to Miron, Bloom filtering was also improved. The system now tracks false positive rates and cleans the filter when FP rates get too high. Unfortunately, some privacy bugs in Bloom filtering remain, which could (amongst other things) allow a malicious remote peer to test whether you own a particular key.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">Thanks to Alex Taylor (<a href="http://bitpos.me/">bitpos.me</a>), a new PostgreSQL based pruning block store was added. This block store is fast, and indexes the UTXO set, allowing for fast lookup of the balance of any given address.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">A Java 8 based wallet template app is now included. The template is designed for people writing contract based applications. It provides a simple app that can be copy/pasted, which connects to the P2P network, manages a wallet, and provides a GUI that shows progress, balance, address+qrcode for receiving money and has a button that is used to empty the wallet out. It's designed to have an attractive and modern look, with tasteful animations and artwork.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">Micropayment channels got many big improvements to the API and implementation. The release in 0.10 can be seen as a beta, in this release the micropayments code has been taken for a test drive for a couple of real apps and many rough edges polished as a result.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">The default USER_THREAD executor can now be replaced, allowing a 1-line switch of all callbacks onto a thread of your choice instead of needing to override each callback, each time. This should simplify and clean up the GUI code of wallet apps significantly.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">The WalletTool&nbsp;command line app has a more convenient user interface now.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">A new DNS seed has been added. The seed is run by Christian Decker, from ETH Zurich.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">bitcoinj 0.11 will shortly be available via Maven Central. Please use the dependency verifier plugin and/or check the PGP signatures on the uploads, if you use this!</span></li></ul><p style="line-height: 1.25em; max-width: 64em;"><b style="font-size: 14px;">Smaller improvements</b></p><ul style="padding-left: 25px; max-width: 62em;"><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">We finished adding nullity annotations to the API. You should now be able to assume that any method not annotated with @Nullable won't ever return null values.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">The&nbsp;<tt style="max-width: 66em;">WalletAppKit</tt>&nbsp;got a bunch of new features and convenience APIs.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">The wallet will now create inputs with dummy signatures if the private key for an output is missing, rather than throwing an exception. You can then edit the input later to substitute in a real signature. This is useful when the signing is being done elsewhere, outside of the library.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">In full verification mode, execution of scripts (i.e. checking signatures) can now be switched off. This is useful if you trust the source of the chain and just want to calculate the UTXO set.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">The wallet risk analysis code is now pluggable, better documented and checks for finality in a more sensible way.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">Various memory usage and flow control optimisations were made to allow much larger wallets to sync on Android.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">The transaction broadcast algorithm was changed to be more robust.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">Double spend handling in the wallet was improved.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">Generated signatures now use canonical S values. This will aid a future hard-forking rule change which bans malleable signatures.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">Some fixes were made for enable usage with the Orchid Tor library. Further support for Tor is planned for future releases.</span></li></ul><p style="line-height: 1.25em; max-width: 64em;"><b style="font-size: 14px;">Notable bug fixes</b></p><ul style="padding-left: 25px; max-width: 62em;"><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">Some hard-forking full verification bugs were fixed.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">Thanks to Miron,&nbsp;<tt style="max-width: 66em;">PeerGroup</tt>&nbsp;now performs exponential backoff for peer connections, for instance if we cannot connect to them or if they disconnect us. This resolves an annoying bug in which if the library was configured with a single peer that was down, it would spin in a tight loop consuming battery.</span></li></ul><p style="line-height: 1.25em; max-width: 64em;"><b style="font-size: 14px;">API changes</b></p><ul style="padding-left: 25px; max-width: 62em;"><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">Some functionality of the Wallet class was moved into separate classes under the wallet package.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">The micropayments API and protocol changed. New clients/servers are not compatible with apps running against previous releases.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">The Wallet sendCoins/completeTx methods no longer return booleans or null to indicate failure, they now throw InsufficientMoneyException&nbsp;or a subclass if the transaction cannot be completed. The exception object typically contains information on how much money is missing.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">Some mis-named methods in the HD key derivation API were renamed.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">The&nbsp;<tt style="max-width: 66em;">WalletEventListener</tt>&nbsp;interface has an extra method for watching scripts now.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">Peer discovery classes moved under the net.discovery package</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">Any APIs that relied on Netty are now different.</span></li></ul><p style="line-height: 1.25em; max-width: 64em;"><b style="font-size: 14px;">New documentation</b></p><ul style="padding-left: 25px; max-width: 62em;"><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">An article on the networking API</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">Info on testing your apps, and how to use regtest mode to make a private Bitcoin network that allows you to mine blocks instantly.</span></li><li style="margin-bottom: 0.3em;"><span style="font-size: 14px;">A reference table showing which API's implement which Bitcoin Improvement Proposals (BIPs).</span></li></ul><p style="line-height: 1.25em; max-width: 64em;"><span style="font-size: 14px;">Please note that as I am no longer employed by Google, after 0.11 signing the Google contributor license agreement will no longer be necessary. I look forward to welcoming contributions from Andreas Schildbach now this requirement has gone away. Also, in future I plan to re-namespace the library from com.google.bitcoin to org.bitcoinj - auto-migration scripts will be provided when this is done.</span></p></div></body></html>