#bitcoin #send-receive #payjoin #bip78

应用 payjoin-cli

Bitcoin Core 的命令行 Payjoin 客户端

8 个版本

0.0.9-alpha 2024 年 8 月 13 日
0.0.8-alpha2024 年 7 月 18 日
0.0.7-alpha2024 年 6 月 27 日
0.0.5-alpha2024 年 3 月 20 日
0.0.1-alpha2023 年 11 月 29 日

#2869 in 神奇豆

Download history 151/week @ 2024-05-31 25/week @ 2024-06-07 3/week @ 2024-06-14 76/week @ 2024-06-21 69/week @ 2024-06-28 9/week @ 2024-07-05 62/week @ 2024-07-12 46/week @ 2024-07-19 3/week @ 2024-07-26 105/week @ 2024-08-09

216 每月下载量

MITNFA 许可证

270KB
5.5K SLoC

payjoin-cli

使用 Rust 编写的 bitcoind 命令行 payjoin 客户端

payjoin-cli 客户端允许发送和接收 BIP 78 Payjoin V1草稿 BIP Payjoin V2 交易。默认支持 Payjoin V1,而 v2 功能由于协议具有向后兼容性,可以发送和接收两者。该实现基于 Payjoin 开发工具包 构建。

尽管此代码和设计已进行大量测试,但它仍为 alpha 级别的实验性软件。请自行承担使用风险。欢迎进行独立审计。

安装 payjoin-cli

cargo install payjoin-cli --version $VERSION

其中 $VERSION 是您想要安装的 payjoin-cli 的最新版本。

获取命令和选项列表

payjoin-cli --help

要么从 cli 传递配置选项,要么手动编辑您从其中运行 payjoin-cli 的目录中的 config.toml 文件。配置如下

# config.toml
bitcoind_cookie = "/tmp/regtest1/bitcoind/regtest/.cookie"
# specify your wallet via rpchost connection string
bitcoind_rpchost = "https://127.0.0.1:18443/wallet/boom"

您的配置细节可能会有所不同,但您可以将其用作模板。

测试 Payjoin 2

使用 V2 功能安装 payjoin-cli

cargo install payjoin-cli --version $VERSION --features v2

V2 配置

除了上面的 rpc 配置外,还指定相关的 ohttp 和 payjoin 目录配置,如下所示

# config.toml
...
# a production payjoin directory server
pj_directory="https://payjo.in"
# payjo.in's ohttp_keys can now be fetched rather than configured ahead of time
 # an ohttp relay with ingress to payjo.in
ohttp_relay="https://pj.bobspacebkk.com"

异步操作

发送和接收状态将被保存到运行 payjoin-cli 的目录中的数据库中。一旦开始发送或接收会话,如果之前的 payjoin 会话尚未完成,则可以使用 resume 参数恢复。

payjoin-cli resume

手动端到端 Regtest 测试

测试接收

设置 2 个本地 regtest 钱包并为其提供资金。本例使用 "boom" 和 "ocean"。

确定您的 bitcoind 的 bitcoin.conf 文件中指定的 RPC 端口。默认为 18443。可以设置如下:

rpcport = 18443

从您将运行 payjoin-cli 的目录,假设 "boom" 是接收钱包的名称,18443 是 rpc 端口,并且您希望请求 10,000 sats,运行以下命令:

RUST_LOG=debug cargo run --features=danger-local-https -- -r "https://127.0.0.1:18443/wallet/boom" receive 10000

默认配置监听 https://127.0.0.1:3000 上的 payjoin 请求,并期望您将 https 请求发送到那里。Payjoin 需要一个安全的端点,https 和 .onion 都是有效的。为了在本地测试环境中接收 payjoin,可以启用 danger-local-https 功能,这将提供自签名证书并托管 https://127.0.0.1:3000 端点。强调 HTTPS

这将生成一个能够接受 payjoin 的 payjoin 兼容 bip21 URI。

BITCOIN:BCRT1QCJ4X75DUNY4X5NAWLM3CR8MALM9YAUYWWEWKWL?amount=0.00010&pj=https://127.0.0.1:3000

测试发送

在 payjoin-cli 中创建一个 "sender" 目录。打开一个新的终端窗口并导航到该目录。

注意:钱包不能与自身进行 payjoin,需要一个单独的钱包。

在发送者将运行的目录中创建另一个 config.toml 文件,并按照您之前的方式配置它,只是用发送者的钱包名称替换接收者的钱包名称。

使用之前生成的 bip21 URI,从发送者目录运行以下命令:

 RUST_LOG=debug cargo run --features=danger-local-https -- send <BIP21> --fee-rate <FEE_SAT_PER_VB>

您应该会看到 payjoin 交易发生,并且能够验证部分签名比特币交易 (PSBT)、输入和未花费交易输出 (UTXOs)。

恭喜,您已成功进行 payjoin!

依赖项

~20–35MB
~531K SLoC