建立自己的闪电网络通道

服务器:
vps
配置:
8G RAM  300G SSD

第一步,同步比特币网络数据:
构建docker镜像
git clone https://github.com/dougvk/lightning-node.git
cd lightning-node
apt install docker.io (snap 安装的docker使用时会出现不可写的错误)
docker build . -t dougvk/bitcoind
运行比特币节点
mkdir -p /scratch/bitcoin/mainnet/bitcoind
docker run --name bitcoind_mainnet -d -v /scratch/bitcoin/mainnet/bitcoind:/data -p 8333:8333 -p 9735:9735 dougvk/bitcoind:latest --privileged=true

将下列内容写到文件/usr/local/bin/bitcoin-cli
#!/usr/bin/env bash
docker run --rm --network container:bitcoind_mainnet -v /scratch/bitcoin/mainnet/bitcoind:/data dougvk/bitcoind:latest bitcoin-cli "$@"


查看比特币节点运行情况
chmod +x /usr/local/bin/bitcoin-cli
bitcoin-cli getblockchaininfo
等待比特币网络同步账本

第二步,运行闪电网络节点

mkdir -p /scratch/bitcoin/mainnet/clightning

docker run --rm --name lightning --network container:bitcoind_mainnet -v /scratch/bitcoin/mainnet/bitcoind:/root/.bitcoin -v /scratch/bitcoin/mainnet/clightning:/root/.lightning --entrypoint /usr/bin/lightningd cdecker/lightningd --network=bitcoin --log-level=debug

{

或者:
运行闪电网络节点(自定义节点名)
这里选择了clightning这个节点程序,运行节点(命令里可以设置节点名和颜色):
docker run --rm --name lightning --network container:bitcoind_mainnet -v /scratch/bitcoin/mainnet/bitcoind:/root/.bitcoin -v /scratch/bitcoin/mainnet/clightning:/root/.lightning --entrypoint /usr/bin/lightningd cdecker/lightningd --network=bitcoin --alias yournodename --rgb aa381e --announce-addr 本机ip --bind-addr 0.0.0.0 --log-level=debug
}

将下列内容写到文件/usr/local/bin/lightning-cli 中 
#!/usr/bin/env bash
docker run --rm -v /scratch/bitcoin/mainnet/clightning:/root/.lightning --entrypoint /usr/bin/lightning-cli cdecker/lightningd "$@"

检查闪电网络状况
chmod +x /usr/local/bin/lightning-cli
lightning-cli getinfo

(以下未亲测)
第三步,发送比特币到你的闪电网络地址
创建钱包地址:
lightning-cli newaddr

现在你需要将一点比特币发送到你的闪电网络地址上
等待确认后查看资金情况
lightning-cli listfunds

你可以通过这个网站来找到你想连接的节点:https://1ml.com/
用lightning-cli 命令连接这个闪电网络节点
如:lightning-cli connect 02ed9102fe81a117b19f0c1fe0586536a04c962838677dcdb762aeb9804d9f33c7@5.135.180.50:9735

查看闪电网络节点连接情况
lightning-cli getpeers

设置一个合理的手续费(这个手续费用作闪电网络合约的创建):
bitcoin-cli settxfee 0.00005
你可以查看当前的手续费水平,选择一个合适的值。如果是5sat/B,这里应该设置为0.00005。
手续费参考:https://p2sh.info/dashboard/db/fee-estimation

设置完后续费之后就可以开启通道了,开启通道需要设置准备金的数量(在资金到账后,下面我们需要和某个已存在的闪电网络节点建立通道了,其中 2000 satoshi 是通道建立费用):
lightning-cli fundchannel 02ed9102fe81a117b19f0c1fe0586536a04c962838677dcdb762aeb9804d9f33c7 2000
会返回一个txid,通过txid可以查看通道开通的进度,经过6次确认之后通道就正式开通了

测试支付
同样,你也可以找个网站支付几毛钱测试一下能否成功
lightning-cli pay xxxxxxxx
通过lightning-cli getpeers命令可以查看当前通道的情况和剩余的BTC

查看并分享你的节点
顺利的话你的闪电网络节点已经创建成功了。
如果你和闪电网络任意一个节点创建过通道,你应该能在1ml.com上搜索到你的节点信息(可能需要过几个小时的同步时间)
https://1ml.com/node/02ed9102fe81a117b19f0c1fe0586536a04c962838677dcdb762aeb9804d9f33c7
通过lightning-cli getinfo 能查看本机节点信息,拼成id@ip:port的形式分享给别人,别人就能通过connect命令连上你的节点,比如我的节点:
02ed9102fe81a117b19f0c1fe0586536a04c962838677dcdb762aeb9804d9f33c7@5.135.180.50:9735
别人的转账路由经过了你的节点,就会向你支付一定的手续费。当然你也可以随时调整这个手续费。


收款
如果你想通过闪电网络收款的话可以运行以下命令。
lightning-cli invoice <amount> <label> <description>
其中 label 和 description 是支付的标签和说明,amount是数量,单位为聪。
 lightning-cli invoice 100 fist myfistLNpayment

{ "rhash" : "e762cc7be38cad612a30cc076992d3c1c897971868fffc4ca6b1e825f6e5841e", "expiry_time" : 1516615363, "bolt11" : "lnbc1n1pdxt29npp5ua3vc7lr3jkkz23sesrknyknc8yf09ccdrllcn9xk85ztah9ss0qdqcd4ukv6tnw3xyuurp09kk2mn5cqpg987a88kj4t6wzthvqx6ky9zyys8ued6p5y7eh2k74u9z4nsqr4l8fh5e38gpch0syv6tuq7u83486c9hk3xs9pfuzx8r48evn757y0spd9fvph" }

这样我们就生成了bolt11地址,即上面那个JSON结构中的lnbcXXXX
bolt11地址中包含了支付的所有信息,我们可以解码一下这个地址

lightning-cli decodepay lnbc1n1pdxt29npp5ua3vc7lr3jkkz23sesrknyknc8yf09ccdrllcn9xk85ztah9ss0qdqcd4ukv6tnw3xyuurp09kk2mn5cqpg987a88kj4t6wzthvqx6ky9zyys8ued6p5y7eh2k74u9z4nsqr4l8fh5e38gpch0syv6tuq7u83486c9hk3xs9pfuzx8r48evn757y0spd9fvph

{ "currency" : "bc", "timestamp" : 1516611763, "expiry" : 3600, "payee" : "03c3fa4e2b2c11ab9d4a078e13f0dfb091423e0f06d7d9cc1d9c9ba3b9a5ad5d50", "msatoshi" : 100, "description" : "myfistLNpayment", "payment_hash" : "e762cc7be38cad612a30cc076992d3c1c897971868fffc4ca6b1e825f6e5841e", "signature" : "3044022029fdd39ed2aaf4e12eec01b5621444240fccb741a13d9baadeaf0a2ace001d7e022074de9989d01c5df02334be03dc3c6a7d60b7b44d02853c118e3a9f2c9fa9e23e" }
上面收款的金额和描述就显示了出来
把上面的bolt11支付地址发给对方就可以等待收款了

支付
在我们知道了对方的bolt11支付地址后,我们就可以用以下命令进行支付了
lightning-cli pay bolt11_addr
在拿到付款方的bolt11地址后,我们用上面的lightning-cli decodepay bolt11解码出收款方的payee hash 然后查看通道
lightning-cli getroute 03c3fa4e2b2c11ab9d4a078e13f0dfb091423e0f06d7d9cc1d9c9ba3b9a5ad5d50
如果通道存在的话就可以付款了
 lightning-cli pay lnbc1n1pdxt29npp5ua3vc7lr3jkkz23sesrknyknc8yf09ccdrllcn9xk85ztah9ss0qdqcd4ukv6tnw3xyuurp09kk2mn5cqpg987a88kj4t6wzthvqx6ky9zyys8ued6p5y7eh2k74u9z4nsqr4l8fh5e38gpch0syv6tuq7u83486c9hk3x9pfuzx8r48evn757y0spd9fvph

{ "preimage" : "xd2005e012ff32b79f88fe976599c5dceeb99b111b81aa5087b815f2e4cdc59a" }
这样我们就完成了收付款的流程


参考链接:
https://blog.yiwei.li/tag/lightning-network/
https://shimo.im/docs/9IhYT9ZV8EM5s46s/read

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值