1 个不稳定版本
0.0.0 | 2024年7月25日 |
---|
#3 in #bark
每月137次下载
1KB
rust-ark
Bitcoin 的第二层支付协议 Ark 的实现。
此仓库包含一个 ASP 服务器 aspd
,一个客户端钱包 bark
,以及包含这些实现所用所有原语库。
演示
脚本 ark_demo.sh
创建了一个用于与 ark
互动的优雅环境。
source ark_demo.sh
首先,您需要设置一个 regtest bicoind 节点。如果您已经有了一个 regtest
-node,您可以使用它。您只需确保已启用 txindex
。但是,如果您启动一个新的 regtest 节点,教程将更容易遵循。
bd --daemon
您可以使用 type -a bd
来查看别名的作用。在这种情况下,它将告诉您 bd
是 bitcoind -regtest -datadir=/ark/test/bitcoindatadir -server -txdindex
的别名。
您可以使用别名 bitcoin-cli
(别名为 bcli
)与节点交互。
bcli getnetworkinfo
然后,我们使用 aspd
-命令创建和配置一个 ark-server。我们的 ark-server 将在 regtest
上运行,并使用我们之前启动的 bitcoin
-node。
aspd create \
--network regtest \
--datadir ./test/arkdatadir \
--bitcoind-url $BITCOIND_URL \
--bitcoind-cookie $BITCOIND_COOKIE
您可以使用以下命令启动服务器:
aspd start --datadir ./test/arkdatadir
服务器将立即开始工作,但需要一些资金才能正常工作。您可以在日志中找到一个链上地址,并向其发送一些资金。
bcli generatetoaddress 1 <asp-addr>
在生成 100 个额外块之前,资金只能用于链上交易。
bcli generatetoaddress 100 mtDDKi5mDjZqGzmbnfUnVQ8ZhCPMPVsApj
接下来,您可以启动一些客户端。要创建客户端,请使用以下命令
bark --datadir ./test/bark create \
--regtest \
--asp http://localhost:3535 \
--bitcoind $BITCOIND_URL \
--bitcoind-cookie $BITCOIND_COOKIE
bark --datadir ./test/bark2 create \
--regtest \
--asp http://localhost:3535 \
--bitcoind $BITCOIND_URL \
--bitcoind-cookie $BITCOIND_COOKIE
这将创建独立的钱包,并打印出您可以使用与上面的 ASP 相同的方式对其进行资金支持的链上地址。请注意,客户端可以接收链下 Ark 交易,而无需任何链上余额,但要执行单方面退出,需要少量的链上资金。
您可以使用以下命令找到钱包:
BARK1_ADDR=$(bark --datadir ./test/bark1 get-address)
bcli generatetoaddress 1 $BARK1_ADDR
bcli generatetoaddress 100 mtDDKi5mDjZqGzmbnfUnVQ8ZhCPMPVsApj
要使用链上钱包,有几种命令可用
BARK2_ADDR=$(bark --datadir ./test/bark2 get-address)
bark --datadir ./test/bark1 send-onchain $BARK2_ADDR "0.1 btc"
bark --datadir ./test/bark2 balance
一旦我们有资金,我们就可以加入 Ark,之后余额也会显示链下元素。
bark --datadir ./test/bark1 onboard "1 btc"
bark --datadir ./test/bark1 balance
请记住,如果您偶尔不生成区块,所有交易都将仅存在于内存池中...
bcli generatetoaddress 1 mtDDKi5mDjZqGzmbnfUnVQ8ZhCPMPVsApj
那么,让我们发送一些离线货币
## Should be empty..
BARK2_PK=$(bark --datadir ./test/bark2 get-vtxo-pubkey)
# For now every client has just a single pubkey.
echo "${BARK2_PK}"
bark --datadir ./test/bark1 send-round ${BARK2_PK} "0.1 btc"
bark --datadir ./test/bark2 balance
您会发现发送时会有轻微的延迟,这是因为客户端需要等待下一轮的开始,并且目前不支持轮外支付。轮间隔可以在 aspd
配置中更改。