Open DanGould opened 3 months ago
Just to clarify, because all these crates are a bit confusing:
miniscript
has now moved to using bitcoind-json-rpc-regtest
to run integration tests (miniscript/bitcoind-tests/
) against Core versions 17.1
through to 25.0
.bitcoind-json-rpc-regtest
is a blessed fork of bitcoind
that uses bitcoind-json-rpc-client
- with no other meaningful changes.bitcoind-json-rpc-client
depends on bitcoind-json-rpc-types
bitcoind-json-rpc-client
is not meant for production, but is explicitly provided for use with bitcoind-json-rpc-regtest
for integration testing.bitcoind-json-rpc-types
can be used in production so folks don't have to re-write all the json typesThe next steps are:
rust-jsonrpc
crate into the rust-bitcoin-json-rpc
repositoryrust-bitconi-json-rpc
repository into the rust-bitcoin
orgbitcoind
repository (currently in Ricardo's github account)rust-bitcoincore-rpc
repo (archive or at least mention why there are two in the org)Applications should write their own rpc client that supports just the subset of JSONRPC methods they need. There is nobody among the rust-bitcoin
devs that is interested in supporting feature requests and bug reports against a production client. We do, however, feel obligated to provide the types and testing stuff. This obligation is the motivation for putting all these crates in a single repo so they can be more easily managed and isolated.
bitcoincore-rpc
presents us with a few problems1. It depends on a different HTTP client stack than the rest of the project,
minreq
Everywhere else in this project we use
reqwest
. There is an ecosystem-wide call for an async capable http crate with minimal dependencies which we discussed at rust-bitcoin summit. This crate does not exist as of writing, so we usereqwest
for async requests inpayjoin-cli
andbitcoincore-rpc
depends onminreq
2. It has no TLS support out of the box
Though
minreq
supports TLS, but afaict TLS is not exposed inbitcoincore-rpc
and can't easily be enabled.@thebrandonlucas ran into this problem trying to connect to a remote MutinyNet node hosted by voltage over HTTPS.
3.
bitcoincore-rpc
isn't really meant for production nor maintainedI've had this discussion with @tcharding: the maintainers intend that crate to be used for integration testing only and suggest production implementations depend on
bitcoin-json-rpc-types
and build their own application-specific client. There is a rust-miniscript PR for this dependency swap but I haven't found more specific documentation of best practice yet.