A high-level view of the changes in each ConsensusJ binary release.
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.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
toDefaultRpcClient
-
DefaultRpcClient
replacesAbstractRpcClient
and takes a configurableJsonRpcTransport
-
Partial decoupling from Jackson JSON processor (see type parameter
T
inJsonRpcClient<T>
) -
Remove deprecated methods that use
SSLSocketFactory
(In favor ofSSLContext
) -
Remove deprecated methods that use/return
NetworkParameters
.
-
Migrate from
Flowable
toPublisher
where possible (breaking changes but easy to work around) -
Migrate from
Single
/Maybe
toCompletableFuture
in some (mostly internal) places -
ChainTipPublisher
class help solves issues with erasure in generics and allow DI component constructors to take aChainTipPublisher
rather thanChainTipClient
.
-
See Issue 17 and
release-process.adoc
. -
CI builds generate
SHA256SUMS
file 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
SSLContext
and stop using the deprecated constructors that useSSLSocketFactory
. (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 clientJsonRpcClientJavaNet
has been moved here. Theconsensusj-jsonrpc-javanet
module has been removed. Feel free to try out this client instead ofJsonRpcClientHttpUrlConnection
and 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
.
-
BaseJsonRpcTool
andjsonrpc
tool use thejava.net.http
implementation (JsonRpcClientJavaNet
) rather than the oldjava.net.HttpURLConnection
implementation.
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
NetworkParameters
toNetwork
where possible -
Remove usage of Guava
ListenableFuture
-
Remove
PatchedTransaction
class 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()
) -
BaseTransactionSigner
can look up keys and pubKeys -
Distinguish between
RawTransactionSigningRequest
andSigningRequest
(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 aMap<Address, Coin>
-
Rename
TransactionInputDataImpl
toTransactionInputDataUtxo
-
Utxo interface with Base, Signable, and Complete implementations
-
UtxoInfo, PrevTxOutInfo change scriptPubKey type to Script (from String)
-
Add ScriptSerializer
-
WalletAppKitService
supports (at least subsets of) many additional RPC methods:-
createrawtransaction
-
sendrawtransaction
-
getbalance
-
getnewaddress
-
listunspent
-
sendtoaddress
-
signrawtransactionwithwallet
-
-
WalletAppKitService
: deprecatedgetinfo
method removed -
WalletSigningService
can look up UTXOscriptPubKey
and amount
-
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
-
Gradle 8.1.1
-
Use
JAVA_HOME
notGRAALVM_HOME
to findnative-image
tool inconsensusj-jsonrpc
,consensusj-jsonrpc-cli
andcj-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
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@JsonProperty
constructor annotations.
-
#100: Remove
ignoreUnknown
annotation 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
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 overloadedlistUnspent
that takes a single address for filter -
BitcoinCient
: usenew Context
notgetOrCreate
inthreadFactory
-
BitcoinExtendedClient
: Add no-args constructor that readsbitcoin.conf
for connection info -
Deprecate
BitcoinCLIClient.groovy
, -
BlockchainSyncing
migrate from Groovytrait
to Javainterface
-
BlockchainDotInfoSyncing
,BlockCypherSyncing
migrate fromtrait
tointerface
-
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
consolidateCoins
toBaseRegTestSpec
-
Use built-in @Slf4j annotation where needed
-
Use named wallet (
consensusj-regtest-wallet
) for RegTest mining and test funding
Released: 2022-09-01
-
add
BitcoinTransactionInfo
forlisttransactions
-
WalletTransactionInfo
: adddecoded
property (RawTransactionInfo) -
RawTransactionInfo
: create inner POJO forscriptPubKey
property -
CoinDeserializer
allow 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 ofgetTransaction
with additional nullable parameters
-
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
Released: 2022-07-26
-
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’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-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.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
help
andstop
commands toWalletAppKitService
. -
JSON-RPC methods defined in
BitcoinJsonRpc
now returnCompletableFuture
(even thoughWalletAppKitService
methods 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.-
SigningRequest
is essentially an immutable, unsigned transaction -
HDKeychainSigner
is an HD keychain that can sign aSigningRequest
-
BipStandardDeterministicKeyChain
is an HD keychain that supports BIP 44, BIP 84, etc. -
KeychainRoundTripStepwiseSpec
is a functional test that tests all the above
-
-
Add BitCore/Omni
getAddressUtxos()
/getaddressutxos
method (requires address indexing)
-
Add BitCore/Omni
AddressUtxoResult
andAddressUtxoInfo
POJOs -
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
help
and other commands that return a JSON string)
-
Add BitCore/Omni
AddressBalanceInfo
andAddressRequest
POJOs -
Add
MethodHelpEntry
POJO -
Deprecate
org.consensusj.bitcoin.rpc.bitcoind.AppDirectory
(useorg.bitcoinj.utils.AppDataDirectory
instead
-
Add BitCore/Omni
getbalanceinfo
method (requires address indexing) -
Add isAddressIndexEnabled method
-
Add methods for parsing
help
results
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::defer
method for making deferred calls toCompletableFuture
async methods
-
Rename
ZmqTopicPublisher
toRxZmqContext
(a context has multiple publishers) -
Rename
ZmqFlowable
toZMsgSocketFlowable
-
Rename
ChainTip::getActiveChainTip
method toChainTip::findActiveChainTip
-
Add
ChainTip::findActiveChainTipOrElseThrow
method -
Add
ChainTip::ofActive
for constructing from active height and hash
-
RxBitcoinClient
: extendBitcoinExtendedClient
-
RxBitcoinClient
: add constructor that takesSSLSocketFactory
-
RxBitcoinClient
: Pull up methods fromRxBitcoinZmqService
-
RxBitcoinZmq*Service
constructors now takeRxBitcoinClient
-
Replace usage of RxJava 3 internal class (
ObservableInterval
) -
Improved propagation of errors and completions to clients
-
Add TxOutSetService (contains
Publisher
forTxOutSetInfo
)
Released: 2021-11-04
-
RpcClient
renamed toJsonRpcClientHttpUrlConnection
-
Removed deprecated
DynamicRPCMethodSupport
interface (replacement isJsonRpcClient
) -
Use
java.util.Base64
for JSON-RPC auth encoding (requires Android 8.0 or later)
-
uses
java.net.http.HttpClient
-
Currently implements synchronous
AbstractRpcClient
API -
Incubating (e.g. mostly untested)
Released: 2021-11-01
-
org.consensusj.bitcoin.json
andorg.consensusj.bitcoin.jsonrpc
are now automatic modules -
Remaining
com.msgilligan
packages are now inorg.consensusj
-
Rx-related refactoring:
cj-btc-zeromq
→consensusj-rx-jsonrpc
andcj-btc-rx-jsonrpc
-
cj-btc-zeromq
renamed tocj-btc-rx-jsonrpc
-
RxJsonRpcClient
moved toconsensusj-rx-jsonrpc
/org.consensusj.rx.jsonrpc.RxJsonRpcClient
-
Package
org.consensusj.bitcoin.rx.jsonrpc
: Reactive Bitcoin JSON-RPC client-
RxBitcoinClient
class (replacesRxBitcoinJsonRpcClient
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
-
-
Contains
RxJsonRpcClient
, so it can be available with fewer transitive dependencies.
-
Now uses standalone Nashorn
-
ScriptRunner
andDemo
can 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
-
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
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
CompositeTrustManager
that 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
/jsonrpc
to/
(to matchbitcoind
and to be compatible with thebitcoin-cli
command-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-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)
Released: 2021.03.16
-
Make
AddressInfo
labels
property 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
onError
in 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
ThreadPool
for.provideAsync
-
Upgrade to JSON-RPC 2.0 (send
"2.0"
in requests) -
Update
listUnspent
andUnspentOutput
-
Remove some deprecated and obsolete methods
-
Refactor and make
RegTestFundingSource
much more robust
-
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
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-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
JsonRpcClient
interface -
Deprecate
DynamicRpcMethodSupport
(useJsonRpcClient
instead) -
Output is now in JSON format
-
miscellaneous improvements
-
AddressDeserializer
andAddressKeyDeserializer
have no-arg constructors that will allow deserialization for multiple networks (eg. mainnet, testnet, etc)
-
Make RegTests compatible with Bitcoin Core 0.20.1
-
some
WalletSendSpec
fixes for bitcoinj testing but also@Ignore
WalletSendSpec
(for now)
-
Official build now uses JDK 11 - 'GitHub Actions and Travis CI updated accordingly
-
TravisCI — add
build
target (which was surprisingly missing) -
Add
buildDeprecatedModules
insettings.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
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
getinfo
method inBitcoinJsonRpc
(server-side definition) -
Add
getnetworkinfo
method inBitcoinJsonRpc
*
Released: 2020.06.30
-
Deprecate
signRawTransaction()
-
Add
signRawTransactionWithWallet()
to replacesignRawTransaction()
Released: 2020.06.28
-
Add more (partially implemented) Blockchain RPCs to
BitcoinJsonRpc
interface-
getbestblockhash
-
getblock
-
getblockhash
-
getblockheader
-
getblockchaininfo
-
-
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
-
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
generateToAddress
RPC (Added in Bitcoin Core 0.13.0) -
Deprecated
generate
RPC (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
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
-
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.
-
Gradle build improvements
-
Use
java-library
plugin for most modules (andapi
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
Released: 2020.03.06
-
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
-
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 ofDynamicXChangeRateProvider
) -
DynamicXChangeRateProvider
now 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*Service
toPeerStompService
tobitcoinj-peerserver
module (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
DynamicXChangeRateProvider
andBaseXChangeExchangeRateProvider
-
Use
WalletAppKitService
instead ofPeerGroupService
(see Issue #42)
-
Use
WalletAppKitService
instead ofPeerGroupService
(see Issue #42)
Released: 2018.10.24
-
Remove
stdTxFee
,stdRelayTxFee
,defaultMaxConf
fromBTCTestSupport
trait (now uses the getters inBitcoinExtendedClient
viaBitcoinClientDelegate
)
Released: 2018.07.31
-
All classes with
RPC
in name now useRpc
-
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
-
UntypedRPCClient
→DynamicRpcMethodSupport
-
DynamicRPCFallback
→DynamicRpcMethodFallback
-
-
use
long
fornonce
inBlockInfo
(fixes #44)
-
module/filename changed from
bitcoinj-cli
-
Fixes for JSON-RPC parameter type on
generate
/setgenerate
andgetblockhash
- 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
jsonrpc
subpackage fromcom.msgilligan
toorg.consensusj
-
Gracefully handle error case in
RPCClient
whereerrorStream
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 frommoneta-bp
-
BREAKING: Move
proxy
package formcom.msgilligan.bitcoin
toorg.consensusj
-
Add functional test of
ProxyMain
-
Upgrade to Ratpack 1.5.4
-
Travis CI test builds on
oraclejdk9
andopenjdk8
-
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 ofAbstractRPCClient
not affected) -
Improve JavaDoc
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
tojsonrpc
subpackage.
-
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
bintrayUpload
task 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.gradle
readsJDK7_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
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
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.
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 anyRPCClient
subclass -
new
NamecoinScriptingClient
andnamecoin.conf
file reading support -
add
listAddressGroupings
method toBitcoinClient
-
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)
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 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
BTC
utility class removed. -
Alternate
RPCClient
constructors removed (doesn’t affectBitcoinClient
) -
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.
-
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 tobitcoind
0.9.x or earlier will return an empty list rather thannull
. If server is0.10.x
or later, will return a list ofSha256Hash
.
-
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.
-
Issue #10 Broken links in
doc/index.adoc
fixed