比特币:理解闪电网络---构建比特币的双向支付通道

原文标题:《科普|理解闪电网络,Part-1:构建比特币的双向支付通道》,作者AARONVANWIRDUM

闪电网络可能是比特币区块链上最受期待的创新。这种支付方案最早由JosephPoon和TadgeDryja在一年多以前提出,号称能支持用户之间在链下发送无限次的交易,而且成本极低——还能借用比特币网络提供的安全性。

至少有三家公司——Poon和Dryja的Lightning、Blockstream和Blockchain正在开发这种技术的实现。但在技术人员的小圈子之外,很少有人理解“微支付的未来”如何能引爆比特币的潜能。

在本系列文章里,BitcoinMagazine?尝试列举闪电网络最基础的砖石,并展示这些东西如何能组合出闪电网络这种即将到来的协议。

本系列的第一篇文章将列举必要的模块并展示这些模块如何能组合起来创建“智能合约”;这个概念可以用来理解闪电网络的第一个前提:双向的支付通道。

模块#1:未确认的事务

比特币协议的核心是所谓的“事务”的概念;一般来说,一笔事务总是关联着另一笔前序事务,并且可以用在未来的事务中。每笔事务都包括?输入,指向?转出?比特币的地址;以及?输出,指向?收到?比特币的地址。此外,为了发送比特币,输入还必须满足一些条件,比如要提供数字签名来证明发送者具有输入地址的“所有权”。同时,输出也会确立这些比特币在日后使用时候的新条件,在?后序事务?发出的时候必须满足。

富达发布《理解比特币》报告:比特币仍处于早期增长阶段,依旧看涨:富达投资发布了一份名为《理解比特币》(Understanding bitcoin)的报告。在这份报告中,富达全球宏观经济主管Jurrien Timmer描述了比特币的增长潜力,并将其与其他资产进行了比较,Timmer认为,比特币的价格,应该比它的网络参与者的增长速度快得多。他指出,比特币的增长曲线似乎仍处于早期指数增长阶段,而且可能会持续数年,这表明比特币依旧看涨。他也承认:“比特币是一种合法的价值储存手段,比黄金更稀缺,而且需求可能呈指数级增长。”(Beincrypto)[2021/4/17 20:31:12]

闪电网络的一个关键特性是,它是由或多或少的常规比特币事务组成的。只是,这些事务一般不会在比特币网络里传播。相反,这些事务都是用户保存在节点本地的——只不过,它们随时可以放到比特币网络中传播。

--

模块#2:杜绝多重支付

闪电网络所需的第二个模块可能不需要太多解释,因为它可以说是比特币协议本身的存在理由:多重支付的防范措施。如果两笔事务依赖于同一个输出,那只有其中一笔才会得到整个网络的确认。

CJ子公司推出区块链食品管理解决方案:CJ旗下非上市子公司CJ Olive Networks在28日宣布将推出“ Factory One HACCP”解决方案,Factory One HACCP可自动监视、记录和管理食品制造过程中的关键管理流程(CCP),通过应用区块链技术来防止数据伪造和篡改,从而提高安全性和可靠性。(韩联社)[2020/4/28]

谨记:即使尚未确认的事务之间发生了冲突,最终也只有一笔会得到确认。

模块#3:多签名

闪电网络的第三个模块也很好理解:多签名地址。。)

顾名思义,多签名地址就是需要多个私钥来“解锁”、使用比特币的地址。多签名地址的条件可以设置得很多样。比如,可以要求在3把私钥中要有2把参与,才能转出比特币;或者是其它的数量要求。

闪电网络一般使用2-2的多签名要求。要从这样的地址中转出比特币需要提供跟这两把私钥相关的两个签名,少一个都不行。

模块#4:时间锁

第四个模块是时间锁。时间锁功能可以在一个输出中放置一个锁定条件,让这些比特币仅在未来某个时间之后才能花用。

声音 | 邢台市委常委戎阳:加深对区块链理解认识 做到学以致用、推动发展:11月29日,邢台举办全市主题教育形势政策报告会暨第四期“邢襄讲坛”,邀请清华x-lab区块链实验室主任夏立,就区块链技术及相关政策作专题辅导。市委常委戎阳在主持报告会时强调,各级各部门要认真学习、消化吸收报告内容,持续加深对区块链技术的理解认识,掌握区块链技术的发展现状、发展趋势和发展规律,做到学以致用、推动发展。[2019/12/2]

有两种类型的时间锁:1)绝对时间锁,叫做CheckLockTimeVerify;2)相对时间锁,CheckSequenceVerify。CLTV会锁定比特币直至未来某个具体的具体:一个具体时间和日期,或者一个具体的区块高度;而CSV只会使用相对时间。当一个CVS输出上链之后,就要等待一定数量的区块后,这笔输出才能花用。

模块#5:哈希值和秘密值

第五个,也是最后一个模块——密码学——也是比特币本身最基础的模块。但在闪电网络中,用法有所不同。

简而言之,一个“秘密值”是一个很长而且独一无二的数字串,是几乎不可能猜测出来的,一台电脑暴力运算无数次也猜不出来。而通过特殊的计算,这个秘密值又可以“打散”成一个不同的数,叫做“哈希值”。有趣之处正是这里:知道这个秘密值得人可以很容易地计算出其哈希值,但反之不成立,拿着哈希值你是反推不出那个秘密值的。

声音 | 加密货币分析师:理解比特币运作方式的人比美联储(fed)还多:加密货币分析师Rhythm今日发推表示,“我敢打,理解比特币网络运作方式的人比美联储(fed)还多。中央银行隐藏真相是复杂的,而比特币很容易显示出真相,这是因为它的设计。”[2019/10/8]

在比特币区块链上,这个机关又可以用在“锁定比特币”上。举个例子,你可以在一个输出中包含一个哈希值,要求后序的事务只有包含该哈希值对应的秘密值才能花费这笔输出。

第一个挑战:双向的支付通道

在闪电网络出现之前,就已经有“支付通道”的概念了。标准的支付通道是用于特定用途的,因此也很局限:它们都是单向的通道。Alice可以在链下向Bob发起多比支付,但Bob没法用同一个通道给Alice支付。

而闪电网络的一个关键特性就是,Poon和Dryja提出的免信任的双向支付通道。

开启通道

要建立一个双向的支付通道,参与的双方都必须首先对一笔开启通道事务达成共识。这笔开启事务决定了他们俩各要在这个通道中存入多少比特币。

声音 | 赵余:“彩虹表攻击”可以简单理解为“字典攻击”:EOS LaoMao 的赵余在《宁话区块链》之全球EOS节点答疑的节目中称 “前两天发生的’彩虹表攻击’,是由于有些开发者通过设计的自定义助记词功能不完善。既没有过滤空字符串,也没有强制用户设置足够长的助记词。导致黑客可以通过简单的穷举,就能拿到部分账户的私钥。EOS 彩虹表攻击始末:EOS 官方库 eosjs-ecc(https://github.com/EOSIO/eosjs-ecc) 提供了一个自定义助记词生成密钥的接口。有些开发者使用这个接口,做了一个用户可以自定义助记词的密钥生成工具。但是由于产品设计问题,具体问题是下面两个:1. 没有过滤空字符串;2. 没有强制要求用户自己填写的助记词的长度必须达到足够安全的长度(比如 12 个独立的单词作为助记词,就可以认为安全性很高了)。导致部分用户,使用了简单的字母或单词作为助记词生成了自己的私钥。比如 a, b, c, hello, world 等等。这就导致黑客可以轻而易举地“穷举”常见的单词,字母,以及单词组合,进而拿到用户私钥,最终转移用户资产。这个“穷举”的方法,一般也被称为“彩虹表”攻击。对于使用自定义助记词功能生成私钥的用户,建议自查助记词长度,确保助记词长度不少于 12 个单词。”[2018/7/17]

假设Alice想给Bob发送1btc。因为他们俩都预期以后会有频繁往来,他们决定开启一个双向的支付通道。

要开启这个通道,Alice和Bob每人都发送5btc到一个2-2的多签名地址里。这就是“通道开启事务”。这个地址里面的钱,只有Alice和Bob签名同一笔事务才能花用。

此外,Alice和Bot都各自创建一个秘密值,然后交换哈希值。

现在,Alice创建一笔通道开启事务的后序事务,且这是一笔“承诺事务”。在这笔承诺事务里,Alice把4btc发给她自己,而6btc发送给第二个多签名地址;这个多签名地址更有趣:Bob可以独自解锁这个地址,但是,要等1-00个区块之后,Bob才能花里面的钱;Alice也可以独自打开这个地址,前提是她?也?拥有Bob给她的哈希值所对应的秘密值。

Alice签名了她的承诺事务。但是她不会把这笔事务广播出去!相反,她只会把这笔事务发给Bob。

同时,Bob也做刚好对称的操作。他也创建一笔承诺事务,把6btc发给自己,4btc发给一个新的多签地址。Alice在等待1000个区块后就可以独自解锁这个地址,或者Bob可以拿Alice的秘密值来解锁这个地址。

Bob签名了这笔事务,然后发给了Alice。

交换完了这些承诺事务和哈希值之后,他们再共同签名并把那笔通道开启事务广播出去,使之能够上链。现在,一个双向的支付通道就开好了。

开启通道之后,Alice和Bob都可以签名和广播他们从地方那里得到的、部分有效的承诺事务。如果Alice广播了,则Bob会立即得到6btc。如果Bod广播了,则Alice会立即拿到4btc。但签名和广播事务的那个,必须等待1000个区块才能解锁那个后序的多签名地址,把剩余的比特币拿走。

不过,这就是支付通道的关键技巧:不去签名和广播他们得到的承诺交易。

更新通道

后来,Bob想给Alice发回1btc,他们想更新这个通道的状态,使之回到5:5的状态。要实现这一点,Alice和Bob需要做两件事。

首先,双方都要把上面所讲的流程再做一遍。这一次,Alice和Bob都把5btc分配给对方,都把5btc分配给那个多签名地址。这些后续的多签名地址的条件是类似的,只不过,他们都需要生成?新的?秘密值:Alice和Bob都要提供?新的?哈希值。他们都签名自己的新承诺事务,并发送给对方。

其次,Alice和Bob都把他们的?第一个?秘密值交给对方。

这时候,Alice和Bob都能签名和广播他们最新得到的这笔承诺事务。他们的对手会立即获得5btc,而广播这自己则必须等待1000个区块。就这样,通道的状态更新了。

但是,有什么能阻止Bob广播旧的承诺事务呢?那笔承诺事务会给他分配6btc,比5btc要多……

阻止Bob的,当然就是他的第一个秘密值,也就是他已经给了Alice的那个秘密值。

因为,这时候Bob已经无法随心所欲地签名和广播更老的那笔承诺事务了,因为Alice已经知道了Bob的第一个秘密值。如果Bob要签名和广播更老的承诺事务,他会立即把4btc发给Alice……且他自己要等1000个区块才能申领,但是,Alice已经知道他的秘密值了,所以她可以利用这段时间先发制人,直接把剩下的6btc也提走!

而且,因为Bob也有了Alice的秘密值,所以对Bob来说同样如此!要是Alice想签名和广播旧的承诺事务,Bob就可以偷走她放在通道里所有的btc了!

这就意味着Alice和Bob都要重组的激励不去耍小手段,只广播最近的状态。

好了,有了双向的支付通道之后,我们要把它拓展成一个支付网络。这就是我们第二篇的主题。

感谢RustyRussell和JosephPoon的专门反馈。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

地球链

LTCAEX:理财宝基本操作指南(APP端)

AEX安银理财宝是低风险、稳定收益型的加密数字货币资产投资理财平台,可以为用户提供多类型多币种的锁仓理财、活期理财,拥有业内独家的债权转让功能.

[0:0ms0-1:404ms