Skip to content

Making bitcoind and electrsd production-grade? #123

@MaxFangX

Description

@MaxFangX

The bitcoind / electrsd crates have been enormously helpful for our integration testing, and we (Lexe) think they could be very useful in production as well.

Our interest in a production-grade bitcoind/electrs Rust harnesses: Due to the headaches of managing bash scripts / config files / systemd service files and whatnot, we actually decided to write our production (as well as testnet, dev, regtest etc) orchestration code in pure Rust, so that we could handle all of our argument shuttling in a strongly-typed language, resulting in a sharp reduction in deployment errors. Cleaning up bitcoind and electrsd to be "production-grade" software would allow us to extend our current paradigm to the deployment of these services as well, and allows bitcoind / electrsd arguments to be programmatically configurable in production. We also have an internal framework which centralizes things like CLI arguments, config files, and environment variables, so exposing Rust hooks into a bitcoind/electrs harness allows us to reuse this system as well.

So, I wanted to start a discussion on this. Some questions:

  • Is anyone else interested in this?
  • What is the current readiness of the bitcoind / electrsd crates from a "production" standpoint, and what work would need to be done to accomplish this?
  • Is it better to pursue this development goal under this repository, or should interested parties add these capabilities in a permanent fork which does not have the intention of being merged back upstream? (Similar to the romanz/Blockstream electrsd fork situation). In other words, are the requirements of a "production-ready" vs integration test-oriented bitcoind/electrs harness so different that it would be better to develop them in separate repositories? (My hunch is this is not so).

Especially interested in your thoughts @RCasatta.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions