Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
551 lines (349 sloc) 15.6 KB

ConsensusJ Changes

A high-level view of the changes in each ConsensusJ binary release.


In progress.


  • Upgrade to XChange 4.3.12

  • Add integration test for CoinbasePro Exchange

  • Deprecate Bitfinex, Coinbase, and ItBit exchange providers in favor of DynamicXChangeRateProvider

  • Add convenience constructors to DynamicXChangeRateProvider and BaseXChangeExchangeRateProvider



  • Use WalletAppKitService instead of PeerGroupService (see Issue #42)


  • Use WalletAppKitService instead of PeerGroupService (see Issue #42)

All Modules

  • Update to Groovy 2.5.5


Released: 2018.10.24


  • Add getters for stdTxFee, stdRelayTxFee, defaultMaxConf to BitcoinExtendedClient


  • Remove stdTxFee, stdRelayTxFee, defaultMaxConf from BTCTestSupport trait (now uses the getters in BitcoinExtendedClient via BitcoinClientDelegate)

All Modules

  • Use Gradle java-library plugin to build Java libraries (but not yet for Groovy libraries)

  • Update to Groovy 2.5.3

  • Update to Gradle 4.10.2

  • Update to Spock 1.2

  • Update to Jackson 2.9.6

  • Update to Spring Boot 2.0.4

  • Added GitLab CI build support


Released: 2018.07.31

Breaking Changes

  • All classes with RPC in name now use Rpc

  • Low-level RPC send method is now sendRequestForResponse()

  • JsonRpcResponse is now immutable

  • Make order of constructor args consistent in JsonRpcRequest

  • Rename Dynamic RPC Methods support classes

    • UntypedRPCClientDynamicRpcMethodSupport

    • DynamicRPCFallbackDynamicRpcMethodFallback


  • use long for nonce in BlockInfo (fixes #44)


  • Switch back to org.javamoney:moneta-bp ("backport version") for Android support


  • Upgrade AngularJS, Bootstrap, etc. to latest WebJars


  • module/filename changed from bitcoinj-cli

  • Fixes for JSON-RPC parameter type on generate/setgenerate and getblockhash


  • module/filename changed from cjbtc-jsonrpc


  • module/filename changed from cjbtc-jsonrpc-gvy

  • Now requires Java 8

New Modules

  • Experimental Kotlin version of cj-btc-cli

  • Proof-of-concept Ethereum JSON-RPC client

  • Groovy (Dynamic RPC methods) Ethereum JSON-RPC client

  • New Namecoin daemon module created by Jeremy Rand

  • Currently a work-in-progress

  • Proof-of-concept Namecoin JSON-RPC client

  • Groovy (Dynamic RPC methods) Namecoin JSON-RPC client

All Modules

  • Fixes for RegTest integration tests

  • Namecoin classes moved to org.consensusj.namecoin

  • Ethereum classes moved to org.consensusj.ethereum

  • Upgrade Groovy to 2.5.1

  • Upgrade to Spring Boot 2.0.3

  • Upgrade to Gradle 4.9

  • Upgrade Bintray plugin to 1.8.4

  • Upgrade to Asciidoclet 1.5.6 (release version)


Released: 2018.07.10

New Modules

These new modules were all extracted from the existing bitcoinj-rpcclient module.

  • Java JSON-RPC client with no bitcoinj dependency

  • Automatic-Module-Name: org.consensusj.jsonrpc

  • Groovy-enhanced JSON-RPC client with dynamic method support

  • Automatic-Module-Name: org.consensusj.jsonrpc.groovy

  • Java Bitcoin JSON-RPC client

  • Needs more refactoring before it can get an Automatic-Module-Name

  • Groovy-enhanced Bitcoin JSON-RPC with dynamic method support and integration test support classes

  • Needs more refactoring before it can get an Automatic-Module-Name


  • Most code factored out into new modules

  • Still contains Ethereum and Namecoin JSON-RPC clients (but those will be factored into new modules in a future release)

  • Still contains Bitcoin integration tests


  • Removed all Groovy code from compile source set (but not test) and removed Groovy transitive dependency.

All submodules

  • Upgrade to Gradle 4.8.1

  • AsciidoctorJ 1.5.6, Asciidoclet 1.5.6-SNAPSHOT

  • Create doc/puml directory so asciidoclet can pull PlantUML from it and IntelliJ can preview it properly.


Released: 2018.07.03


  • Fix Jackson type-conversion bug in AbstractRPCClient#send


Released: 2018.07.03


  • BREAKING: Move jsonrpc subpackage from com.msgilligan to org.consensusj

  • Gracefully handle error case in RPCClient where errorStream is null

  • Update Ethereum clients to work with Infura

  • Fix Issue #24: RPCClient doesn’t work with long username / password)


  • BREAKING: Upgrade to Java 8

  • Rename command-line tool to cj-bitcoin-cli

  • Add Graal native-image build of cj-bitcoin-cli

  • cj-bitcoin-cli now reads bitcoin.conf for settings


  • BREAKING: Upgrade to Java 8

  • Upgrade to XChange 4.3.8

  • Upgrade to org.javamoney:moneta (JavaMoney) 1.2.1 from moneta-bp


  • BREAKING: Move proxy package form com.msgilligan.bitcoin to org.consensusj

  • Add functional test of ProxyMain

  • Upgrade to Ratpack 1.5.4


  • Add signature-checking to TransactionSpec

  • BREAKING: Upgrade to Java 8

All submodules

  • Travis CI test builds on oraclejdk9 and openjdk8

  • Upgrade to bitcoinj 0.14.7

  • Upgrade to Jackson 2.9.5

  • Upgrade to Groovy 2.5.0

  • Upgrade to Spring Boot 2.0.1.RELEASE

  • Upgrade to Gradle 4.7

  • Upgrade to newer Asciidoctor components

  • Centralize Asciidoctor component versioning in variables

  • Upgrade to Asciidoclet 1.5.5-SNAPSHOT for Java 9+ Javadoc


Released: 2017.10.16


  • Simplify UntypedRPCClient interface (subclasses of AbstractRPCClient not affected)

  • Improve JavaDoc


  • Add org.slf4j:slf4j-simple as a runtime dependency.


  • Upgrade to XChange 4.2.3


  • Upgrade to Ratpack 1.5.0

  • Add org.slf4j:slf4j-simple as a runtime dependency.

All submodules

  • Upgrade to bitcoinj 0.14.5

  • Upgrade to Groovy 2.5.0-beta-2


Released: 2017.08.09


  • JSONRPCExtension now extends IOException

  • BitcoinClient handles thread interruption in waitFor* methods


  • Upgrade to XChange 4.2.1

  • Removed compile-time and transitive dependencies on specific XChange implementations


Released: 2017.07.16


  • Fix: Look for bitcoin.conf in ~/.bitcoin on Linux (lower-case 'b')

  • Improved error-handling and concurrency

  • Partial support for JSON-RPC 2.0 (tested with Parity)

  • Preliminary support for Ethereum/Parity JSON-RPC

  • Update Ethereum calls for Parity and add a few methods

  • Core JSON-RPC implementation moved from bitcoinj.rpc to jsonrpc subpackage.


  • Improve concurrency and error-handling in BaseXChangeExchangeRateProvider

bitcoinj-daemon and bitcoinj-peerserver

  • Upgrade Spring Boot to 1.5.4


  • Move core JSON-RPC classes to com.msgilligan.jsonrpc.ratpack

All submodules

  • Upgrade Groovy to 2.5.0-beta-1

  • Use Groovy invokedynamic ("indy") jars and compiler flag

  • Upgrade several Gradle build plugins

Breaking and potentially breaking changes

  • Core JSON-RPC implementation moved from bitcoinj.rpc to jsonrpc subpackage.


Released: 2017.05.22

All submodules

  • Fix error when Gradle bintrayUpload task run on root project

  • Upgrade Groovy to 2.4.11

  • Upgrade Gradle to 3.5


  • Add Coinbase ExchangeRateProvider

  • Upgrade to XChange 4.2.0


  • Add AddressKeyDeserializer for deserializing to Map<Address, Object>


Released: 2017.04.26

All submodules

  • Update README.adoc

  • Assorted code, build, JavaDoc improvements

  • build.gradle reads JDK7_HOME environment variable to compile Java 7 modules with correct classpath

  • Upgrade bitcoinj to 0.14.4

  • Upgrade jackson-core and jackson-databind to 2.8.7 (in modules that use Jackson)

  • Upgrade Groovy to 2.4.10

  • Upgrade Spock to 1.1-rc-4

  • Upgrade SLF4J to 1.7.25


  • New RPC methods: addnode, getaddednodeinfo

  • Deprecate BitcoinClient#generateBlock

  • Disable hack enabling self-signed SSL RPC servers


  • Add ECKey serializer (does not serialize private key)

  • Fix incorrectly named JSON properties in BlockChainInfo POJO

  • Fix deprecation warnings in serializers/deserializers


  • Upgrade to Moneta BP 1.1 (Java 7 Backport of JavaMoney Reference Implementation)

  • Upgrade to XChange 4.1.0


  • Significant code cleanup, simplification, and modularization

  • Create Guice module and use for registry

  • Use Guice injection in handlers

  • Use Guice and Retrofit to create a Retrofit-based Ratpack async JSON-RPC client

  • Upgrade Ratpack to 1.5.0-rc-1

  • Upgrade Gradle Shadow Plugin to 1.2.4


Released: 2016.11.06


  • rpcclient: Include (from Android) and use it for Android support


Released: 2016.10.24

Breaking and potentially breaking changes

  • Bitcoin RPC clients require Bitcoin Core 0.10.4 (or Omni Core or later

  • Migrate to using generate to generate blocks in regtest (with fallback for earlier versions)

  • Start migration away from getinfo to getblockchaininfo, getnetworkinfo

  • Many dependency version bumps, notably Jackson 2.8.1 and Spring Boot 1.4.0

  • Add proof-of-concept Ratpack-based JSON-RPC proxy server in bitcoinj-proxy

  • Handle new JSON properties that show up in responses on bitcoind 0.13+

  • Be generally more forgiving of new JSON properties in JSON-RPC responses

  • Add tests for creating/sending standalone bitcoinj Transactions

  • Add integration tests for OP_RETURN and Bare Multisig transactions via P2P and RPC

  • Make RPCConfig a Jackson POJO (for use in configuration files)

  • Move more test fixture methods from Spock base classes to Groovy traits


Released: 2016.08.22


  • In BaseXChangeExchangeRateProvider correctly handle exchanges that don’t provide a timestamp (e.g. Poloniex)

  • Proof-of-concept Ethereum RPC client

  • Add basic Spock test for OP_RETURN

  • Fix and un-ignore TransactionSpec."Can create and serialize a transaction" Spock test

  • Added generate RPC method

  • Add .travis.yml for Travis CI testing

  • Improved support for logging during tests

  • Miscellaneous code cleanup and commenting

  • Update to Gradle 2.14.1

  • Update to Spock 1.1-rc2


Released: 2016.06.29


  • ExchangeRateObserver will now get a notification immediately after subscribing if data already present

  • Improved error handling/logging for JSON parsing exceptions in RPCClient

  • bitcoinj-dsljs: Proof-of-concept model for JavaScript integration via Nashorn.

Potentially Breaking

  • notify method renamed to onExchangeRateChange in ExchangeRateObserver interface


Released: 2016.06.19


  • Improvements to bitcoin.conf reading classes

  • new BitcoinScriptingClient

    • Has typed Java methods and dynamic, Groovy fallback methods

    • No configuration constructor that uses bitcoin.conf

  • new AbstractRPCClient to allow alternate HTTP transport client

  • new DynamicRPCFallback Groovy trait to add dynamic methods to any RPCClient subclass

  • new NamecoinScriptingClient and namecoin.conf file reading support

  • add listAddressGroupings method to BitcoinClient

  • Fix: correctly pass command-line args to daemon and peerserver apps

  • Update to bitcoinj 0.14.3

  • Update to Groovy 2.4.7

  • Other library updates (slf4j)

Potentially Breaking

  • Remove some deprecated methods


Released: 2016.05.25


  • Added very basic code to parse bitcoin.conf for RPC connection parameters


Released: 2016.05.17


  • Update to bitcoinj 0.14.1 (adapt to breaking changes)


Released: 2016.04.28


  • Add ObservableExchangeRateProvider interface for BaseXChangeExchangeRateProvider

  • Allow multiple conversions of different pairs in one BaseXChangeExchangeRateProvider


Released: 2016.04.22


  • Add bitcoinj-money (JavaMoney support) module

    • BaseXChangeExchangeRateProvider and subclasses for Bitfinex and Itbit

    • BitcoinCurrencyProvider to add "BTC" currency code to Java

  • rename bitcoinj-groovy module to bitcoinj-dsl

  • Bump Gradle (wrapper) to 2.12

  • Bump Gradle Shadow plugin to 1.2.3

  • Bump bitcoinj to 0.13.6

  • Bump Groovy to 2.4.6

  • Update PeerServer to Angular.js 1.4.8 and Bootstrap 3.3.6

Potentially Breaking

  • bitcoinj-groovy module renamed to bitcoinj-dsl


Released: 2015.11.24


  • Consistently use Groovy 2.4.5 (via ext.groovyVersion)

  • Ignore unknown properties in RPC getinfo call (causes crash in Omni client)

  • Add MainNet integration smoke test for bitcoinj-rpcclient

  • Upgrade to bitcoinj 0.13.3

  • Add minimal Namecoin RPC client and Namecoin address support (NMCMainNetParams)

  • WIP Spock test based on "Working with Contracts" bitcoinj documentation page.

  • A little bit of HTML formatting for in peers.html in PeerServer

  • Use WebJars to replace local copies of angular, jquery, bootstrap, etc.

  • Update versions of front-end libraries using WebJars

  • Add BlockCypherSyncing trait that uses BlockCypher API for syncing


Released: 2015.10.06

Potentially Breaking

  • Deprecated BTC utility class removed.

  • Alternate RPCClient constructors removed (doesn’t affect BitcoinClient)

  • Some methods return POJOs where they previously returned Map.


  • BitcoinClient constructor now takes a bitcoinj NetworkParameters instance.

  • Add Jackson/JSON POJOs: WalletTransactionInfo, RawTransactionInfo, BlockInfo

  • Significant JavaDoc improvements.

  • Code cleanup and simplification.

  • Upgrade CLI module to use Apache Commons CLI version 1.3.1

  • Replace type conversion hack in BitcoinJCLI with a more-extensible type conversion mechanism.


Released: 2015.09.29

This is the first release with a CHANGELOG.

Potentially Breaking

  • RPC client API, BitcoinClient is now using bitcoinj types for almost all JSON-RPC parameters and return types. See Issue #9 to track progress.

  • RPC client API, setGenerate() (also generateBlock(), generateBlocks()) when talking to bitcoind 0.9.x or earlier will return an empty list rather than null. If server is 0.10.x or later, will return a list of Sha256Hash.


  • JSON-RPC client and server are now sharing Jackson JSON serializer, deserializers, and POJOs in the bitcoinj-json module.

  • JSON-RPC server now has a skeleton implementation of getinfo.

  • Miscelleneous documentation improvements.

Bug fixes

  • Issue #10 Broken links in doc/index.adoc fixed

REL-0.0.1 - v0.0.8

Very early releases. See commit history for details.