bitcoindevkit / bitcoindevkit/bdk-cli
Add Payjoin support
- Dominant language
- Rust
- Stars
- 141
- Forks
- 99
- Avg merge
- 6d 14m
- Merged PRs (30d)
- 1
Description
**Description**
Implement (optional) [BIP-0078] [PayJoin] support in the `bdk-cli` wallet using the [rust bip78] project. PayJoin transactions provides a way to collaboratively create a transaction with a receiver in a way that prevents on-chain surveillance from using the [common input ownership heuristic]. Adding this feature to the `bdk-cli` project will demonstrate to other wallet builders using `bdk` how to add PayJoin support.
**Expected Outcomes**
* Integrate [BIP-0078] functionality as an optional feature in `bdk-cli` using the [rust bip78] crate
* Contribute upstream to the [rust bip78] project if any bugs or other issues are found
* Document how to use new PayJoin functionality with `bdk-cli` and common services such as BTCPayServer
**Resources**
* [bdk](https://github.com/bitcoindevkit/bdk) and [bdk-cli] projects
* [rust-payjoin] project and [PayJoin]
* [The Rust Book](https://doc.rust-lang.org/stable/book/)
* [PayJoin adoption](https://en.bitcoin.it/wiki/PayJoin_adoption)
**Skills Required**
* Rust language development, or similar language with willingness to learn rust
* Be able to send and receive bitcoin transactions on testnet with `bdk-cli` and other wallets
* Basic understanding bitcoin transaction building
**Mentor(s)**
@notmandatory
**Difficulty**
Hard
**Competency Test**
* [Install rust](https://www.rust-lang.org/tools/install)
* Clone and run [bdk-cli], create single signature descriptor wallet, receive and send testnet bitcoin
* Demonstrate rust coding skill:
* via simple rust program
* OR by completing [rustlings] exercises: variables, functions, if, primitive types
[PayJoin]: https://payjoin.org/
[rust-payjoin]: https://github.com/payjoin/rust-payjoin
[rust bip78]: https://crates.io/crates/bip78
[BIP-0078]: https://github.com/bitcoin/bips/blob/master/bip-0078.mediawiki
[common input ownership heuristic]: https://en.bitcoin.it/wiki/Common-input-ownership_heuristic
[bdk-cli]: https://github.com/bitcoindevkit/bdk-cli
[rustlings]: https://github.com/rust-lang/rustlings
Contributor guide
Assessment
This issue has not been assessed yet.