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

  (要看懂这篇文章,读者需掌握BTC基本原理,包括转账原理和多签地址、地址锁定时间、隔离见证)

  (感谢闪电网络很难懂?你需要看看这篇文章 | 硬核科普这个教程提供的图片)

  比特币的价值传输相当安全,但是要和其他体系对接也要考虑一些问题,比如要如何保证交易效率(不可能每10分钟交割一次,太慢了),如何指定对单方违约的惩罚规则。

  光靠主链还是不够。如果需要在双方之间达成需要多次交割的交易(像Alice是数据提供商,Bob是用户,Bob需要购买Alice的文件版权,又不想一次性付1BTC给Alice,就达成协议:Alice给Bob传输1M文件,Bob就给Alice0.001BTC),就需要在双方之间建立微支付通道。这条通道只有开启和关闭时,才会在主链写入交易,其他时间只要交易双方拿着合理的账本即可。

  1.打开通道(指双方开始交易),为了防止单方违约,Alice让Bob把1BTC锁在Alice和Bob一起锁的保险箱里(多签地址),下图左边俩就是Alice和Bob的钱包地址,右边就是锁着双方共同财产的多签地址;

  

  同时还要保证如果交易中断,这个多签地址的BTC可以取出;但是如果单方面断开通道,对方不同意的情况下要惩罚。

  这里就需要把打开这个多签的钥匙给Alice和Bob,但是不同人拿到的钥匙能打开的东西不同:从自己那一侧打开,对方的财产要比自己先拿到。

  预先锻造特制钥匙:对方锻造了另一把锁,然后给自己,打开之后,对方立马就拿到币,自己要晚一些拿币。反之亦然。

  (为什么不是其他惩罚,比如手续费翻倍,或者锁定地址什么的,一是这些惩罚太重了,又不是要占用财产;二是某些情形下,延时退款可以为违约惩罚争取时间)

  

  因此需要预先生成交易:

  1号交易:使用Alice2&Bob秘钥加密:在区块高度达到本块高度+1000时,把这笔交易打包出去,将本地址的4个币打到Alice

  2号交易:使用Bob秘钥加密:立刻将本地址的6个币打到Bob

  3号交易:使用Alice&Bob2秘钥加密:在区块高度达到本块高度+1000时,把这笔交易打包出去,将本地址的6个币打到Bob

  4号交易:使用Alice秘钥加密:立刻将本地址的4个币打到Alice

  

  Bob把1号和2号签名好了给Alice,Alice把3号和4号签名好了给Bob。

  把这5条交易(转到多签地址和双方的断开通道合约)生成之后,再把多签地址的交易提交上链,以防止多签地址的币被永久锁定。

  双方都想关闭怎么办?用双方的钥匙直接签名,退回协定余额。

  

  1号和3号交易,就是学名为Revocable Sequence Maturity Contract (RSMC) 可撤销序列成熟合约的交易,其实这种交易机理也很简单。一个1/2多签地址,有俩公钥,只要能提供匹配的1个私钥就能打开,但是两条分支是不同的:在1000个块之后解锁,自己能取得币;或者由对方持有私钥解锁。

  这种交易己方一般不提供自己的钥匙,而是每次生成时另打一把,理由会在第2步说明。

  2.修改双方余额状态

  和1操作一样,只不过1-4号交易要打给不同地址的币量不同。

  这里就有一个问题,发送方有动力打包前一次签名的2条交易,使前一次余额变化作废。

  如何保证Bob不敢打包历史交易?这里需要让Alice能对Bob广播历史交易的行为作出惩罚。

  

  很容易想到,如果Bob在生成转出交易之前,先把上一条交易的钥匙Bob2给Alice,Alice就可以在Bob把历史交易发出去之后,在另一条分支(上图分支的上选项)执行前,用Bob2和自己的钥匙解锁多签地址(上图分支的下选项),把币打到Alice地址,Bob一聪都拿不到。这也是第1步说的要另打钥匙的原因。如果自己的私钥泄露,财产安全没有保障。

  在下一条交易签名之前,一定要拿到对方在上一条交易的钥匙,保证对方的作恶行为受到牵制。

  当然历史记录不广播的话,Alice拿的Bob2私钥没用,因为对应的多签地址没有币。所以每次生成新交易,也是必须另打一把钥匙,防止我方想广播最新交易时,被对方用旧钥匙开锁。

原文地址:https://www.cnblogs.com/dgutfly/p/10778378.html

时间: 2024-10-06 11:16:24

从技术人视角看闪电网络之微支付通道的相关文章

吴忌寒江卓尔批“闪电网络”背后,是链圈和矿圈的的利益之争

昨天,有媒体报道比特币核心开发者之一Peter Todd发推文批评"闪电网络",指出闪电网络在测试网络上运行时,出现大量记忆体区段错误(segfault,也称"存取权限冲突"):他认为闪电网络使用C编程语言不是个"好主意".他预测闪电协议在当前的版本中将很容易受到DoS攻击,无论是在P2P层面还是在区块链层面.在此之前,闪电网络是Peter Todd主导推广的(基于Thaddeus Dryja和Joseph Poon的授权的比特币交易加速解决方案

技术人攻略访谈:开放制造的机器之心

本文首发于雷锋网,经作者本人推荐分享至InfoQ中文站.<技术人攻略访谈>系列将在InfoQ上开辟专栏,我们会定期挑选好的访谈在这里分享. <<<-------------  <_< 向左看 罗未@WRTnode,豌豆机器小组(WRTnode machine team)发起人.开源硬件领域的万千开发板中,WRTnode是一支新秀,这个体积娇小的板子跑着最新的Linux内核,天生强大的网络交互能力,加上功耗低.信价比高.计算能力强等一系列优势,在公开发售前,就被创客

一个技术人的知识管理方法论

说实话,我讨厌这样一个土鳖的标题,希望内容不让你失望. 本文最早源于一系列关于解决问题方法论的思考,从解决问题的一般原则到探索如何让解决问题依赖知识积累和思维工具而不是偶发灵感.这样关注点逐渐从解决问题演变为个人知识体系的构建和知识的管理. 2009年 解决问题:心态 原则 方法 2012年 [Think] 解决问题 Ⅱ 2012年 实用主义的思考与学习 读书笔记 知识管理方法论解决的是效率和效果的问题,其实没有方法论的时候,足够的专注和努力也是可以的,许三多就是这方面的典型代表,他几乎没有什么

CSDN日报20170506 ——《技术人的未来在哪里?》

[程序人生] 技术人的未来在哪里? 作者:stormzhang 首先,我们得先问这么一个问题,单纯的做技术,能不能做一辈子? 点击阅读全文 [大数据]Hadoop 基于 protobuf 的 RPC 的服务器端实现原理 作者:小昌昌 Hadoop RPC 基于即远程过程调用,远程过程调用主要包括两个部分,网络协议和数据格式.Hadoop 根据数据格式,有三种不同的 RPC 实现. 点击阅读全文 [Web 前端]有了它们就能更好的理解 webpack 了 作者:liangklfang 有了它们就能

从数学的视角看社交网络

社交网络是有趣而又令人迷惑的,总希望希望从社交网络本身找到一些对移动互联网产品有启发的东西,而自己的社交网络有限,只得求助于专家们的著作了,这点文字是<社交网络分析-方法与实践>一书(地铁阅读时光)的笔记. 社交网络分析(SNA)是探索关系背后的科学与技术,从数学的角度看社交网络,用图论的方法探查社交网络.在技术上,通过python 以及相关包文件的支持,来完成可计算的社交网络(http://www.github.com/maksim2042/SNABook). 什么是关系呢?在人际关系中,除

李嘉璇:技术人如何深入人工智能

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "Helvetica Neue"; background-color: #ffffff } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px "Helvetica Neue"; color: #8c8c8c; background-color: #ffffff } p.p3 { margin: 0.0px

(转)技术人,不要总在很初级的层面上谈管理

无意间瞄到<[畅言]管理是权力的游戏吗?>,引起了我一些“新仇旧恨”,就也来吐槽一把.但吐槽的点倒不是权力不权力的,这是一点意思也没有的问题,在大多数人这个层次上(包括大多管理者)谈权力,形象来讲就和一般人老想象皇帝每天吃猪肉炖粉条一样,差太远,扯下去也没意思. 我想说的是技术人对管理的认知. 遇到问题谈问题 层次性很差 最常见的谈管理场景是一个人从技术转到管理岗位,接下来实践了几个项目,有成功的也有失败的,总结了经验后,就开始分享管理的成功经验.我偶尔翻到很多关于管理的文字都给我这么一种感觉

2017技术人成长交流会

_ p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px "Helvetica Neue"; color: #3e3e3e; min-height: 18.0px } span.s1 { } 2017 技术人成长交流会 2017年8月6日,趣直播首次线下活动"2017技术人成长交流会"圆满落幕.本次交流会有幸邀请到小猿搜题产品技术负责人唐巧.易宝支付产品中心首席架构师李艳鹏.简书知名技术作者张星宇.<Tens

技术人的小目标:10000小时理论落地,你就是大牛

技术人的小目标 首富王健林在采访时不经意的一句话“先定一个能达到的小目标,比方说我先挣它一个亿”瞬间刷爆了朋友圈,朋友们都在充分发挥调侃和自黑的潜力,各种段子都在说自己要先定一个能达到的小目标,比如说我先挣10 billion的津巴布韦元 :) 抛开首富的小目标对于我们普通老百姓来说过于宏大这点外,其实这句话也是挺有道理的,简单来说就是要循序渐进,不要期望一口吃成一个大胖子.这个道理其实平时大家也都懂,但在这个浮躁的社会,要真正理解并采取行动,并不那么简单,比如说“技术人员如何成为大牛”这个话题