二维码

5.3 闪电网络的设计 - 数据结构 - 机器学习

1186 人阅读 | 时间:2021年01月15日 01:05
5.3 闪电网络的设计 - 数据结构 - 机器学习 #daohang ul li t,.reed .riqi,a.shangg,a.xiatt,a.shangg:hover,a.xiatt:hover,a.shang,a.xiat,a.shang:hover,a.xiat:hover,.reed-pinglun-anniu,span.now-page,#daohangs-around,#caidan-tubiao,#daohangs,#daohangs li,#btnPost{background-color:#D10B04;} .dinglanyou1 h3{border-bottom:3px solid #D10B04;} #dibuer{border-top:2px solid #D10B04;}.cebianlan .rongqi h3{border-bottom:1px solid #D10B04;} #edtSearch{border:1px solid #D10B04;} #daohang .zuo ul li{border-right:1px solid #;} #daohang ul li t a{border-top:1px solid #;border-right:1px solid #D10B04;} #daohang ul li t a:hover{border-right:1px solid #;} #daohang .you ul li a:hover,#daohang .zuo ul li a:hover,.reed-pinglun-anniu:hover{background-color:#;} a:hover,.reed h6 a:hover,#dibuer a:hover,.reed .riqiding,.cebianlan .rongqi li a:hover,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.shu a,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.huifuliuyan a:hover,.reed-biaoti h6 span{color:#D10B04;} .reed .kan a{color:#0A0AF5;}.reed .kan a:hover{color:#D10101;} @media screen and (max-width:1492px){a.shang,a.xiat{background:none;} a.xiat:hover,a.shang:hover{background-color:#f9f9f9;background-image:none;text-decoration:none;}} var _hmt = _hmt || [];(function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s);})(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?2d748c9763cfc72fb7d1ccab29f0770d"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?f6d451f3f1be23f3abf240c64c469c1b"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();

当前位置:首页 » 区块链精品文章 » 正文

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646201", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646162", container: s }); })();

5.3 闪电网络的设计

1256 人参与  2018年08月25日 17:15  分类 : 区块链精品文章  评论

闪电网络(Lightning Network)是一个点对点对等网络,完全去中心化的数字货币微支付系统。这个微支付系统的理念适用于比特币、以太币和莱特币这样的数字货币,针对以太 坊上的以太币,有一个叫雷电网络的微支付系统,原理类似。闪电网络的亮点是它完全基于买卖双方的独立双向支付通道,不需要任何形式的押金担保,也不需要任 何信任的第三方即可实现实时的海量交易。

闪电网络在实际应用中一般先开辟一个支付通道,并提交给一个微支付网络,这个微支付网络能通过多重签名的方式确保价值网络安全的单向流动。

最重要的一点是闪电网络实际通过微支付的通道,将交易剥离出比特币区块链来进行,而且剥离主链的交易次数是无限的,这从根本上解决了大量交易都放在比特币主链上进行,从而造成比特币性能严重降低的问题[1]。

闪电网络的本质其实就是智能合约的应用,具体来说是RSMC(Revocable Sequence Maturity Contract,序列到期可撤销合约)以及HTLC(Hashed Timelock Contract,哈希时间锁定合约),基于智能合约建立一系列相互连接的双向支付通道。从这个层面来说,闪电网络的应用并不仅限于比特币网络,它可以是 任意加密数字货币网络,只要这些网络能支持需要的智能合约即可,包括上述介绍的侧链。只要有需要,也可以建立面向侧链的闪电网络支付通道,我们看以下示意 图:

5.3 闪电网络的设计 - 数据结构 - 机器学习

如图所示,闪电网络的面向对象是不限制的,只要双方能建立起支付通道就没有问题,由于需要智能合约的支持,因此对于比 特币这种自定义脚本编程能力有限的系统,需要增加一些必要的操作指令,同时由于闪电网络在配合使用的时候,需要经常打开和关闭支付通道,这会加剧原本就拥 堵的比特币网络,因此如果比特币系统能够良好地实现隔离见证或扩容,那对于闪电网络的真正落地使用能起到很好的促进作用。大家在查阅一些资料的时候,会经 常看到闪电网络与隔离见证的字眼,需要注意的是,隔离见证并不是闪电网络实现的必要条件,只不过一定程度上可以简化闪电网络的设计。

我们现在解释一下RSMC的机制。“序列到期可撤销合约”,这个名词初看起来,很难明白是什么意思,我们来举个例 子,闪电网络是通过支付通道来进行收支业务的,在通道创建的初期会记录一个初始的资金分配方案,这个资金从哪来呢?比如Alice与Bob之间由于双方的 业务关系需要长期频繁转账,而且每次转账也都是小额,为了方便,他们打算平时先不进行实际的转账,而是先记个账,到一个时间后再来算个总账。于是他们共同 拿出一笔钱开设一个基金账户,假设Alice和Bob都拿出50,则初始的分配方案就是Alice为50,Bob也为50,这个通道的设立会记录在比特币 区块链上。随着业务的发展,分配开始发生变化了,Alice支付了10给Bob,此时最新的分配方案就变成了Alice是40而Bob是60,双方共同签 名作废了之前的分配方案,更新了最新的余额分配,不过这份新的分配方案并不会立即更新到比特币的区块链上,因为后续还有双方的日常业务发生,因此只是记录 在闪电网络区块链上,果然不久,Bob又支付了30给Alice,此时新的分配方案变成了Alice是70而Bob是30,依此类推,在一段时间内,双方 都只是在比特币的链下(闪电网络中)频繁地记录着每一次新的余额分配方案。这种方式其实跟我们平常在一家饭店订餐或者订购鲜花等都很类似,我们为了方便往 往也会先预交一部分基金,为了信用保障,可能会委托一个第三方(比如某个支付平台、预订平台等)托管这个基金,一段时间后,大家签字认可发生的交易,然后 一次性做一个真正的结算。

那么,如果到一个点上,Alice需要用钱了怎么办?她可以向比特币主链提交目前最新的分配方案要求结算,在一段 时间内如果Bob没有反对,则比特币区块链就会终止通道,并且按照合约规则自动转账分配。如果在这个时间内Bob反对并且提交了一个证明,表明Alice 作弊,使用了一个双方已经作废的分配方案,则Alice会受到惩罚,资金将会罚没给Bob。

再来看HTLC,也就是哈希时间锁定合约,这个其实是在RSMC的基础上更复杂了一层,RSMC的做法相对简单, 中间没有太多的逻辑,就是一个简单的余额分配,只要满足条件就没什么可说的,直接就是转账分配,而HTLC增加了更多的条件支付,比如Alice如果能在 2天内向Bob给出一个正确的口令R,则Bob就会支付0.2比特币到Alice,逾期则自动退还到Bob账户。其实就是玩法更多了,当然实现也就更复杂 了。

微支付通道允许交易(支付)双方反复无限次地更新交易过程,并且不将中间交易数据写到公有链上,而是将最后的结果上链,这样允许交易对手双方不需要建立信任关系,降低交易对手风险。中间的交易流程走的也还是真实的比特币,各种换手交易和中间结果不真正上链。

一般情况下,交易过程是指交易双方的余额表从交易前状态更新为交易后状态。最核心的问题就是双方对交易后状态的共 同确认。一旦有交易一方反悔或不认账,交易后双方款项的余额是处于不确认状态的。微支付通道通过建立一个基于时间序列的类似多签名智能合约的交易方式来解 决这个彼此不信任的问题:

1)Alice和Bob同意建立一笔交易,但是暂时不在链上公告广播;

2)双方把币打到一个地址上,并提供双重签名,同时一致同意交易前的余额状态并上链;

3)双方同时也建立一笔退款交易,各自拿回自己的币,同时这个退款交易也不上链,这样双方事后都可以修改余额状态;

4)当真正发生交易需要更新余额表的时候,双方都生成一个需要提交更新的余额状态表;

5)这样微支付通道里的双方交易余额表无论在谁手上,都只能有两种状态,维系旧的余额状态或承认新的余额状态;

6)任何一方反悔或者不承认新的交易状态,对手方可以提交证据证明,并通过罚没机制拿走双方共同签名的所有的币;

7)交易一方通过提走交易之前共同签名提供的币,来惩罚反悔或不承认的一方以确保新的交易余额状态得到认可;

8)双方都没有争议之后,在等待一段时间并获得网络认可之后的余额状态上链存证,交易完成。

下面让我们来看具体的交易例子和过程以充分理解闪电网络:Alice需要通过闪电网络给Bob和别的交易对手支付比特币资产。

步骤1:建立微支付交易通道(双向)

双方同意共同创建一个微支付通道(Micropayment Channel),并往里面放一部分订金,我们假设Alice打算给Bob支付5个比特币,而且Alice还想通过这个支付通道经常给Bob支付比特币。 这样双方协商创建一个彼此对等的单向微支付通道,从而构成一个双路微支付通道(就是说,Bob对比Alice做的事情,自己参照对应反向也做一个同样的动 作来建立另一个单向通道)。

为了建立这个通道,Alice和Bob分别往一个2/2双人签名的地址发送5个比特币,我们暂时叫这个账户“订金 交易”,未来所有的后续交易只能从这个“订金交易”里支付。两个人都必须共同签名,同时都生成一对自己掌握的针对这个“订金交易”地址的密码和私钥,各自 保留自己的密码,但是将自己的私钥交给对方,算是各签一半。这个时候的余额状态是:

·Address#1:0-Alice&Bob(5BTC);1-Bob(5BTC)

·Address#2:0-Alice(5BTC);1-Alice&Bob(5BTC)

Alice现在需要花钱,然后马上就在“订金交易”的基础上创建一笔交易,这个交易我们暂时叫“承诺交易”,在这 笔“承诺交易”中,Alice把4个比特币划给自己,另外6个比特币划给Bob,然后这个交易发到新的两人签名的地址#3。Alice发送“承诺交易”的 地址#3有点“诡异”,那就是Bob可以自己独自解锁拿走无论谁确认都是属于自己的6BTC,但是前提条件是必须等待当前交易所在区块链区块之后的第 1000个区块被开挖出来,因为这个区块被加上了一把“时间锁”。而对于Alice而言,她也可以独自打开地址#3的锁,条件是Bob必须将自己的地 址#3的密码和私钥都交给Alice才行。(由于这个时候Alice拿不到Bob的密码,所以无法动用地址#3的资金,哪怕是她共同签名的4BTC。)

Alice对“承诺交易”签名,但是她没有广播出去,而是将签名后的交易交给Bob。与此同时,Bob也在做同样的事情,在地址#4创建自己的“承诺交易”并签名交给Alice不做广播。这个时候的余额状态是:

·Address#3:0-Alice&Bob(4BTC);1-Bob(6BTC)

·Address#4:0-Alice(4BTC);1-Alice&Bob(6BTC)

在交换完所有的“承诺交易”以及各自的私钥之后,各自签名并将自己创建的“承诺交易”广播并确保交易被广播到区块 链上,至此双通道微支付通道正式打开。由于“承诺交易”带有时间锁,当正常提交的“承诺交易”经过自己提交地址之后的第1000个区块被开挖出来之后。交 易由闪电网络确认,最终#3的交易结果是:0-Alice(4BTC);1-Bob(6BTC)。#4的交易结果是:0-Alice(4BTC);1- Bob(6BTC)。

而这个时候任何一方都可以将对手私下交给自己已经“一半签名”的交易进行签名,并由自己广播出去,这样两个“承诺交易”可能发生的情况是:

·#3:如果Bob拿到后提供自己签名并广播出去,需要等1000个区块链才能开锁拿到6BTC;

·#4:如果Alice拿到后提供自己签名并广播出去,也需要等1000个区块链才能开锁拿到4BTC。

以上一切正常,然后我们考虑一种情况,就是当Bob想再支付Alice一个比特币的时候,双方都想在原来的微支付通道上更新交易状态,使得交易双方的状态达到5-5分成。然后双方做如下几步来达到:

1)双方都再次创建“承诺交易”,分别是#5和#6,将5BTC签名分配给自己,然后另外5BTC签名作为2-2多重签名的一部分加上时间锁。双方产生新的密码和私钥对,并保管好自己的密码,然后完成自己的一半签名并同私钥交给对方。

2)Alice和Bob都要求必须将第一个“承诺交易”中产生的原来私藏的密码交给对方。

在这个时候,双方都可以将彼此签了一半的新“承诺交易”签名并提交确认。任何签字广播一方的对手都可以立即得到属于自己的那一半比特币。而签字广播人则等1000个区块挖出后得到自己的一半,这样,微支付通道的新的状态得到更新。

但是,我们不能防止有人会作恶,那就是:例如Bob是否可以考虑侥幸想拿自己可控的#4的交易状态再签名广播出去,这样他拿到的将是最初的“承诺交易”#4里的6BTC,以此获利。

其实,现实情况是Bob并不能一次获利,因为他的第一个状态签名密码这个时候已经交到Alice手里。这时如果 Bob把#4拿出来签名再合法广播出去,Alice首先马上获得应得的4BTC,Bob自己则需要等1000个区块链后才能申请得到6BTC。可是Bob 如果想这样欺诈是有风险和问题的,那就是这个时候Alice已经拿到Bob自己的密码与私钥,任何时候都可以开锁获得本来应该属于Bob的6BTC,这样 Bob就会偷鸡不成蚀把米。同样,Bob也拥有Alice的第一个密码和签名,Alice如果想造假抛出之前的交易,Bob都可以一次取走通道里的所有比 特币。

这样,闪电网络通过惩罚不诚实的企图造假方来保证大家彼此不会偷奸耍滑。所有的人都会在最新的当前交易状态合法签名并合法流转广播。

步骤2:建立微支付交易通道(网络)

我们前面讲解了如何建立微支付的双向交易通道实现两个人之间的支付,现在如果Alice想要向第三个人Carol支付比特币该怎么办呢?

1)Alice可以跟Bob一样建立与Carol之间的双向交易通道向Coral支付(当然建立通道需要成本);

2)如果Bob刚好已经跟Carol建立了双向交易支付通道,则Alice可以通过已经建立的自己跟Bob的交易通道给Carol支付,走Alice→Bob→Carol通道。

对Alice而言,她的疑虑是怕Bob没把钱给Carol,同时也怕Carol否认她收到Bob给的钱。

消除Alice顾虑的办法是:

1)确认Bob将钱给Carol后,才将钱给Bob,然后知会Carol,Bob会转交钱给她。

2)Alice要求Carol随机生成一个密码,将密码的哈希函数结果交给Alice,并告知Carol,只有 Bob将钱给她后,才能将这个密码给Bob。同时,Alice告诉Bob,只有Bob钱给到Carol之后,才能拿到Carol才知道的密码,之后交给 Alice确认后,Alice才会给Bob钱。因为Bob用比特币换到了只有Carol才知道的密码。

而对于Bob而言,他的担忧是:

1)他需要相信他把钱给Carol之后能拿到密码;

2)他还需要相信一旦他拿到密码Alice真会给他钱。

哈希时间锁合约(Hashed Time-Locked Contract,HTLC)可以解除Bob的担忧:Alice建立一个1BTC的多重签名合约。Case1对于Bob,若合约中有他的签名以及正确的从 Carol处得到的密码,即可解锁。Case2对于Alice,使用CLTV-Timelock时间锁,确保自己的签名在一个约定的合同期有效,当Bob 拿到密码就履行合约将钱给Bob,同时广播让公众都知道,如果合同逾期,Bob拿不到密码或提供不了自己的签名,Alice用自己签名即可解锁CLTV- Timelock拿回自己的钱1BTC。

让我们想象一个这样的网络,不单单是Alice跟Bob之间建立这样的哈希时间锁定合约,Bob-Carol之间也可以建立这样的HTLC合约,这样我们可以建立一个:Alice→Bob→Carol→……无数这样的节点构成了闪电网络[2]。

步骤3:完成微支付交易并关闭支付通道

至此,我们看到了闪电网络的巨大的能力,那就是前面我们所分析与描述的发生在闪电网络的交易,都不是必须要一笔对一笔地写到比特币区块链主链上,从而为比特币网络节省了很多消耗。

如果这个时候Alice与Bob想静悄悄地关闭彼此建立起来的支付通道,他们只要在主链上产生一笔交易,将交易通道开通直到交易结束,每个参与方拿到自己最后交易状态的份额,最后又回到主链上来。发生在通道里的所有交易隐私性就可以保护起来了。

我们熟悉的Hyperledger Fabric的通道(Channel)就是借鉴闪电网络的原理,并以此来作为保护交易对手的信息隐私。

其实当交易对手上方决定关闭微支付通道的时候回到比特币主链上,其实只需要告诉主链一个开通微支付通道合约交易和 一个关闭微支付通道合约交易。期间交易对手们无论交易过多少次,对主链来说都无关紧要。这样,为比特币提供了一种不在主链上做交易的机制和解决方案。可以 大大减轻比特币主链的性能瓶颈。

[1] The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments. https://lightning.network/lightning-networkpaper.pdf.

[2] http://lightning.network.

来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=86

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();
window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdPic":"","bdStyle":"0","bdSize":"16"},"share":{},"image":{"viewList":["qzone","tsina","tqq","renren","weixin"],"viewText":"分享到:","viewSize":"16"},"selectShare":{"bdContainerClass":null,"bdSelectMiniList":["qzone","tsina","tqq","renren","weixin"]}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];
区块链是什么  

微信号:qq444848023    QQ号:444848023

加入【我是码农】QQ群:864689844(加群验证:我是码农)

<< 上一篇 下一篇 >>
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646186", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646175", container: s }); })();
搜索

网站分类

标签列表

最近发表

    (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https'){ bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else{ bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();

全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试

var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1276413723'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D1276413723%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));本站资源大部分来自互联网,版权归原作者所有!

jQuery(document).ready(function($){ /* prepend menu icon */ $('#daohangs-around').prepend('
'); /* toggle nav */ $("#caidan-tubiao").on("click", function(){ $("#daohangs").slideToggle(); $(this).toggleClass("active"); }); });

©著作权归作者所有:来自ZhiKuGroup博客作者没文化的原创作品,如需转载,请注明出处,否则将追究法律责任 来源:ZhiKuGroup博客,欢迎分享。

评论专区
  • 昵 称必填
  • 邮 箱选填
  • 网 址选填
◎已有 0 人评论
搜索
作者介绍
30天热门
×
×
本站会员尊享VIP特权,现在就加入我们吧!登录注册×
»
会员登录
新用户注册
×
会员注册
已有账号登录
×