首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

微支付通道-闪电网络 II

本系列文章是新挖的坑:The Bitcoin Lighting Network的翻译和解读,欢迎入坑。

2 可以解决扩展性的微支付通道网络

“如果一棵树在森林里倒下,如果没有人听到,那它会发出声音吗?”

上述引语问及未被观察到的事件相关性 - 如果没有人听到树倒下,它是否发出声音就显得无足轻重。同样,在区块链中,如果只有两个参与者关心一笔日日重复的交易,则不需要所有比特币网络的其他节点了解该交易。相反,最好在区块链上只保存最少的信息。通过推迟向全世界公开每笔交易,在日后进行清算,比特币用户可以进行多笔交易,而不会扩增区块链,也不会在中心化交易对手方建立信任。通过将时间锁作为全球共识的组成部分,可以实现一个高效的去信任的体系。

类比生活,如果我去一家早餐店买了杯豆浆,我拿到豆浆,店主收到我给的钱,我和店家之间便达成共识并认可了这笔交易。我们确实没有必要告知全世界,让全世界来达成共识并认可这笔交易。

目前,小额支付和扩展是通过将交易转交给托管人实现的,因此人们必须信任三方托管,信任他们可以持有货币并并用其他方更新余额。信任第三方持有全部资金会产生交易对手风险和交易成本。

参考区块链资产交易所。

取而代之的是,使用微支付通道网络,比特币可以在现有的台式计算机上扩展到每天数十亿笔交易。我们可以通过在给定的微支付通道内发起多笔支付而分散地向另一方发送大量资金。这些通道不是比特币之上的独立的被信任网络。他们是真实的比特币交易。

这个提升大概是现有比特币网络的十万倍。

通过推迟单笔交易在区块链上的广播,合计双方总余额的净值,微支付通道创建了双方之间可以持续更新余额的通道。这使得双方的财务关系可以在没有交易对手风险的情况下无限期地推迟到以后。小额支付通道使用真实的比特币交易,只有选择推迟广播,双方才能保证在区块链上当前的余额;这不是一个被信任的覆盖网络 - 小额支付通道的交易是真实的比特币在链外的通信和交换。

2.1 微支付通道无需信任

就像树木倒在树林里是否发出声音这个古老的问题一样,如果各方都一致认为树是在下午 2:45 倒下的,那么树就确实是在下午 2:45 倒下。同样,如果双方都同意通道内的当前余额是 Alice 为 0.07 BTC 和 Bob 为 0.03 BTC,那么这就是他们的真正余额。但是,如果没有密码学,就会产生一个有趣的问题:如果对方不同意当前的资金余额(或者树倒下的时间),那就会是一种说法对应着另外一种说法。若没有加密签名,区块链就不会知道谁拥有什么。

如果通道中的余额是 Alice 为 0.05 BTC 和 Bob 为 0.05 BTC,并且交易后的余额是 Alice 为 0.07 BTC 和 Bob 为 0.03 BTC,则网络需要知道哪组余额是正确的。区块链交易系统通过将出块时间作为时间戳来解决该问题。因为这会给网络带来额外的成本,所以最好能创建一个系统 - 在这个系统中,若非绝对必要,否则就不主动使用这个时间戳系统。

一个区块链的总区块数是不断增加的,所以区块总数是个只增不减的数,时间也是只增加不减的,所以在区块链的世界里可以把区块总数(区块高度)当作时间计数。但是如果要在某个区块高度记录发生了某件事,则需要消耗交易费把信息写到链上,所以成本是很高的。

相反,双方都可以承诺签署交易,而不广播该笔交易。因此,如果 Alice 和 Bob 将资金投入 2-of-2 的多重签名地址(需要双方同意才能创建花费),他们可以同意当前的余额状态。 Alice 和 Bob 可以同意从 2-of-2 的交易中为自己创造一笔退款,每人 0.05 BTC。该退款不会在区块链上广播。任何一方都可以这样做,但他们可能会选择继续进行交易,因为他们知道,只要乐意他们总是可以赎回资金。通过推迟该笔交易的广播,他们可以选择在未来的日期更改此余额。

2-of-2 的多重签名地址是指需要双方的签名才能进行转账的地址。2-of-2 是指总签名数为 2 个,一笔交易得拿到 2 个签名后生效。对应地, 2-of-3 多重签名地址就是指总签名数为 3 个,一笔交易得拿到其中 2 个签名后就可以生效。

这段提出了微支付通道的基本模型。

A 和 B 有一个双重签名认证的地址,然后把资金存到这个地址;

任何一方都能单独地把这个地址上的属于自己资金转回;

如果是交易,则需要双方的签名达成共识。

为了更新余额,双方从 2-of-2 的多重签名地址中创建新的花费,比如 0.07 给 Alice,0.03 给 Bob。但是,如果没有适当的设计,就会出现时间戳问题而无法得知哪些花费是正确的:新花费或开始的退款。

相当于 Bob 在微支付通道中向 Alice 支付 0.02 BTC.

好在,对时间戳和日期的限制并不像在比特币区块链中对所有交易的全排序那样复杂。在微支付通道中,只需两种状态:当前正确余额和任何旧的已弃用的余额。只有一个正确的当前余额,可能会有许多旧的已弃用的余额。

确切地说,微支付通道里的多重签名地址得知道其余额该怎么分账。

因此,有可能在比特币中设计脚本使得所有旧交易都失效,只有新交易有效。这个失效是由比特币输出脚本和从属交易强力保证的。从属交易是指强制一方将所有资金交给通道另一方的交易。通过将所有资金作为惩罚交给另一方,所有旧的交易都因此失效。

目前可以暂时把比特币脚本看作是比特币网络的命令组合,细节在以后的文章中展开。

这个失效过程可以通过一个通道共识流程来实现,如果双方认可当前账本状态(并建立新的状态),则真实余额会得到更新。只有当有一方不认可时,余额才会反映在区块链上。从概念上讲,这个系统不是一个独立的覆盖网络;它更像是一种当前状态的推迟,因为执行仍在区块链本身发生(尽管推迟到未来的日期和交易)。

所以在微支付通道里,只有当双方无法达成共识的时候才会到链上去确认余额。

待答问题:微支付通道里发生的交易信息存放在什么地方?如果在链下,如何保证其不可篡改?如果在链上,具体实现细节是什么?

2.2 通道网络

这样,微支付通道只能在双方之间建立关系。要求每个人都与其他人建立通道并不能解决扩展性问题。比特币的扩展性可以通过使用大型的微支付通道网络来解决。

如果我们假设比特币区块链上有一个大型通道网络,并且所有比特币用户都通过在比特币区块链上至少开放一个通道来参与此网络,则可以在此网络内创建近乎无限量的交易量。如果在比特币区块链上进行过早地广播,那这些交易就是由不合作的通道双方产生的。

通过哈希锁和时间锁来妨碍比特币的交易输出,通道交易对手将无法彻底窃取资金,比特币可以在没有彻底对手盗窃的情况下进行交换。此外,通过交错超时,可以通过网络中的多个中间人发送资金,而没有中间资金窃取的风险。

上一小节主要讨论的是双发之间的微支付通道,这相当于点和点之间的连接。如果这样连接越来越多,那就会形成一个网络。后来者只要通过一个通道和网络里的一个地址建立连接,那它就可以连接到网络里的所有地址。这个可以参考互联网的形成。

待答问题:这个通道网络里的路由是如何实现的?

下篇文章见~

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180407G17FG200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券