8 个版本
新 0.0.9-alpha | 2024 年 8 月 13 日 |
---|---|
0.0.8-alpha | 2024 年 7 月 18 日 |
0.0.7-alpha | 2024 年 6 月 27 日 |
0.0.5-alpha | 2024 年 3 月 20 日 |
0.0.1-alpha | 2023 年 11 月 29 日 |
#2869 in 神奇豆
216 每月下载量
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