闪电网络的RSMC协议技术原理

“if all tree falls in the forest and no one is around to hear it,does it make a sound”--George Berkely

就像无人听闻的陨落无足轻重一样,日常重复的交易也不必人尽皆知。

闪电网络是由微支付通道技术发展而来的,通过将微支付通道的单向支付通道扩展为双向支付通道,并通过RSMC协议解决了双向通道中历史合约作废问题,通过HTLC协议解决了跨节点交易的问题,最终形成了一张比特币链下的不依赖可信第三方和可信交易对手的网络

交易的双方利用双签名账户构建支付通道,需要有双方的签名才能广播并让这笔交易生效。付款方在收款方消失的情况下任然能取回余额,保证付款方的利益。

大狗是一位厨师,他做的菜特别好吃,我每天中午都要去大狗那吃他烧的菜,但是我觉得太麻烦了,每天去吃都要带钱现场结算,于是我和大狗起共同建了一个双签名银行账号。同时构建了两个合同,其中一个叫fund contract。同时为了防止大狗不愿意签名而一直占用我的钱,我和大狗还约定好refund contract,即在一个指定的时间之后,这个账户的余额肯定会被清算一次。

我和大狗的约定我往账号中存100块钱,可以画成这个样子:

接着我去消费,大狗卖的饭每份15元,我先消费了两次,我每次消费都先自己起草一个合同,然后自己签名,给大狗看,他同意后收下这个合同,然后给我饭吃。可以将这个过程画成这个样子。

我前两次的消费都是正常的起草一个合同给大狗,第三次吃饭前,我还是构造一个合同,我乘大狗没注意,使坏将合同修改为我分100他没钱,给大狗看。我现在是个坏人,想吃饭但是不给钱,但是我无法发布这个tx3,因为大狗还没签名呢。大狗现在只需要广播上面的tx2就可以拿到属于他自己的钱。这样大狗拿了30,我拿了60。

大狗在知道我是坏人后说:滚!说完广播了tx2这个交易并关闭了我和他之间的通道,我从此以后再也没机会去大狗家吃饭了。同时上面的refund contranct也关闭了,不再起作用。

那么如果在这个单向的通道中进行双向交易会出现什么问题呢?

有一天大狗起草了一个合同给我,说大狗分90,我分10块钱,即使大狗签名了我也不能信,因为他手里有很多我和他分账的合同,这份合同主动权完全不在我。

更进一步的RSMC

为了给交易双方提供双向的以及更长期的支付通道,闪电网络在微支付通道上设计了RSMC协议。

RSMC中主要涉及了5种交易:

存款(fund):建立通道之初通过“存款”交易将双方的资金存入双签名钱包,将存款交易广播到比特币网络就意味着双方建立了支付通道。但是在广播钱需要先签署一份“提交(commit)”交易,保证对手方消失的情况下仍然能取回双签名钱包中的资金

提交(commit):支付通道建立后,交易双方在通道内进行资金往来时通过“提交”交易来实现。该交易的特征是一式两份,每一方都会签署好交易信息递交给对手方。参与者如果想终止支付通道可以将对方署过名的合约签字并广播到区块链,进行资金分配并关闭支付通道。

分配(delivery):“分配”交易是具体执行资金派送的交易,该交易执行完成后资金将抵达目标账户。通常指的是不可撤销的分配。

可撤销的分配(revocable delivery):同样是资金派送的交易,但该交易的执行可能因为其他交易的执行而被撤回,在RSMC中主要会因为“违约补偿”交易的执行而被撤回。

违约补偿(breach remedy):RSMC中核心的防抵赖机制,当对手方企图通过发布历史交易而抵赖后续交易是,可以通过发布“违约补偿”交易罚没对手方的所有资金。

上次我去大狗家吃饭企图骗大狗的行径被大狗发现后,被大狗拉黑了,我再也不能去大狗家吃饭了,于是我又换了家,二狗家。但是因为我有不诚信的记录,二狗决定换种方式和我交易。

首先我出80,二狗出20,我们两签订“存款”交易,计划将钱存到一个双重签名的银行账户中,双重签名就是需要两个人的签名才能打开的账户。因为我存了80,二狗存了20,我存的多,我比较担心二狗突然跑路,或者说二狗就是不愿意签名,老是占用我的钱。因此,在广播这个存款交易前,我们俩要互相保证账户余额能各自拿回。这个保证通过下图这个方式进行。

提交交易与通道的建立。

上面的的协议有两个输出,一个是c1a,一个是c1b,这个c1a包含两个输出

第一个输出:将80块钱归还给我

第二个输出:剩余的20分两种情况处理,如果使用二狗的钥匙取款,则在等待100个区块后20块钱转给二狗,如果使用二狗R1(这个钥匙将在下文中介绍)和张瑞的钥匙共同取款,则20块钱立即归属给张瑞。因此,即使对手方张瑞消失,二狗也可以通过广播C1a,在等待100个区块后将自己的资金取回。

通过C1a和C1b交易的签订,双方建立了打款的信任基础,此时存款交易广播到区块链网络,我和二狗之间的支付通道就建立了。

支付通道内的交易。

在支付通道建立之后,我和二狗的交易就可以在通道内进行,不必广播到区块链上。每笔交易只需通过签订“提交(commit)”交易并传递给对方即可,在交易双方均在线的情况下可以实时完成,对比于在区块链上的十分钟的等待是一个质的提升。

现在我和二狗之间要进行一轮新的交易。通过互换签字后的“提交(commit)”交易C2a和C2b,我向二狗支付15元。注意,在我和二狗进行互换合约的时候,也向对方提供了上一轮交易的撤回密钥二狗R1和张瑞R1,用于向对方声明上一轮持有的“提交(commit)”交易C1a和C1b作废,资金分配以state2的“提交(commit)”交易C2a和C2b为准。

这样,我和二狗之间的交易可以永远进行下去,直到有一方想关闭这个通道。

支付通道的关闭

当我或者二狗认为我们两的资金交易结束或者想要取回双签名钱包中的资金时,可以将最新的“提交(commit)”交易在区块链上广播进行资金分配。

如下图所示,以二狗为例,他可以将C2a广播,C2a中数据的脚本将会执行触发D2a“分配”交易。分配时,我会立马取回65块钱,但是二狗需要等待100个区块的时间才能取回35块钱。这是RSMC对率先提出结束交易以防的“惩罚”

“分配”交易结束后,我和二狗关闭了交易通道并在比特币网络登记了自己的最终资金状态。

RSMC中抵赖和违约补偿

我们现在其实能知道,在新的交易发生后,新交易之前的旧交易并没有在事实上作废。理论上,参与者可以通过广播历史交易来抵赖后续的交易,但是RSMC使用惩罚机制阻止了这种情况的发生。

如下图所示,假设我企图通过发布state1的C1b来抵赖State2发生的付款交易并关闭支付通道,D1b会被触发执行,二狗在state1中的20块钱将立即被分配到二狗的账户中。剩下的80块钱通过RD1b“可撤回分配”交易,在C1b发布后100个区块分配到张瑞的账户中。但是这100个区块产生是要很长的时间,如果二狗在此期间发现了我的抵赖行为,可以拿着我的R1撤回要是广播BR1b“违约补偿”交易,将双签名中剩余的80块钱全部拿走,同时RD1b交易失效。这样二狗即拿回了自己的资金,也用过罚没钱包中所有的资金的方式惩罚了抵赖者。由此消除了支付通道内交易的对手的风险。

文章主要参考了货币研究院的闪电网络白皮书,写的非常好,大家如果有感兴趣的可以在百度网盘中下载,地址为:链接:https://pan.baidu.com/s/1WlU-mgCUZxyNcSbo0dJzJA 提取码:gi03

闪电网络RSMC协议技术原理----从微支付通道到RSMC(序列到期可撤销合约)相关推荐

  1. 微支付通道与闪电网络

    参考链接: 闪电网络学习资源目录 一.微支付通道 微支付通道举例与理解 "如果森林里的一棵树倒了,而周围没有人听到,它会发出声音吗?" 应用场景: ​ 大量的小额交易,因为手续费的 ...

  2. 从技术人视角看闪电网络之微支付通道

    (要看懂这篇文章,读者需掌握BTC基本原理,包括转账原理和多签地址.地址锁定时间.隔离见证) (感谢闪电网络很难懂?你需要看看这篇文章 | 硬核科普这个教程提供的图片) 比特币的价值传输相当安全,但是 ...

  3. 信安教程第二版-第11章网络物理隔离技术原理与应用

    第11章 网络物理隔离技术原理与应用 11.1 网络物理隔离概述 216 11.1.1 网络物理隔离概念 216 11.1.2 网络物理隔离安全风险 216 11.2 网络物理隔离系统与类型 217 ...

  4. 第11章 网络物理隔离技术原理与应用

    第11章 网络物理隔离技术原理与应用 11.1 网络物理隔离概述 11.1.1 网络物理隔离概述 11.1.2 网络物理隔离安全风险 网络非法外链 U盘摆渡攻击 网络物理隔离安全隐患 针对物理隔离的攻 ...

  5. 【第11章】网络物理隔离技术原理与应用 (信息安全工程师 -- 软考笔记)

    第11章 网络物理隔离技术原理与应用 11.1 网络物理隔离概述 11.1.1 网络物理隔离概念 既能满足内外网信息及数据交换需求,又能防止网络安全事件出现的安全技术称为"物理隔离技术&qu ...

  6. ndi协议_NDI是什么协议,NDI传输协议技术原理方法

    NDI是什么协议,NDI传输协议技术原理方法 NDI是什么协议 NDI就是一种接口传输协议. NDI就是通过IP网络进行超低延时.无损传输.交互控制的标准协议: NDI协议最大的不同是:NDI视频传输 ...

  7. 计算机网络rip工作原理,12. 小型网络 RIP 协议工作原理

    Re:计算机网络 静态路由和动态路由协议 ====================== # IP路由-网络层实现的功能: 网络畅通的条件 静态路由 路由汇总 默认路由 Windows上的路由表和默认路 ...

  8. HCIP-IoT MQTT协议技术原理

    MQTT协议技术原理

  9. 闪电网络预备知识二:微支付通道

    微支付通道 首先在介绍微支付之前,说说我对于区块链世界的理解.我们可以这样认为:首先区块链世界是去中心化的,也就是说没有一个中心机构.在现实世界中,中心机构可以作为一种权威,比如银行,你转账通过银行, ...

最新文章

  1. 职业生涯中12个愚蠢想法
  2. excelutil java_JAVA实现Excel的读取--ExcelUtil工具类
  3. math标准库函数----python
  4. Android Service介绍
  5. 拖拽元素自定义html模板,JS实现的自定义网页拖动类
  6. spring中事务配置的3种方式
  7. 黑客内鬼窃取华尔街金融服务公司核心交易算法
  8. [css] 什么是FOUC?你是如何避免FOUC的?
  9. sql server查询历史进程_学习笔记 | SequoiaDB SQL查询语句执行过程
  10. C++类中成员变量的初始化总结
  11. Shell编程—企业生产案例
  12. 基于exosip的uas-uac的一个简单例子(转载)
  13. TCP/IP:SCTP报文格式
  14. 实验报告格计算机,计算机实验报告格式大全
  15. python程序画中国围棋棋盘
  16. 深入dwr2-commet模式
  17. cad连接不同线段的端点_CAD中怎么把几个线断连接成一个整体
  18. vue页面引用百度地图怎么让百度logo不显示
  19. 【TL学习笔记】1:领域自适应(Domain Adaptation)方法综述
  20. 自引用结构兼谈Malloc和Free函数

热门文章

  1. 学习方法的思考(考研版)
  2. java虚拟机指令dup的理解
  3. 学弟学妹们这道题不会Java类就白学了——二月天
  4. 当“老赖” 遇到大数据
  5. Python ^异或
  6. ZPPFM 支付平台资金管理:在支付宝开放平台创建应用查询支付宝商家账户余额
  7. python绘制n阶科赫曲线线段_骚操作:用Python来一场人工造雪
  8. Mysql从入门到入魔——7. 插入、更新和删除
  9. 公众号怎样设置花式菜单
  10. 振华石化采用霍尼韦尔技术实现轻烃综合利用