欢迎来到智识星球,在这里,我们将重塑你的思想。
Here is Intellectual Planet, here we craft your mind.
前不久,我们聊到了为比特币续命的方式,那里我们介绍了一个叫隔离见证的概念。
忘记的朋友可以出门左转,左转,再左转...
其实,除了隔离见证,比特币还有另外一种扩容方式——闪电网络
怎么样?是不是听到这个名字就感受到了速度?
确实如此,它也被认为是比特币创立以来最重要的革新。
我看到了你好奇的目光,先系好安全带,然后我们一起来追逐闪电吧!
迅雷不及掩耳的闪电网络
闪电网络(Lightning Network)最早由Joseph Poon和Tadge Dryja提出,它利用了比特币的安全特性,在线下提供高速的实时交易处理能力。
用户既可通过点对点的直接支付方式,也可以通过网络路由的方式实现间接支付。
闪电网络并没有发明新的加密形式,也没有使用新奇的比特币脚本,却巧妙地实现了离线支付的功能。
还记得欢喜买火车票的事情吗?多亏了互联网的普及,我们可以在网上轻松购票。
然而在十几年前却并非如此,我们都需要去火车站排队购买。
长长的队伍里,总会有一些神秘人穿梭其中,我们亲切的称他们为“黄牛”。
黄牛提供了一种线下支付的场景,让很多着急买票的乘客无需排队等待,从一定程度上减少了拥堵。
不过,闪电网络比这个过程要复杂的多。
它的实现需要借助支付通道和HTLC,让我们来深入理解一下。
轻便的支付通道
支付通道可由参与的双方共同发起一个交易来创建,实质上就是双方往一个多重签名(multisig)地址存入一定数量的比特币。
小潮和欢喜在玩一个猜硬币的游戏(智识星球的传统游戏),谁猜错了,就要支付给对方1块钱。
虽然他们每人都有一个存钱罐的零钱,但每次交付依然很麻烦。
于是,他们便采用记账的方式,待游戏结束的时候统一结算。
但问题是,万一游戏结束时,记账的金额大于存钱罐的钱呢?这意味着一方可能有欠账的风险。
没关系,他们每人提前往桌上拍100元钱,一方的记账额度用光时,便停止游戏。
这个过程有些类似于微信钱包。
我们在群里抢到的红包并不是真正的金钱,只是腾讯公司在帮你记账。
真正的交易出现在你体现到银行卡的时候。
这便是支付通道的高效之处。由于比特币的线上交易拥堵,我们可以采用离线方式进行多次交易。
这样规避了在线等待确认的时间,从而提高了交易效率。
或许你希望深入了解整个实现过程。
假定小潮打算给欢喜发送1个比特币,因为他刚猜错了硬币。
小潮可直接在比特币的网络上广播一个交易,从他的地址转向欢喜的地址。
但是考虑到他们要玩一个周末的游戏,等待的时间是难以忍受的。
于是他们决定向同一个地址X各转入100个比特币,X拥有200个比特币的未花费输出(UTXO)。
而这个地址含有多重签名,需要两人同时签名才可以使用地址中的比特币。这个交易称为支付通道的“首次交易”(opening transaction)。
同时小潮和欢喜各自确定一个随机数作为密码,然后对密码进行哈希运算,把哈希值(hash)告诉对方(密码各自保留)。
接下来就是小潮和欢喜各自创建离线交易,更改通道的离线余额。
小潮把首次交易中的输出地址X作为输入地址,发送99个比特币给自己,101个比特币给一个新的多重签名地址Y。
不过这个多重签名地址Y很特别,它有两种花费方式:
一种方法是欢喜可以单独广播交易来解锁拿到101个比特币,但需要再等待一个周末的时间(从交易在区块链上确认后算起),这相当于一个时间锁;
另一种方法是由小潮单独广播交易来解锁,前提是小潮得到了欢喜的哈希值对应的密码。
欢喜可以随时广播,来获取自己的比特币,不过要等待一段时间;而与此同时,小潮也立即获得自己的99个比特币。
欢喜也在进行相反的操作,把101个比特币发给自己,99个比特币给一个新的多重签名地址Z。
他们又进行了一次游戏,而这次欢喜的手气不佳,需要支付给小潮一个比特币。
第二次的交易过程与第一次类似,不过他们各自需要设定新的随机密码,并将上次的交易密码公布。
还记得地址Y的两种花费方式吗?
这里的精妙之处在于,如果欢喜单独广播第一次的交易(这对他有利),则需要等待一个周末的时间。而由于小潮得到了欢喜第一次的交易密码,可以立即取走里面的钱。
这有效保障了双方各自的利益。
支付通道的建立是基于双方进行多次交易的基础上的。
但如果两个用户之间没有建立支付通道,他们怎样交易呢?
这便需要用到HTLC。
智能的时间锁
闪电网络设计了一种中间人方案:若小潮希望发送1个比特币给欢喜,他们之间没有直接的支付通道,但他们分别和我有支付通道,于是可以通过我作为中间人来支付。
这个过程采用了HTLC(Hashed Timelocked Contract,哈希时间锁合约),来保证交易能够畅通进行。
又出现了一个晦涩的概念。但实际上我们每个人都用过这个类似的过程。
回忆一下我们在淘宝买东西的过程,那些剁手的时刻都历历在目。
实际上,你剁手的时候,账户里的钱并没有进入商家的口袋里,而是打到了支付宝的官方平台上。
此时,一个倒计时的合约便启动了,一般默认是30天。
你收到了宝贝,也确认没有问题,便可以确认收货,提前结束合约,卖家同时收到货款。
然而当你收到的是一个空包裹时,你便可以怒气冲冲地向支付宝平台申请仲裁。卖家得不到货款,而钱也从平台推至你的账户。
HTLC就是这样一个过程。
小潮不是直接发送1个比特币给我,而是发送1个比特币给一个多重签名地址Q。
地址Q有两种解锁方式:用我的签名加上欢喜设置的一个密码;
或者小潮用本人签名解锁,但需要等待一段时间,例如30天。
在30天内,我如果得到密码,就可以用签名拿走地址Q中的1个比特币;如果我在30天内没有得到密码,被认为超时,小潮可以从地址Q中拿回自己的1个比特币。
同样的,我和欢喜也设立这样的HTLC,并且满足两个要求:
采用之前HTLC相同的密码,以及稍短一些的超时设置,如29天。
这样确保在我支付了欢喜之后,可以从小潮取回相应的比特币,而不会因为超时,被小潮拿走。
在支付过程中,首先欢喜随机生成一个密码R,再把R 进行哈希运算后得到H(R),然后将H(R)发送给小潮。小潮用哈希值H(R)作为时间锁,创建和我的HTLC合同,包含1个比特币,有效期30天。
我用同样的哈希值H(R)打开一个和欢喜的HTLC合同,也包含1个比特币,有效期29天。
29天内,欢喜可以随时使用密码R,来解锁我的HTLC,从而得到1个比特币。
与此同时,我也看到了密码R,可以去解锁和小潮的HTLC,也得到了1个比特币。
这样就完成了从小潮到欢喜的支付。
没错,你一定和我一样,感觉很辛苦,看起来一点都不轻松。
但整个过程不需要反复地记账,省去了大量的等待时间。这使得即便需要多个中间节点实现转账,也可以畅通无阻,只要两个用户之间存在一条通路。
结语
闪电网络实现了在离线环境下提供比特币交易的方式,多可以离线发生任意数量的交易,而无须广播到比特币的网络上。
这大大提高了交易速度,也减轻了比特币网络的压力,比特币似乎又能焕发新的活力。
闪电网络是传统方式迁移到区块链的创新,核心思路便是迂回包抄。
这也带给我们一些启示,一些智识的直接获取十分困难,不过我们可以在它的周边逐步建立认知网,待时机成熟后,一举获得智识的跃迁!
(参考文献《区块链技术指南》)
【智识星球】出品
每个人都是各自轨道上的拓荒者,
祝贺你又完成了一次思想跃迁!
个人转载、留言和点赞,无需特别申请许可。