bitcoinj.github.io - release notes









Search Preview

Release notes

bitcoinj.github.io
Introduction Getting started Documentation Community Release notes Version 0.15 Version 0.14.7 Version 0.14
.io > bitcoinj.github.io

SEO audit: Content analysis

Language Error! No language localisation is found.
Title Release notes
Text / HTML ratio 80 %
Frame Excellent! The website does not use iFrame solutions.
Flash Excellent! The website does not have any flash contents.
Keywords cloud Version wallet transactions API release bug transaction added block code fix wallets network support app longer set fixes fee key
Keywords consistency
Keyword Content Title Description Headings
Version 74
wallet 68
transactions 40
API 38
release 32
bug 32
Headings
H1 H2 H3 H4 H5 H6
1 37 0 0 0 0
Images We found 1 images on this web page.

SEO Keywords (Single)

Keyword Occurrence Density
Version 74 3.70 %
wallet 68 3.40 %
transactions 40 2.00 %
API 38 1.90 %
release 32 1.60 %
bug 32 1.60 %
transaction 30 1.50 %
added 29 1.45 %
block 28 1.40 %
code 25 1.25 %
fix 25 1.25 %
wallets 23 1.15 %
network 22 1.10 %
support 21 1.05 %
app 20 1.00 %
longer 19 0.95 %
set 19 0.95 %
fixes 18 0.90 %
fee 18 0.90 %
key 18 0.90 %

SEO Keywords (Two Word)

Keyword Occurrence Density
Thanks to 35 1.75 %
has been 34 1.70 %
is now 33 1.65 %
the wallet 32 1.60 %
of the 30 1.50 %
This is 28 1.40 %
to the 28 1.40 %
is a 24 1.20 %
can now 23 1.15 %
A new 20 1.00 %
for the 19 0.95 %
no longer 19 0.95 %
are now 18 0.90 %
in the 17 0.85 %
can be 17 0.85 %
a bug 16 0.80 %
bug fix 16 0.80 %
fix maintenance 16 0.80 %
maintenance release 16 0.80 %
with the 15 0.75 %

SEO Keywords (Three Word)

Keyword Occurrence Density Possible Spam
This is a 19 0.95 % No
fix maintenance release 16 0.80 % No
bug fix maintenance 16 0.80 % No
is a bug 16 0.80 % No
a bug fix 16 0.80 % No
has been added 11 0.55 % No
how to use 7 0.35 % No
You can now 7 0.35 % No
allows you to 6 0.30 % No
in this release 6 0.30 % No
can now be 6 0.30 % No
to Matt Corallo 5 0.25 % No
This is useful 5 0.25 % No
Thanks to Matt 5 0.25 % No
bug fixes Version 5 0.25 % No
is now a 5 0.25 % No
now has a 4 0.20 % No
now returns a 4 0.20 % No
the UTXO set 4 0.20 % No
shows how to 4 0.20 % No

SEO Keywords (Four Word)

Keyword Occurrence Density Possible Spam
a bug fix maintenance 16 0.80 % No
bug fix maintenance release 16 0.80 % No
This is a bug 16 0.80 % No
is a bug fix 16 0.80 % No
Thanks to Matt Corallo 5 0.25 % No
has been renamed to 3 0.15 % No
block store has been 3 0.15 % No
been moved to the 3 0.15 % No
showing how to use 2 0.10 % No
is now support for 2 0.10 % No
maintenance release Fixed a 2 0.10 % No
fix maintenance release Fixed 2 0.10 % No
set the creation time 2 0.10 % No
Thanks to Jarl Fransson 2 0.10 % No
network layer was rewritten 2 0.10 % No
class has been renamed 2 0.10 % No
been replaced with the 2 0.10 % No
replaced with the more 2 0.10 % No
is a bugfix release 2 0.10 % No
This is a bugfix 2 0.10 % No

Internal links in - bitcoinj.github.io

Watch or read a tutorial
Building a simple GUI wallet tutorial
Bitcoin standards
Which BIPs are supported by bitcoinj
use Maven
How to depend on bitcoinj with Maven using projects
use Gradle
How to depend on bitcoinj with Gradle using projects
Getting started
An introduction to using the library
0.14.7 API documentation
bitcoinj 0.14.7 API
Limitations and missing features
Limitations and missing features.
Understanding the bitcoinj security model
Understanding the bitcoinj security model
Working with bitcoinj
Working with bitcoinj
How the different components of your app fit together
How the different components of your app fit together
How to test your software
How to test applications
Working with transactions
Working with transactions
Working with the wallet
Working with the wallet
Working with monetary amounts
Working with monetary amounts
How to use the network API and info about Tor support
How to handle networking/peer APIs
API contexts
API Contexts
How to use the experimental fully verifying mode
Using the experimental full verification mode
Working with contracts
Working with contracts
Working with the BIP70 payment protocol
Working with the BIP70 payment protocol API
Working with micropayment channels
Working with micropayment channels
Using bitcoinj from other languages like C++, JavaScript, Ruby, Python, etc
How to access bitcoinj from other languages
Coding conventions in the library itself
Coding conventions in bitcoinj
release notes
Release notes

Bitcoinj.github.io Spined HTML


Release notes Introduction Getting started Documentation Community Release notes Version 0.15 Version 0.14.7 Version 0.14.6 Version 0.14.5 Version 0.14.4 Version 0.14.3 Version 0.14.2 Version 0.14.1 Version 0.14 Version 0.13.6 Version 0.13.5 Version 0.13.4 Version 0.13.3 Version 0.13.2 Version 0.13.1 Version 0.13 Version 0.12.3 Version 0.12.2 Version 0.12.1 Version 0.12 Version 0.11.3 Version 0.11.2 Version 0.11.1 Version 0.11 Version 0.10.3 Version 0.10.2 Version 0.10.1 Version 0.10 Version 0.9 Version 0.8 Version 0.7.1 Version 0.7 Version 0.6 Version 0.5 Version 0.4.1 Version 0.4 Version 0.3 Release notes Version 0.15 This version is not yet released and corresponds to changes in git master Version 0.14.7 This is a bug fix / maintenance release: Fix DoS vector in Transaction. New WalletFiles.getWallet() for getting the wallet that is managed by the WalletFiles. Bugfixes with autosaving wallet without shutdown.Flipsidecontext propagation fix. Version 0.14.6 This is a bug fix / maintenance release: New methods Transaction.hasRelativeLockTime() and TransactionInput.hasRelativeLockTime(). DefaultRiskAnalysis looks at version 2 transactions increasingly closely and dislikes only those which have a relative lock time set. Fix minimal number encoding in scripts for -1. This could lead to elapsed confirmation for the unauthentic transactions. Fix base58 representation of DumpedPrivateKey for the specimen where the key is compressed. Slash minimum fee by factor 5 to 1000 satoshis. Version 0.14.5 This is a bug fix / maintenance release: Disconnects from incompatible peers much quicker. Version 0.14.4 This is a bug fix / maintenance release:Stock-stilla protobuf wallet self-indulgence if a transaction version 2 is received and widow to the wallet. Version 0.14.3 This is a bug fix / maintenance release:Stock-stilla crash when dissemination unconfirmed transactions without two estranged transactions were received. The OP_RETURN limit was doubled to indulge 80 bytes. Version 0.14.2 This is a bug fix / maintenance release: Fixes a rare occurence of wrong wastefulness calculation. Misc other bug fixes. Version 0.14.1 This is a bug fix / maintenance release: There are no lawmaking changes. The quick followup release in order to get all binaries deployed to Maven Central. Version 0.14 Thanks to Ross Nicoll, BIP 34 (height in coinbase) is now supported and enforced in fully verifying mode. The Wallet lawmaking has been optimised again. The Travis build now runs on their new container-based infrastructure and skips tests that require the network. The concept of lazy parsing of the Message hierarchy has been removed.Woodcutstores: All database backed woodcut stores now expect lowercase post names (if their database engines care). There is a new LevelDBFullPrunedBlockStore! The H2FullPrunedBlockStore constructor now accepts database credentials. Tools: The BuildCheckpoints tool now takes a couple of options (e.g. the desired network).Moreoversee the –help option. Wallet-tool now can set the megacosm time of wallets, both retroactively and when creating a read-only wallet from an xpub. Wallet-tool moreover now uses checkpoints to speed up the blockchain sync. Thanks to Oscar Guindzberg, the wallet now supports double spend forwarding. Two pending transactions double spending each other will be moved into the IN_CONFLICT state until the mismatch is resolved. Fee related changes: There is no “base fee” any more. All fees are to be specified as a fee rate (fee per kB). Fee is calculated on byte precision (rather than kB). Still all fee rates are per kB. The cent rule is removed. The REFERENCE_DEFAULT_MIN_TX_FEE is now 5000 satoshis, and thus MIN_NONDUST_OUTPUT is now 2730 satoshis. A new Transaction.DEFAULT_TX_FEE unvarying is used for the default fee rate. The pull-tester tool (BitcoindComparisonTool) isn’t packaged into pull-tests.jar any more. Many misc cleanups and bug fixes. There is a new HTTP seed misogynist for the main network. The wrappers for the native ECDSA implementation have been updated for the latest libsecp256k1. API changes: Event listener APIs (for example on peer, peer group and wallet) are split into single-method interfaces, enabling easy use from languages that support lambda functions. The old functions and interfaces are still misogynist but deprecated. This transpiration to separate interfaces for each event ways new events can be widow without breaking existing code.ForgeAPI: New method aliases to vivify operator overloading support in Kotlin. No chain-specifc limit of its value any more. The inherent long limit still applies though. ProtobufParser, StreamParser and friends have been renamed to ProtobufConnection, StreamConnection etc to largest reflect what they unquestionably do. Checkpoints: CheckpointManager now exposes a openStream(NetworkParameters) method to get an InputStream to the bundled checkpoints. The bundled checkpoints are now text bases, for easier audit. The binary format is still supported though. Transaction.Purpose has a new value RAISE_FEE to indicate transactions that are simply meant to raise the fee of a previous transaction. The VersionChecksummedBytes hierarchy now has a resulting fromBase58/toBase58 API. These classes don’t support Java serialization any more: ECKey, DeterministicKey, NetworkParameters, Block, StoredBlock, StoredUndoableBlock, TransactionConfidence, UTXO, DeterministicHierarchy, MemoryFullPrunedBlockStore, KeyCrypterScrypt, Wallet and the unshortened Message hierarchy. Context now has a strict mode. If enabled, it throw if a Context is needed but doesn’t exist. Improvements to message serialization: A worldwide MessageSerializer interface has been extracted from BitcoinSerializer so that other implementations can be plugged. Support for variable length woodcut headers has been added. There is now a specific ChainFileLockedException if a lock on a woodcut store file could not be acquired. AddressFormatException is now unchecked.Largestsupport for services in the seeds: PeerDiscovery.getPeers() now requires a services bitmask, which is used when querying HTTP seeds. A new MultiplexingDiscovery forServices() returns an towardly MultiplexingDiscovery. PeerGroup can be told to connect only to peers that serve specific services with a new PeerGroup.setRequiredServices(). A new WalletProtobufSerializer.readWallet() variant allows to load a wallet without loading its transactions. This is useful if you were going to reset it anyway. A new PeerGroup.setPeerDiscoveryTimeoutMillis() allows to set the peer discovery timeout. Protocol versions needed for specific features are now stored in the NetworkParameters. A couple of new Block.isBIP() variants tell if a woodcut conforms to a specific BIP. Payment channels: Thanks to Will Shackleton, there is now support for modern CLTV-based payment channels! StoredPaymentChannelServerStates.getChannelMap() exposes a reprinting of the waterworks map. The whole org.bitcoinj.testing package has been moved to the test classpath. A new BitcoinURI.convertToBitcoinURI() variant allows to generate URIs for non-Bitcoin networks. Wallet/SendRequest/Transaction improvements: All wallet related classes have been moved to the org.bitcoinj.wallet package! New Wallet.isConsistentOrThrow(), a variant of .isConsistent() that throws an exception describing the inconsistency. New statistical methods in Wallet: getTotalReceived() and getTotalSent(). There is now a TransactionInput.clearScriptBytes(). New TransactionOutput.isDust() to determine if a transaction containing that output is relayable. TransactionInput.isOptInFullRBF() and Transaction.isOptInFullRBF() tell if a transactions opt into stuff replaced. DefaultRiskAnalysis uses this to evaluate these transactions as risky. Moved Transaction.isConsistent() to Wallet.isTxConsistent(). Wallet.getChangeAddress() is now tabbed .currentChangeAddress().WidowTransactionConfidence.lastBroadcastedAt, the time a transaction was last spoken to us. Renamed Wallet.doesAcceptRiskyTransactions() to .isAcceptRiskyTransactions(). SendRequest is now a top level class. New SendRequest.childPaysForParent() method to construct a CPFP transaction. Peer: The initial handshake now needs to well-constructed both directions for the protocol to continue. Wallet.getDownloadData() was renamed to .isDownloadData(). Wallet.getDownloadTxDependencies() was renamed to .isDownloadTxDependencies(). A maximum recusion level when requesting dependent transactions can be configured with .setDownloadTxDependencies(). Wallet.getKeyRotationTime() will now return null if left unconfigured. Version 0.13.6 This is a bug fix / maintenance release: Fix protobuf serialization of large sequence numbers. Wallet: Fix bug in cleanup() that sometimes would put foreign outputs in myUnspents when disconnecting. This wrongly increases the balance. Version 0.13.5 This is a bug fix / maintenance release: Evaluate incoming RBF transactions as risky. The “max coins” checks have reverted a bit: Previously a wallet could be rendered inconsistent by receiving a few transactions that add up to a wastefulness higher than max coins. Now, this state is unliable while the obviously fake transactions will go sufferer at some time. Note a single transaction with a value higher than max coins is still invalid. Version 0.13.4 This is a bug fix / maintenance release: Adjusts the minimum network fee to the one imposed by Bitcoin Core. Peer dicovery timeout is now configurable via a new method PeerGroup.setPeerDiscoveryTimeoutMillis(). Those using an SQL woodcut store need to migrate their schema to use lower specimen post names only. Version 0.13.3 This is a bug fix / maintenance release: Handle the “high/low S signature component” malleability. Version 0.13.2 This is a bug fix / maintenance release: Some bugs/regressions were fixed. Version 0.13.1 This is a bug fix / maintenance release: There are no lawmaking changes. The quick followup release in order to get all binaries deployed to Maven Central. Version 0.13 From most to least notable: Major performance improvements:Unitingsync is now faster Much faster handling of large wallets, expressly on Android. Tor bootstrap is significantly faster, and is now just a couple of seconds on desktops once the local caches are warm. This takes us one step closer to Tor-by-default. Thanks to Kalpesh Parmar: A MySQL woodcut store has been added, it has the same full-length as the PostgreSQL woodcut store (can alphabetize the UTXO set and do wastefulness queries for wrong-headed addresses) The Wallet matriculation can now be unfluctuating to a UTXO database such as those created by the MySQL or Postgres woodcut stores (or a remote woodcut explorer). Unspent transaction outputs will be fetched from the given UTXOProvider for the purposes of creating spends and gingerly the balance. Combined with the HD wallet support this allows for server side wallets with much higher scalability than previously possible. A LevelDB SPV woodcut store has been added. It doesn’t store the UTXO set or woodcut contents, but lets you quickly squint up any woodcut header by hash, if you need that. Checkpoints have now been integrated into the WalletAppKit matriculation so you don’t need to set them up manually any increasingly when using the JAR. Dalvik/Android users still must do it themselves, as classes.dex files cannot contain embedded files. PeerGroup now implements a stalled peer detector: peers that are serving us the uniting slower than a configurable bytes/second threshold will be shredded and uniting download will restart from another. The defaults are chosen conservatively so only peers that can’t filter >20 blocks per second will trigger a stall. There is now support for HTTP seeds using the Cartographer protocol, which gives signed and thus auditable results. Support for the getutxos message specified in BIP 65 has been added. Some improvements to the WalletTemplate app. You can now send any value out, and password scrypt hashing strength version was improved. Tor tweaks: Track directory validity changes: turtles has been replaced by longclaw. A workaround for thread safety bugs in some Linux glibc’s has been added, which resolves a segfault that could occur when trying to use Tor. A new Context matriculation has been introduced. Using Context is optional currently but will over time replace NetworkParameters in most cases as the unstipulated global object. A Context will be created and propagated between threads automatically for you in the 0.13 release as a backwards compatibility aid: however it is recommended that you create a Context yourself and pass it into cadre objects like Wallet and PeerGroup when possible to make the transition easier. In future, Context will hold various shit of configuration and global state that variegated parts of the library can use, to reduce repetitive re-configuration and wiring. MarriedKeyChain can now be synthetic with a watching key. Thanks to Jarl Fransson, the payment channels library now has support for encrypted wallets. TransactionBroadcast has been improved and now recognises network rejection via the reject message much increasingly reliably. Default number of peers has been bumped to 12 from 4 to stave issues with flaky transaction broadcasts. Most wallet apps once have a similar transpiration at the app level already. Thanks to Mike Rosseel, peer discovery now works differently: peers handed when by a PeerDiscovery implementation are used in order and discoverers will be polled until a configurable max is reached, rather than stopping as soon as any discoverer returns peers. The LinuxSecureRandom matriculation that works virtually the Android random number generator faults has been integrated with bitcoinj and will be used automatically when appropriate. LinuxSecureRandom just reads entropy from /dev/urandom and bypasses the buggy userspace RNGs that all Android devices have shipped with. This transpiration should help stave issues with new Android developers that aren’t branching existing wallets and haven’t heard well-nigh the problems well-expressed the platform. Thanks to Matt Corallo and Dave Collins, there are many improvements to the woodcut tester. References to prodnet have all been replaced with the increasingly standard “main net” terminology. Thanks to Amichai Rothman for many lawmaking cleanups. Many, many bug fixes, small tweaks and new APIs, increasingly API sanity checks and so on. API changes: The wallet.getBalance() undeniability now returns the wastefulness including watched addresses/outputs. To exclude watched outputs you should use wallet.getBalance(BalanceType.AVAILABLE_SPENDABLE) (or ESTIMATED_SPENDABLE to include immature coinbases and unconfirmed transactions). If you were previously using wallet.getWatchedBalance() this is now a deprecated alias. The Script constructor no longer sets the megacosm time to the current time. If you’re subtracting scripts to the wallet via wallet.addWatchedScript() then you should take superintendency to set the megacosm time to something sensible and towardly for your app, as otherwise you may end up with a wallet that has a megacosm time of zero meaning it will never use the checkpointing optimisation (as it doesn’t know when the script might towards in the chain). You will see a log warning if you forget to do this. PeerEventListener has a new onPeersDiscovered event and the onBlocksDownloaded event now receives FilteredBlock objects whenViridityfiltering is enabled. This allows apps to use the Merkle proofs calculated by remote peers for their own ends. The PeerFilterProvider interface has replaced the getLock method with begin/end methods. Changes to the TransactionConfidence API: The getBroadcastBy() method now returns a set instead of an iterator. Thanks to a collaboration with devrandom, conviction objects are no longer owned by Transaction objects: two variegated Transaction objects that represent the same logical transaction (i.e. same hash) will return the same conviction object from their getConfidence() methods. This eliminates bugs that could occur in previous versions if you ended up with the same transaction deserialized twice. Additionally conviction objects now pin themselves to the root object set when a listener is widow to them, thus lamister a worldwide matriculation of bugs in which a transaction is received from a network event listener, flipside listener is widow to the conviction object and then it never runs considering the unshortened object hierarchy gets garbage collected. These changes should be transparent to your app; they are here to remove sharp corners from the API and enable future scalability improvements. As part of the previous transpiration the MemoryPool matriculation has been renamed to TxConfidenceTable and has a significantly variegated internal implementation and API. It is unlikely you were directly using this class, but if you were you may need to transmute your code. PeerGroup.broadcastTransaction now returns a TransactionBroadcast object instead of a future: you can fix your lawmaking by just subtracting a .future() undeniability on the result. DownloadListener has been renamed to DownloadProgressTracker PeerGroup.addPeerFilterProvider and ClientConnectionManager.openConnection now return futures instead of nothing. PeerGroup no longer implements the Guava service interface. It has its own start/startAsync and stop/stopAsync methods. You no longer need to undeniability awaitRunning() or awaitTerminated() which have been removed. The PeerGroup lock is no longer held whilst invokingViridityfilter providers: this helps you to stave circular deadlock when calling when into bitcoinj from inside your provider. Thanks to Jarl Fransson, when deserializing a wallet the lock order is now unchangingly wallet->extension. Coin.parseCoin() now throws IllegalArgumentException instead of ArithmeticException if the given string would result in unperformed satoshis. Version 0.12.3 This is a bug fix / maintenance release: New Wallet APIs: Wallet.reset() to prepare the wallet for a blockchain replay Wallet.getIssuedReceiveKeys()/getIssuesReceiveAddresses() for knowing the derived keys/addresses. Syncing the blockchain on Android devices should be approximately twice as fast with large wallets. Also, loading wallets is considerably quicker. Misc small bug fixes. Version 0.12.2 This is a bug fix / maintenance release: Various fixes to wallet/keychain locking which commonly caused deadlocks. In some cases, up-and-coming the current write wasn’t persisted, resulting in re-use of addresses. This is now fixed.Largestsupport for OP_RETURN: Anti-dust rules do not apply, and we now can build these scripts using ScriptBuilder. Tor directory authorities: switch out turtles for longclaw to track upstream changes. Misc small bug fixes. Version 0.12.1 This is a bug fix / maintenance release: 10x fee waif by default. Fixes to key rotation. HD upgrades now take place using keys past the rotation time regardless of whether the rotation full-length is enabled. HD villenage can be rotated to new HD villenage based on non-rotating random keys. Updates and new docs for the wallet maintenance API. A small bugfix to micropayment channels. Don’t try IPv6 peers then if the first IPv6 struggle fails with “no route to host” Narrow the wallet lock to indulge faster/lower latency wangle to the key uniting and methods that use it. Misc other bug fixes. Version 0.12 Privacy enhancements: Wallets are now hierarchical and deterministic (HD) by default, using the BIP32 specification. Support for mnemonic codes (BIP 39) is moreover included.Transpirationand receive addresses are no longer stuff reused. Old wallets are upgraded in place using the private key of the oldest non-rotating key as the seed bytes, so old backups remain valid. Thanks to devrandom, we have an integrated Tor mode using the Orchid library. The user does not have to install the Tor vendee as it’s all pure Java. WalletAppKit users can enable usage of Tor with a single line of code. This support should be considered experimental for now. Thanks to Kosta Korenkov, we have an experimental multisig wallets implementation. Multisig (also “married”) wallets are HD wallets that are unfluctuating to a third party risk wringer service or device. When married, the wallet tracks multiple BIP32 key trees, keeps them in sync and starts vending P2SH addresses. As part of this work, transaction signing is now pluggable. TransactionSigner implementations can be widow to the wallet and will be serialized into and out of the users saved wallet file. Signers are given a transaction to sign in sequence. This is intended for risk wringer providers to provide a matriculation that talks to their server to get a signature of the right form, so that all bitcoinj based wallets can be hands upgraded to support the new provider. Reject messages are now deserialized and logged, though not yet exposed in the API. Upgraded to Guava 16 andUproariousCastle 1.51. Thanks to Peter Dettman and the rest of theUproariousCastle team, bitcoinj now uses deterministic ECDSA for signing and we’re now using an velocious secp256k1 implementation that exploits the special properties of this curve, for dramatically faster calculations. Payment protocol lawmaking improvements: Some X.509 utility lawmaking was refactored out of PaymentSession for unstipulated usage. StartCom was widow to the default trust store which was promoted to override the system trust store on non-Android platforms. A writ line tool to dump requests to stdout was added. Thanks to Andreas Schildbach: We are now BIP62 (canonical push encodings) compliant. A newForgematriculation replaces usage of BigInteger for marking values that are quantities of bitcoin. Formatting has moved into the new MonetaryFormat class. The wallet now saves the fee paid on transactions we calculated ourselves. This is useful for putting it into a wallet user interface. Transactions can have user memos and mart rates attached, that will be saved by the wallet. Support for decrypting BIP 38 protected private keys has been added. Checkpoints can now be stored textually as well as in the old binary format. There is moreover a new BtcFormat API that provides an volitional to MonetaryFormat that plugs in to the java.text framework.Widownew DNS seed from Addy Yeow. Wallets can now have string->byte[] mappings tying to them, for lighter weight extensions. Thanks to Richard Green, there is now a Python version of the ForwardingService program from the getting started tutorial. This shows how to use bitcoinj from Python using the Jython interpreter. bitcoinj now probes localhost for a Bitcoin node and automatically uses that instead of the P2P network, when present. This ways any bitcoinj based app can be hands upgraded from SPV to full security just by runningCadreat the same time: no setup needed. Thanks to Michael Bumann, there are now increasingly example apps showing how to use parts of the API. WalletTemplate/WalletAppKit improvements. WalletTemplate is a demo app that shows how to create a cross-platform GUI wallet with a modern style and 60fps animations. WalletAppKit is a very upper level API for creating apps that have a Bitcoin wallet: Now supports mnemonic lawmaking and restore from seed words. A stage picker is provided to cut lanugo on the value of uniting that needs to be rescanned. Support for encrypting wallets. Password is requested when needed. The difficulty of the scrypt function is selected to unchangingly take a stock-still number of seconds plane if hardware gets increasingly powerful. Some new volatility and utility lawmaking backported from Lighthouse. Tor support Thanks to Martin Zachrison, the micropayment channels implementation has received various improvements. Thanks to Eric Tierney (Circle), the Postgres store can now take a custom schema. TheViridityfiltering API has been extended so FilteredBlock objects can now be produced fromWoodcutobjects given a BloomFilter. Previously there was support for client-sideViridityusage but no implementation of the generation part. Many other bugfixes, cleanups, minor tweaks and small new APIs. Documentation and tutorials: A JavaScript tutorial has been added, showing how to use bitcoinj from this language.Increasinglytutorials in other languages will come in future. The “Working with the wallet” document has been significantly extended to imbricate encryption, watching wallets, HD wallets and multisig/married wallets. A new document and twin screencast shows how to proffer the WalletTemplate app to have a transactions list, and then make a native/bundled packages that don’t need the user to install Java. By pursuit this tutorial you will learn how to make a vital navigate platform desktop wallet of your own. All other docs were refreshed to the latest APIs. API changes: The package name has reverted to org.bitcoinj and the cadre Maven fabrication name is now “bitcoinj-core”. You can auto-port most of your lawmaking by running find . -name '*.java' | xargs sed -i .bak 's/com.google.bitcoin./org.bitcoinj./g' Wallet.completeTx now throws increasingly precise unchecked exceptions in whet cases, instead of IllegalArgumentException. The use of BigInteger to represent quantities of Bitcoin has been replaced with the increasingly efficient, type unscratched and useful matriculation Coin.Forgeis mostly source uniform with BigInteger so you can probably just do a search and replace to update your codebase. Utils.bitcoinValueToFriendlyString and friends moved to CoinFormat. NetworkParameters.getProofOfWorkLimit was renamed to getMaxTarget for consistency with other Bitcoin codebases. The library no longer uses the misleading term “nanocoins” to midpoint satoshis (the old term predated the use of the word satoshi to describe the smallest possible value of bitcoin). TransactionConfidence no longer tracks total work done.Consideringoutputs are now shuffled any lawmaking during that assumes the ordering is preserved will break. You can set the shuffleOutputs field of SendRequest to false to disable this behaviour if you need to. The ECKey and HD API’s have reverted quite a bit: several constructors were replaced with clearer static factory methods that make it increasingly obvious how their parameters are interpreted. The new methods don’t transpiration their behaviour depending on the pattern of nulls passed into them. Some unit testing utilities have been moved to the new testing subpackage and cleaned up/rearranged. It should be easier to write unit tests for your app that need a simulated network now. DeterministicKey now derives from ECKey. We now use Utils.HEX.encode() and Utils.HEX.decode() to do translation to and from wiring 16. Transaction.hashTransactionForSignature was renamed to just hashForSignature. The subVer string sent by bitcoinj now has a lower cased first component. Version 0.11.3 This is a bugfix release. Various fixes toViridityfiltering for failures that could occur in rare whet cases. A fix for transactions that are dropped by risk wringer and then later confirmed. Fix wallet autosaving on Windows. Minor security fix for non-ncaonical woodcut difficulty encodings. Thanks to Sergio Damian Lerner for the report. DNS seeds update Now throws a transaction if a BIP70 payment request doesn’t match the expected network params. A few other small misc changes. Version 0.11.2 This is a bugfix release. Risk wringer pursuit the fee drop: you MUST upgrade to get this, or else users will start missing transactions sent to them. Fix a crash that can occur when connecting to a peer that reports a uniting height of zero. Fix backoff behaviour so when the network is lanugo and discovery fails, things backoff properly. Email addresses are now extracted properly from S/MIME certs. Disallow subtracting of keys that don’t match the wallet’s encryption state. Correct handling of OP_0 (full verification mode) A bundled/unified JAR is now unchangingly built. Misc other crash and bug fixes. Version 0.11.1 Wallet default risk wringer now drops pebbles transactions by default. A new cleanup() method is widow to waif risky (i.e. not going to confirm) transactions that were unliable into the wallet by previous versions. PkiVerificationData.rootAuthorityName now exposes a user friendly name of the CA that verified the document of a payment request. A viridity filter bug was stock-still that stopped filters from updating when a key was added. Wallet.toString() was re-arranged so that its mostly sorted from new to old. Version 0.11 Notable changes and new features: Thanks to Ken Sedgwick, an implementation of BIP39 (“Mnemonic lawmaking for generating deterministic keys”) has been added. This is uniform with the latest Trezor implementation. Thanks to Mike Belshe, the wallet can now send to P2SH addresses. 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 ways Java’s built in support for transparent SSL and SOCKS becomes misogynist again, which in turn ways 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. Thanks to Kevin Greene, we’ve widow some support for the BIP70 payment protocol. Wallet authors can now slosh payment requests, trammels their signatures and submit payments with the new easy to use PaymentSession class. The wallet-tool writ line UI has support and an vendible explains how to use it. Thanks to Miron Cuperman, the wallet can now watch wrong-headed addresses and scripts. The wallet could previously watch an write as long as the public key was known. Now it’s possible to watch for addresses plane when the public key is not known.Moreoverthanks to Miron,Viridityfiltering was moreover improved. The system now tracks false positive rates and cleans the filter when FP rates get too high. Unfortunately, some privacy bugs inViridityfiltering remain, which could (amongst other things) indulge a malicious remote peer to test whether you own a particular key. Thanks to Alex Taylor (bitpos.me), a new PostgreSQL based pruning woodcut store was added. This woodcut store is fast, and indexes the UTXO set, permitting for fast lookup of the wastefulness of any given address. 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 sawed-off that is used to empty the wallet out. It’s designed to have an lulu and modern look, with tasteful animations and artwork. 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 lawmaking has been taken for a test momentum for a couple of real apps and many rough edges polished as a result. The default USER_THREAD executor can now be replaced, permitting a 1-line switch of all callbacks onto a thread of your nomination instead of needing to override each callback, each time. This should simplify and wipe up the GUI lawmaking of wallet apps significantly. The WalletTool writ line app has a increasingly user-friendly user interface now. A new DNS seed has been added. The seed is run by Christian Decker, from ETH Zurich. bitcoinj 0.11 will shortly be misogynist via Maven Central. Please use the dependency verifier plugin and/or trammels the PGP signatures on the uploads, if you use this! Smaller improvements: We finished subtracting nullity annotations to the API. You should now be worldly-wise to seem that any method not annotated with @Nullable won’t overly return null values. The WalletAppKit got a tuft of new features and convenience APIs. 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 stuff washed-up elsewhere, outside of the library. 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 uniting and just want to summate the UTXO set. The wallet risk wringer lawmaking is now pluggable, largest documented and checks for finality in a increasingly sensible way. Various memory usage and spritz tenancy optimisations were made to indulge much larger wallets to sync on Android. The transaction unconcentrated algorithm was reverted to be increasingly robust. Double spend handling in the wallet was improved. Generated signatures now use canonical S values. This will aid a future hard-forking rule transpiration which bans malleable signatures. Some fixes were made for enable usage with the Orchid Tor library. Further support for Tor is planned for future releases. Notable bug fixes: Some hard-forking full verification bugs were fixed. Thanks to Miron, PeerGroup now performs exponential backoff for peer connections, for instance if we cannot connect to them or if they disconnect us. This resolves an worrying bug in which if the library was configured with a single peer that was down, it would spin in a tight loop consuming battery. API changes: Some functionality of the Wallet matriculation was moved into separate classes under the wallet package. The micropayments API and protocol changed. New clients/servers are not uniform with apps running versus previous releases. The Wallet sendCoins/completeTx methods no longer return booleans or null to indicate failure, they now throw InsufficientMoneyException or a subclass if the transaction cannot be completed. The exception object typically contains information on how much money is missing. Some mis-named methods in the HD key derivation API were renamed. The WalletEventListener interface has an uneaten method for watching scripts now. Peer discovery classes moved under the net.discovery package Any APIs that relied on Netty are now different. New documentation: An vendible on the networking API Info on testing your apps, and how to use regtest mode to make a private Bitcoin network that allows you to mine blocks instantly. A reference table showing which API’s implement which Bitcoin Improvement Proposals (BIPs). Please note that as I am no longer employed by Google, without 0.11 signing the Google freelancer license try-on will no longer be necessary. I squint 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. Version 0.10.3 A regression in unconcentrated handling was fixed. Version 0.10.2 Some bugs related to re-org handling were fixed. All users should upgrade to get these fixes. A crash related to signing non-ASCII messages with ECKey was fixed. Misc other bugfixes Version 0.10.1 Emptying the wallet now only empties selectable outputs. Version 0.10 An implementation of micropayment channels was added. There have been many bugfixes and improvements since the first announcement. This full-length allows you to set up a 1:1 payment relationship with a remote server and without a short setup process send very tiny payments, very rapidly. It’s suitable for metered billing applications. An article, “Working with micropayments” explains how to use it. This work was a joint effort between Matt and myself. A simple sublibrary has been widow that provides async IO based client/server classes that transmit length prefixed protocol buffers. Thanks to Matija Mazi, some classes have been widow that implement the BIP 32 deterministic wallet algorithm. Note that these classes are not yet used elsewhere in the system and full deterministic wallet support is therefore not available, however, a low level API is misogynist for experimentation. That API is very likely to transpiration in future releases so don’t get too tying to it. Thanks to Gary Rowe, we have integrated a new Maven plugin that checks the SHA1 hashes of downloaded dependencies versus a hard-coded list. This ways that plane if an upstream Maven repository or developer were to be compromised, library dependencies could not be switched out for corrupted versions without someone noticing. For 0.10 the dependency hashes were just initialised based on what was once downloaded. In future, reproducible builds of upstream dependencies and auditing of changes would provide largest security. You can and should use Gary’s plugin in your own projects to defend versus a possible compromise of the bitcoinj repository. Callback handling has been much improved. Each event listener can have an Executor specified which takes responsibility for running the callback. If you don’t specify one they run by default on a single preliminaries thread, the “user thread”, instead of the origin framework threads. This ways your callbacks no longer need to be thread unscratched as they’re unchangingly run serially. You can moreover transpiration the default executor if you would like to tenancy the thread on which callbacks run, for example to marshal them into your GUI toolkit thread automatically. This fixes some of the most painful parts of the pre-0.10 API, for instance that transaction conviction listeners were not unliable to re-enter the library. Exception handling has moreover improved. You can assign a global Thread.UncaughtExceptionHandler which receives any exceptions thrown on the user thread (i.e. by your own event listeners), as well as any internal exceptions thrown by network threads (like inability to parse a message sent by a remote peer).Consideringyour listeners now run on a separate thread by default, you can no longer unwittingly rationalization internal data self-indulgence or prevent other callbacks from running by leaking exceptions out of your callbacks; a subtle knife-edge in the previous API. We now require Bloom-capable (0.8+) peers by default and will disconnect from older nodes. This avoids willy-nilly bandwidth saturation on mobile devices. The wallet now accepts timelocked transactions if it created them itself. The wallet can be told to empty itself out, in which specimen the fee will be subtracted from the total value instead of added. This simplifies the worldwide specimen of wanting to send your unshortened wastefulness whilst still including a fee. Some JNI peers for event listeners were added. Auto-generated JNI bindings are experimental and not yet merged in to the mainline codebase: for now they are misogynist as part of a separate project on github. This work allows you to wangle the bitcoinj API using relatively natural looking C++ lawmaking and an embedded JVM. You can now register custom PeerFilterProvider implementors to add things toViridityfilters that aren’t necessarily in wallets. We have begun subtracting nullity annotations to the API. Combined with a strong static wringer engine like FindBugs or the IntelliJ Inspector, you can find cases where you aren’t handling possible null pointers. Note that you should configure your static wringer system to understand the Guava Preconditions assertions, as otherwise you will get false positives. You can now tenancy how much information Wallet toString() dumps contain increasingly precisely. Extensions can contribute to a wallets debug dump as well, and transaction data is now optional. Support for will-less wallet key rotation has been added. Documentation: The getting started tutorial and PingService example were rewritten. New wares were widow that imbricate optimising uniting sync and using the library from non-Java languages. Existing wares were moreover extended and refreshed. Many bug fixes and new methods. You should upgrade as soon as possible to get the bug fixes, in particular, one that could rationalization transactions inside the same woodcut to be incorrectly re-ordered when usingViridityfiltering (which can stupefy the wallet). The library lawmaking now has increasingly internal annotations to help static wringer engines, and several bugs were stock-still as a result of that. API Changes: The ScriptBuilder matriculation now takes TransactionSignature objects, these wrap a raw ECDSA signature and the SIGHASH flags together, with utility methods to work with them. The Locks matriculation has been renamed to Threading. The thread on which callbacks run has been changed, see above. The WalletEventListener.onKeyAdded method became onKeysAdded and now takes a list, to make processing of zillion adds increasingly efficient. BitcoinURIParseException is now checked so you can’t forget to handle pseudo URIs. The Wallet.toString(..) method has spare parameters now so you can tenancy what is included in the dump. Version 0.9 Thanks to Matt Corallo, we now have a vital fee solver that will nail the correct (minimum) fee per kilobyte to a created transaction using the 0.8.2+ fee rules. Note that there’s no struggle to minimize the size of a calculated transaction and thus fee, but some other optimisations are applied. By default bitcoinj will unchangingly nail a fee, to learn how to customise this refer to the vendible Working with the wallet. The wallet’s re-org handling lawmaking was rewritten and simplified. A new class, WalletAppKit, simplifies the process of instantiating all the objects and files that are needed to run a vital app that can send/receive money. Add optional support for Pieter Wiulle’s native secp256k1 implementation, which is significantly faster thanUproariousCastle. Improvements to forge selection in the wallet. Many new functions and minor API improvements, for instance, it’s now easier to tell the wallet to indulge spending of unconfirmed coins. A new ScriptBuilder matriculation simplifies the process of constructing various kinds of scripts. A new woodcut importer tool can parse bitcoind woodcut files and process them, which is faster than streaming them over a network connection. Support for the regtest mode widow by the C++ side pull req 2632. This makes app minutiae 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. Version 0.8 Thanks to Jim Burton, encryption of private keys in the wallet is now supported. Keys are encrypted using an AES key derived using scrypt. A new SPVBlockStore provides dramatically largest performance and regional disk usage by storing woodcut headers in an mmapped ring buffer. This makes syncing headers for new chains/wallets network regional instead of disk io bounded. A new tool is provided to create lists of woodcut header checkpoints that can then be used to initialize a new woodcut store. This allows most headers to not be downloaded when initializing a new chain/wallet, making first-run of new wallets much faster. Bloom-filtering capable nodes are now queried for transactions at startup, meaning you can receive payments that weren’t confirmed yet plane if your wallet wasn’t running at the time. Many static wringer warnings have been cleared. All event listeners except transaction conviction listeners now run unlocked and cadre objects have been converted to use trundling detecting locks. Multiple lock inversions were fixed. DNS seeds are now supported for testnet. PeerEventListener now lets you reservation and process exceptions thrown during peer message processing. This is useful for reporting crashes that don’t take out your unshortened app, but just result in disconnection of a peer. Matt Corallo’s bitcoind comparison tool was merged in. It runs a large set of regression tests that compares the behaviour of bitcoinj in full verification mode versus bitcoind. The vast zillion of the changes in this release are bug fixes, optimizations and minor API improvements. They are too numerous to list here, please refer to the commit logs for details. API changes: Event listeners were previously locked surpassing stuff called, and the object stuff listened to was moreover locked. This is no longer true - your event listeners must be thread unscratched and the objects that triggered the event may be waffly in parallel. IrcDiscovery is now deprecated, as LFnet has gone offline and DNS seeding can be used for both test and production networks. The lawmaking is still there in specimen you want to use IRC bootstrapping for a private experimental network. BoundedOverheadBlockStore is now deprecated. It was replaced by SPVBlockStore. The file format has changed, so BOBS will stick virtually for a while so users can be upgraded. The Derby based woodcut store has been deleted. It only supported SPV mode and wasn’t used much. The static NetworkParameters methods now vend singleton objects. WalletEventListener.onCoinsSent is no longer run when a transaction sends to self but the wastefulness doesn’t change. Known issues: Transaction conviction listeners are still run with the wallet lock held, which ways it’s possible to trigger unexpected lock inversions by doing unrepealable things inside them. Also, conviction listeners sometimes run in places where the wallet lawmaking is not fully re-entrant, meaning that modifying the wallet whilst inside a conviction listener may rationalization problems. A simple fix is to run your listener lawmaking in a separate thread. A future release will fix this by ensuring that listeners only overly run at the end of wallet mutating operations and with the wallet unlocked.Cadreobjects will moreover switch to using non-reentrant locks so unexpected reentrancy deadlocks early and reliably. If multiple peers disconnect simultaneously it’s possible for the system to deadlock due to Netty permitting uncontrolled reentrancy when sending outbound messages (issue 381). The Wallet expects that it can store all transactions in memory (including spent transactions), eg, for rendering in lists and availability during re-orgs. On highly constrained devices like old Android phones it is possible to run out of RAM if a wallet gets very large. There are some bugs that can rationalization the wallet to get into an inconsistent state in various rare situations. The wallets can be stock-still by replaying them. These bugs will be addressed as the next highest priority. Version 0.7.1 A variety of minor bugs were stock-still in this release Some Java7-isms were removed. Handle a crash inUproariousCastle that can be caused by deliberately invalid sigs. Thanks to Sergio Damian Lerner for this fix. Version 0.7 Thanks to Matt Corallo, we now support a fully verifying mode in wing to simplified verification. This is a tremendous value of work that wouldn’t have happened without Matt! Right now, we strongly discourage anyone from using it for mining (which is not supported out of the box anyway). Use it in a production environment only if you know what you’re doing and are willing to risk losing money. If you do use it, let us know so we can contact you when problems are discovered. Read the documentation thoughtfully surpassing you begin.Moreoverthanks to Matt,Viridityfiltering is now implemented and zingy by default. When bitcoinj connects to a peer that supportsViridityfiltering, only transactions relevant to the wallet will be downloaded which makes bandwidth usage scale with the size of your wallet, not global system activity. A configurable false positive ratio allows you to trade off bandwidth vs privacy. App developers don’t need to do anything to take wholesomeness of this, it is enabled automatically. PeerGroup now pings its peers and calculates moving averages of the ping times. Ping time, versions and woodcut heights are taken into worth when selecting the peer to download the uniting from. You can now customize which outputs the wallet uses to create spends. The new default forge selector object allows you to spend unconfirmed transpiration as long as it’s been seen propagating wideness the network, addressing a worldwide end-user pain point in wallet apps. Optimized networking lawmaking for faster startup. A new PeerMonitor example app shows how to put properties of unfluctuating peers into a GUI. The Wallet is now decoupled from the BlockChain using the new BlockChainListener interface. This will simplify the minutiae of some apps that want to process transactions but not maintain an very wallet. The dependencies of unconcentrated transactions are now downloaded and risk analyzed. At the moment they are only stuff checked for having a timelock. In future we may moreover unriddle tree depth. The goal is to make unrepealable kinds of protocol vituperate harder. Wallets will reject timelocked transactions by default, this can be overridden via a property. You can now create timelocked transactions with WalletTool if you want to. Compressed public keys are now used by default. Support testnet3 Support bitcoin-qt uniform message signing and verification. ECDSA key recovery is now implemented and allows you to obtain the public key from an extended signature. If the signature is not extended then there are multiple key possibilities returned. Many bugfixes and minor improvements API changes: ECKey.sign() now takes a Sha256Hash as an treatise and returns an ECDSASignature object in response. To get DER encoded signatures, use the encodeToDER() method of ECDSASignature. ECKey.publicKeyFromPrivate now takes an spare compressed parameter. PeerGroup.start()/PeerGroup.shutDown() now run asynchronously and return futures you can use to wait for them. You cannot restart a PeerGroup once it has been shut lanugo any more. Version 0.6 Thanks to Jim Burton, the wallet now stores the depth and work washed-up for all transactions, and coinbase transactions are now processed correctly. The worthiness to handle pubkey-only outputs was added, so these are now spendable. Migration from 0.5 wallets that don’t store this is supported, but only for depth, by using WalletProtobufSerializer.setChainHeight(). Made some increasingly APIs documented and public. Improved woodcut uniting download handling.Widowcompatibility with the wrenched URIs generated by blockchain.info, meaning that the iPhone app and Android apps can now read each others QRcodes. Wallets can now auto-save themselves, taking the hassle of managing wallet persistence yonder from your app. See the javadocs for Wallet.autoSaveToFile() for information on this. The network layer was rewritten on top of Netty to be increasingly robust, increasingly scalable and to remove flakyness in the unit tests. Thanks to Miron Cuperman for this work. Thanks to Matt Corallo the ping/pong protocol is now supported.Moreovervarious protocol conformance issues and other misc bugs were resolved. WalletTool now has a RAW_DUMP option that prints the raw protocol buffer form as text. You can now explicitly set fees on a created transaction using the fee member of SendRequest. Please note that the correct fees for a transaction are still not auto-calculated or minimized. This will come in a future release. Many bug fixes. API changes: TransactionConfidence.OVERRIDDEN_BY_DOUBLE_SPEND is now tabbed DEAD PeerGroup.broadcastTransaction now returns a Guava ListenableFuture (which is a subclass of Future, so it’s compatible). The future completes when the transaction has been heard when from the network, instead of just stuff written out. Wallet.sendCoins() now returns a SendResult that contains both the transaction, and the future returned by PeerGroup.broadcastTransaction(), so it will no longer block. As a result sendCoinsAsync() has been removed. Various send methods on Wallet now take a SendRequest object that lets you customize the created transactions. The methods that let you explicitly set the transpiration write are removed, you should set the changeAddress member of the SendRequest instead. Version 0.5 Address.getParameters() and Address#getParametersFromAddress() let you icon out for what network the write is for (test, production, etc). BitcoinURI no longer requires a NetworkParameters for the same reason. Updated to latest uproarious castle version, remove the need for the Android fabrication by using the SpongyCastle build Receives pending transactions much faster than surpassing Update to new testnet rules Wallets now store the current uniting throne wallet-tool can now create and unconcentrated transactions from the writ line Wallets will now be auto-migrated to protobuf format if they were previously serialized Java objects Now uses the standard Maven directory layout Many important bugfixes This release included the first preview of the native API, permitting you to wangle bitcoinj from C++/Objective-C++ using a straightforward, intuitive mapping from the Java API. Much easier than JNI and no JVM is required, just the libgcj support library. Examples of a native Cocoa app for OS X and a writ line hello world app are included.Consideringit’s not fully finished/documented yet, this work is misogynist on a branch. Version 0.4.1 Minor bugfixes: A fix for Android users only to do with zestful processing Version 0.4 New in this release:Worthinessto use “getheaders” to quickly reservation up new users to the throne of the chain. ECKeys no longer require the private part, permitting for “watching wallets” that cannot spend, but still gather and track the transactions associated with the public keys. A new API that implements transaction confidences. Get a quick summary or detailed information well-nigh how much conviction you can have that a given transaction won’t be reversed. A new DerbyBlockStore that stores woodcut headers and related data in the Apache Derby relational database. Protocol buffers are now a supported serialization format for the wallet. Java serialization will protract to be supported for the next release, and then we’ll start breaking serialize compatibility. This ways BitCoinJ based protobuf wallets can be read and manipulated by any language/platform with a protobufs implementation, which is most of them. There are extension points in the format to indulge third parties to add new features. Various new event listeners that help you learn when the state of the wallet or transactions change. Support for post February 20th version handshakes (most library users once got this fix via backports) All event listeners are now unliable to remove themselves during their own execution. New APIs that indulge you to create offline transactions and then unconcentrated them at a later point. Pending relevant transactions are recorded and spoken to all newly unfluctuating nodes, ensuring a transaction won’t “get lost” if there was flaky network connectivity at the time of creation. Pending transactions are supported much largest in this release than in previous releases. Wallet now can now take an invalid transaction and well-constructed it by subtracting sufficient inputs and a transpiration output. This enables the megacosm of multi-sends, as well as making experimentation with contracts easier. Updated DNS seeds list. A new WalletTool program for writ line usage, and a ToyWallet app showing how to set everything up. Support for BIP 14: apps can now set their own “user agent” which will be put in the subVer field withal with the library version. Support parsing and checking of zestful messages. New wares explaining how to use the library. The usual variousness of bugfixes, new APIs, robustness and test suite improvements. Version 0.3 New in this release: Many bugfixes, robustness and test suite improvements. Major optimizations to reduce parsing overhead, most protocol messages are now parsed on demand. A new PeerGroup API that handles the management of multiple peer connections. Switched to using Maven for the build process, removed the bundledUproariousCastle as a result. You can now depend on BitCoinJ using Maven if you don’t need any special patches. A tuft of new APIs to make writing Bitcoin apps easier.