Skip to content

Latest commit

 

History

History
1595 lines (1034 loc) · 48.3 KB

CHANGELOG.adoc

File metadata and controls

1595 lines (1034 loc) · 48.3 KB

ConsensusJ Changes

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

v0.7.0-SNAPSHOT

Released: in-progress

Dependency Updates

  • bitcoinj 0.17-beta1

  • Jackson 2.17.2

  • RxJava 3.1.9

  • JeroMQ 0.6.0

  • SLF 2.0.16

  • Micronaut Platform 4.5.1

  • Groovy 4.0.22

Build/Test Updates

  • Require JDK 17 or later to build

  • Gradle 8.10

  • GitHub gradle.yml JDK Matrix: Java 17, 21

  • Asciidoctor Gradle Plugin 4.0.1

v0.7.0-alpha3

Released: 2023-10-05

This release includes significant updates the JSON-RPC client(s) and contains what should be relatively minor breaking changes.

JSON-RPC clients

  • Upgraded to use java.net.http asynchronous client by default

  • Async operation is now the default at the transport layer

  • Asynchronous connection and "wait for server" logic

  • Migrate "wait for server" logic from BitcionCient to DefaultRpcClient

  • DefaultRpcClient replaces AbstractRpcClient and takes a configurable JsonRpcTransport

  • Partial decoupling from Jackson JSON processor (see type parameter T in JsonRpcClient<T>)

  • Remove deprecated methods that use SSLSocketFactory (In favor of SSLContext)

  • Remove deprecated methods that use/return NetworkParameters.

consensusj-jsonrpc-cli

  • Is now built using Java and GraalVM 21.

  • --log=n option to set log-level.

Reactive (Rx) Components

  • Migrate from Flowable to Publisher where possible (breaking changes but easy to work around)

  • Migrate from Single/Maybe to CompletableFuture in some (mostly internal) places

  • ChainTipPublisher class help solves issues with erasure in generics and allow DI component constructors to take a ChainTipPublisher rather than ChainTipClient.

Reproducible/Deterministic build

  • See Issue 17 and release-process.adoc.

  • CI builds generate SHA256SUMS file for verification.

Dependency Updates

  • Micronaut 4.1.2

  • JeroMQ 0.5.4

  • Groovy 4.0.15

  • SLF4J 2.0.9

Build/Test Updates

  • Gradle 8.4

  • Create GitHub Actions GraalVM CE Matrix: Java 17, 21

  • GitLab CI build uses Debian "Trixie" and OpenJDK 21

v0.7.0-alpha2

Released: 2023-08-30

The 0.7.0 release of ConsensusJ will require bitcoinj v0.17, currently in alpha release. There will likely be multiple alpha releases of ConsensusJ as bitcoinj is updated.

bitcoinj-0.17-alpha2 update

  • Upgrade to bitcoinj-0.17-alpha2 API

  • More migration away from NetworkParameters

consensusj-jsonrpc

  • JSON-RPC clients that need custom SSL behavior should implement the new constructors that take an SSLContext and stop using the deprecated constructors that use SSLSocketFactory. (The deprecated constructors will be removed in the next alpha release!)

  • Add (abstract) sendRequestForResponseAsync with async becoming the preferred way to implement this interface.

  • Now that this module requires Java 11+, the incubating java.net.http-based client JsonRpcClientJavaNet has been moved here. The consensusj-jsonrpc-javanet module has been removed. Feel free to try out this client instead of JsonRpcClientHttpUrlConnection and let us know how it works.

consensusj-jsonrpc-javanet (removed)

This incubating module has been removed. Its only class, org.consensusj.jsonrpc.javanet.JsonRpcClientJavaNet has been moved to the consensusj-jsonrpc module (in the org.consensusj.jsonrpc package.)

If you are using consensusj-jsonrpc-javanet, you need to remove the .javanet from your import statements. You should also remove your Maven/Gradle references to the JAR/Module and replace them with references to consensusj-jsonrpc.

consensusj-jsonrpc-cli

  • BaseJsonRpcTool and jsonrpc tool use the java.net.http implementation (JsonRpcClientJavaNet) rather than the old java.net.HttpURLConnection implementation.

Dependency Updates

  • Jackson 2.15.2

  • Groovy 4.0.14

  • RxJava 3.1.7

  • JeroMQ 0.5.3

  • Micronaut 4.0.5

Build/Test Updates

  • Gradle 8.3

  • GitHub JDK Matrix: Java 11, 17, 21-ea

  • GraalVM 17.0.7 (new release with new versioning scheme)

  • Enable Dependabot

v0.7.0-alpha1

Released: 2023-05-25

The 0.7.0 release of ConsensusJ will require bitcoinj v0.17, currently in alpha release. There will likely be multiple alpha releases of ConsensusJ as bitcoinj is updated.

bitcoinj-0.17 update

  • Upgrade to bitcoinj-0.17-alpha1 API

  • Migrate from NetworkParameters to Network where possible

  • Remove usage of Guava ListenableFuture

  • Remove PatchedTransaction class used to work around an issue in bitcoinj, see bitcoinj #2274

cj-bitcoinj-util

Note: The transaction signing classes and interfaces in this module are incubating and most likely will continue to change with each release.

  • Require JDK 9 (make use of List.of())

  • BaseTransactionSigner can look up keys and pubKeys

  • Distinguish between RawTransactionSigningRequest and SigningRequest (i.e. the later has all UTXO information and can be signed with keychain only)

  • (Generally) construct SigningRequest with of, remove (most) add methods

  • SigningRequest constructor that specifies outputs as a Map<Address, Coin>

  • Rename TransactionInputDataImpl to TransactionInputDataUtxo

  • Utxo interface with Base, Signable, and Complete implementations

cj-bitcoinj-json

  • UtxoInfo, PrevTxOutInfo change scriptPubKey type to Script (from String)

  • Add ScriptSerializer

cj-btc-services

  • WalletAppKitService supports (at least subsets of) many additional RPC methods:

    • createrawtransaction

    • sendrawtransaction

    • getbalance

    • getnewaddress

    • listunspent

    • sendtoaddress

    • signrawtransactionwithwallet

  • WalletAppKitService: deprecated getinfo method removed

  • WalletSigningService can look up UTXO scriptPubKey and amount

Dependency Updates

  • Most modules now require a minimum of JDK 11 or later (see README.adoc for exceptions)

  • bitcoinj 0.17-alpha1

  • Jackson 2.15.0

  • Micronaut 3.9.1

  • Groovy 4.0.12

Build/Test Updates

  • Gradle 8.1.1

  • Use JAVA_HOME not GRAALVM_HOME to find native-image tool in consensusj-jsonrpc, consensusj-jsonrpc-cli and cj-btc-cli builds.

  • GitHub JDK Matrix: Java 11, 17, 20

  • gradle-git-publish 4.2.0

  • gitPublishPushCopy.dependsOn javadocAll, asciidoctor

  • Publish source and Javadoc JARs

v0.6.5

Released: 2023-04-04

This will likely be the last release using bitcoinj 0.16.x. bitcoinj-0.17-alpha1 has significant improvements, and we will begin using it on the master branch immediately after this release.

All modules

  • Remove many deprecated classes and methods

Bug Fixes

  • #99: BlockChainInfo: fix case errors in @JsonProperty constructor annotations.

cj-btc-json

  • #100: Remove ignoreUnknown annotation on defined JSON POJOs

Dependency Updates

  • bitcoinj 0.16.2

  • Jackson 2.14.2

  • RxJava 3.1.6

  • Micronaut 3.8.8

  • SLF4J 2.0.7

  • Groovy 4.0.11

Build/Test Updates

  • GitHub JDK Matrix: Java 11, 17, 19

  • Gradle 7.6.1

  • GraalVM 22.3.1

  • Miscellaneous build improvements

v0.6.4

Released: 2022-10-04

cj-btc-jsonrpc

  • Improve createwallet support for Bitcoin Core v23 (descriptor wallets)

  • Add support for using named wallet (not just "") in tests

  • Add unloadwallet methods

  • Add (incubating) BitcoinExtendedClient.withWallet() to clone a client with new wallet URL

  • Add LoadWalletResult and UnloadWalletResult types

  • RegTestFundingSource: Fix to make sure default wallet created is NOT a descriptor wallet

  • Add Spock test CreateWalletSpec to create (and unload) wallets

  • Add WalletTestUtil class for creating random wallet names

  • Add "incubating" constructors that don’t require a NetworkParameters

  • BitcoinCient: Add overloaded listUnspent that takes a single address for filter

  • BitcoinCient: use new Context not getOrCreate in threadFactory

  • BitcoinExtendedClient: Add no-args constructor that reads bitcoin.conf for connection info

  • Deprecate BitcoinCLIClient.groovy,

  • BlockchainSyncing migrate from Groovy trait to Java interface

  • BlockchainDotInfoSyncing, BlockCypherSyncing migrate from trait to interface

  • Add BitcoinClientAccessor.java (replaces BitcoinClientDelegate.groovy)

  • ADD FundingSourceAccessor.java (replaces FundingSourceDelegate.groovy)

cj-btc-jsonrpc-gvy

  • Deprecate BitcoinClientDelegate.groovy, add Java replacement

  • Deprecate FundingSourceDelegate.groovy, add Java replacement

  • Deprecate Loggable

  • Convert BTCTestSupport to a @CompileStatic interface (maybe move to Java later)

  • Use @Delegate annotation directly in BaseRegTestSpec, BaseMainNetTestSpec

  • Move consolidateCoins to BaseRegTestSpec

  • Use built-in @Slf4j annotation where needed

cj-btc-jsonrpc-integ-test

  • Use named wallet (consensusj-regtest-wallet) for RegTest mining and test funding

Dependency Updates

  • Jackson 2.13.4

  • Micronaut 3.7.1

  • Groovy 4.0.5

  • SLF4J 2.0.3

Build/Test Updates

  • Spock 2.3-groovy-4.0

  • GraalVM 22.2

v0.6.3

Released: 2022-09-11

cj-btc-json

  • Breaking: Use java.time.Instant for UNIX epoch timestamps

consensusj-jsonrpc

  • Deprecate AsyncSupport.failedFuture() in favor of JDK 9 CompletableFuture.failedFuture().

v0.6.2

Released: 2022-09-01

cj-btc-json

  • add BitcoinTransactionInfo for listtransactions

  • WalletTransactionInfo: add decoded property (RawTransactionInfo)

  • RawTransactionInfo: create inner POJO for scriptPubKey property

  • CoinDeserializer allow reading from String

  • ZMQNotification: migrate to record-like accessors, deprecate getters. (In the future we may do this for all "POJOs" in this module)

cj-btc-jsonrpc

  • BitcoinClient: add listTransactions()

  • BitcoinClient: deprecate getNetParams()

  • BitcoinClient: create overload of getTransaction with additional nullable parameters

cj-btc-jsonrpc-integ-test

  • Add WalletAppKitRegTest a pure-Java RegTest-based integration test.

Dependency updates

  • Continue to depend on bitcoinj 0.16.1 but decrease usage of org.bitcoinj.core.Context to prepare for breaking changes in bitcoinj 0.17.

  • SLF4J 2.0.0

Build/Test

  • Upgrade to Gradle 7.5.1

  • Add -peerbloomfilters option to test-run-regtest.sh

v0.6.1

Released: 2022-07-26

Java Version consistency and upgrades

  • Fixed a build issue causing cj-btc-jsonrpc-gvy to have Java 17 bytecode.

  • Java 9 is now the default target API & bytecode for most JARs

  • The following modules are still Java 8:

    • cj-bitcoinj-dsl-gvy (bitcoinj Groovy DSL)

    • cj-bitcoinj-util (bitcoinj add-on Utilities)

  • The following modules require Java 11:

    • consensusj-jsonrpc-javanet (uses Java 11’s java.net.http)

  • The following modules require Java 17:

    • cj-bitcoinj-dsl-js (Uses unbundled Nashorn Javascript support)

    • cj-btc-services (Intended for server-side usage)

    • CLI tools/libraries

    • Server daemons

Build

  • options.release is used to enforce usage of correct Java API versions in each module.

v0.6.0

Released: 2022-07-25

Java Version upgrades

  • JSON-RPC clients: Java 9

  • JSON-RPC servers: Java 17

  • CLI modules: Java 17

For details see ConsensusJ Modules in the README.

Java Automatic Module Name Support

  • All libraries now have Automatic-Module-Name set in their JARs.

  • Some packages were moved to (mostly) conform to the guideline of root package and module name being the same. Notably:

    • org.consensusj.bitcoin.rpcorg.consensusj.bitcoin.jsonrpc

    • org.consensusj.bitcoin.testorg.consensusj.bitcoin.jsonrpc.test

    • org.consensusj.bitcoin.rpc.groovyorg.consensusj.bitcoin.jsonrpc.groovy

    • org.consensusj.bitcoin.rpcserverorg.consensusj.bitcoin.rpc.json.rpc

Server-side JSON-RPC methods now return CompletableFuture

  • org.consensusj.jsonrpc.JsonRpcService.call(JsonRpcRequest) now returns CompletableFuture<JsonRpcResponse<RSLT>>. This means all server implementations derived from this method were also updated.

  • Corresponding changes in consensusj-jsonrpc-daemon, cj-btc-json, cj-btc-services, cj-btc-daemon.

consensusj-jsonrpc-cli

  • Support parsing command-line arguments that are JSON strings.

consensusj-jsonrpc-daemon

  • Add help command.

cj-btc-json

  • add help and stop commands to BitcoinJsonRpc

cj-btc-services

  • add help and stop commands to WalletAppKitService.

  • JSON-RPC methods defined in BitcoinJsonRpc now return CompletableFuture (even though WalletAppKitService methods still operate synchronously.)

cj-btc-daemon

  • Add GraalVM support

  • Add help and stop commands

cj-bitcoinj-util

  • Continued development of transaction signer stuff classes (incubating)

  • Updated BIP43 support (incubating)

Removed cj-eth-jsonrpc-groovy, cj-nmc-jsonrpc-groovy

  • These modules were experimental, unused (to my knowledge) and are easily constructed from the Java version with implements DynamicRpcMethodFallback.

Dependency Updates

  • Jackson 2.13.3

  • RxJava 3.1.5

  • Reactive Streams 1.0.4

  • Micronaut 3.4.4

  • Groovy 4.0.4

Build/Test Updates

  • GraalVM 22.1.0

  • Gradle 7.5

  • Spock 2.2-M3-groovy-4.0

Contributors

@theborakompanioni - PR #82: Fix README links.

v0.5.14

Released: 2022-03-12

cj-bitcoinj-util

  • Add HDKeychainSigner, BipStandardDeterministicKeychain, tests.

    • SigningRequest is essentially an immutable, unsigned transaction

    • HDKeychainSigner is an HD keychain that can sign a SigningRequest

    • BipStandardDeterministicKeyChain is an HD keychain that supports BIP 44, BIP 84, etc.

    • KeychainRoundTripStepwiseSpec is a functional test that tests all the above

cj-bitcoinj-dsl-groovy

  • Add ECKey.fromWIF() as a Groovy extension

cj-btc-jsonrpc

  • Add BitCore/Omni getAddressUtxos()/getaddressutxos method (requires address indexing)

cj-btc-json

  • Add BitCore/Omni AddressUtxoResult and AddressUtxoInfo POJOs

  • AddressDeserializer: Include the invalid address in InvalidFormatException message

  • RpcClientModule: add constructor with strictAddressParsing boolean

Dependency Updates

  • bitcoinj 0.16.1

  • Jackson 2.13.1

  • RxJava 3.1.3

  • Micronaut 3.3.4

  • Groovy 3.0.10

  • SLF4J 1.7.36

Build/Test Updates

  • Gradle 7.4.1

v0.5.13

Released: 2021-11-16

consensusj-jsonrpc

  • Reduce (default) logging of RPC status errors to "debug" level (these errors should be logged or handled at the higher-level and for some use cases are very common)

consensusj-jsonrpc-cli

  • Use TextNode.asText() to properly process JSON strings (improves format of output for help and other commands that return a JSON string)

cj-btc-json

  • Add BitCore/Omni AddressBalanceInfo and AddressRequest POJOs

  • Add MethodHelpEntry POJO

  • Deprecate org.consensusj.bitcoin.rpc.bitcoind.AppDirectory (use org.bitcoinj.utils.AppDataDirectory instead

cj-btc-jsonrpc

  • Add BitCore/Omni getbalanceinfo method (requires address indexing)

  • Add isAddressIndexEnabled method

  • Add methods for parsing help results

Dependency Updates

  • bitcoinj 0.16

v0.5.12

Released: 2021-11-11

Overview

This release allows btcproxy to use org.consensusj.bitcoin.rx.jsonrpc.RxBitcoinClient instead of its own implementation.

consensusj-analytics

  • Fix incorrect usage of JDK 9+ APIs

  • Use Publisher (rather than Observable) for result of richListUpdates

consensusj-rx-jsonrpc

  • Add RxJsonRpcClient::defer method for making deferred calls to CompletableFuture async methods

consensusj-rx-zeromq

  • Rename ZmqTopicPublisher to RxZmqContext (a context has multiple publishers)

  • Rename ZmqFlowable to ZMsgSocketFlowable

cj-btc-json

  • Rename ChainTip::getActiveChainTip method to ChainTip::findActiveChainTip

  • Add ChainTip::findActiveChainTipOrElseThrow method

  • Add ChainTip::ofActive for constructing from active height and hash

cj-btc-rx-jsonrpc

  • RxBitcoinClient: extend BitcoinExtendedClient

  • RxBitcoinClient: add constructor that takes SSLSocketFactory

  • RxBitcoinClient: Pull up methods from RxBitcoinZmqService

  • RxBitcoinZmq*Service constructors now take RxBitcoinClient

  • Replace usage of RxJava 3 internal class (ObservableInterval)

  • Improved propagation of errors and completions to clients

  • Add TxOutSetService (contains Publisher for TxOutSetInfo)

Build/Test Updates

  • Require JDK 11+ for build (JDK 17+ for cj-bitcoinj-dsl-js)

  • Gradle 7.3

v0.5.11

Released: 2021-11-04

consensusj-jsonrpc

  • RpcClient renamed to JsonRpcClientHttpUrlConnection

  • Removed deprecated DynamicRPCMethodSupport interface (replacement is JsonRpcClient)

  • Use java.util.Base64 for JSON-RPC auth encoding (requires Android 8.0 or later)

New module: consensusj-jsonrpc-javanet (incubating)

  • uses java.net.http.HttpClient

  • Currently implements synchronous AbstractRpcClient API

  • Incubating (e.g. mostly untested)

consensusj-jsonrpc-cli

  • Add Automatic-Module-Name header to the JAR.

consensusj-analytics

  • Make JAR compatible with JDK 8 (was JDK 11)

cj-btc-json

  • Add ChainTip::getActiveChainTip method

cj-btc-rx-jsonrpc

  • Fix hardcoded MainNetParams in RxBitcoinZmqBinaryService

Dependency Updates

  • bitcoinj 0.16-rc1

Build/Test Updates

  • Update GitLab CI to use openjdk-17-jdk

  • Remove TravisCI build

v0.5.10

Released: 2021-11-01

Breaking Changes

  • org.consensusj.bitcoin.json and org.consensusj.bitcoin.jsonrpc are now automatic modules

  • Remaining com.msgilligan packages are now in org.consensusj

  • Rx-related refactoring: cj-btc-zeromqconsensusj-rx-jsonrpc and cj-btc-rx-jsonrpc

New JAR: cj-btc-rx-jsonrpc (was cj-btc-zeromq)

  • cj-btc-zeromq renamed to cj-btc-rx-jsonrpc

  • RxJsonRpcClient moved to consensusj-rx-jsonrpc/org.consensusj.rx.jsonrpc.RxJsonRpcClient

  • Package org.consensusj.bitcoin.rx.jsonrpc: Reactive Bitcoin JSON-RPC client

    • RxBitcoinClient class (replaces RxBitcoinJsonRpcClient interface) (TODO: should also be interface?)

    • RxJsonChainTipClient

    • ChainTipService interface

    • PollingChainTipService

    • PollingChainTipServiceImpl

  • Package org.consensusj.bitcoin.rx.zeromq: Reactive ZeroMQ Bitcoin message handling

    • Refactored classes from org.consensusj.bitcoin.zeromq

New JAR: consensusj-rx-jsonrpc

  • Contains RxJsonRpcClient, so it can be available with fewer transitive dependencies.

cj-bitcoinj-dsl-js

  • Now uses standalone Nashorn

  • ScriptRunner and Demo can now run Javascript from a file

  • Requires JDK 17

Dependency Updates

  • bitcoinj 0.16-beta2

  • No longer depend directly on Guava, use transitive dependency from bitcoinj

  • JavaMoney API 1.1 (non-backport, modular version)

  • JavaMoney Moneta 1.4.2 (non-backport, modular version)

  • Jackson 2.13.0

  • Jakarta Inject API 2.0.1

  • Jakarta Annotation API 2.0.0 (in cj-btc-services, upgraded from javax.annotation-api)

  • RxJava 3.1.2

  • Groovy 3.0.9

  • Micronaut 3.1.1

Build/Test Updates

  • Gradle 7.2

  • Asciidoctor Gradle Plugin 3.3.2

  • 'GitHub Actions: Use Temurin (JDK 11 & 17)

  • 'GitHub Actions: Use GraalVM 21.3.0 (JDK 11 & 17)

  • 'GitHub Actions: Upgrade to [email protected] action

  • 'GitHub Actions: Upgrade to [email protected] action

  • Use Omni Core 0.11.0 in RegTest CI

v0.5.9

Released: 2021-08-03

JSON-RPC

  • Add support in RpcClient and subclasses for adding to or replacing the default (Java) trust store used for validating certificates on JSON-RP servers. Support is added via new constructors that take an SSLSocketFactory. See the public static methods on the class CompositeTrustManager that can be used to create SSLSocketFactories (factory factories cough.)

jsonrpc tool (consensusj-jsonrpc-cli)

  • Add support for additional/alternative trust stores with the --add-truststore <keystore> and --alt-truststore <keystore> command-line options.

Dependency Updates

  • RxJava 3.0.13

  • Jackson 2.12.4

  • SLF4J 1.7.32

  • Micronaut 2.5.11

Build/Test Updates

  • Fix, re-enable, and improve WalletSendSpec integration test

  • Spock 2.0-groovy-3.0 (released version)

v0.5.8

Released: 2021.05.11

JSON-RPC

  • Change default path for clients and servers from /jsonrpc to / (to match bitcoind and to be compatible with the bitcoin-cli command-line tool)

Dependency Updates

  • bitcoinj 0.5.10

  • RxJava 3.0.12

  • Micronaut 2.5.1

  • Groovy 3.0.8

Build/Test Updates

  • Update RegTest to use Omni Core 0.10.0 (Bitcoin Core 20.x)

  • Gradle 7.0.1

  • Publish JARs to Gitlab using maven-publish plugin

  • Remove Bintray plugin

  • Remove `maven’ plugin, use ‘maven-publish’ only

  • Update GraalVM build to GraalVM 21.1.0.r11

  • Upgrade to Asciidoctor 3.2.0 plugin

  • Update javadoc Jackson links to 2.12

  • Temporarily remove Javadoc JDK links (and mark with TODO)

v0.5.7

Released: 2021.03.16

cj-btc-json (Bitcoin JSON types)

  • Make AddressInfo labels property a List<Object> so it can accept both the Bitcoin Core 0.19 (List<Label>) and 0.20 formats (List<String>).

cj-btc-jsonrpc

  • Add RegTest support for Bitcoin Core 0.21 by creating default wallet ("") if it doesn’t exist.

  • Add basic listWallets() and createWallet() RPC methods.

cj-btc-zeromq

  • Fix issues when connecting to an uninitialized or syncing bitcoind

    • Find "active" ChainTip, not 0th ChainTip

    • Call waitForServer(120) when connecting

  • Better handling/logging of onError in a few places

consensusj-json-rpc-daemon cj-btc-daemon

  • Remove last usages of javax.inject.Singleton by temporarily disabling incremental annotation processing. (We can re-enable when Micronaut 2.4.1 is released.)

v0.5.6

Released: 2021.03.10

Upgrade a few more modules to JDK 11

  • consensusj-jsonrpc-daemon

  • cj-btc-daemon (also renamed from cj-btc-daemon-mn)

  • cj-btc-services

  • CLI tools

Remove Deprecated Server App Modules

  • Remove `bitcoinj-daemon' (SpringBoot-based Bitcoin JSON-RPC Server)

  • Remove `bitcoinj-peerserver' (SpringBoot-based Bitcoin JSON-RPC Server & WebSocket/STOMP server)

  • Remove bitcoinj-proxy (Ratpack-based Bitcoin JSON-RPC Proxy)

  • Remove cj-nmc-daemon (Ratpack-based Namecoin JSON-RPC Server)

Bitcoin JSON-RPC

  • Use ThreadPool for .provideAsync

  • Upgrade to JSON-RPC 2.0 (send "2.0" in requests)

  • Update listUnspent and UnspentOutput

  • Remove some deprecated and obsolete methods

  • Refactor and make RegTestFundingSource much more robust

CLI tools

  • Are now JDK11-based

jsonrpc tool (consensusj-jsonrpc-cli)

  • default to using jsonrpc version 2.0

  • -V1 option for using jsonrpc version 1.0

  • finish implementing -response option

  • print error message and "usage" when unrecognized command-line option(s) are given

Rx/ZeroMQ modules

  • Refactoring and improvements for (Micronaut-based) btcproxyd (separate repo)

Dependency Updates

  • Jackson 2.12.2

  • javax.inject to jakarta-inject 2.0.0

  • Micronaut 2.4.0

v0.5.5

Released: 2021.02.26

Artifact Renames

  • bitcoinj-json → cj-btc-json

  • bitcoinj-rpcclient → cj-btc-jsonrpc-integ-test

  • bitcoinj-dsl → cj-bitcoinj-dsl-gvy

  • bitcoinj-spock → cj-bitcoinj-spock

  • bitcoinj-dsljs —> cj-bitcoinj-dsl-js

Reactive (RxJava) bitcoinj and Bitcoin ZeroMQ support (Experimental)

  • New cj-btc-rx module with RxJava interfaces for receiving Block and Transaction updates

  • New cj-btc-zeromq module for receiving Block and Transaction updates via ZeroMQ

  • New cj-btc-rx-peergroup module for receiving Transactions (not Blocks currently) via RxJava

  • New cj-bitcoinj-util module with utility to compute block height from raw Block data

  • New consensusj-rx-zeromq module with generic RxJava ZeroMQ PubSub client

New consensusj-analytics module

  • Support for dynamic rich list generation (used by OmniJ)

Json-RPC CLI tools

  • New JsonRpcClient interface

  • Deprecate DynamicRpcMethodSupport (use JsonRpcClient instead)

  • Output is now in JSON format

  • miscellaneous improvements

Bitcoin JSON-RPC

  • Add gettxoutsetinfo RPC (BitcoinClient::getTxOutSetInfo) and TxOutSetInfo type

bitcoinj-json

  • AddressDeserializer and AddressKeyDeserializer have no-arg constructors that will allow deserialization for multiple networks (eg. mainnet, testnet, etc)

Bitcoin RegTest Functional Testing

  • Make RegTests compatible with Bitcoin Core 0.20.1

  • some WalletSendSpec fixes for bitcoinj testing but also @Ignore WalletSendSpec (for now)

Dependency Updates

  • bitcoinj 0.15.9

  • Jackson 2.12.1

  • RxJava 3.0.10

  • Micronaut 2.3.1

  • Groovy 3.0.7

Build

  • Official build now uses JDK 11 - 'GitHub Actions and Travis CI updated accordingly

  • TravisCI — add build target (which was surprisingly missing)

  • Add buildDeprecatedModules in settings.gradle, set to "true" for now (see Issue 69)

  • Asciidoclet is temporarily disabled (sadly)

  • Gradle 6.8.2

  • Update Micronaut daemon build scripts to latest Micronaut Gradle Plugin, etc.

  • Add 'GitHub Actions "Gradle Build": gradle.yml

  • Add 'GitHub Actions "GraalVM Build": graalvm.yml

  • Add 'GitHub Actions "Bitcoin Core RegTest": regtest.yml

  • Only build cj-bitcoinj-dsl-js if JDK < 15

  • Spock 2.0-M4-groovy-3.0

v0.5.4

Released: 2020.07.03

All Modules

  • Built with JDK 9, otherwise the same as v0.5.3.

v0.5.3

Released: 2020.07.03

Known Issues

  • Built with JDK 8, does not include all modules, v0.5.4 is recommended.

cj-btc-jsonrpc

  • Deprecate sendRawTransaction(Transaction tx, Boolean allowHighFees)

  • Replace with sendRawTransaction(Transaction tx, Coin maxFeeRate) (available in Bitcoin Core 0.19 and later)

  • Create temporary checkForLegacyBitcoinCore() method in RegTestFundingSource

  • Remove deprecated generate() methods in BitcoinExtendedClient

  • Related and semi-related code cleanup in BitcoinClient, BitcoinExtendedClient, and BitcoinExtendedClientSpec

cj-btc-services

  • Add getnetworkinfo() implementation

cj-btc-daemon-mn

  • Add proof-of-concept, partial Bitcoin Core REST API at "/rest" path.

bitcoinj-json

  • Deprecate getinfo method in BitcoinJsonRpc (server-side definition)

  • Add getnetworkinfo method in BitcoinJsonRpc *

bitcoinj-rpcclient

  • Test updates for sendRawTransaction(Transaction tx, Coin maxFeeRate)

  • Disable P2P-mode rpc.tx RegTests for now (due to intermittent Travis failures)

  • Miscellaneous test improvements

  • Restore to correct operation some @Ignored tests

v0.5.2

Released: 2020.06.30

cj-btc-jsonrpc

  • Deprecate signRawTransaction()

  • Add signRawTransactionWithWallet() to replace signRawTransaction()

bitcoinj-json

  • Add missing @JsonCreator to GetBlockInfo.Sha256HashList

All Modules

  • Gradle build test { useJUnitPlatform() } set in multiple places to re-enable Spock 2.0 tests

v0.5.1

Released: 2020.06.28

bitcoinj-json

  • Add more (partially implemented) Blockchain RPCs to BitcoinJsonRpc interface

    • getbestblockhash

    • getblock

    • getblockhash

    • getblockheader

    • getblockchaininfo

cj-btc-cli

  • Upgrade to Java 9

  • Code cleanup

  • Implement ToolProvider interface

  • Inherit improved default parameter parsing from consensusj-jsonrpc-cli

  • Fix and improve Graal native-image build of cj-bitcoin-cli

cj-btc-daemon

  • More (partially implemented) Blockchain RPCs via WalletAppKitService (see cj-btc-services, bitcoinj-json)

  • Improve Json RPC error handling

  • Fix native-image support

  • Upgrade to Micronaut 1.3.6

cj-btc-jsonrpc

  • Add generateToAddress RPC (Added in Bitcoin Core 0.13.0)

  • Deprecated generate RPC (Deprecated in Bitcoin Core 0.18.0)

  • Remove BitcoinClient.generateBlock() and BitcoinClient.generateBlocks() RPC methods (unused by OmniJ)

  • Add BitcoinExtendedClient.generateBlocks() to help OmniJ transition to generateToAddress

  • Properly handle slightly different "Connection refused" message returned by newer JVMs while waiting for server

  • Fix and improve Graal native-image build of MathTool sample

cj-btc-services

  • Partially implement some Blockchain RPCs in WalletAppKitService

    • getbestblockhash

    • getblock

    • getblockhash

    • getblockheader

    • getblockchaininfo

consensusj-currency

  • Upgrade to Moneta BP 1.4

consensusj-exchange

  • BaseXChangeExchangeRateProvider is now concrete and use of DynamicXChangeRateProvider is highly discourage (both are still deprecated)

  • Implement Reactive exchange client using RxJava

  • RxJava 3.0.4

  • Upgrade to XChange 4.4.2

  • Upgrade to Moneta BP 1.4

consensusj-jsonrpc

  • AbstractRpcClient set FAIL_ON_UNKNOWN_PROPERTIES to false by default

consensusj-jsonrpc-cli

  • Improved Parsing/conversion of params (works well enough for many commands)

  • Upgrade to Java 9

  • Is now a Java Module

  • Code cleanup

  • Implement ToolProvider interface

  • Fix and improve Graal native-image build of jsonrpc tool.

consensusj-jsonrpc-daemon

  • Improve native-image support

  • Upgrade to Micronaut 1.3.6

All Modules

  • Gradle build improvements

    • Use java-library plugin for most modules (and api dependencies)

    • Get Graal native-image builds working again

    • CI configuration improvements

    • Fix Bitcoin Core regTest integration tests

    • Run regTest integration tests on TravisCI

  • Update to bitcoinj 0.15.7

    • (Guava to 28.2-android)

  • Update to Jackson 2.10.3

  • Update to Gradle 6.5

  • Update to JUnit 4.13

  • Update to Groovy 3.0.4

  • Update to Spock 2.0-M3-groovy-3.0

  • Update to Gradle git-publish plugin 2.1.3

Known Issue

  • The three Spring Boot based projects: bitcoinj-daemon, bitcoinj-peerserver, and cj-nmc-daemon were not pushed to Bintray as part of the release process due to a Gradle plugin configuration issue.

v0.5.0

Released: 2020.03.06

cj-btc-jsonrpc

  • Change RPCPORT_REGTEST to 18443 to reflect change Bitcoin Core 0.16.0 and later

consensusj-currency

  • New artifact: currency classes that were previously in bitcoinj-money

  • Automatic Module Name org.consensusj.currency for Java Platform Module System

  • Classes are now in org.consensusj.currency package

  • Upgrade to JavaMoney moneta-bp 1.3

consensusj-exchange

  • New artifact: exchange classes that were previously in bitcoinj-money

  • Automatic Module Name org.consensusj.exchange for Java Platform Module System

  • Classes are now in org.consensusj.exchange package

  • Upgrade to JavaMoney moneta-bp 1.3

  • Upgrade to XChange 4.4.1

  • Remove deprecated BaseXChangeExchangeRateProvider subclasses (in favor of DynamicXChangeRateProvider)

  • DynamicXChangeRateProvider now handles exchange-specific currency codes (e.g. XBT)

bitcoinj-money

  • Refactored into consensusj-currency and consensusj-exchange

bitcoinj-proxy

  • Upgrade Ratpack to 1.7.6

All Modules

  • Set Gradle flags for reproducible JAR builds

  • Update to bitcoinj 0.15.6

  • Update to SLF4J 1.7.30 (has Automatic-Module-Name in MANIFEST.MF)

  • Update to Groovy 2.5.9

  • Other build improvements

v0.4.0

Released: 2019.03.26

bitcoinj 0.15.1 and JDK 8+ everywhere!

Breaking Changes

Release 0.4.0 upgrades to bitcoinj 0.15.1 for all modules with bitcoinj dependencies. bitcoinj 0.15.x adds support for Segregated Witness and contains breaking changes.

Release 0.4.0 is also the first release where all modules requires JDK 8 or later.

Some classes and modules have moved to different Java packages.

consensusj-decentralized-id

New, experimental module: Decentralized Identifiers (DIDs), and specifically BTCR DID Method support.

consensusj-jsonrpc

  • Add proof-of-concept (GraalVM/SubstrateVM-compatible) JSON-RPC Server (Service Layer) support

consensusj-jsonrpc-cli

New module: a general-purpose (no Bitcoin or cryptocurrency dependencies or specialization) JSON-RPC command-line client with request and response logging. Can be compiled to a native command-line tool using the GraalVM native-image tool.

consensusj-jsonrpc-daemon

New module: Micronaut-based (and GraalVM/SubstrateVM-compatible) JSON-RPC sample ("echo") server.

cj-btc-daemon-mn

New module: Micronaut-based proof-of-concept Bitcoin JSON-RPC server. This will probably replace the Spring-based bitcoinj-daemon going forward because it is faster and smaller. It also offers the possibility of GraalVM native-compilation if we can massage bitcoinj itself to work when statically compiled.

cj-btc-services (was bitcoinj-server)

  • Add WalletAppKitService (see Issue #42)

  • Remove Spring dependency

  • Move Peer*Service to PeerStompService to bitcoinj-peerserver module (since it needs Spring to compile)

bitcoinj-money

  • 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

bitcoinj-deamon

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

cj-nmc-deamon

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

All Modules

  • All modules now require JDK8 or later.

  • Update to bitcoinj 0.15.1

  • Update to SLF4J 1.7.26

  • Update to Jackson 2.9.8

  • Update to Groovy 2.5.6

  • Update to Spock 1.3

v0.3.1

Released: 2018.10.24

cj-btc-jsonrpc

  • Add getters for stdTxFee, stdRelayTxFee, defaultMaxConf to BitcoinExtendedClient

cj-btc-jsonrpc-gvy

  • 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

v0.3.0

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

bitcoinj-json

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

bitcoinj-money

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

bitcoinj-peerserver

  • Upgrade AngularJS, Bootstrap, etc. to latest WebJars

cj-btc-cli

  • module/filename changed from bitcoinj-cli

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

cj-btc-jsonrpc

  • module/filename changed from cjbtc-jsonrpc

cj-btc-jsonrpc-gvy

  • module/filename changed from cjbtc-jsonrpc-gvy

  • Now requires Java 8

New Modules

cj-btc-cli-kt
  • Experimental Kotlin version of cj-btc-cli

cj-eth-jsonrpc
  • Proof-of-concept Ethereum JSON-RPC client

cj-eth-jsonrpc-gvy
  • Groovy (Dynamic RPC methods) Ethereum JSON-RPC client

cj-nmc-daemon
  • New Namecoin daemon module created by Jeremy Rand

  • Currently a work-in-progress

cj-nmc-jsonrpc
  • Proof-of-concept Namecoin JSON-RPC client

cj-nmc-jsonrpc-gvy
  • 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)

v0.2.9

Released: 2018.07.10

New Modules

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

consensusj-jsonrpc
  • Java JSON-RPC client with no bitcoinj dependency

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

consensusj-jsonrpc-gvy
  • Groovy-enhanced JSON-RPC client with dynamic method support

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

cjbtc-jsonrpc
  • Java Bitcoin JSON-RPC client

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

cjbtc-jsonrpc-gvy
  • 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

bitcoinj-rpcclient

  • 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

bitcoinj-cli

  • 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.

v0.2.8

Released: 2018.07.03

bitcoinj-rpcclient

  • Fix Jackson type-conversion bug in AbstractRPCClient#send

v0.2.7

Released: 2018.07.03

bitcoinj-rpcclient

  • 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)

bitcoinj-cli

  • 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

bitcoinj-money

  • BREAKING: Upgrade to Java 8

  • Upgrade to XChange 4.3.8

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

bitcoinj-proxy

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

  • Add functional test of ProxyMain

  • Upgrade to Ratpack 1.5.4

bitcoinj-spock

  • 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

v0.2.6

Released: 2017.10.16

bitcoinj-rpcclient

  • Simplify UntypedRPCClient interface (subclasses of AbstractRPCClient not affected)

  • Improve JavaDoc

bitcoinj-cli

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

bitcoinj-money

  • Upgrade to XChange 4.2.3

bitcoinj-proxy

  • 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

v0.2.5

Released: 2017.08.09

bitcoinj-rpcclient

  • JSONRPCExtension now extends IOException

  • BitcoinClient handles thread interruption in waitFor* methods

bitcoinj-money

  • Upgrade to XChange 4.2.1

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

v0.2.4

Released: 2017.07.16

bitcoinj-rpcclient

  • 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.

bitcoinj-money

  • Improve concurrency and error-handling in BaseXChangeExchangeRateProvider

bitcoinj-daemon and bitcoinj-peerserver

  • Upgrade Spring Boot to 1.5.4

bitcoinj-proxy

  • 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.

v0.2.3

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

bitcoinj-money

  • Add Coinbase ExchangeRateProvider

  • Upgrade to XChange 4.2.0

bitcoinj-json

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

v0.2.2

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

bitcoinj-rpcclient

  • New RPC methods: addnode, getaddednodeinfo

  • Deprecate BitcoinClient#generateBlock

  • Disable hack enabling self-signed SSL RPC servers

bitcoinj-json

  • Add ECKey serializer (does not serialize private key)

  • Fix incorrectly named JSON properties in BlockChainInfo POJO

  • Fix deprecation warnings in serializers/deserializers

bitcoinj-money

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

  • Upgrade to XChange 4.1.0

bitcoinj-proxy

  • 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

v0.2.1

Released: 2016.11.06

Features/Changes

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

v0.2.0

Released: 2016.10.24

Breaking and potentially breaking changes

  • Bitcoin RPC clients require Bitcoin Core 0.10.4 (or Omni Core 0.0.11.1) 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

v0.1.3

Released: 2016.08.22

Features/Changes

  • 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

v0.1.2

Released: 2016.06.29

Features/Changes

  • 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

v0.1.1

Released: 2016.06.19

Features/Changes

  • 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

v0.1.0

Released: 2016.05.25

Features/Changes

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

v0.0.14

Released: 2016.05.17

Features/Changes

  • Update to bitcoinj 0.14.1 (adapt to breaking changes)

v0.0.13

Released: 2016.04.28

Features/Changes

  • Add ObservableExchangeRateProvider interface for BaseXChangeExchangeRateProvider

  • Allow multiple conversions of different pairs in one BaseXChangeExchangeRateProvider

v0.0.12

Released: 2016.04.22

Features/Changes

  • 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

v0.0.11

Released: 2015.11.24

Features/Changes

  • 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

v0.0.10

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.

Features/Changes

  • 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.

v0.0.9

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.

Features/Changes

  • 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.