bitcoindevkit / bitcoindevkit/bdk-cli

Add Payjoin support

Open
#149 19 comments 2 reactions 1 assignee Claimed by @notmandatory View on GitHub
enhancement
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.