闪电网络可能是部署在比特币之上的最受期待的技术创新。约一年前,约瑟夫·庞(Joseph Poon)和塔奇·德里亚(Tadge Dryja)首次提出了支付层,它承诺在不增加成本的情况下支持用户之间几乎无限数量的脱链交易,同时利用比特币提供的安全性。.
至少三家公司-Poon和Dryja’s 闪电, 区块流 和 区块链 –目前正在研究该技术的实现。但是,除了这个小技术前沿之外,几乎没有人完全了解“小额支付的未来”将如何提高比特币的功能.
在这个由三部分组成的系列文章中,《比特币杂志》展示了闪电网络的基本构建模块,并展示了它们如何组合在一起以实现即将到来的协议层.
该系列的第一部分建立了必要的构造块,并展示了如何将它们组合起来以创建“智能合约”,该合约可用于实现闪电网络的第一个要求:双向支付渠道.
(注意:对比特币有深入了解的任何人都可以跳过构建基块。)
构件1:未确认的交易
从本质上讲,比特币协议由交易组成,这些交易通常链接到先前的交易,并可能链接到将来的交易。每笔交易均包含输入(表示比特币发送至的地址)和输出(表示比特币发送至的地址)。此外,输入必须包含发送比特币的要求,例如证明输入地址“所有权”的签名。同时,输出确定了新要求,必须将其包含在后续交易的输入中.
作为其主要功能之一,闪电网络是由或多或少的常规比特币交易建立的。只是这些交易通常实际上并未通过比特币网络广播。取而代之的是,它们存储在本地的用户节点上,但是可以随时通过网络广播。.
构件2:双重支出保护
闪电网络的第二个构建块可能不需要太多解释,因为它可以说是比特币本身的存在理由:双花保护。如果两个事务(或:输入)依赖于相同的输出,则只有一个可以确认.
这里要记住的重要一点是,即使未确认的交易也可能会发生冲突,这意味着只有一个可以确认.
构件3:Multisig
闪电网络的第三个组成部分也是一个简单明了的组成部分:多重签名(multisig)地址。 (或更笼统地说:P2SH地址。)
多重签名地址是比特币地址,顾名思义,它需要多个私钥来“解锁”并从中花费比特币。可以在各种条件下设置多重签名地址。例如,要求三个可能的键中的两个,或者十五个中的十五个,或者几乎其他任何组合.
闪电网络通常使用两个(两个,共两个)多重信号设置中的两个。要从2 of 2多重签名地址中解锁比特币,需要使用两个专用密钥的两个签名.
构件4:时间锁定
第四要素是时间锁定。时间锁定可以“锁定”输出中的比特币,以使其只能在将来的某个时间使用(包含在后续输入中).
有两种不同类型的时间锁:绝对类型,称为CheckLockTimeVerify(CLTV),以及相对类型,CheckSequenceVerify(CSV)。 CLTV锁定比特币直到(或多或少)未来的具体时间为止:实际时间和日期,或特定的区块高度。 CSV则使用相对时间。将CVS输出记录在区块链上之后,从该点开始需要花费特定数量的块,然后才能再次使用比特币.
构件5:哈希值和秘密
第五个也是最后一个构建块-加密-是比特币本身的最基本构建块。但是在Lightning Network中,它以一种新方式应用.
简而言之,“值”或“秘密”是一个长而唯一的数字字符串,即使对于具有无限尝试次数的计算机,也几乎是不可能猜到的。通过特殊的计算,可以将该值(或机密)“哈希”为不同的数字字符串,即“哈希”。这就是诀窍:知道值的任何人都可以轻松地复制哈希。但这反过来是行不通的;这是一条单向街.
这个技巧可以在比特币本身中使用,再次“锁定比特币”。 (实际上,这实际上是比特币的工作方式。)例如,哈希可以包含在输出中,并且要求后续输入包含相应的值才能使用.
第一个挑战:双向支付渠道
甚至在闪电网络出现之前,支付渠道的概念就已经存在了一段时间。典型的支付渠道可用于某些目的,但也有局限性:它们是单向的。爱丽丝可以向鲍勃支付几笔脱链交易,但鲍勃根本无法通过同一渠道向爱丽丝付款.
作为闪电网络的关键功能,Poon和Dryja提出了无信任的双向支付渠道.
打开频道
要建立双向支付渠道,有关双方必须首先就开始交易达成协议。这项开仓交易确定每个通道中存入多少比特币.
假设爱丽丝(Alice)想向鲍勃(Bob)发送一个比特币。由于爱丽丝(Alice)和鲍勃(Bob)希望更频繁地进行交易,因此他们决定开放双向支付渠道,并使用该渠道发送比特币。 (对于支付渠道而言,发送整个比特币可能很多,因为对于小额支付来说,这些比特币可能会更有用-但这是完全有可能的。)
为了打开频道,爱丽丝和鲍勃分别向5个2位数的多重签名地址发送了5个比特币。这是“期初交易”。如果爱丽丝(Alice)和鲍勃(Bob)都签署了后续交易,则只能从该地址使用比特币.
此外,Alice和Bob都创建了一个秘密(一串数字),并交换了哈希值.
现在,爱丽丝立即根据期初交易创建一个后续交易。这是“承诺交易”。通过承诺交易,爱丽丝向自己发送了四个比特币,并向第二个多重签名地址发送了六个比特币。第二个multisig地址有点时髦。鲍勃可以自己解锁它,但只有在将其包含在区块链中之后再挖掘1000个额外的块之后,才能解锁。它包括一个CSV锁。或者,爱丽丝可以自己打开它,但前提是她还必须包括鲍勃刚刚为其提供的哈希值的秘密。 (当然,爱丽丝不知道这个秘密是什么-她只知道哈希-因此她现在无法利用此选项。)
爱丽丝签署了此承诺交易的结束通知。但是她没有广播!相反,她把它交给了鲍勃.
同时,鲍勃(Bob)做了同样的事情,但也有所反映。他还创建了一个承诺交易,从中他自己发送了六个比特币,并向一个时髦的新的多重签名地址发送了四个。如果她再等待1000个街区,爱丽丝可以解锁该地址,或者鲍勃可以使用她的秘密与爱丽丝解锁.
鲍勃签下这一半,然后交给爱丽丝.
在完成“半有效”承诺交易和秘密哈希的所有这些交换之后,他们都签署并广播了期初交易,以确保将其记录在区块链上。该频道现已正式开放.
此时,Alice和Bob都可以签名并广播他们从对方那里获得的半有效承诺交易。如果爱丽丝这样做,鲍勃立即获得六个比特币。如果鲍勃这样做,爱丽丝立即获得四个比特币。但是无论签名或广播该交易的人将不得不等待1000个区块才能解锁后续的multisig-address,并要求剩余的比特币.
但是,这是支付渠道的关键技巧:根本不签署也不广播其交易的一半.
更新频道
过了一会儿,鲍勃想寄回一个比特币给爱丽丝。他们想更新通道状态,使平衡再次达到5。为此,爱丽丝和鲍勃做了两件事.
首先,两者都重复上述过程(除了开仓交易已记录在区块链上;该部分被跳过)。这次,爱丽丝和鲍勃都给自己分配了五个比特币,并且都给时髦的多重签名地址分配了五个比特币。这些多重签名地址的条件是相似的,除了它们需要新的秘密:爱丽丝和鲍勃都互相提供了新的哈希值。他们都签署了新的一半有效承诺交易,并将其互相给予.
其次,爱丽丝和鲍勃互相交往他们的第一批秘密,如第一次设置中所使用的那样.
在这一点上,爱丽丝和鲍勃再次可以签署并广播他们刚刚获得的新的“半有效”承诺交易。他们的交易对手将立即获得5个比特币,而广播公司则必须等待1000个区块。因此,频道已更新.
但是,是什么阻止了Bob广播较旧的承诺交易呢?这项承诺交易导致他付给他六比特币的报酬,而不是五….
当然,阻止Bob的是他的第一个秘密,现在他已将其提供给Alice。.
鲍勃无法再安全地签署和广播旧的承诺交易,因为爱丽丝现在知道鲍勃的第一个秘密。如果鲍勃(Bob)签署并转播该承诺交易,他将立即向爱丽丝(Alice)发送四个比特币…,他将不得不等待1000个区块才能索取自己的六个比特币。这是一个问题,因为既然爱丽丝知道了他的秘密,她就可以利用这段时间击败鲍勃,并要求其他六种比特币!
而且由于鲍勃(Bob)也有爱丽丝(Alice)的秘密,反之亦然。如果爱丽丝(Alice)尝试签署并广播旧的承诺交易,则鲍勃(Bob)可以窃取该频道中的所有比特币.
当然,这意味着爱丽丝和鲍勃都强烈受到公平竞争的激励,并且只能签署并播放该频道的最新状态.
接下来,需要扩展这种双向支付渠道设置,以允许通过网络进行支付。本系列的第二篇文章将对此进行介绍。.
感谢Rusty Russell和Joseph Poon的新增反馈.