主页 > imtoken官网下载1.0版本 > 科普 | 理解闪电网络——为比特币构建一种单向支付通道

科普 | 理解闪电网络——为比特币构建一种单向支付通道

imtoken官网下载1.0版本 2023-05-06 05:36:58

闪电网络可能是比特币区块链上最受期待的创新(编者按:最初写于 2016 年)。 这一支付方案最早由 Joseph Poon 和 Tadge Dryja 于一年多前提出。 它号称支持用户在链下发送无限次交易,成本极低——它还可以借用比特币网络提供的安全保障。

至少有 3 家公司——Poon 和 Dryja 的 Lightning、Blockstream 和 Blockchain——正在开发此类技术的实施。 但在技术专家的狭隘圈子之外,很少有人了解“小额支付的未来”如何释放比特币的潜力。

在本系列文章中,比特币杂志试图列出闪电网络最基本的钻石,并展示如何将这些东西组合起来形成闪电网络的官方合约。

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

(提示:对比特币非常熟悉的读者可以跳过本模块的介绍。)

模块 #1:未确认的交易

比特币合约的核心是所谓的“交易”概念; 一般来说,一项交易总是与另一项先前的交易相关联,并可用于未来的交易。 每笔交易都包含输入和输出,前者指向传输比特币的地址,后者指向接收比特币的地址。 此外,为了发送比特币,输入必须满足一定条件,例如提供数字签名以证明发送者对输入地址具有“所有权”。 同时,输出也为以后使用这个比特币建立了新的条件,在后续交易发出时必须满足。

(译者注:把比特币想象成有面额的收据,使用时,支票本身给出了资金来源,使用后会生成一张新的汇票。所以对于每一张汇票,都有一笔交易产生这张本票,也就是之前的一笔交易;当这种票据再次被花费时,那笔交易就可以称为后续交易。)

闪电网络的一个关键特征是它由或多或少的常规比特币交易组成。 只是这些交易通常不会在比特币网络中传播。 相反,这些交易由节点上的用户本地保存——但它们可以随时在比特币网络中传播。

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

– (译者注:如图所示比特币无限拆分,比特币可以像本票一样进行分裂,其流通会产生一条清晰的链条。) –

模块 #2:双花保护

闪电网络所需的第二个模块可能不需要太多解释,因为它可以说是比特币合约本身存在的理由:防止多次支付。 如果两个交易(或输入)依赖于同一个输出,则只有其中一个可以被整个网络确认。

切记:即使还未确认的交易之间存在冲突比特币无限拆分,最终也只会确认一个。

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

模块#3:多重签名

闪电网络的第三个模块也很好理解:多重签名地址。 (或更广泛地说:P2SH 地址(脚本哈希地址)。)

顾名思义,多重签名地址是需要多个公钥才能“解锁”并花费比特币的地址。 可以通过多种方式设置多重签名地址的条件。 例如,可以要求3个公钥中的2个参与比特币的转移; 或其他数字要求(如 2/5、3/4 等)。

闪电网络通常使用 2-2 多重签名要求。 从这样的地址转出比特币,需要提供与这两个公钥相关的两个签名,少一个不行。

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

模块#4:时间锁

第四个模块是时间锁。 时间锁功能在输出上设置了锁定条件,以便这些比特币只会在未来一段时间后才会被花费(即用作交易的输入)。

时间锁有两种:1)绝对时间锁,称为CheckLockTimeVerify(CLTV); 2) 相对时间锁,CheckSequenceVerify (CSV)。 CLTV 将比特币锁定到未来的某个(可以说是)特定日期:特定时间和日期,或特定区块高度; 而 CSV 仅使用相对时间。 当一个 CVS 输出被上传到链上时,它必须等待一定数量的块才能使用输出。

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

模块 #5:哈希和秘密

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

简而言之,一个“秘值”就是一串很长很独特的数字,几乎是猜不出来的,即使一个笔记本被暴力计算了无数次。 并且通过特殊的估算,这个秘密值可以被“打散”成不同的数,称为“哈希值”。 这是有趣的部分:知道秘密值,可以很容易地估计它的散列值,但如果你不这样做,你就不能用散列值推导出秘密值。

在比特币区块链上,这种机制可以用来“锁定比特币”(实际上,锁定比特币是比特币合约的工作方式)。 作为反例,您可以在输出中包含一个哈希值,并要求后续交易仅在包含与哈希值对应的秘密值时才消费该输出。

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

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

在闪电网络出现之前,“支付通道”的概念就已经存在了。 标准支付渠道是专门建立的,因此是有限的:它们是双向渠道。 Alice 可以在链下向 Bob 发起 Dobby 支付,但 Bob 不能使用相同的渠道向 Alice 付款。

闪电网络的一个关键特征是 Poon 和 Dryja 提出的无需信任的单向支付通道。

开放通道

完善单向支付通道,首先需要双方就一笔交易达成共识,开通通道。 这个开仓交易决定了他们每个人将在这个通道中存入多少比特币。

假设爱丽丝要发送 1 个比特币给鲍勃。 因为双方都希望以后往来频繁,所以决定开通一条单向支付通道。 (在通道中发送 1 btc 可能有点太多,毕竟通道可能对小额支付更有用——但这是完全可行的。)

为了打开通道,Alice 和 Bob 每人发送 5 个比特币到一个 2-2 多重签名地址。 这就是“通道开通交易”。 这个地址上的钱只有在爱丽丝和鲍勃签署同一笔交易的情况下才能花掉。

此外,Alice 和 Bot 各自创建一个秘密值(即一串数字),然后交换哈希值。

现在,Alice 创建了通道开启交易的后续交易,这是一个“承诺交易”。 在本次承诺交易中,Alice向自己发送了4个btc,向第二个多重签名地址发送了6个btc; 这个多重签名地址比较有意思:Bob可以自己解锁这个地址,但是,等等(Alice的交易在链上1-00块之后,Bob可以花掉上面的钱(这是一个相对时间锁);Alice也可以自己打开这个地址,前提是她也有Bob给她的hash值对应的hash值。的秘密值。(当然Alice对这个秘密值是完全不知道的——她只有hash值Bob 给了她——所以这样做只是表面上的。)(译者注:即这第二个多重签名地址既有时间锁也有哈希锁。)

爱丽丝签署她的提交交易。 但她不会广播交易! 相反,她只会将交易发送给 Bob。

同时,Bob 也做完全对称的操作。 他还创建了一个承诺交易,将 6 个比特币发送给自己,并将 4 个比特币发送到一个新的多重签名地址。 Alice 可以在等待 1000 个区块后自己解锁这个地址,或者 Bob 可以用 Alice 的秘密值解锁这个地址。

Bob 签署交易并将其发送给 Alice。

交换这些承诺交易和哈希值后,他们将共同签署并广播通道开放交易,以便将其上传到链上。 现在,开通了一种单向支付通道。

打开通道后,Alice 和 Bob 都可以签署并广播他们从本地获得的部分有效的承诺交易。 如果 Alice 广播(Bob 向她发送了承诺交易),Bob 将立即获得 6 btc。 如果 Bod 广播,Alice 将立即收到 4 btc。 但对于签名和广播交易,必须等待1000个区块才能解锁后续的多重签名地址,并带走剩余的比特币。

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

然而,这是支付渠道的关键方法:不签署和广播他们得到的承诺交易。

(译者注:先与承诺交易交互,再广播开道交易的目的是为了防止对方欺诈;而获得承诺交易后,无需广播即可获得安全保障。)

更新频道

后来,Bob 想把 1 个 btc 发回给 Alice,他们想更新这个通道的状态,让它回到 5:5 的状态。 为此,Alice 和 Bob 需要做两件事。

首先,双方都要重新走一遍上面提到的流程(除了开启交易的部分,因为已经记录在链上了)。 这次Alice和Bob都给对方分配了5个btc,都分配了5个btc给哪个多重签名地址。 这些后续的多重签名地址的条件是相似的,只是它们都需要生成新的秘密值:Alice 和 Bob 都提供新的哈希值。 他们都签署了新的承诺交易并将其奉献给彼此。

其次,爱丽丝和鲍勃都给对方他们的第一个秘密值(在第一次承诺交易中使用的那个)。

此时,Alice 和 Bob 都可以签署并广播他们最新的承诺交易。 他们的对手将立即获得 5 btc,而广播自己则必须等待 1000 个区块。 就这样,通道的状态被更新了。

但是,是什么阻止 Bob 广播旧的已提交交易? 该提交交易将分配给他 6 btc,这超过 5 btc ...

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

因为,此时,Bob 很难随心所欲地签署和广播 older commitment 交易,因为 Alice 已经知道 Bob 的第一个秘密值。 如果 Bob 想要签署并广播(Alice 给他的那个)一个更早的承诺交易,他会立即发送 4 个 btc 给 Alice……他将不得不等待 1000 个区块来自己处理,但是 Alice 已经知道他的了秘密是值得的,所以她可以利用这段时间抢先提取剩余的6 btc!

并且,由于 Bob 也有 Alice 的秘密值,所以 Bob 也是如此! 如果 Alice 想要签署并广播旧的承诺交易,Bob 就可以抢走她放在通道中的所有 btc!

这意味着 Alice 和 Bob 都重新组织了他们的激励机制,不再耍花招,而是只广播最近的状态。

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

那么,在我们有了单向支付通道之后,我们需要把它扩展成一个支付网络。 这是我们第二篇文章的主题。

感谢 Rusty Russell 和 Joseph Poon 的热忱反馈。