Skip to content

Investigate using async-minreq #121

@notmandatory

Description

@notmandatory

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    summer-of-bitcoinSummer of Bitcoin Project Proposal

    Type

    No type

    Projects

    Status

    Discussion

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions