导读
今天是大年初九,延长假期的最后一天。在明天正式开工之日,或许很多小伙伴由于新型肺炎疫情的原因无法抵达工作岗位,或是选择在家办公,无论何种情况金色财经都祝愿大家身体健康,万事如意,并希望在大家力所能及的范围内,支持新型肺炎疫情的防控。
农历新年期间,金色财经将每日推荐精选文章,以飨读者。今日推荐的是关于闪电网络的文章,欢迎阅读。
比特币在牢固奠定其作为价值存储货币的地位之后,并没有忘记它的初心——点对点的电子现金——并呼啸而至。
2017年的扩容之争,比特币选择的路线是闪电网络,除了重要交易走链上(onchain),生活中大多数的小额支付交易全部走链下(offchain)。
目前来看,选择闪电网络似乎是一条正确的道路。因为闪电网络上线比特主网后,确实做到了极低费用的即时支付,正在被越来越多商家采用。
本文分四个部分详细介绍闪电网络的过去、现在、未来以及详尽原理。
一、闪电火炬运动;二、闪电网络现状;三、闪电网络发展历程;四、闪电网络原理详解。
一、闪电火炬运动
一场闪电网络打赏接力赛正在Twitter用户间如火如荼展开。这场病般的推广活动现在被人们称为闪电火炬运动。正如2016年社交媒体上的冰桶挑战运动一样,这引起闪电网络的极大传播和关注。
2019年1月20日,twitter用户@hodlnaut发推表示,通过闪电网络打赏应用tippin.me向选中的第一位用户发送10万聪(100k satoshis,1 BTC等于1亿聪),随后这位用户增加1万聪发给下一位用户。依此类推,直到最后一位用户不愿再增加1万聪并把前面所有人累计的比特币据为己有,游戏结束。
hodlnaut想看看这一打赏接力运动会到多少聪终止。
有热心网友为此专门制作了网站实时跟踪闪电火炬到了哪位twitter用户手中。据网站信息,截至发稿,目前已经有215个用户参与传递,最近一个人需要发送315万聪比特币。目前累计发送的比特币已经达到4.56枚BTC。
如果没有人主动终止游戏,传递的比特币超过0.168枚后就会自动结束火炬传递。因为目前闪电网络支付通道最大容量被设定在0.168枚比特币左右。目前开发者正在开发提升支付通道容量。
已经有不少数字货币届名人参与到闪电火炬的传递中,包括《Mastering Bitcoin》作者Andreas Antonopoulos,摩根溪创始人Anthony Pompliano、比特币耶稣Roger Ver、闪电实验室工程师Joost Jager、币安创始人赵长鹏、波场创始人孙宇晨、Twitter创始人兼square CEO Jack、BitMEXResearch。
目前闪电火炬发起人hodlnaut已经订购了一辆特斯拉,推动马斯克参与此活动。
Tippin.me开发者Sergio Abril表示,2月17日已经发布Tippin.me的google chrome扩展,安装扩展后,在每个tweet下方会显示闪电网络打赏按钮,可以直接给twitter用户打赏。但需要你首先开通Tippin.me,不然会显示此用户不存在。
下图是有人2月20日给金色财经记者tweet打赏5聪的截图。
目前闪电火炬只在twitter用户间展开,而且可以用twitter账号直接登陆tippin.me并创建闪电网络收单信息(invoice)。Twitter和tippin.me关系紧密,因为Twitter CEO就是Tippin的投资人之一。
二、闪电网络现状
闪电网络从2018年10月开始急速增长。
据闪电网络浏览器1ml数据,截止发稿,闪电网络有6473个节点,共有28783个支付通道,网络通道总容量达到708.34个比特币。支付通道和网络总容量30天内均达到近30%的增长。
市场消息:台积电要求春节加班赶盖3纳米厂:据日经亚洲评论,台积电将支付额外奖金,要求建造商加班赶工完成3纳米新建工程的建设。台积电兴建中的南科3纳米厂预定在2022年下半年开始量产,其还计划将5纳米芯片的容量较去年年底提高70%,达到每月12万片晶圆,这些芯片目前用于最新的5G iPhone 12系列和新的Mac核心处理器。[2021/2/9 19:19:49]
值得注意的是,1ml名字的另一层意思是闪电网络的目标是达到100万个闪电网络节点,目前仅完成0.6%目标。
据p2sh.info统计,闪电网络通道容量是半年前的8倍多,是一年前的157倍。金色财经估算,按照目前每个月30%的增长速度,10个月后闪电网络容量就能达到10000枚BTC,19个月后闪电网络容量就能达到10万枚BTC。
2月11日,Twitter和Square CEO Jack Dorsey和闪电实验室CEO Elizabeth Stark共同参加Stephan Livera podcast,Jack宣称闪电网络不是整不整合进Square Cash App的问题,而是什么时候整合的问题。
因为低手续费(甚至无手续费)的小额即时支付特性,闪电网络支付已经集成进体育赛事预测、、知识付费、打赏、代付等各种应用。这些集成的app被称为Lapp。
某钱包集成的部分Lapp
上图中有话费充值服务商Bitrefill,打开你会发现Bitrefill支持用闪电网络给中国移动、联通、电信用户充值话费。在本文第三部分我们会知道,Bitrefill是最早支持闪电网络的服务商之一。
Y’alls是利用闪电网络支付的付费阅读网站,支付少量的比特币可以越过网站付费墙阅读里面的文章。
Zigzag是一家交易所,可以在低费用、高速将其他加密货币兑换成闪电网络比特币,或者将闪电网络比特币兑换成其他加密货币。
澳大利亚加密货币支付网关livingroomofsatoshi提供用闪电网络支付信用卡、银行账单、房租等各项服务。
Satoshi’s place,类似于EOS Pixel Master,人们可以花费一定聪的比特币占领图片中的像素。金色财经记者花费了1890聪在画布右下角写上了“金色”二字(下图红圈部分)。
争夺激烈,截止发稿此处像素已被其他用户覆盖
赛事预测和体育网站microbet.fun,目前提供足球、橄榄球、篮球和冰球四种运动的赛事预测并提供下注功能。NBA、英超、德甲、西甲、意甲等这些著名运动联赛都在预测下注名单。
金色财经记者试用几个Lapp后,发现闪电网络至少真正做到了它宣称的两个目标:极低费用和即时支付。费用方面,金色财经记者发起的几笔支付均没有费用,额度可以最低低至1聪。支付速度方面确实做到了秒到,支付体验不输于Visa、微信支付和支付宝。
目前有若干个闪电网络客户端,最受欢迎有三个,分别是Lightning Labs的Ind(Lightning Network Daemon,Go实现),ACINQ的eclair(Scala实现)和Blockstream的c-lightning(C实现)。
闪电网络给了用户/商家极大的自由度。任何用户/商家可以亲自动手建立自己的闪电网络节点,还可以直接采用第三方节点服务如lightninginabox、Casa Node开箱即可拥有节点,还有开源的第三方支付服务,如可以利用开源项目lndhub、BTCPayServer架设节点,开发钱包让用户用你的节点,每个人都可以自由开设银行。钱包方面,类似于以太坊的Metamask钱包,闪电网络同样有谷歌扩展钱包Lightning Joule,还有第三方提供的轻钱包以及ToB的支付服务提供商如OpenNode、闪电网络POS系统NanoPos。
商务部区块链专委会副主任:平均每台矿机的出售价格较春节前下降30%-50%:商务部CECBC区块链专委会副主任、数字经济商学院院长吴桐在接受《证券日报》记者采访时表示,在疫情影响下,矿机的维护、更新和继续生产的难度进一步提高,而‘3·12’暴跌使很多矿场处于出售状态,矿机抛售潮已经出现,平均每台矿机的出售价格较春节前下降30%-50%。(证券日报)[2020/3/23]
闪电网络是怎么做到极速支付体验的呢?比特币分析师JP Thor研究指出,因为通过layer-2闪电网络支付不需要经过第三方中介,两点之间的支付可以和TCP/IP连接的速度一样快,因此闪电网络支付速度会超过Visa。目前闪电网络一个通道现在的处理速度可以超过250TPS,而网络扩展没有上限。目前Visa的支付峰值是50000tps,平均值在24000 tps左右,比特币的处理速度仅在7tps。
从而真正做到即时支付,使比特币白皮书的愿景现金支付功能成为现实。
三、闪电网络发展历程
闪电网络的雏形可以追溯到2009年中本聪发布的第一版比特币软件Bitcoin 0.1。Bitcoin 0.1中就包含了一份原始的代码草案,允许用户在区块链上广播确认交易之前更新交易。这或许是支付通道概念原型。中本聪曾经和当时的bitcoinj开发者Mike Hearn私人通信时详细解释支付通道将如何工作。
2014年,Alex Akselrod提出双向支付通道,他现在是Lightning Labs工程师。
2015年闪电网络白皮书发表之前,为解决比特币延展性漏洞,PeterTodd设计并在比特币协议中实现了一种新型时间锁定timelock,CheckLockTimeVerify (CLTV)。
2015年2月,Thaddeus Dryja和Joseph Poon发表闪电网络白皮书——比特币闪电网络:可扩展的链下即时支付。同月,在旧金山的比特币开发者研讨会上他们首次公开详细阐述他们的想法。
2015年差不多一整年,比特币社区关注的议题主要是比特币扩容和区块大小问题。两次扩容大会:9月份的蒙特利尔比特币扩容大会(Scaling Bitcoin Montreal),在12月份的香港比特币扩容大会(Scaling Bitcoin Hongkong)。
香港扩容大会不久,比特币核心开发者Gregory Maxwell在Bitcoin-development邮件列中提出比特币的扩容路线图,这张路线图包括了闪电网络。这个路线图获得了大多数比特币技术社区的支持,并成为了Bitcoin Core路线图。
2015年5月,区块链开发公司Blockstream聘请了linux核心开发者Russell,并希望他用C语言实现闪电网络:C-Lightning。
2016年1月,闪电网络的两位作者Poon和Dryja,以及ElizabethStark、Olaoluwa “Laolu” Osuntokun共同创立了一个全新的公司LightningLabs来开发闪电网络。LightningLabs将用go语言开发lnd。
2016年10月,第三次特币扩容大会在米兰召开。会后几天, ACINQ, Amiko Pay, BitFury, Blockstream, Lightning Labs和Purse这些闪电网络的主要开发者举行了第一次闪电网络峰会( LightningSummit)。这次会议讨论了如何使所有不同的闪电网络实现能相互兼容互操作,并形成闪电网络协议规范BOLT(Basis of Lightning Technology)。BOLT成为闪电网络基础规范。
闪电网络白皮书的想法与比特币协议有不兼容的地方,需要对比特币进行一些协议升级。CLTV时间锁定要求定期关闭支付通道,而采用相对时间锁定闪电网络表现会更好。2016年夏天,比特币网络实施名为CheckSequenceVerify(CSV)的软分叉升级。
在隔离见证激活之前,基于隔离见证的闪电网络就开始不断测试。2016年5月,Blockstream第四版隔离见证“SegNet 4”的闪电网络c-lightning测试网上线。当年10月,Blockstream的Christian Decker在测试网上从同事Rusty Russell那里购买了一张猫的照片,被认为是闪电网络的第一次大突破。
动态 | 春节期间比特币链上大额转账活动较为活跃:据Tokenview链上数据监测,近24小时比特币链上转账总额为72.58万BTC,链上转账笔数为30.03万笔,新增和活跃地址数较七日均值则分别下降7.43%和3.43%。春节期间,比特币链上交易额在1月25日降至近14日最低值,随后开始回升,链上大额转账笔数自25日起连日上涨,在31日达到近60日来最高位,与市场走势呈现出一定的正相关性。在挖矿数据方面,比特币近七日算力均值为111.76 EH/s,近24小时算力均值为109.78 EH/s。昨日全网区块总数为143个,较前日减少8个,链上转账手续费总和为16.95 BTC。注:以上内容仅供参考,不构成投资建议。[2020/2/3]
2017年1月,lnd发布阿尔法版本。越来越多开发者开始基于闪电网络开发各种应用,包括桌面、移动钱包,小额知识付费平台,,浏览器等等Lapp应用。
2017年8月,隔离见证激活,闪电网络部署在比特币主网的障碍清除。
2017年11月,首先是Blockstream宣布c-lightning闪电网络测试版上线比特币主网并完成第一笔交易。然后,Lightning Labs宣布闪电网络第一次在比特币和莱特币之间完成跨链交易。
2017年12月,Blockstream, Lightning Labs, ACINQ宣布闪电网络的三个实现兼容互操作(Interoperability)。
尽管比特币主网上的闪电网络还是测试版,用户早迫不及待拿真正的比特币来交易了。
2017年12月,闪电网络迎来第一笔交易。闪电网络开发者Alex Bosworth和支付商Bitrefill建立支付通道,并用比特币支付了自己的电话账单。
2018年1月,比特币历史上的传奇人物Lazlo Hanyecz宣布他通过闪电网络成功再次购买披萨。Lazlo Hanyecz曾经用1万个比特币购买披萨而出名。
2018年3月,闪电实验室发布ind贝塔版,并得到包括twitter CEO在内的250万美元种子轮投资。
之后,节点、钱包、支付、应用不断被开发出来,接入闪电网络的商户、服务也不断增加,闪电网络开始爆发式增长。
四、闪电网络工作原理解读
这一部分是对闪电网络的硬核理解,主要来自Thaddeus Dryja和Joseph Poon的闪电网络白皮书。
弄懂闪电网络,需要理解几个概念:1、未花费的交易输出UTXO(Unspent Transaction Output);2、多重签名;3、双向支付通道;4、RSMC——可撤销的按序到期合约(Revocable Sequence Maturity Contract,)5、HTLC——哈希时间锁定合约(Hashed Timelock Contract)。
1、未花费的交易输出UTXO
比特币模型中不是常见的账号模式,而采取的是未花费的交易输出UTXO。除了挖矿奖励没有输入只有输出,比特币其他所有交易都有相应的输入和输出。
UTXO指定了可花费的比特币数量以及所有者,只有证明你是所有者你才能花费这一地址中的比特币。而证明你是所有者是通过解锁一个“锁定脚本(ScriptPubKey)”来实现的,这段脚本存在“输出”的一个字段里。当UTXO 被花费,用作交易的“输入”时,需要提供一段“解锁脚本(ScriptSig)”,将“解锁脚本”和“锁定脚本”结合在一起运行,验证成功,UTXO中的比特币才被允许使用,并生成新的“输出”。
我们用数字货币届著名的Alice、Bob、Carol转账来说明。
假设Alice给Bob转账0.5个BTC, 这笔转账交易的“输出”会设定如下“锁定脚本”:
OP_DUP OP_HASH160 <Bob公钥哈希值> OP_EQUALVERIFY OP_CHECKSIG
实力派 | 张弢:春节后比特币可能会突破1万美元:在今日的金色实力派上,海创链CEO张弢发言指出:2019-2020行业的关键词是:跨链、数据资产化、脱虚向实、LIBRA和DCEP、1024重要讲话、POS、隐私计算、区块链公司股票上市。此外,他还指出,2020年比特币减半的事情,估计大多数行业从业者都会关注,预计春节后比特币可能会突破1万美元。[2020/1/22]
这个锁定脚本的作用是如果不能证明自己是Bob,就不能花这0.5个BTC。
当Bob要把Alice转给他的钱再转给Carol,比特币会先找到从Alice那得来的UTXO,然后创建一个新交易,并产生本次新交易的“输出”,这个输出中同样包含针对Carol的“锁定脚本”。同时在本次交易的输入中产生“解锁脚本”,按<Bob数字签名> <Bob公钥>排列。然后广播该交易进入内存池等待矿工校验Bob这笔交易是否合法、未花费。
矿工验证具体做法是取出本次交易“输入”中的“解锁脚本,和Alice转账给Bob的UTXO中的“锁定脚本”,拼在一起运行。具体形式如下:
<Bob签名> <Bob公钥> OP_DUP OP_HASH160 <Bob公钥哈希值> OP_EQUALVERIFY OP_CHECKSIG
验证步骤是这样的,1、取出<Bob签名>压入栈中;2、 取出<Bob公钥>压入栈中,现在<Bob公钥>处于栈顶;3、 OP_DUP 复制处于栈顶的<Bob公钥>;4、HASH160指令对<Bob公钥>进行哈希计算并压入栈中,现在处于栈顶的是Bob公钥的哈希值;4、取出<Bob公钥哈希值>并压入栈中,此处的<Bob公钥哈希值>来自上一笔交易的输出;5、EQUALVERIFY指令:取出处于栈顶的两个公钥哈希,如果相等则继续,否则验证失败;6、CHECKSIG指令:取出<Bob公钥> 和<Bob签名>进行签名验证,验证如果是true,该笔交易合法。
上面的例子中,一个私钥解锁相应的UTXO,也叫支付到公钥哈希交易(P2PKH,Pay To PubKey Hash)。为了资产安全、交易扩展,比特币还有多重签名技术,多重签名需要多个私钥才能解锁相应的UTXO。
2、多重签名技术
用多个私钥来解锁相应的UTXO的技术叫多重签名技术。多重签名一般形式是M-of-N多重签名,“锁定脚本”里一共有N个公钥(2<N≤15),最少需要M个私钥生成的数字签名才可以解锁UTXO。
多重签名技术只靠OP_CHECKMULTISIG这一个指令来验证交易的合法性。该指令读取M个签名和N个公钥以及M和N值,然后按顺序使用公钥分别验证签名,成功匹配计数器加一,最终计数器等于M则运行成功。
下面以2-of-3多重签名为例来说明。
2-of-3情况下的锁定脚本:
2 <公钥1> <公钥2> <公钥3> 3 OP_CHECKMULTISIG
假设只用私钥1和私钥3,那么解锁脚本是:
0 <签名1> <签名3>
合成指令则是:
0 <签名1> <签名3> 2 <公钥1> <公钥2> <公钥3> 3 OP_CHECKMULTISIG
但多重签名中锁定脚本用到所有的公钥,数据量太大,会增加交易费用。所以现在多重签名采用的是支付给“脚本哈希”交易P2SH(Pay to Script Hash),引入一个赎回脚本(RedeemScript)概念,并将N个公钥信息从锁定脚本里挪到解锁脚本中。
新方案中的锁定脚本变得简洁:
OP_HASH160 <赎回脚本的哈希> OP_EQUAL
这里赎回脚本的哈希只有160位,即20个字节,比之前N个公钥短很多。
外媒:比特币春节波动小 因为中国矿工都回家过年了: 一些专家认为,中国农历新年不可能引起比特币价格强烈波动。数字资产专业投资者国际网络创始人彼得?德沃良金说:“中国的矿工过年,或者关闭设备,或者改变设备操作模式,主要力量集中在国家或是由中国资本控制。” BitClave.ru区块链项目创始人瓦西里?特罗费姆丘克预测:“中国农历新年传统维持比特币的增长,中国年过后会攀升到新的高度。2月底, 比特币将继续全面增长,届时可能将达到1.2~1.4万美元。”(俄罗斯卫星通讯社)[2018/2/17]
“赎回脚本”的原文:
解锁脚本则是:
0 <签名1><签名2 ><赎回脚本>
合成指令:
0 <签名1><签名2 ><赎回脚本> OP_HASH160 <赎回脚本的哈希> OP_EQUAL
基于栈的特点,该指令先对<赎回脚本>做哈希运算,然后和<赎回脚本的哈希>比较,如果一样运行原始脚本:
3、双向支付通道
了解了多重签名技术,闪电网络的第一步就容易理解了。闪电网络通过支付通道和比特币网络交互,用户之间首先建立双向支付通道,核心把用户的比特币转移到一个多重签名地址。这在闪电网络白皮书中被称为Funding Tx.
我们同样拿Alice和Bob为例。Alice如果每天都会从Bob那里购买早餐或者咖啡,只需要他们预存一部分钱在一个第三方共同账号内,每次交易后经双方同意更新他们之间的账目分配,他们之间的交易在闪电网络支付通道内点对点展开(也叫承诺交易Commitment Tx),不全网广播也就是不上链,真正做到点对点即时支付。只有在某一方决定停止使用对方服务并关闭支付通道后,在比特币网络广播最终的通道状态,Alice、Bob一致签名同意、结算上链。理论上来说,只要打开支付通道时充值的比特币数量足够,通道内的交易次数可以是无数次。
支付通道的本质是Alice和Bob将自己的比特币转入一个2-of-2多重签名地址。
但怎么防止Alice或者Bob在关闭支付通道时作弊,不把最终状态在比特币网络广播出去?闪电网络采取的是RSMC来保证双方诚实不作弊,如果关闭支付通道把最新的通道状态广播到比特币网络。
4、RSMC——可撤销的按序到期合约(Revocable Sequence Maturity Contract)
闪电网络白皮书第19页是这么描述RSMC作用的:
如果用户不广播最新的通道状态会受到惩罚,另一方会拿走通道内所有的资金。因为双方的资金保存在RSMC里,他自己要等1000个区块确认(注:Timelock)才能拿到资金,而另一方拥有两个签名,在他之前拿到通道内全部资金。如果用户广播最新通道状态,就不会有可撤销交易,在一段时间(1000个区块确认)之后,交易双方会拿到属于他们自己的资金。
我们同样选择Alice和Bob各充值0.5个比特币到多重签名地址打开支付通道为例来说明,RSMC到底是怎么来确保人们诚实支付的。
上图Alice和Bob是镜像对称的,研究清楚一个人就够了。Alice和Bob会分别创建承诺交易(Commitment Tx)C1a和C1b。
承诺交易(Commitment Tx)C1a有两个输出,一个是Alice和Bob共同签名的RSMC地址中的0.5BTC,一个输出是Bob的0.5BTC(图中output 1)。
C1a下面会有一个可撤销交付交易(Revocable Delivery Transaction)RD1a和一个交付交易(Delivery Transcation)D1a。RD1a来动用RSMC中的BTC。因为RSMC是一个多重签名地址,因此需要Alice和Bob两者的签名。RD1a输出是付给Alice 0.5BTC,但条件是C1a交易被广播并且经过1000个区块确认。D1a表示Bob可以随意消费这0.5BTC,只要C1a被广播,Bob可以立即广播D1a拿到0.5BTC。
整个机制最后结果的实质是,如果Alice想终止和Bob的交易,他可以选择广播C1a,Bob可以立即得到0.5BTC,而Alice需要经过1000个区块确认拿到0.5BTC。对Bob是一样的道理。
再考虑Alice和Bob之间发生交易的情形。比如Alice花费0.1 BTC从Bob那买杯咖啡,现在支付通道内的资金分配需要变成Alice(0.4BTC)和Bob(0.6BTC)。 而这需要做两步,一是创建新的承诺交易,二是将之前的交易作废。
创建新承诺交易
下图中是左边是即将被作废的C1a和C1b(为了图例简介省略了RSMC和后续交易);中间栏是Alice创建的新交易:C2a,RD2a, D2a;最右栏是Bob创建的新交易:C2b,RD2b,D2b。
C2a和C1a结构相同,从Alice的角度看,只是Alice和Bob共同签名的RSMC地址中BTC数量是0.4BTC,Bob的是0.6BTC。
Bob也会创建相应的C2b,RD2b和D2b,然后双方互换承诺交易和RSMC交易完成签字,至此新交易生效。
旧承诺交易作废
此时新老交易(C1a/C2a,C1b/C2b)同时存在也同时有效。怎么废掉旧承诺交易呢?
闪电网络通过两个手段来废掉旧承诺交易C1a和C1b:一是双方互换私钥;二是创建“违规补偿交易(Breach Remedy Transaction, BR1a/BR1b)”来代替RSMC可撤销交易(RD1a/RD1b)。
如上图所示,新的违规补偿交易(Breach Remedy Transaction, BR1a)的输入是多重签名RSMC中的0.5BTC,输出则是付给Bob的0.5BTC。
因此,如果Alice违规将旧通道状态C1a签名并广播出去,那么Funding Tx多重签名中的资金将被转到了多重签名RSMC以及Bob地址中,各0.5 BTC。同时,Bob除了拥有RSMC中那0.5BTC自己部分的私钥,还收到了Alice的私钥,于是Bob可以广播BR1a到全网。而Alice创建的RD1a还需要再等1000个区块确认才能生效。这样,Bob就拿到了支付通道中的全部资金。
多重签名的RSMC一是先关闭支付通道的人延迟获得资金,二是可以提供经济激励作废旧交易不去作弊,因为将旧交易的通道状态广播出去会有惩罚,支付通道里的比特币会全归对方所有。
通过这种机制确保Alice不会去广播C1a,C1a自然作废。
支付通道内的后续新承诺交易D、E、F……同样按上面流程处理,确保Alice和Bob在想关闭支付通道时总是按照最新的通道状态广播。
上面讨论的是Alice和Bob两个节点的支付流程,还不能成其为闪电网络。如果两个节点之间没有直接的支付通道,他们能通过其他节点间接连在一起,组成闪电网络,它们之间的支付称为多跳支付(Multihop payments)。
闪电网络可以通过HTLC——哈希时间锁定合约(Hashed Timelock Contract)使得节点之间完成多跳支付。
5、HTLC——哈希时间锁定合约(Hashed Timelock Contract)
如果Alice想支付给Dave 0.1个BTC,但它们之间没有直接支付通道怎么办?Dave会产生一个随机数R作为秘密(secret),然后把R的哈希值发给Alice。Alice会告诉Bob:如果你在三天之内告诉我H的原像(preimage)我就支付给你0.1个BTC。Bob同理告诉Carol:如果你在两天之内告诉我H的原像(preimage)我就支付给你0.1个BTC。Carol可以告诉Dave同样的话,只是时间变成一天之内。而Dave的确知道R。
还记得上文有人通过tippin.me给金色记者打赏的案例吗?在准备本文的一开始,金色财经记者就用闪电网络钱包体验了一下闪电网络支付,给自己的tippin.me转了1000聪。其实在这一过程中就发生有多跳支付。金色财经记者的钱包是通过Indhub跳转到tippin.me的。
上面是多跳支付的整体图景,再来看看Alice和Bob之间的具体交易。在多跳支付中,Alice和Bob之间虽然利用它们之间已经建立的支付通道,但他们之间的交易和直接交易不一样,引入了HTLC——哈希时间锁定合约(Hashed Timelock Contract)
还是以Alice支付给Bob 0.1个BTC为例来说明,这种情况下的承诺交易如下:
C2a的输出变成三个,增加一个多重签名HTLC,其中有0.1BTC。
HTLC地址中的0.1BTC可能按两种路径执行:HTLC执行交付交易HED1a(HTLC Execution Delivery Transaction HED1a)和HTLC超时交易HT1a(HTLC Timeout Transaction HT1a)。
如果Bob按时将自己得到的原像R的哈希值交给Alice,则Alice使用该哈希值创建HED1a,并签名交给Bob,此时Bob可以用R随时“解锁”该交易,完成0.1BTC转账。
如果Bob没有在规定的时间内将原像R的哈希值交给Alice,三天后Alice可以广播该HT1a触发0.1BTC的退款,退到了一个新的多重签名RSCM地址。
HT1a下面还有一个HTLC超时可撤销交付交易HTRD1a(HTLC Timeout Revocable Delivery Transaction HTRD1a),这个交易的目的是从HT1a产生的新的多重签名RSCM拿回属于Alice的0.1BTC。如果HT1a的状态被广播,经1000个区块确认后,Alice可以对HTRD1a签名、广播获得退款。
如果发生新的多跳支付,怎么废掉C2a/C2b中的HTLC呢?同样是靠互换私钥和创建违规补偿交易HTLC:违规补偿交易HBR1a(HTLC Breach Remedy Transaction HBR1a)和HTLC超时违规补偿交易HTBR1a(HTLC Timeout Breach Remedy Transaction HTBR1a)。
因为Bob知道多重签名HTLC中的Alice的秘钥,如果Alice将C2a广播出去,会执行HBR1a交易,C2a输出HTLC的0.1BTC将为Bob所有。但如果Bob没有去HBR1a领取罚金,Alice还是没有机会三天后通过广播HTRD1a拿到这0.1BTC,因为Alice广播HTRD1a后需要等待1000区块确认,而Bob可以立刻通过HTBR1a解锁HTRD1a中的的0.1BTC。
这样,我们就迎来了多跳支付间的支付通道利用RSMC和HTLC确保它们在关闭通道时广播最新通道状态的终极形态。
通过上面闪电网络的详解解读,闪电网络的实质是通过支付通道把节点链接成网络,然后支付通道内利用RSMC、HTLC等机制设计和技术手段规避交易对手的道德风险,从而做到无需信任对方和第三方的点对点支付,因为无需上链,支付速度瓶颈就在于网速限制,所以可以做到即时支付。
根据闪电网络的特点,比如支付通道、多跳支付等,尽管闪电网络现在基本做到了极低费用下的即时支付用户体验,但也存在一些问题,如支付通道的中心化、流动性、收款人在线、路由等。
结语
回过头来看比特币和闪电网络的发展,也许比特币同时作为价值存储货币和支付货币并不冲突。比特币作为清算网络,闪电网络作为支付网络。
支付功能的广泛使用反而会增加比特币清算网络的交易量,增加比特币网络的手续费,反而更加增加比特币网络安全性和去中心化性。正反馈互相成就。
剩下唯一的问题是价格波动大的问题。闪电网络支付以聪为单位来计价,如果比特币价格足够高,那么其波动性可能会很低,足以成为日常支付工具。
比特币投资者Tim Draper近日表示,两年后世界将会用比特币购买咖啡,到2023年咖啡师会嘲笑那些试图用法定货币购买咖啡的人。
也许有一天,这会成真。
参考资料:
The History of Lightning: From Brainstorm to Beta
The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments
An analysis of on-chain Lightning Network transactions in the Bitcoin blockchain
Understanding the Lightning Network (3 parts)
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。