前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >闪电网络实操,从最简单的比特币第二层闪电网络付款开始

闪电网络实操,从最简单的比特币第二层闪电网络付款开始

作者头像
区块链大本营
发布2019-12-09 16:59:50
1.2K0
发布2019-12-09 16:59:50
举报
文章被收录于专栏:区块链大本营
来源 | Hackernoon

编译 | 火火酱

责编 | Carol

出品 | 区块链大本营(blockchain_camp)

好久不见的实操演练,又来了!

在本文中,我们将用测试网作为示范,利用比特币第二层闪电网络进行付款。

我们将会使用命令行工具,因为我发现这是使用网络的最可靠的方法,同时也可以让你对网络的运行方式有更加深入的了解。

俗话说,磨刀不误砍柴工。为了能够完成今天的实操,你需要提前安装好以下环境。

你要能够访问满足以下两个条件的闪电网络节点:

  1. 正在运行bitcoind和lightningd,并且已与testnet区块链同步。
  2. 已安装blockstream的c-lightning cli工具lightning-cli,并且可以访问其$PATH。

生成地址和资金钱包

第一层BTC交易=1。等待时间=60分钟。

创建一个新地址。

到测试网Faucet中给自己发送一些比特币,使用支持IPV6的Chrome浏览器可以获得70%的额外津贴!

点击下面的交易ID链接,就可以进入包含交易详细信息的区块链浏览器。

交易 ID 链接:

https://testnet.blockchain.info/

你需要等待6次确认——大约需要1个小时,资金才会显示在你的钱包中。

代码语言:javascript
复制

连接到对等方并且建立支付通道

第1层BTC交易=1。等待时间= 60分钟。

要想在网络上进行付款,需要先连接到网络中。如何能够找到另一个要连接的节点呢?前往Acinq的闪电网络浏览器。

搜索连接状态良好的对等点(有很多通道的对等点),然后复制其URI。最初,我在连接到几个节点的过程中超时了,但只要继续尝试,总能找到一个可以立即进行连接的节点。

代码语言:javascript
复制

现在,我们可以与刚刚连接到的对等节点建立支付通道。打开和关闭通道都需要与主区块链进行交互,因此我们要为其提供足够的资金(以millisatoshis为单位),以便将其用于多次付款。

代码语言:javascript
复制

同样,在比特币测试网浏览器中搜索txid,并等待3-6次确认,然后该通道将会被视为已开放。这时,你应该看到状态更改为CHANNELD_NORMAL。

代码语言:javascript
复制
$ lightning-cli listpeers
{
 "peers": [{
  "id": "03e5f9d1935c67a029bf0a26af5f63109f4f4c45993a8f45177a8f2f39bcb46144",
  "connected": true,
  "netaddr": ["84.246.200.122:9735"],
  "alias": "IslandDSP",
  "color": "3399ff",
  "channels": [{
   "state": "CHANNELD_NORMAL",
   "owner": "lightning_channeld",
   "short_channel_id": "1289768:416:0",
   "channel_id": "ba95c71228ce3f57e25f6ac9c4a7418a52a056435b2276dd47437c7521ebda8e",
   "funding_txid": "8edaeb21757c4347dd76225b4356a0528a41a7c4c96a5fe2573fce2812c795ba",
   "msatoshi_to_us": 100000000,
   "msatoshi_total": 100000000,
   "dust_limit_satoshis": 546,
   "max_htlc_value_in_flight_msat": 18446744073709552000,
   "channel_reserve_satoshis": 0,
   "htlc_minimum_msat": 0,
   "their_to_self_delay": 6,
   "our_to_self_delay": 144,
   "to_self_delay": 6,
   "max_accepted_htlcs": 483,
   "status": ["CHANNELD_NORMAL:Funding transaction locked. Channel announced."],
   "in_payments_offered": 0,
   "in_msatoshi_offered": 0,
   "in_payments_fulfilled": 0,
   "in_msatoshi_fulfilled": 0,
   "out_payments_offered": 0,
   "out_msatoshi_offered": 0,
   "out_payments_fulfilled": 0,
   "out_msatoshi_fulfilled": 0
  }]
 }]
}

生成付款请求

现在我们已经建好了一个支付通道,那么就可以开始使用闪电网络进行交易了。

转至Y’alls 上的这篇文章(https://yalls.org/),然后单击“continue reading继续阅读”生成付款请求。这实际上是序列化的凭证,将其解码后表示你没被多收费。

代码语言:javascript
复制


$ lightning-cli decodepay lntb1500n1pdvp7t9pp5k5mvp8u045pdnumnt89cdc7l90lpvff7sjzkrvawg93ju3mgg3nsdp62fjkzepqg9e8g6trd3jn5gzfyp9kummhyptksmeq2dshgmmndp5jqjtnp5cqzyskw8lzg7w4hcfyhncczcaexlpx3tdefm0vjnh9dkqev23g94tdta8jjqzp87v6r9q8xwe3mnjf0tryaa7zkxxj4gwgfcqea32j0x069qqsjyjhz
{
 "currency": "tb",
 "timestamp": 1522596197,
 "created_at": 1522596197,
 "expiry": 3600,
 "payee": "039cc950286a8fa99218283d1adc2456e0d5e81be558da77dd6e85ba9a1fff5ad3",
 "msatoshi": 150000,
 "description": "Read Article: I Know Who Satoshi Is\r",
 "min_final_cltv_expiry": 144,
 "payment_hash": "b536c09f8fad02d9f37359cb86e3df2bfe16253e848561b3ae41632e47684467",
 "signature": "3045022100b38ff123ceadf0925e78c0b1dc9be13456dca76f64a772b6c0cb151416ab6afa022079480209fccd0ca0399d98ee724bd63277be158c69550e42700cf62a93ccfd14"
}

进行支付

第2层 BTC 交易= 1 等待时间 = 毫秒。

现在我们已经准备好进行第二次比特币交易了,第一次比特币交易已经建立了闪电网络,因此第二次交易应该立即就能得到确认。

代码语言:javascript
复制

回到Y’alls,然后点击“check for payment检查付款”以显示该文章。但不幸的是,这一步我没成功。我回去检查命令行的时候才发现我确实没付款。

代码语言:javascript
复制
为了解决这个问题,我尝试用Y’alls直接创建一个支付通道。

显然,这是lnd的一个bug,Y’alls必须用做他们的闪电后台驻留程序。

作为备份计划,我们将使用闪电网络钱包向自己付款。转到htlc.me(https://htlc.me/)并生成钱包,然后单击“receive接收”标签,请求支付0.0001 tBTC($0.65 tUSD)。复制序列化的凭证并且在发送之前进行核实。

代码语言:javascript
复制

这次,当我试着付款的时候,收到了多个错误。

代码语言:javascript
复制

然而,当我刷新htlc.me网页时,我发现付款实际上已经成功了。在控制台检查确认已付款。

代码语言:javascript
复制

我们这次付款只付了2020 millisatoshi(比特币的计量单位)的交易费用(在写本文时是0.00013美元)。

最后,我们尝试直接连接到htlc.me。这样我们在付款的时候就不会出现任何控制台错误。从上面的解码付款命令输出中复制付款人ID,并在闪电网络浏览器中进行搜索。复制URI,然后连接并创建一个通道。

代码语言:javascript
复制

但我们需要等待交易在区块链上确认,通道才可用。

一个小时后,我们可以看到通道已经建立——状态显示CHANNELD_NORMAL

代码语言:javascript
复制

这时在htlc.me上生成另一张凭证,这次是0.00020000 tBTC ($1.31 tUSD),并且记得在付款前检查详细信息是否正确。

代码语言:javascript
复制
代码语言:javascript
复制
$ lightning-cli decodepay lntb200u1pdvzvf8pp5tyjfw9ma9uj8hhrhqvmum9vzvaun45qg6mmesu3c08zkhmgl44ssdqqcqzysah4qe4zef3rssusa42cyx0gxxq6q06g50m38w7chz50en80dfh45fj7kdgpx474udehq22mv2pwxfky66kdjdrw88z34w8hjjdjdu6sq6zy2a4

最后付款。

代码语言:javascript
复制

这次没有出现任何控制台错误。你在htlc.me的网络钱包应该会立即检测到已付款。现在,你应该可以以十分低廉的费用进行任意金额的付款了,直到你耗尽通道中的资金,或该笔款项到期为止。

总结

如你所见,测试网上的节点至少还能用。三个主要的闪电软件实现(lnd, c-lightning, eclair)仍都处于开发的早期阶段,因此有一些错误也不足为奇。但这至少能让你了解:将来,随着网络的不断扩大以及运行它的软件不断成熟完善,交易也将会变的更加便宜又快速。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 区块链大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
区块链
云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档