A high-level view of the changes in each ConsensusJ binary release.
Released: in-progress
-
New Gradle submodule using Gradle
applicationplugin -
jsonrpc tool is now "jrpc" tool
-
jsonrpcbinary has been renamedjrpc
-
jsonrpc/jrpctool extracted to theconsensusj-jrpcsubmodule -
This module is now strictly a library of CLI utilities
-
bitcoinj 0.17
-
JSpecify 1.0.0
-
Jackson 2.19.4
-
RxJava 3.1.12
-
Jakarta Annotation API 3.0.0
-
JavaMoney Moneta 1.4.4
-
JeroMQ 0.6.0
-
SLF 2.0.17
-
Micronaut Platform 4.10.5
-
Groovy 4.0.28
-
commons-cli 1.11.0
-
Require JDK 21 or later to build, prefer JDK 25
-
Gradle 9.2.1
-
Develocity (aka Gradle Enterprise) 4.1
-
JUnit Jupiter 5.12.2
-
ByteBuddy 1.17.7
-
Objenesis 3.4
-
Combine GitHub Actions into single
build.ymlworkflow -
GitHub
gradle.ymlJDK Matrix: Java 17, 21, 25 -
Asciidoctor Gradle Plugin 4.0.4
Released: 2023-10-05
This release includes significant updates the JSON-RPC client(s) and contains what should be relatively minor breaking changes.
-
Upgraded to use
java.net.httpasynchronous 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
BitcionCienttoDefaultRpcClient -
DefaultRpcClientreplacesAbstractRpcClientand takes a configurableJsonRpcTransport -
Partial decoupling from Jackson JSON processor (see type parameter
TinJsonRpcClient<T>) -
Remove deprecated methods that use
SSLSocketFactory(In favor ofSSLContext) -
Remove deprecated methods that use/return
NetworkParameters.
-
Migrate from
FlowabletoPublisherwhere possible (breaking changes but easy to work around) -
Migrate from
Single/MaybetoCompletableFuturein some (mostly internal) places -
ChainTipPublisherclass help solves issues with erasure in generics and allow DI component constructors to take aChainTipPublisherrather thanChainTipClient.
-
See Issue 17 and
release-process.adoc. -
CI builds generate
SHA256SUMSfile for verification.
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.
-
Upgrade to bitcoinj-0.17-alpha2 API
-
More migration away from
NetworkParameters
-
JSON-RPC clients that need custom SSL behavior should implement the new constructors that take an
SSLContextand stop using the deprecated constructors that useSSLSocketFactory. (The deprecated constructors will be removed in the next alpha release!) -
Add (abstract)
sendRequestForResponseAsyncwith async becoming the preferred way to implement this interface. -
Now that this module requires Java 11+, the incubating
java.net.http-based clientJsonRpcClientJavaNethas been moved here. Theconsensusj-jsonrpc-javanetmodule has been removed. Feel free to try out this client instead ofJsonRpcClientHttpUrlConnectionand let us know how it works.
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.
-
BaseJsonRpcToolandjsonrpctool use thejava.net.httpimplementation (JsonRpcClientJavaNet) rather than the oldjava.net.HttpURLConnectionimplementation.
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.
-
Upgrade to bitcoinj-0.17-alpha1 API
-
Migrate from
NetworkParameterstoNetworkwhere possible -
Remove usage of Guava
ListenableFuture -
Remove
PatchedTransactionclass used to work around an issue in bitcoinj, see bitcoinj #2274
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()) -
BaseTransactionSignercan look up keys and pubKeys -
Distinguish between
RawTransactionSigningRequestandSigningRequest(i.e. the later has all UTXO information and can be signed with keychain only) -
(Generally) construct SigningRequest with
of, remove (most) add methods -
SigningRequestconstructor that specifies outputs as aMap<Address, Coin> -
Rename
TransactionInputDataImpltoTransactionInputDataUtxo -
Utxo interface with Base, Signable, and Complete implementations
-
UtxoInfo, PrevTxOutInfo change scriptPubKey type to Script (from String)
-
Add ScriptSerializer
-
WalletAppKitServicesupports (at least subsets of) many additional RPC methods:-
createrawtransaction -
sendrawtransaction -
getbalance -
getnewaddress -
listunspent -
sendtoaddress -
signrawtransactionwithwallet
-
-
WalletAppKitService: deprecatedgetinfomethod removed -
WalletSigningServicecan look up UTXOscriptPubKeyand amount
-
Most modules now require a minimum of JDK 11 or later (see
README.adocfor exceptions) -
bitcoinj 0.17-alpha1
-
Jackson 2.15.0
-
Micronaut 3.9.1
-
Groovy 4.0.12
-
Gradle 8.1.1
-
Use
JAVA_HOMEnotGRAALVM_HOMEto findnative-imagetool inconsensusj-jsonrpc,consensusj-jsonrpc-cliandcj-btc-clibuilds. -
GitHub JDK Matrix: Java 11, 17, 20
-
gradle-git-publish4.2.0 -
gitPublishPushCopy.dependsOn javadocAll, asciidoctor -
Publish source and Javadoc JARs
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.
-
#99:
BlockChainInfo: fix case errors in@JsonPropertyconstructor annotations.
-
#100: Remove
ignoreUnknownannotation on defined JSON POJOs
-
bitcoinj 0.16.2
-
Jackson 2.14.2
-
RxJava 3.1.6
-
Micronaut 3.8.8
-
SLF4J 2.0.7
-
Groovy 4.0.11
Released: 2022-10-04
-
Improve
createwalletsupport for Bitcoin Core v23 (descriptor wallets) -
Add support for using named wallet (not just
"") in tests -
Add
unloadwalletmethods -
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 overloadedlistUnspentthat takes a single address for filter -
BitcoinCient: usenew ContextnotgetOrCreateinthreadFactory -
BitcoinExtendedClient: Add no-args constructor that readsbitcoin.conffor connection info -
Deprecate
BitcoinCLIClient.groovy, -
BlockchainSyncingmigrate from Groovytraitto Javainterface -
BlockchainDotInfoSyncing,BlockCypherSyncingmigrate fromtraittointerface -
Add
BitcoinClientAccessor.java(replaces BitcoinClientDelegate.groovy) -
ADD
FundingSourceAccessor.java(replaces FundingSourceDelegate.groovy)
-
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
consolidateCoinstoBaseRegTestSpec -
Use built-in @Slf4j annotation where needed
-
Use named wallet (
consensusj-regtest-wallet) for RegTest mining and test funding
Released: 2022-09-01
-
add
BitcoinTransactionInfoforlisttransactions -
WalletTransactionInfo: adddecodedproperty (RawTransactionInfo) -
RawTransactionInfo: create inner POJO forscriptPubKeyproperty -
CoinDeserializerallow reading fromString -
ZMQNotification: migrate to record-like accessors, deprecate getters. (In the future we may do this for all "POJOs" in this module)
-
BitcoinClient: addlistTransactions() -
BitcoinClient: deprecategetNetParams() -
BitcoinClient: create overload ofgetTransactionwith additional nullable parameters
-
Continue to depend on bitcoinj 0.16.1 but decrease usage of
org.bitcoinj.core.Contextto prepare for breaking changes in bitcoinj 0.17. -
SLF4J 2.0.0
Released: 2022-07-26
-
Fixed a build issue causing
cj-btc-jsonrpc-gvyto 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’sjava.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
-
Released: 2022-07-25
-
JSON-RPC clients: Java 9
-
JSON-RPC servers: Java 17
-
CLI modules: Java 17
For details see ConsensusJ Modules in the README.
-
All libraries now have
Automatic-Module-Nameset 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.rpc→org.consensusj.bitcoin.jsonrpc -
org.consensusj.bitcoin.test→org.consensusj.bitcoin.jsonrpc.test -
org.consensusj.bitcoin.rpc.groovy→org.consensusj.bitcoin.jsonrpc.groovy -
org.consensusj.bitcoin.rpcserver→org.consensusj.bitcoin.rpc.json.rpc
-
-
org.consensusj.jsonrpc.JsonRpcService.call(JsonRpcRequest)now returnsCompletableFuture<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.
-
add
helpandstopcommands toWalletAppKitService. -
JSON-RPC methods defined in
BitcoinJsonRpcnow returnCompletableFuture(even thoughWalletAppKitServicemethods still operate synchronously.)
-
Continued development of transaction signer stuff classes (incubating)
-
Updated BIP43 support (incubating)
-
These modules were experimental, unused (to my knowledge) and are easily constructed from the Java version with
implements DynamicRpcMethodFallback.
@theborakompanioni - PR #82: Fix README links.
Released: 2022-03-12
-
Add
HDKeychainSigner,BipStandardDeterministicKeychain, tests.-
SigningRequestis essentially an immutable, unsigned transaction -
HDKeychainSigneris an HD keychain that can sign aSigningRequest -
BipStandardDeterministicKeyChainis an HD keychain that supports BIP 44, BIP 84, etc. -
KeychainRoundTripStepwiseSpecis a functional test that tests all the above
-
-
Add BitCore/Omni
getAddressUtxos()/getaddressutxosmethod (requires address indexing)
-
Add BitCore/Omni
AddressUtxoResultandAddressUtxoInfoPOJOs -
AddressDeserializer: Include the invalid address in InvalidFormatException message
-
RpcClientModule: add constructor with strictAddressParsing boolean
-
bitcoinj 0.16.1
-
Jackson 2.13.1
-
RxJava 3.1.3
-
Micronaut 3.3.4
-
Groovy 3.0.10
-
SLF4J 1.7.36
Released: 2021-11-16
-
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)
-
Use TextNode.asText() to properly process JSON strings (improves format of output for
helpand other commands that return a JSON string)
-
Add BitCore/Omni
AddressBalanceInfoandAddressRequestPOJOs -
Add
MethodHelpEntryPOJO -
Deprecate
org.consensusj.bitcoin.rpc.bitcoind.AppDirectory(useorg.bitcoinj.utils.AppDataDirectoryinstead
-
Add BitCore/Omni
getbalanceinfomethod (requires address indexing) -
Add isAddressIndexEnabled method
-
Add methods for parsing
helpresults
Released: 2021-11-11
This release allows btcproxy to use org.consensusj.bitcoin.rx.jsonrpc.RxBitcoinClient instead of its own implementation.
-
Fix incorrect usage of JDK 9+ APIs
-
Use
Publisher(rather thanObservable) for result ofrichListUpdates
-
Add
RxJsonRpcClient::defermethod for making deferred calls toCompletableFutureasync methods
-
Rename
ZmqTopicPublishertoRxZmqContext(a context has multiple publishers) -
Rename
ZmqFlowabletoZMsgSocketFlowable
-
Rename
ChainTip::getActiveChainTipmethod toChainTip::findActiveChainTip -
Add
ChainTip::findActiveChainTipOrElseThrowmethod -
Add
ChainTip::ofActivefor constructing from active height and hash
-
RxBitcoinClient: extendBitcoinExtendedClient -
RxBitcoinClient: add constructor that takesSSLSocketFactory -
RxBitcoinClient: Pull up methods fromRxBitcoinZmqService -
RxBitcoinZmq*Serviceconstructors now takeRxBitcoinClient -
Replace usage of RxJava 3 internal class (
ObservableInterval) -
Improved propagation of errors and completions to clients
-
Add TxOutSetService (contains
PublisherforTxOutSetInfo)
Released: 2021-11-04
-
RpcClientrenamed toJsonRpcClientHttpUrlConnection -
Removed deprecated
DynamicRPCMethodSupportinterface (replacement isJsonRpcClient) -
Use
java.util.Base64for JSON-RPC auth encoding (requires Android 8.0 or later)
-
uses
java.net.http.HttpClient -
Currently implements synchronous
AbstractRpcClientAPI -
Incubating (e.g. mostly untested)
Released: 2021-11-01
-
org.consensusj.bitcoin.jsonandorg.consensusj.bitcoin.jsonrpcare now automatic modules -
Remaining
com.msgilliganpackages are now inorg.consensusj -
Rx-related refactoring:
cj-btc-zeromq→consensusj-rx-jsonrpcandcj-btc-rx-jsonrpc
-
cj-btc-zeromqrenamed tocj-btc-rx-jsonrpc -
RxJsonRpcClientmoved toconsensusj-rx-jsonrpc/org.consensusj.rx.jsonrpc.RxJsonRpcClient -
Package
org.consensusj.bitcoin.rx.jsonrpc: Reactive Bitcoin JSON-RPC client-
RxBitcoinClientclass (replacesRxBitcoinJsonRpcClientinterface) (TODO: should also be interface?) -
RxJsonChainTipClient -
ChainTipServiceinterface -
PollingChainTipService -
PollingChainTipServiceImpl
-
-
Package
org.consensusj.bitcoin.rx.zeromq: Reactive ZeroMQ Bitcoin message handling-
Refactored classes from
org.consensusj.bitcoin.zeromq
-
-
Contains
RxJsonRpcClient, so it can be available with fewer transitive dependencies.
-
Now uses standalone Nashorn
-
ScriptRunnerandDemocan now run Javascript from a file -
Requires JDK 17
-
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 fromjavax.annotation-api) -
RxJava 3.1.2
-
Groovy 3.0.9
-
Micronaut 3.1.1
Released: 2021-08-03
-
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
CompositeTrustManagerthat can be used to create SSLSocketFactories (factory factories cough.)
-
Add support for additional/alternative trust stores with the
--add-truststore <keystore>and--alt-truststore <keystore>command-line options.
Released: 2021.05.11
-
Change default path for clients and servers from
/jsonrpcto/(to matchbitcoindand to be compatible with thebitcoin-clicommand-line tool)
-
Update RegTest to use Omni Core 0.10.0 (Bitcoin Core 20.x)
-
Gradle 7.0.1
-
Publish JARs to Gitlab using
maven-publishplugin -
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)
Released: 2021.03.16
-
Make
AddressInfolabelsproperty aList<Object>so it can accept both the Bitcoin Core 0.19 (List<Label>) and 0.20 formats (List<String>).
-
Add RegTest support for Bitcoin Core 0.21 by creating default wallet (
"") if it doesn’t exist. -
Add basic
listWallets()andcreateWallet()RPC methods.
-
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
onErrorin a few places
Released: 2021.03.10
-
consensusj-jsonrpc-daemon -
cj-btc-daemon(also renamed fromcj-btc-daemon-mn) -
cj-btc-services -
CLI tools
-
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)
-
Use
ThreadPoolfor.provideAsync -
Upgrade to JSON-RPC 2.0 (send
"2.0"in requests) -
Update
listUnspentandUnspentOutput -
Remove some deprecated and obsolete methods
-
Refactor and make
RegTestFundingSourcemuch more robust
-
default to using
jsonrpcversion 2.0 -
-V1 option for using
jsonrpcversion 1.0 -
finish implementing
-responseoption -
print error message and "usage" when unrecognized command-line option(s) are given
Released: 2021.02.26
-
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
-
New
cj-btc-rxmodule with RxJava interfaces for receiving Block and Transaction updates -
New
cj-btc-zeromqmodule for receiving Block and Transaction updates via ZeroMQ -
New
cj-btc-rx-peergroupmodule for receiving Transactions (not Blocks currently) via RxJava -
New
cj-bitcoinj-utilmodule with utility to compute block height from raw Block data -
New
consensusj-rx-zeromqmodule with generic RxJava ZeroMQ PubSub client
-
New
JsonRpcClientinterface -
Deprecate
DynamicRpcMethodSupport(useJsonRpcClientinstead) -
Output is now in JSON format
-
miscellaneous improvements
-
AddressDeserializerandAddressKeyDeserializerhave no-arg constructors that will allow deserialization for multiple networks (eg. mainnet, testnet, etc)
-
Make RegTests compatible with Bitcoin Core 0.20.1
-
some
WalletSendSpecfixes for bitcoinj testing but also@IgnoreWalletSendSpec(for now)
-
Official build now uses JDK 11 - 'GitHub Actions and Travis CI updated accordingly
-
TravisCI — add
buildtarget (which was surprisingly missing) -
Add
buildDeprecatedModulesinsettings.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-jsif JDK < 15 -
Spock 2.0-M4-groovy-3.0
Released: 2020.07.03
-
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 inBitcoinExtendedClient -
Related and semi-related code cleanup in
BitcoinClient,BitcoinExtendedClient, andBitcoinExtendedClientSpec
-
Deprecate
getinfomethod inBitcoinJsonRpc(server-side definition) -
Add
getnetworkinfomethod inBitcoinJsonRpc*
Released: 2020.06.30
-
Deprecate
signRawTransaction() -
Add
signRawTransactionWithWallet()to replacesignRawTransaction()
Released: 2020.06.28
-
Add more (partially implemented) Blockchain RPCs to
BitcoinJsonRpcinterface-
getbestblockhash -
getblock -
getblockhash -
getblockheader -
getblockchaininfo
-
-
Upgrade to Java 9
-
Code cleanup
-
Implement
ToolProviderinterface -
Inherit improved default parameter parsing from
consensusj-jsonrpc-cli -
Fix and improve Graal native-image build of
cj-bitcoin-cli
-
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
-
Add
generateToAddressRPC (Added in Bitcoin Core 0.13.0) -
Deprecated
generateRPC (Deprecated in Bitcoin Core 0.18.0) -
Remove
BitcoinClient.generateBlock()andBitcoinClient.generateBlocks()RPC methods (unused by OmniJ) -
Add
BitcoinExtendedClient.generateBlocks()to help OmniJ transition togenerateToAddress -
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
-
Partially implement some Blockchain RPCs in
WalletAppKitService-
getbestblockhash -
getblock -
getblockhash -
getblockheader -
getblockchaininfo
-
-
BaseXChangeExchangeRateProvider is now concrete and use of
DynamicXChangeRateProvideris 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
-
Improved Parsing/conversion of params (works well enough for many commands)
-
Upgrade to Java 9
-
Is now a Java Module
-
Code cleanup
-
Implement
ToolProviderinterface -
Fix and improve Graal native-image build of
jsonrpctool.
-
Gradle build improvements
-
Use
java-libraryplugin for most modules (andapidependencies) -
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
Released: 2020.03.06
-
New artifact: currency classes that were previously in bitcoinj-money
-
Automatic Module Name
org.consensusj.currencyfor Java Platform Module System -
Classes are now in
org.consensusj.currencypackage -
Upgrade to JavaMoney moneta-bp 1.3
-
New artifact: exchange classes that were previously in bitcoinj-money
-
Automatic Module Name
org.consensusj.exchangefor Java Platform Module System -
Classes are now in
org.consensusj.exchangepackage -
Upgrade to JavaMoney moneta-bp 1.3
-
Upgrade to XChange 4.4.1
-
Remove deprecated
BaseXChangeExchangeRateProvidersubclasses (in favor ofDynamicXChangeRateProvider) -
DynamicXChangeRateProvidernow handles exchange-specific currency codes (e.g.XBT)
Released: 2019.03.26
bitcoinj 0.15.1 and JDK 8+ everywhere!
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.
New, experimental module: Decentralized Identifiers (DIDs), and specifically BTCR DID Method support.
-
Add proof-of-concept (GraalVM/SubstrateVM-compatible) JSON-RPC Server (Service Layer) support
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.
New module: Micronaut-based (and GraalVM/SubstrateVM-compatible) JSON-RPC sample ("echo") server.
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.
-
Add
WalletAppKitService(see Issue #42) -
Remove Spring dependency
-
Move
Peer*ServicetoPeerStompServicetobitcoinj-peerservermodule (since it needs Spring to compile)
-
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
DynamicXChangeRateProviderandBaseXChangeExchangeRateProvider
-
Use
WalletAppKitServiceinstead ofPeerGroupService(see Issue #42)
-
Use
WalletAppKitServiceinstead ofPeerGroupService(see Issue #42)
Released: 2018.10.24
-
Remove
stdTxFee,stdRelayTxFee,defaultMaxConffromBTCTestSupporttrait (now uses the getters inBitcoinExtendedClientviaBitcoinClientDelegate)
Released: 2018.07.31
-
All classes with
RPCin name now useRpc -
Low-level RPC send method is now
sendRequestForResponse() -
JsonRpcResponseis now immutable -
Make order of constructor args consistent in JsonRpcRequest
-
Rename Dynamic RPC Methods support classes
-
UntypedRPCClient→DynamicRpcMethodSupport -
DynamicRPCFallback→DynamicRpcMethodFallback
-
-
use
longfornonceinBlockInfo(fixes #44)
-
module/filename changed from
bitcoinj-cli -
Fixes for JSON-RPC parameter type on
generate/setgenerateandgetblockhash
- 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
-
-
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
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
-
-
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.
Released: 2018.07.03
-
BREAKING: Move
jsonrpcsubpackage fromcom.msgilligantoorg.consensusj -
Gracefully handle error case in
RPCClientwhereerrorStreamis 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.conffor settings
-
BREAKING: Upgrade to Java 8
-
Upgrade to XChange 4.3.8
-
Upgrade to
org.javamoney:moneta(JavaMoney) 1.2.1 frommoneta-bp
-
BREAKING: Move
proxypackage formcom.msgilligan.bitcointoorg.consensusj -
Add functional test of
ProxyMain -
Upgrade to Ratpack 1.5.4
-
Travis CI test builds on
oraclejdk9andopenjdk8 -
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
UntypedRPCClientinterface (subclasses ofAbstractRPCClientnot affected) -
Improve JavaDoc
Released: 2017.07.16
-
Fix: Look for
bitcoin.confin~/.bitcoinon 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.rpctojsonrpcsubpackage.
-
Upgrade Groovy to 2.5.0-beta-1
-
Use Groovy invokedynamic ("indy") jars and compiler flag
-
Upgrade several Gradle build plugins
Released: 2017.05.22
-
Fix error when Gradle
bintrayUploadtask run on root project -
Upgrade Groovy to 2.4.11
-
Upgrade Gradle to 3.5
Released: 2017.04.26
-
Update README.adoc
-
Assorted code, build, JavaDoc improvements
-
build.gradlereadsJDK7_HOMEenvironment 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
ECKeyserializer (does not serialize private key) -
Fix incorrectly named JSON properties in
BlockChainInfoPOJO -
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
Released: 2016.10.24
-
Bitcoin RPC clients require Bitcoin Core 0.10.4 (or Omni Core 0.0.11.1) or later
-
Migrate to using
generateto 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
BaseXChangeExchangeRateProvidercorrectly 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
generateRPC method -
Add
.travis.ymlfor 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
-
ExchangeRateObserverwill 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.
Released: 2016.06.19
-
Improvements to
bitcoin.confreading classes -
new
BitcoinScriptingClient-
Has typed Java methods and dynamic, Groovy fallback methods
-
No configuration constructor that uses
bitcoin.conf
-
-
new
AbstractRPCClientto allow alternate HTTP transport client -
new
DynamicRPCFallbackGroovy trait to add dynamic methods to anyRPCClientsubclass -
new
NamecoinScriptingClientandnamecoin.conffile reading support -
add
listAddressGroupingsmethod toBitcoinClient -
Fix: correctly pass command-line
argsto daemon and peerserver apps -
Update to bitcoinj 0.14.3
-
Update to Groovy 2.4.7
-
Other library updates (slf4j)
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-groovymodule tobitcoinj-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
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
-
Deprecated
BTCutility class removed. -
Alternate
RPCClientconstructors removed (doesn’t affectBitcoinClient) -
Some methods return POJOs where they previously returned
Map.
-
BitcoinClientconstructor 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.
-
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()(alsogenerateBlock(),generateBlocks()) when talking tobitcoind0.9.x or earlier will return an empty list rather thannull. If server is0.10.xor later, will return a list ofSha256Hash.
-
JSON-RPC client and server are now sharing Jackson JSON serializer, deserializers, and POJOs in the
bitcoinj-jsonmodule. -
JSON-RPC server now has a skeleton implementation of
getinfo. -
Miscelleneous documentation improvements.
-
Issue #10 Broken links in
doc/index.adocfixed