技术

通熟易懂的理解闪电网络

我们把比特币比喻成人民币,那比特币的区块链相当于全国唯一的一家银行。现在比特币区块链这家银行因为人手短缺(区块容量限制)每秒钟只能处理7笔交易,而每天有几万人在银行门口排队,你哪怕给别人转账一分钱都要在柜台操作,这家银行帮忙记录所有的转账操作。很多人就开始骂骂咧咧,我去超市买包小浣熊干脆面都要来你这排几个小时的队,疯了?比特币就是垃圾!

伟大的毛主席曾经教育过我们,要用发展的眼光看问题。

好了,现在事态发展了,闪电网络主网上线了。

闪电网络相当于支付宝。大家把一部分钱(比特币)存在支付宝(闪电网络)里,你可以给人扫码支付了,或者直接转账到别人的支付宝钱包里,商家也好,个人也好。

为了方便理解,举个栗子。假设这个世界上只有两个人在用支付宝,一个是可爱我,一个是我弟可恨。我们俩过年在家非常无聊,于是决定互相转账玩。我给他转一块钱,他给我转一块钱。如果是原来只有一家银行的模式,那我们俩都得排队好几个小时,前后一共转两笔,我们光排队就花了将近一天时间,还花了手续费。这一点都不好玩。如果有了支付宝(闪电网络),Hey Hey Hey,我们拼的就是手速,一顿操作,一天下来反反复复转了一万多笔钱。最后的结果可能就是:

可爱 金钱 -1

可恨 金钱 +1

最后,支付宝会替我们去银行排队了,它并没有列出我跟我弟之间当天的一万条转账记录。只是在柜台说了一句,“记一下,这俩二傻子就一块钱玩了一天,一个-1,一个+1”。

当然,真正的闪电网络模型要比这个复杂的多,也存在一些问题,我相信你们并没有兴趣了解。如果我写的东西能激发起你一点点学习的兴趣,我的目的就达到了。

是时候聊聊真正的技术了

如果你还有兴趣往下读,我再聊聊技术层面吧,当然,也是简化版的。

我们继续用银行和支付宝的模型去理解。银行(比特币区块链)可以用来大额转账,而支付宝(闪电网络)可以用于日常的小额支付。大家把钱(比特币)充值到支付宝(闪电网络)钱包里用于小额支付。这样的好处就是,大量降低了比特币区块链的负荷,也降低了链上转账手续费。银行的员工(比特币矿工)天生倾向于优先帮助愿意支付更多手续费的人插队,当链上交易变少(排队的人变少)的时候,自然大家倾向于支付更少手续费,闪电网络可以降低主链手续费这个逻辑在这里。

闪电网络得以实现要归功于多重签名技术(multi-sig)。多重签名的意思大概就是,如果要完成一笔交易,交易双方(或多方)都得在上面签名。比如我用支付宝给我弟可恨发个100块钱的红包,我点发送(签个名),他点收取(签个名)交易就算完成了。如果只交易一笔,那闪电网络的意义不大,不如直接在银行操作,交易多了才有价值,因为只要去银行(比特币区块链)记一笔最后我跟可恨俩人的余额就可以了。

那么问题来了,如果我给他发了100块的红包,他说要给我回50块的红包,他点发送(签名)以后,我手机可能没有放在身边,或者他把转50的记录删了立马把钱取出来放银行,那这50块我岂不是永远都收不到了。你很聪明,这里就涉及到闪电网络的反作弊机制了。

闪电网络的反作弊机制

闪电网络的反作弊机制很简单,但是很聪明。但是要把这个事情讲明白就得再说三个东西。

一个叫双向支付通道(Bi-Directional Payment Channel )

一个叫时间锁(TimeLock)

一个叫密码(Secret Value)

双向支付通道

双向支付通道可以简单理解为一式两份的转账记录合同模式。

每笔转账我都把我那份签完名给可恨,可恨也把他那份签完名给我。我们可以各自拿着各自手上的合同,签上自己的名字,就可以拿去银行(比特币区块链)上登记。当然,上面说了,我们不用每一份都拿去登记,再做完无数笔交易以后,把最新的那笔拿去登记就好了。

时间锁+密码

时间锁和密码都是转账合同里的条款。

时间锁,就是就是合同内某条款生效时间。

密码就是用于即时生效某条款。每一笔交易都会各自生成一个密码。

比如交易1:

可爱生成可爱密码1

可恨生成可恨密码1

发生第二笔交易时,就在互相交换合同的时候,把上一笔的密码1交给对方。并生成第二个密码:

可爱生成可爱密码2

可恨生成可恨密码2

我们再来看看上面那个合同,完成交易1以后就会变成下面这样。仔细看看这个图再往下读。

如果说,后来可恨给我转50块,想赖账,拿着我给他的上一份合同(我给他发100元红包的合同记录)去银行(比特币区块链)登记。

闪电网络合约巧妙的地方就在这里。可恨拿着上一笔合同去登记,第一部分中,可恨+100块会立刻生效。

第二部分中有两种可能(如上图),要么等24小时后(或者事先定好的一个时间)我会-100块。要么我发现他去银行登记了(毕竟比特币区块链是公开账本),因为我们进行第二笔交易的时候,他把可恨密码1给我了,说好了给我转50,竟然想赖账?!我这小暴脾气就上来了,立马输入他给我的可恨密码1,让“可恨-100块”马上生效。最后他的合同就会变成第一部分“可恨+100块”,第二部分“可恨-100块”,他就一分钱也得不到,因为合同里没有涉及到我的余额变动,我的钱就一分都不会少。

好了,我相信弄懂这些以后,你就有了理解更复杂的多对多闪电网络模型的基础了,感兴趣的可以自己上网再研究,我就不多写啦~

评论整理

接下来简单聊一聊我对闪电网络的一些看法,主要来自上一篇文章的评论区。

网友:“闪电网络未来的中枢必然是中心化的,太多小白吹闪电网络….其实闪电网络就是一群程序员用工程的方法想提高比特币的tps,然而最终去违背了比特币的初衷。我就说一点,完全去中心化,又安全,又能快速的p2p节点共识理论,现在学术界还没搞出来,工程界搞出来的必然是牺牲了安全性或者去中心化性。说白了,未来闪电网络的枢纽就是现在的银行或者交易所呗、只不过可以加上第三方监管而已,虽然看起来安全,还是中心化。”

我:节点的作用只是处理交易,并没有太多的权力。而且我觉得您对去中心化的理解跟我的不太一样。我说一说我的看法吧。您理解的去中心化是去中心化的一个极端情况,叫分布式(Distributed),没有一个中心节点,每个人都是一个独立的节点。我理解的去中心化就是,一个尺度问题。如果只有一个中心,叫极端中心化,两三个中心叫高度中心化,以此类推,完全没有中心,叫(distributed)。而从一个中心到分布式这个过程就是去中心化的过程,区别只是程度不同罢了。闪电有中枢点没有错,但当这个中枢足够多的时候,那就是一个高度去中心化的系统。只不过这个去中心化程度没有您想象得那么极端罢了。

网友:“我对闪电网络的理解是:中心枢纽负责帮助用户点对点建立交易通道,打开通道的时候会在主链上生成一个地址存放双方的btc,后续交易都是链下的财产额度分配而已,关闭通道的时候再在主链block上做结算。那这个中心枢纽不就是现在的交易所嘛,交易所内部的交易都是交易所掌控的,真正结算到btc主网的过程其实就是交易所的提币过程呗…我认同你的去中心化理论,但是前提是任何中心节点都要是没有权利或者可能作恶的,我还没去调研闪电网络的中枢如何来保证肯定不作恶,但是我相信和交易所大同小异,因为技术理论层面并没有突破。”

我:理论上存在一种打开了可以一直存在的通道,也是我认为闪电网络最终会发展成的样子。这个通道连接到某个“节点”(Node/Hub),通过这个节点可以连接更多的节点。因为每个节点都是互联的,所以连上一个节点相当于联通了整个网络。有点像我在国内用中国移动的网络,并不影响我给美国Verizon的用户发信息。闪电网络最终会成为第二层级的应用,而比特币主链是底层链。未来可能会出现一些类似支付宝这种量级的公司,但也只是作为网络中的一个节点,就目前我们日常的应用来说,你支付宝往微信打钱是不可能的,但是在闪电网络里就可以。对于作恶,从逻辑层面来说,你小了作恶收益不大,大了作恶也没啥意义。从技术层面来说,感兴趣的话可以去看看闪电网络的反作弊机制,上文有简述。

很多人觉得闪电网络并不像挖矿一样有手续费奖励,所以无法激励人们去开设节点,闪电网络最终会失败。我并不太认同这个观点,因为像支付宝微信支付这类应用,他们也没有直接收取用户手续费,但不妨碍它们做大。闪电网络上的节点也是一样的道理,当它掌握了足够大的流量的时候,变现的手段有很多。当然,流量变现也只是变现的一个手段,还有很多其他办法,空间还是很大的。

好了,今天就先写这么多。希望我的内容能够对你有一丢丢启发。

作者
邓可爱
Back to top button
Close
Close