查看原文
其他

闪电网络并不完美,比特币老大哥地位不保?显然不会!

知县 白话区块链 2019-04-08

白话区块链

从入门到精通,看我就够了!

导读:闪电网络(Lightning Network)是解决比特币主链转账速度慢、成本高等问题的链下交易网络,是主链扩容、跨链交换最有前景的技术方案。由于设计复杂,闪电网络的原理较难理解,同时也存在一些实用方面的问题,本文通过生活化的案例从设计层面上解释了闪电网络的原理,同时对闪电网络现存的问题进行了分析并提出了解决建议。

一、两块pizza的故事

2010年5月22日是值得纪念的一天,程序员小哥Laszlo在这天用10000枚比特币买了两块pizza,并在bitcointalk论坛上炫耀。对就是下面这俩:



PIZZA/BTC=10000

后来的事大家都知道了,比特币价值一路狂飙,这两块pizza的「身价」也不断上升,国外有好事者专门开了个Twitter来记录它们每天的价值。目前这对pizza大概值6亿人民币,每块3亿,咬一大口差不多一千万吧。

Twitter @bitcoin_pizza

大家先替小哥默哀3秒——好了,我们都知道比特币所有转账记录都能查到,所谓可追溯,对比时间和金额之后基本可以锁定这笔伟(tong)大(xin)交易就是下面这条:

bitcoin pizza 交易记录

除了喜闻乐见的交易金额之外,还有一个数据抓住了我的眼球:手续费是0.99BTC。这也太——便宜了!

啥?6万多的手续费还便宜?看来知县大人没少捞啊!
这这…本官可是清…清官,多说无益,咱们上数据:
彼时彼刻,10000个比特币价值40美金左右,手续费0.99BTC值约0.4美分;
此时此刻,全网推荐手续费是0.0001125BTC(下图),约为1.125美金,也就是112.5美分。


推荐的比特币转账手续费(20180425上午10点)

1125 : 4,现在是以前的几百倍,当年是不是很便宜?17年底比特币转账太贵逼走很多人后,手续费已经大幅回落了。回落之前呢?有段时间平均手续费超过了30美金,比买pizza时涨了将近万倍。

你说当年便宜不便宜?你说知县大人是不是清官?

好好好你是清官,不过就算按照现在来算,一笔交易手续费要7块多钱,我买个煎饼才5块,抢劫啊?

对,用比特币进行小额支付就是贵,而且服务还不好。根据设定,每秒钟比特币全网只能处理大约7笔交易,这速度基本是恒定的。矿工肯定先为手续费高的「土豪交易」进行确认,没那么土豪的交易很可能要等几十分钟甚至几小时才能到账。

那比特币是不是没救了呢?
当然不是。之所以这么贵、这么慢,根本原因是每笔交易需要全球所有比特币节点进行验证和记录,这样才能保证交易的一致性、可追溯和不可篡改,这对大额交易是非常重要的,转几百万的大佬也不在乎多几十块手续费和等上个把小时。

买个煎饼而已,能不能降低点要求,比如不求追溯,也不用大家都知道,然后便宜点?

可以啊,那就不要麻烦矿工大佬了,来笔「链下(off-chain)交易」就成,既快又便宜,还能保证跟链上差不多的安全性。

还有这种操作??

二、闪电网络

闪电网络就是这种链下交易「骚操作」,也是目前主链扩容最有前景的方案。

闪电网络是基于BOLT(Basic of Lightning)协议实现的链下交易网络,主要由RSMC(Revocable Sequence Maturity Contract)和HTLC(Hashed TimeLock Contract)两个智能合约组成,翻译过来分别是「序列到期可撤销合约」和「哈希时间锁定合约」…

这些概念,聪慧如知县也记不住这些全称,但是我能记住缩写,因为更加聪慧的知县夫人给它们起了昵称——「肉丝冒菜(RSMC)」和「火腿腊肠(HTLC)」。这吃…哦不智商,我反正是跪了。

这两个合约设计得非常精巧:资金通道用坚实的密码学技术进行限定,资金流向又用精巧的博弈论策略进行引导,跟比特币一样都是跨学科设计的典范。BOLT协议细节很多,实现复杂,秉着说人话的原则,咱们简单描述一下它们的工作原理就好。

1、肉丝冒菜(RSMC)

肉丝冒菜( RSMC)有点像两个人记私账,而且谁也不敢作恶,否则血本无归。

举个例子。张三和李四相约去澳门的一家游乐设施里打牌,设施规定:
「现金不能进场,要在柜台托管,转账提现每次手续费100块,而且必须跑回柜台按手印确认」。

俩人傻眼了,每人也就带了5000块,多打几局还不够交手续费的?每局都跑回来,这一下午也打不了几局啊…柜台妹子看这俩人玩的小,给了另一个方案:
「两人花100块开一个共同账户,按照张三:5000/李四:5000放钱进去,并得到一沓票据。每张票据记录一次资金划分,比如张三:6000/李四:4000,两人都按手印,票据就生效了。任意一人拿生效的票据去柜台交100块,就能按票据比例自动打钱到各自的账户。另外,每张票据都有递增的编号,用完了可以免费加。」

这么一来,就算一下午打了100局,额外费用也就200块,还省了每局跑去柜台划账的时间,有这好事儿?张三马上就要掏钱,却被李四拦住了:
「等下,假设我先输了3000,记了张三:8000/李四:2000的票据,后来我追平还赢了3000,又记了张三:2000/李四:8000的票据,但这小子趁我上厕所拿前一张票据提现,我不亏惨了?」

柜台妹子白了一眼:
「你当我们傻啊,你俩一起来提现,钱当然马上就打给你们;但是如果只有张三来,我会先把你的钱打了,他的钱扣一个小时。你收到短信发现到账只有2000,就拿最新的那张有效票据给我,如果这张比张三的编号大,我就认定张三作恶,剩下的8000都打给你,张三净身出场」

这下没问题了,于是俩人愉快地交钱。

以上就是肉丝冒菜(RSMC)的基本原理,实现了任意两人链下交易(票据记录金额划分),链上确认(领票据&提现),通过数字签名(按手印)和时间戳(票据编号),以及「先提现后到账」和「作恶罚没」等规则设计,让链下交易做到了安全、快速、低成本。

其中,两人「开设共同账户」对应闪电网络里的「开通道」,「提现」则对应「关通道」,这两个操作实际上是在比特币主网提交了两笔特殊的交易,因此会产生手续费和等待时间,也就是去柜台交100块。承载所有规则的「柜台妹子」其实就是代码写就的智能合约,公开、透明、可执行。

2、火腿腊肠(HTLC)

火腿腊肠(HTLC)又是做什么的?上面提到开/关通道是要花钱的,10个人两两交易需要开C(10,2) = 45条通道,100人是4450条,1000人就是44万多条…呈平方级增长,这是非常恐怖的。

实际上,张三也不可能认全其他999人,比如小区门口新开张的煎饼摊摊主王五,跟张三不认识,但跟李四是小学同学。话说这天早上张三来买煎饼:

张三:俩果子俩鸡蛋不放香菜,能比特币付吗?
王五:好嘞一共7块,能啊,主链不值当,闪电呗?扫这个码就行。
张三:咱俩没通道啊,不还得去主链开?是不是想着我通道钱都花了,就会多买几次煎饼摊低成本?你这小算盘打得不错啊,啧啧…
王五:哈哈哈,机智如您,其实还有个办法,你不是跟李四有通道吗?我跟他也有。你付7块付给他,让他转给我,这不就省了咱们开通道了嘛?
张三:对啊,这么好的点子我咋没…等下,李四最近出国了,操作不了啊!
王五:好吧,要不你问问其他跟你开了通道的「闪电好友」,要是恰好有人也是我好友,或者是我好友的好友,不就能帮忙转钱了?
张三:行是行…但是麻烦啊,要层层传话,还要经过很多人,中间要是谁卷款跑路了咋办?
王五:7块还「款」…,那…那要不这样吧,我给你发个链接,点开后有个密码框,输入密码后会提示对错,现在密码只有我知道。你把链接转发给所有好友,承诺「谁能找到正确的密码,我就给谁7块钱」,他们都没密码啊,就也转发链接给他们的好友并承诺。这样层层转发下去,直到比如赵六转给了我,我给他密码,他验证后垫付给我7块钱,再拿密码找他上家要钱,层层要账,最后就找到你头上啦。
张三:emmm…也就是说,有密码就等于有收款权,有承诺所以敢层层代付,最后传到我这里,我把钱付了就结了!要是中间有人违反承诺,拿了密码不付钱咋办?
王五:哈哈,别说中间了,如果没有保障机制,你都可能不付钱啊。智能合约在这里就提供了必要的保障。这条款公开,而且能确保按条款执行。做出承诺也就是签订智能合约,这时候你要把你的7块等值比特币锁进去的,要不别人怎么敢帮你代付?所有传递承诺的人也都会签合约、锁7块,大家才敢玩。最后,这么多人帮你省了通道钱,你不表示表示?所以放7块1进去吧,多的1毛就给他们当辛苦费了,也都没太费劲。

于是,张三花了1毛手续费,吃上了热腾腾的煎饼。王五看到自己的想法变成了现实,幸甚至哉,免费给张三的煎饼里夹了火腿和腊肠以咏志,后世遂将王五设计的流程命名为「火腿腊肠(HTLC)」。

先把口水擦一擦,总结一下。火腿腊肠(HTLC)实现了没有直接通道的两个节点,通过与网络中其他节点间已有的通道完成链下交易的流程,也就是让一串用肉丝冒菜(RSMC)连接起来的节点作为交易传递的通路。全过程由智能合约保障,节点间无需信任就能代付,速度快、成本低、安全性高。

我去,闪电网络太厉害了,秒天秒地秒空气,以后我就是闪电教教徒!
哎,独秀同学你先坐下,闪电网络的理想确实很丰满,但真要用起来就…


三、现实很骨感

就像老梗「真空中的球形鸡」一样,理论都有前提条件,闪电网络也一样。我们来列一下闪电网络在实用中几处最「骨感」的地方,大家体会一下:


骨感之一:跑不起。目前在手机上跑闪电网络节点是不可能的,因为还得捎带一个公链的「全节点」。这是什么概念?比特币全节点100G左右,每10分钟更新1M~2M;以太坊即便fast模式的全节点也要100G,每15秒更新2M左右。一部手机不仅要拿几百G来存全节点,还得保证全天候联网实时更新,一旦断更就得把漏掉的数据都同步回来,同步不完不给用…

骨感之二:传不到。「路由」在闪电网络里指「确定张三到王五交易传递路径」的过程。目前的路由用的是dijkstra算法(知县一直叫它乱码算法),时间复杂度可以简单看做O(n2)。说人话,100万个节点的网络路由一次需要1万亿(英文表示是1 Trillion,也就是常说的1T)次计算,而且由单点完成。2.0GHz的CPU跑1T的计算量需要500秒…这还不算,跑完时数据已经过期快10分钟了,天知道路径还通不通?路径上的节点掉线了/关通道了/通道干涸了(后面会讲啥叫干涸)…咋办?现在的设计是——凉办,用最新的数据重新跑500秒…

骨感之三:中心化。摊主王五非常适合做一个「大节点」——因为大家经常跟他交易,所以他的「闪电好友」最多,新人跟他开通道是最优的,因为通过他很容易就能跟另一个人转账,这样比较省钱。极端情况下,当所有人都只跟王五建立通道的时候,就会形成一个大节点带一圈小节点的结构,这就是「中心化」结构。这时候效率非常高,因为任意两人转账至多需要一次中转,但又最危险:如果王五手机丢了/没流量了/昏迷了…那么大家都无法转账;王五还可能作恶…单点故障导致全网瘫痪、单点权力过大容许作恶,这些都是「中心化风险」。

骨感之四:被掏空。张三经常找王五买煎饼,干脆开了通道,放了100块钱。半个月后张三通道里就剩2块了,咋办?再往里充100?错!闪电网络通道一旦建立就无法追加金额,只能花钱关通道再花钱开新的。王五也一样,想把通道里的钱提出来进货,必须挨个关掉再开;通道里有98,能不能只提70呢?对不起,不支持,必须全提。通道:感觉总是被掏空…

这个问题出在资金流向上。理论上是资金有来有往的,通道很长时间都不用关,就像张三李四打牌各有输赢,打100局通道两边都还有钱;但实际应用里,高频场景是消费支付,资金总是从消费者流向商户的,付钱的一端就容易被「掏空」——虽然通道大小还是100,但是张三已经无法支付超过2块的金额了。那这个通道还能用吗?理论上能,王五可以向张三付钱啊,但这种情况非常少,所以事实上失去了使用价值,这就是「通道干涸」。这使得闪电网络通道经常是一次性的,很不经济。

还有…

大人,别说了,我刚刚建立起的闪电网络信仰已经闪电般崩塌了…你在这里不要动,我去买几个橘子压压惊…

呔,当本官不上B站?不过陈同学你不要灰心,闪电网络才刚刚起步,有问题是正常的,需要大家一起想办法来解决不是?通道不能追加金额,我们想办法让它能啊;通道没法部分提现,我们想办法让它有啊;什么轻节点、轻钱包、分布式快速路由、中心化抑制策略…有啥问题就解决啥问题才能不断进步不是?

你说的这些真的都能实现!?
你还是先坐下…当然能,而且马上就能踏出第一个脚印了!

四、协议层崛起

让我们重新审视一下闪电网络在区块链领域所处的位置。
首先,闪电网络没有区块链结构;
其次,闪电网络不依赖某个公链,不是Dapp。只要能实现BOLT协议,无论比特币、以太坊还是莱特币(LTC),都可以用上闪电网络;
第三,闪电网络支持代币原子互换(Atomic Swap),也就是「跨链(cross-chain)」操作,比如BTC和LTC就成功进行了原子互换。

不是链,也不是Dapp,纯粹依靠规则组成的协议(Protocol)完成链下(off-chain)交易、跨链(cross-chain)互换等操作,促进价值传递(Exchange of Value),欢迎来到协议层。

在主流公链齐(xiang)头(ai)并(xiang)进(sha),各路「神」链雨后春笋的时候,人们开始关注链外的世界。懂的人心知肚明,区块链这种重量级、专用型技术架构,适用场景非常有限,怎么可能像「互联网+」一样,随便一个行业都能「区块链+」?这个行业的数据能可信地记录到链上?绝大多数目前做不到。

公链技术需要完善的地方还很多,比如拥堵问题,很多人寄希望于优化主链效率,但在区块链这种全部节点×全量存储的架构下,安全、效率、可用、一致这些指标不可能同时满足。比特币变成10M区块、10秒出块不就不堵了?确实,但这也导致对网络、存储的要求提高,能hold住的节点大幅减少,「去中心化」名存实亡,攻击也变得更加容易,影响了安全性——这是比特币最重要的特性。大红大紫的「次世代」公链EOS采用的DPOS共识机制,本质上也是牺牲了去中心化程度来提升处理速度,只能说各取所需。

协议层则是换个角度处理问题:把主链不适合做的事情放到链下,用技术+博弈设计来满足特定场景的需求。

还拿拥堵问题来说,金额大、手续费高的「土豪交易」是感受不到拥堵的,增量迅速的小微支付才是拥堵的制造者和受害者。买个煎饼7块,手续费10块,肯定不行;手续费1毛,第二天到账,那也不行啊!这种「既要矿工跑,又要矿工不吃草」的需求肯定无法满足,它们挪到链下才是治本之道,这也是协议层解决问题的方向。

区块链能给人类生产关系带来巨大的变革,比特币作为完全自组织的系统成功运行了9年,承载了几千亿美金的价值,足以给我们坚持下去的信心。这个过程中,协议层必将会发挥重要的作用,希望更多人能够关注、加入协议层的建设,一起打造更加高效稳定的区块链世界。

作者介绍:知县,北大计算机本硕,LITEX Lab 核心成员。LITEX Lab 将于近期发布对BOLT协议的重要改进,并将持续输出多个协议层贡献,包括分布式快速路由、轻节点、生态型网络结构,以及DST轻量框架等。相关信息可以关注官网  litex.io  以及微信公众号LITEX_OFFICIAL。


拓展阅读:闪电网络会毁了比特币,骚年你信不?


——End——

『声明:文章为作者知县 独立之观点,不代表白话区块链立场,亦不构成任何投资意见或建议。』


公众号后台回复 关键词 查看资料:

回复  直达“区块链从0到1入门必读”

回复 1  直达“白话区块链历史精华”

回复 EOS  立即查看“EOS超级节点候选者”专题报道

喜欢请给我们点赞哦,谢谢 

(●—●)

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存