-
Notifications
You must be signed in to change notification settings - Fork 65
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Payjoin support #149
Comments
…en-creating-a-transaction Add optional fee rate to a transaction
Moving this to |
Could this be reviewed in separate send / receive portions? There is a CLI tool based on the bip78, actively maintained |
Hi yes since this will be done by a summer of bitcoin student new to rust and bitcoin I'd like the idea of focusing on an easy win of adding send first. Then we can separately work on the receive side, and/or work on any open issues in the |
To get started on a sender CLI integration, check out this bitcoind payjoin-client cli based using the payjoin crate and this bdk + payjoin sender that's working in wasm at https://bitmask.app |
Thanks @DanGould for the pointer to the new payjoin repo. @notmandatory I think we should update the description to refer to https://github.com/payjoin/rust-payjoin, as that seemed more current. I went through the This can be done as a separate We can then feature gate it under a new This could be an extensive but achievable project for SOB. Pretty excited for this one. 😃 |
I'm working on in-depth step-by-step documentation for both sender and receiver integrations. I figure it is appropriate to share here. |
@DanGould Thank you for sharing this here. It will be very beneficial in implementation of Payjoin support |
Extremely helpful. Thank you |
So far have set up local dev environment (using visual studio code) and have cloned both bdk-cli and rust-payjoin. I then installed bitcoind+bitcoin-cli locally. Also set up local regtest bitcoind wallet. I moved the Bitcoin directory onto my desktop and created a bitcoin.conf file to specify my rpc credentials in order to interact w bitcoin core. I set rpcuser+password and then set restnet=1 in the configuration to file to configure regtest mode. I can now use the bitcoind command to run my own node, but I'm going to use bitcoind -regtest to start bitcoin core in regtest mode (I think creates a local private network). |
My next action item is to start bitcoin core in regtest mode and use the regtest wallet+bitcoin-cli to interact with the network and test bdk-cli and payjoin. I will need to generate two separate wallets in order to test payjoin |
Have finished testing bdk-cli in regtest. I used electrs in Rust and made a regtest wallet then tested the functionality after specifying the bitcoind regtest instance. If anyone has ideas on how to test the functionality/behavior of bdk-cli in the most thorough way possible, I would love to know (I'm sure I didn't test everything I could have). I still need to test payjoin in regtest |
You should also try testing with the new Mutiny signet network and faucent. See: https://blog.mutinywallet.com/mutinynet/
|
Successfully tested payjoin-cli today - the main barrier was me figuring out the configuration. I need to get more comfortable using bitcoin-cli tool |
A little trick I do when I'm working with the bitcoin-cli is do a --help command and copy/paste the output to a local note since the docs on the web are often out of date with what ever version I'm running |
Opened a pull request to add my README to payjoin-cli: |
Proposed BDK send-payjoin command that accepts a BIP21 URI
Syntax: Options:
Example usage: This command takes a payjoin-capable BIP21 URI and sends the payjoin transaction with the desired amount of satoshis using the bip21 or --amount option. |
A look at Bitcoin Design Guide's case study might lend some inspiration. BlueWallet requires a bip21 to initiate a send no matter what and then prompts to confirm / change the amount. That user story could apply here as well. I think Signal is an application design success story, so I find their contributing guidelines/development idology compelling. The first truth they find self evident is
Reading in the required bip21 amount otherwise prompting seems to align with this philosophy. |
@willowenss API looks good, but I agree with @DanGould we shouldn't need a required This is how an option like that is documented for the
EDIT: But for now no need for a |
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 thebdk-cli
project will demonstrate to other wallet builders usingbdk
how to add PayJoin support.Expected Outcomes
bdk-cli
using the rust bip78 cratebdk-cli
and common services such as BTCPayServerResources
Skills Required
bdk-cli
and other walletsMentor(s)
@notmandatory
Difficulty
Hard
Competency Test
The text was updated successfully, but these errors were encountered: