Skip to content

Conversation

@tcharding
Copy link
Member

@tcharding tcharding commented Oct 27, 2025

The corepc repo is for all things integration testing. Also it provides bitreq (HTTP crate), and corepc-types (Bitcoin Core JSONRPC types).

When integration testing some users (eg bdk) use electrsd along side corepc-node (formerly bitcoind). electrsd depends on corepc-node and every time we release corepc-node we have to do a release of electrsd. Having them in separate repositories causes friction and makes additional work. Instead we can put them together to hopefully make everyone's life easier (well mine and Ricardo's anyway).

Note that bitcoind was written by Ricardo. I re-named it, a move I'm now regretting because of the original symmetry with electrsd.

This import has the blessing of Ricardo and needs an explicit ACK from him before merging. When the CODEOWNERS file is added (#396) it should include him as owner of this crate.

Import the electrsd crate from https://github.com/RCasatta/electrsd/

While HEAD is at commit hash: dc88d81520c9ec507fc830b88a3b92a034dbaf93

 dc88d81: bump version 0.36.0 -> 0.36.1

Discussed in: RCasatta/electrsd#113

@tcharding
Copy link
Member Author

Needs concept ACK from @RCasatta please.

The `corepc` repo is for all things integration testing. Also it
provides `bitreq` (HTTP crate), and `corepc-types` (Bitcoin Core
JSONRPC types).

When integration testing some users (eg `bdk`) use `electrsd` along
side `corepc-node` (formerly `bitcoind`). `electrsd` depends on
`corepc-node` and every time we release `corepc-node` we have to do a
release of `electrsd`. Having them in separate repositories causes
friction and makes additional work. Instead we can put them together
to hopefully make everyone's life easier (well mine and Ricardo's
anyway).

Note that `bitcoind` was written by Ricardo. I re-named it, a move I'm
now regretting because of the original symmetry with `electrsd`.

This import has the blessing of Ricardo and needs an explicit ACK from
him before merging. When the CODEOWNERS file is added (rust-bitcoin#396) it should
include him as owner of this crate.

Import the `electrsd` crate from

  https://github.com/RCasatta/electrsd/

While HEAD is at commit hash: dc88d81520c9ec507fc830b88a3b92a034dbaf93

  `dc88d81: bump version 0.36.0 -> 0.36.1`
During import of `electrsd` I just clobbered all CI. Add `electrsd` to
the CI infrastructure in this repo. Use `extra_tests.sh` to mirror the
behaviour in the original repo _excluding_ the no-download test.
Skipping the no-download test because I'm too lazy to set it up, we
don't test no-download in `corepc-node` either.
This was referenced Oct 27, 2025
Fix and run the `update-lock-files.sh` script to correctly handle all
the crates in this repo.

Notes:

- `electrsd` needs some features
- The rest can be built with `cargo check`

(I'm not 100% sure on the validity of these notes.)
@tcharding
Copy link
Member Author

The problem here is the electrsd cannot be built with --all-features and when we do docs build in run_task.sh we use that flag. I'll come back to this another day.

useful in integration testing environment.

```rust
let bitcoind = bitcoind::BitcoinD::new("/usr/local/bin/bitcoind").unwrap();

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should use corepc node in this example

@RCasatta
Copy link

concept ACK

about the --all-features we can do a similar solution as in bitcoind where an higher version imply having all the lower versions active. Here we have an issue with the esplora_a33e97e1 feature which is a particular version, we have to probably remove this version.

Copy link
Contributor

@tnull tnull left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Concept ACK.

electrs_0_9_11 = ["download"]
electrs_0_10_6 = ["download"]

corepc-node_29_0 = ["corepc-node/download", "corepc-node/29_0"]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be cool to eventually allow decoupling the setting-corepc-feature part and the download part here. In LDK/LDK Node CI, we download bitcoind/electrs binaries with system utils out-of-bounds, and hence have this:

electrsd = { version = "0.36.0", default-features = false, features = ["legacy"] }
corepc-node = { version = "0.10.0", default-features = false, features = ["28_0"] }

I.e., we always also have to specify the corepc-node dependency and have to keep the version number in-sync with the version used by electrsd.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants