Libra是什么,为什么我说Facebook在蹭区块链热度

前天下午Facebook终于公布了旗下加密货币Libra计划,并且公布了Libra的白皮书和技术实现方案。Facebook从去年以来就有风声说正在进行加密货币区块链计划,可谓是一波三折。

Libra白皮书中文版:

https://n.sinaimg.cn/tech/7d78cbe7/20190618/LibraWhitePaper_zh_CN.pdf

看完白皮书我久久不能平静,我们来分析一下到底说了什么,为什么我说Facebook的Libra只是在蹭区块链的热度。

我对Facebook的期待是什么

Facebook要发行一个货币,货币基于信任,首先要被消费者认可,被金融机构认可。我们知道,国家主权货币的信用由政府背书,政府是货币强有力的保障。Facebook只是一个公司,显然做不到这一点,只是由Facebook自己背书的货币和Q币没什么两样,想增发就增发,毫无信任可言。所以Facebook不得不引入区块链来产生信任,形成共识和价值。

作为加密货币的鼻祖,比特币极慢的交易速度和极长的确认时间广受诟病,还时不时发生拥堵,在消费市场基本上处于不可用的状态。为了解决这个问题,BCH选择了区块扩容,BTC上发展出来了闪电网络,还出现了EOS这样的解决方案,各有各的特点。

加密货币的种类非常之多,但实际上原理都一样,算得上是技术突破的闪电网络、EOS、XRP等都已经被分析透彻了,2019年整个一年加密货币没有一点点进步。我非常希望Facebook能带来一些不一样的技术方案,带来一点大厂正规军的气质,不是滥发货币捞钱就跑,做点真正的技术突破来挽救一下加密货币。

从共识机制看Facebook的Libra

共识机制是加密货币的灵魂,是加密货币产生信任的根本。

加密货币本质上是分布式账本,因为其不可篡改的特性,产生了信任从而产生价值。如何保证账本不被篡改是加密货币的关键。这就是接下来要说的共识机制。

比特币采用了工作量证明(PoW)的方式,来保证账本的不可篡改,也就是我们平常说的挖矿。其本质上是通过解决密码学难题(工作量证明)来竞争记账权,也就是算力越强就越能竞争到记账的权利。比特币(PoW)的信任链根本上是:

  • 不可能有组织或者个人能掌握超过全网一半以上的算力发动攻击
  • 发起攻击会引发币价暴跌,对攻击者而言没什么好处,攻击成本还很高


比特币这种PoW的共识机制会耗费大量能源,所以后来又有了权益证明(PoS)的机制,意味着拥有币越多的人越有话语权,PoS的信任根本上是:

  • 拥有币越多的人越不会作弊,因为会损害自己的利益

再后来有了EOS的DPoS共识机制,简单的说这是一种PoS的变体,EOS通过持币者投票的方式票选出来21个超级节点,再在21个超级节点中实现交易打包出块。因为把范围缩小到了21台计算机,打包过程不需要全网参与,所以交易速度会很快。DPoS的信任链根本上是:

  • 持币者倾向于票选出不作恶的节点,因为持币者要对自己的利益负责
  • 超级节点打包错误数据会被除名,超级节点收益可观,不会有人放弃收益

那么Facebook的Libra的共识机制是什么呢?

区块链分为“许可型区块链”和“非许可型区块链”,这根据实体是否能作为验证者节点接入区块链平台来决定。在“许可型区块链”中,实体通过权限授予方式运行验证者节点。在“非许可型区块链”中,符合技术要求的任何实体都可以运行验证者节点。从这个意义上说,Libra 将以许可型区块链的形式起步。

Libra是一个许可型区块链,许可型区块链的意思就是加入区块链网络的节点,都是通过Libra协会预先定义好的,并不是一个公开的区块链网络。你不可以加入这个区块链网络,你完全不知道这个网络里面到底发生了什么事情。

想想如果将EOS的投票过程给去掉,21个超级节点是EOS团队内部开会产生的,会发生什么样的后果。

没有工作量证明,没有权益证明,什么证明都没有,你甚至接触不到这个网络,你存在Libra里面的钱和存在银行里面没有两样,从技术层面上看Libra基本上可以认为是一个分布式Q币。所谓的区块链只是Libra协会的一个内部表决工具,和消费者没有一毛钱关系。

Libra 区块链采用了基于 LibraBFT 共识协议的 BFT 机制来实现所有验证者节点就将要执行的交易及其执行顺序达成一致。这种方法可以在网络中建立信任,因为即使某些验证者节点(最多三分之一的网络)被破坏或发生故障,BFT 共识协议的设计也能够确保网络正常运行。与其他一些区块链中使用的“工作量证明”机制相比,这类共识协议还可实现高交易处理量、低延迟和更高能效的共识方法

后面这一段就根本是屁话,要明白Libra这个区块链网络里面只有协会内部人员,没有消费者,这个所谓的 LibraBFT 机制吹上了天也就是Libra协会内部的一个机制,能达成的共识只是Libra协会内部共识,这里面不包括消费者。

总的来说,Libra的区块链网络,可以认为是Libra协会内部的一个表决工具,把开会投票变成了区块链投票,仅此而已。

你存在BTC里面的一块钱,BTC全网都知道,并且没有人能修改。你存在Libra里面的一块钱,只有Libra协会和你知道,并且Libra协会想改就改了。

那么Libra到底是什么?

Libra组成了一个无国界协会,协会发行虚拟货币,货币的价值由协会持有的各国家的债券等锚定,为了协会内部账本的一致性,使用了区块链技术来做分布式记账。

从应用价值来看 ,Libra实现了一个无国界,主权无关的线上虚拟货币,打通了银行金融界的各种渠道,实现了线上下线的整合。货币不再由主权国家发行,而是由一个无国界协会发行,在历史上是头一回。

但是从技术层面看,Libra所谓的区块链和BTC/ETH的区块链不是同一个东西,Libra的区块链并没有什么技术突破,区块链只是一个宣传手段,不要被误导。

不能解决小额支付,闪电网络还能活多久?

闪电网络自推出以来饱受质疑。为了解决比特币小额支付的问题,闪电网络引入了链下交易,并且协议运行得十分完美。截至今天,比特币全网已经拥有了7408个闪电网络节点,4万多个channel,闪电网络总容量也达到了1000BTC,折合4百万美元,并且这些数字还在保持高速增长。看起来闪电网络回击了外界的质疑,一切都运行得十分良好。

但是事实真是这样的吗?我们要从闪电网络的原理说起。

闪电网络的原理

闪电网络通道是什么,两个节点之间如何转账

闪电网络通过一个预设的智能合约来处理交易,通过智能合约,闪电网络将大量的交易转移到链下进行,从而规避了高昂的比特币手续费。这里面有一个概念是通道(Channel),闪电网络要求发生转账的双方事先开启一个通道,存入一定数量的比特币,之后发生的转账都从通道里面扣除相应数量的比特币。直到这个通道被关闭,才会产生一次宣告,将最后结算出来的余额广播到链上。

闪电网络建立通道之后可以互相转账

通过事先交押金,建立通道,可以实现两个节点之间的互相转账。

闪电网络所有节点组成了一张网

实现了两个节点之间的通道和转账,闪电网络进一步将全网的通道连接起来,形成了一张网。

闪电网络的网状交易网络

如果A要向D发起一次1BTC的转账,A和D之间没有直接的通道,只能通过A-C-D或者A-E-D两条路径来完成转账。闪电网络会自动选择一个手续费较低的通道来完成交易,我们假设这里选择了A-C-D。A->D的1BTC转账,会被拆分成A->C的1BTC转账,和C->D的1BTC转账,这样就化简为了上面说的两点之间互相转账的场景。转账结束之后,A-C通道的余额会从10-0变成9-1,C-D通道的余额会从5-2变成4-3。

通过这种路由的方式,闪电网络将各个节点连成了一张网。如果A->D转账1BTC,D->A再转账1BTC,实际上A-C-D的通道余额又变了回去,就像什么都没有发生。 而如果使用传统的BTC转账,则会发生两次手续费。闪电网络的优势得以体现。

真实世界里的闪电网络表现糟糕

很多看起来完美的设计在真实世界经常面临失败,比如著名的Plan 9

目前看来,闪电网络在所有节点都是对等的情况下完成得相当好,既加速了转账又减少了手续费。但是如果真实世界里的节点不都是对等的呢?

上面的理论分析并没有考虑各个节点在真实世界所处的角色,那现在我们假设A是一个消费者普通用户,D是一个杂货店。A在真实世界里面几乎只会发生消费,而不会发生收款,D则相反。

A为了使用闪电网络,必须至少建立一个通道,往里面存入相应的BTC,而这部分钱就被锁死在了通道里面,A每次消费就从通道里面扣除相应的BTC。由于A只会付钱不会收钱,所以通道的余额总是减少的,当用完这部分余额A只能再建立一个通道继续重复下去。想象一下,你每个月总消费是五千块,如果你不想每个月都去开通道的话,你需要一次性存入五千块以上锁死在通道里面。这真的很蠢。

而作为D则更尴尬了。D想收钱,D和C开通一个通道,D存入了10BTC的余额,那么C-D通道的余额是多少呢?是0-10。也就是说,C如果没有主动去存入通道余额,C是没法向D转账的,换个角度看就是D永远也没办法收款!如果你是D这个杂货店老板,你想接入闪电网络,你甚至需要去求别的节点往你的通道里面存点钱!简直智障。

闪电网络在理论上所有节点都是对等的情况下表现优异,但是真实世界是有的节点只会付钱,有的节点又只会收钱,闪电网络不能满足这部分节点的需求。对于消费者,或者对于杂货店老板,闪电网络基本处于不可用的状态。那么到底还有谁能用呢?

或许机构间结算才是闪电网络的出路

比特币世界里有不少的机构,甚至说大部分BTC都掌握在机构的手里。交易所、矿池、在线钱包等占据了绝大部分的比特币。这些机构每时每刻都在产生转账。

用户经常从交易所里面提取比特币到在线钱包,也经常从在线钱包转账到交易所。用户会用在线钱包支付BTC给商家,商家也会将BTC转账到交易所换成法币。这些机构之间的转账才是比特币世界里暗潮汹涌的大部分。

链上交易成本太高,机构之间不可能每次转账都去做一次链上交易,机构间可能会签署某些协议,通过双方的约定来实现链下交易,每天或者每个月再做一次链上结算。

而这个约定,正好可以用闪电网络。闪电网络提供了一个安全可靠的智能合约,比起纸面协议,闪电网络拥有物理上的强制约束力,更加可靠和高效。

闪电网络如果被认为足够的健壮,或许机构会采用闪电网络来做结算,或许这才是闪电网络最终的归宿。

闪电网络简明教程

⚡️闪电网络简明教程

闪电网络是什么

闪电网络是目前比特币的一个发展趋势,它解决了比特币的小额高频转账的问题。

比特币实现了区块链账本,通过算力竞争的方式实现账本的一致性,这种方式注定了账本的使用成本高、速度慢、容量小。目前比特币主网的处理速度上限大概是7TPS,也就是一秒钟只能处理7次转账。比特币的出块速度是每10分钟出一次块,为了保证安全一般把转账确认设置为6个区块,也就是说一次转账至少需要60分钟才能被彻底确认。比特币作为区块链账本毫无问题,但是要用作小额高频支付工具力不从心。

为了解决这些问题,产生了许多技术方向,例如ETH目前要上线的PoS、EOS独创的DPoS、IOTA的tangle等,另外就是今天要说的闪电网络Lightning Network。(说句题外话,扩容区块只是一个临时缓解的办法,并没有解决根本问题。就算区块大小扩容十倍,7TPS也顶多到70TPS而已,依然非常低)

闪电网络依赖隔离见证(SegWit),隔离见证在2017年8月被主网确认正式生效。隔离见证有两个用处,一是变相扩容了区块(几乎等效于区块大小从1M扩容到2M)、二是为闪电网络提供底层支持。有了隔离见证,闪电网络就具备可行性了。

2017年12月6日,闪电网络协议规范RC1版本发布,同时ACINQ,、Lightning Labs、Blockstream三个团队正在着手进行软件开发。

截止到2018年7月,这三个团队都分别发布了闪电网络节点软件,还上线了第一款钱包eclair发布在Google Play。

目前闪电网络主网上运行的节点数量有2837个,处于Active状态的Channel有10042个,闪电网络总共托管了94.40BTC。这个数字每天都在增长,你可以在1ML看到具体数字。

知名网站CoinGate已经支持闪电网络支付,另外还有几家网站(Bitrefill、Blockstream、HodlMonkey、TorGuard)也支持了闪电网络。闪电网络目前的状态是几乎已经正式上线,虽然开发者警告不要放太多钱进去以防丢失。我们可以认为闪电网络已经不会再有大改动。

闪电网络的原理

闪电网络通过引入智能合约的思想来完成交易。通过事先约定的智能合约,将大量的交易放在链下进行,不受区块链速度的限制,只将最终的确认环节放在链上。这样大大提升了交易速度。

闪电网络的基础是隔离见证(SegWit),隔离见证在2017年8月被主网确认正式生效。隔离见证有两个用处,一是变相扩容了区块(几乎等效于区块大小从1M扩容到2M)、二是为闪电网络提供底层支持。有了隔离见证,闪电网络就具备可行性了。

闪电网络通过的核心概念可以分为两大块,其一是RSMC(Recoverable Sequence Maturity Contract),用来完成两个节点之间的交易确认,其二是HTLC(Hashed Timelock Contract),用来将多个节点连接成一个网络,实现跨节点支付。

RSMC:实现两个节点之间的交易确认

首先假定交易双方之间存在一个“微支付通道”(资金池)。交易双方先预存一部分资金到“微支付通道”里,初始情况下双方的分配方案等于预存的金额。每次发生交易,需要对交易后产生资金分配结果共同进行确认,同时签字把旧版本的分配方案作废掉。任何一方需要提现时,可以将他手里双方签署过的交易结果写到区块链网络中,从而被确认。从这个过程中可以可以看到,只有在提现时候才需要通过区块链。

任何一个版本的方案都需要经过双方的签名认证才合法。任何一方在任何时候都可以提出提现,提现时需要提供一个双方都签名过的资金分配方案(意味着肯定是某次交易后的结果,被双方确认过,但未必是最新的结果)。在一定时间内,如果另外一方拿出证明表明这个方案其实之前被作废了(非最新的交易结果),则资金罚没给质疑方;否则按照提出方的结果进行分配。罚没机制可以确保了没人会故意拿一个旧的交易结果来提现。

引用自:https://yeasy.gitbooks.io/blockchain_guide/content/bitcoin/lightning_network.html

简单来说,通过RSMC实现了两个节点之间的交易确认:

  1. A创建和B的支付通道Channel
  2. A投入准备金100元
  3. A给B转账实际上是在扣除准备金,A可以多次给B转账(发生在链下,不用区块确认)
  4. A或者B关闭闪电网络通道,进行提现,闪电网络将A、B的最终余额写入链上

可以看到转账都发生在链下,只有关闭通道才会产生一次链上交易

HTLC:将多个节点连接成一个网络,实现跨节点支付

可以看到,RSMC实现了两个节点之间的交易,但在现实场景中这显然不够。举个例子:

消费者A要在B、C、D网站上买东西,A要分别开通到B、C、D的交易通道,每个通道都要存入一定的准备金。如果A只和B交易一次就关闭通道,那实际上闪电网络并没有降低交易成本。

这个时候HTLC就应运而生了,HTLC实现了将闪电网络上的节点连接成一个网络,一笔交易可以路由经多个节点最终到达目的。

微支付通道是通过 Hashed Timelock Contract 来实现的,中文意思是“哈希的带时钟的合约”。这个其实就是限时转账。理解起来也很简单,通过智能合约,双方约定转账方先冻结一笔钱,并提供一个哈希值,如果在一定时间内有人能提出一个字符串,使得它哈希后的值跟已知值匹配(实际上意味着转账方授权了接收方来提现),则这笔钱转给接收方。

不太恰当的例子,约定一定时间内,有人知道了某个暗语(可以生成匹配的哈希值),就可以拿到这个指定的资金。

推广一步,甲想转账给丙,丙先发给甲一个哈希值。甲可以先跟乙签订一个合同,如果你在一定时间内能告诉我一个暗语,我就给你多少钱。乙于是跑去跟丙签订一个合同,如果你告诉我那个暗语,我就给你多少钱。丙于是告诉乙暗语,拿到乙的钱,乙又从甲拿到钱。最终达到结果是甲转账给丙。这样甲和丙之间似乎构成了一条完整的虚拟的“支付通道”。

引用自:https://yeasy.gitbooks.io/blockchain_guide/content/bitcoin/lightning_network.html

简单来说:

  1. A需要转账50给C
  2. A和B有交易通道(余额大于50),B和C有交易通道(余额大于50)
  3. A -> B -> C,交易完成

换成刚才那个例子:

消费者A要在B、C、D网站上买东西。消费者A和一个比较大的节点Z开通通道,网站B、C、D也和这个大节点Z开通通道。交易得以完成。消费者A只需要和Z打通,不需要关心网站BCD,网站BCD也只需要和Z打通不需要关心消费者A。

HTLC机制可以扩展到许多节点的场景,这里的节点Z并不一定就是同一个节点,只要闪电网络最终能找到一条可用的通道就能完成支付。可以是A->Z1->Z2->Zn….->B。

你可以在这里看到目前闪电网络的节点连接情况:https://lnmainnet.gaben.win/

HTLC的路由和手续费机制

开通通道需要存入准备金,一个足够大的节点需要大量的准备金来维持交易。目前最大的节点LN.SHITCOIN.COM已经存入了43.79478257BTC,大概是30万美元。节点不可能无偿提供服务,闪电网络设计了一套手续费体系来维持闪电网络的运行。

闪电网络上的每一个节点,都可以设置自己的手续费(fee)大小。

如果节点Z1设置了手续费1元,Z2设置了手续费2元,A->Z1->Z2->B这条支付路径里,A就需要额外付给Z1 1元,Z2 2元。

闪电网络的交易通常不只有一条通路,可能有很多条。客户端在发起支付之前可以通过getroute方法来确定每条通路的手续费情况,可以选择一条最便宜的通路来完成交易。

闪电网络的节点充满竞争,手续费太高可能造成你的节点无人使用,闪电网络节点理论上都会维持在一个相对低廉的手续费水平。

笔者通过闪电网络支付了一个在线轮盘赌网站,共花费手续费0.0000000204BTC,大概等于0.001元人民币。挑选一个手续费低的节点还能做到更低。就目前来看闪电网络的转账手续费几乎可以忽略不计。

体验闪电网络:eclair

闪电网络拥有一套完整的协议规范,在2017年12月发布了RC1版本。现在常见的闪电网络节点软件都是按照协议规范书写的,运行在同一个闪电网络上,可以互相兼容。

eclair是ACINQ团队创造的闪电网络程序,涵盖了Windows、Linux、macOS、Android平台。

桌面平台:https://github.com/ACINQ/eclair

安卓平台:https://github.com/ACINQ/eclair-wallet

以安卓为例,下载安卓钱包客户端:https://github.com/ACINQ/eclair-wallet/releases

朝eclair钱包充值一定数量的BTC(不要充值太多)

创建一个通道,这里可以选择ACINQ团队的官方通道,存入一定数量的BTC(不用担心,这里输入的金额只是通道保证金,随时可以取回)

选择一个收款方测试支付是否成功(因为手续费极低,可以测试转账一毛两毛的)

可以在这个网站搏一搏运气,最低支付一元钱:https://www.lightningspin.com/

以上是闪电网络钱包的使用方法,非常简单方便。

搭建一个自己的闪电网络节点

如果你不满足只是使用闪电网络,你还可以自己搭建一个闪电网络节点,参与到闪电网络中来,并且收取转账手续费。

一、购买云主机并安装Docker

除了临时测试外,不推荐使用自己的PC来搭建节点,一是因为国内网络环境恶劣造成很大麻烦,二是因为闪电网络的机制要求节点随时在线,长时间不在线容易被攻击。

运行比特币全节点需要磁盘空间在200G以上,并且这个大小还在持续增长。

以Vultr为例,购买NJ节点5$方案+20$的200G磁盘,月付25$。Vultr常年有新用户注册优惠活动,通过邀请链接注册送20$,足够跑一个月:https://www.vultr.com/?ref=6897056 (注意需要双币信用卡)

在Vultr购买主机可以选择预装Docker。需要自己安装Docker可以相应教程。

二、运行比特币全节点

clone项目到本地,编译bitcoind docker镜像

git clone https://github.com/dougvk/lightning-node.git
cd lightning-node
docker build . -t dougvk/bitcoind

运行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

这样就启动了比特币全节点。比特币的数据文件存在了/scratch目录下。这个命令暴露了两个必要的对外端口8333和9735,不用担心,RPC端口并没有被暴露。

节点启动之后就开始了同步过程,需要同步180G左右的数据,大约需要12h。

通过这个命令可以查看同步进度:

docker run --rm --network container:bitcoind_mainnet -v /scratch/bitcoin/mainnet/bitcoind:/data dougvk/bitcoind:latest bitcoin-cli getblockchaininfo
{
  "chain": "main",
  "blocks": 532914,
  "headers": 532914,
  "bestblockhash": "0000000000000000001f2deba673d0bb65ac20a3690240324b0bb6bfe9286e23",
  "difficulty": 5178671069072.251,
  "mediantime": 1532152533,
  "verificationprogress": 0.9999936154754053,
  "initialblockdownload": false,
  "chainwork": "0000000000000000000000000000000000000000026ea366193d216bb3d37ef4",
  "size_on_disk": 200991969130,
  "pruned": false,
  "softforks": [
    {
      "id": "bip34",
      "version": 2,
      "reject": {
        "status": true
      }
    },
    {
      "id": "bip66",
      "version": 3,
      "reject": {
        "status": true
      }
    },
    {
      "id": "bip65",
      "version": 4,
      "reject": {
        "status": true
      }
    }
  ],
  "bip9_softforks": {
    "csv": {
      "status": "active",
      "startTime": 1462060800,
      "timeout": 1493596800,
      "since": 419328
    },
    "segwit": {
      "status": "active",
      "startTime": 1479168000,
      "timeout": 1510704000,
      "since": 481824
    }
  },
  "warnings": ""
}

blocksheaders数量一致代表同步完成

三、运行闪电网络节点

这里选择了clightning这个节点程序,运行节点(命令里可以设置节点名和颜色):

mkdir -p /scratch/bitcoin/mainnet/clightning
docker run --rm --name lightning --network container:bitcoind_mainnet -p9735:9735 -v /scratch/bitcoin/mainnet/bitcoind:/root/.bitcoin -v /scratch/bitcoin/mainnet/clightning:/root/.lightning --entrypoint /usr/bin/lightningd cdecker/lightningd:master --network=bitcoin --alias yournodename --rgb aa381e --announce-addr 本机ip --bind-addr 0.0.0.0 --log-level=debug

创建一个lightning-cli的命令,写入文件/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:master "$@"

添加执行权限

chmod +x /usr/local/bin/lightning-cli

通过getinfo可以看到闪电网络节点的运行状况

lightning-cli getinfo

到这里闪电网络节点已经启动成功

四、给闪电网络钱包充值

执行命令lightning-cli newaddr生成一个充值地址

{ "address" : "1Cd6C8i6sc1ZReskWWGHJRXvSnvM3277qz" }

朝这个地址转账适量的BTC,等待比特币网络的6次确认,设置适当的手续费一般在60分钟左右。等充值被确认了以后就可以开始创建通道了。

五、创建闪电网络通道

你可以通过这个网站来找到你想连接的节点:https://1ml.com/

或者你也可以连接我创建的节点,执行命令进行连接:

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

设置完后续费之后就可以开启通道了,开启通道需要设置准备金的数量:

lightning-cli fundchannel 02ed9102fe81a117b19f0c1fe0586536a04c962838677dcdb762aeb9804d9f33c7 20000

会返回一个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

别人的转账路由经过了你的节点,就会向你支付一定的手续费。当然你也可以随时调整这个手续费。