rust-esplora-client icon indicating copy to clipboard operation
rust-esplora-client copied to clipboard

Investigate using `async-minreq`

Open notmandatory opened this issue 9 months ago • 0 comments

Summer of Bitcoin Project Proposal

Description

The rust-esplora-client currently uses reqwest for async HTTP communications. We've had problems in the past with the reqwest MSRV being higher than the bdk MSRV. Using a simpler crate like async-minreq should solve those issues. This project is to replace reqwest with async-minreq.

Expected Outcomes

  • Modify the rust-esplora-client crate to use async-minireq instead of reqwest for it's async and async-* features.
  • Update all documentation and tests and verify tests pass with rust version 1.63.
  • Confirm the proxy options all work with a TOR proxy.
  • Update the example_wallet_esplora_async example to demonstrate using async-minreq instead of reqwest still works.
  • Investigate if async-minreq can be used with a different socket transport so it can be integrated with TOR via arti.

Resources

Skills Required

  • Experience with git. Guide
  • Experience with rust. First seven chapters of the book
  • Able to setup a local core node in regtest and testnet mode.
  • Familiarity with the HTTP and HTTPS protocols.

Mentor(s)
@notmandatory

Difficulty
Hard

Competency Test

  • Install rust, compile and run all bdk examples and tests.
  • Setup a local Bitcoin Core node daemon in regtest mode.
  • Setup a local esplora API server using the mempool.space version of electrs.
  • Make a wallet with example_wallet_esplora_async example wallet and receive and send regtest bitcoin.

notmandatory avatar Mar 20 '25 15:03 notmandatory