在本文中,我们会深入地探究,闪电网络通道是如何做到既能更新余额、又无需任何一方承担资金丢失风险的。 闪电网络是一个对抗性的网络,参与者们并不信任自己的对手。实际上,他们的 假设 是对方如有可能就会欺诈他们。参与者只有在知晓其操作的安全性时才会签名。而且,需要保证任何时候参与者都有拿着资金退出合约(离开通道)的选择。 在这篇文章中,我们假设支付通道已经开好了,当前的 Alice 有 0.10 BTC 的通道余额,Bob 只有 0.00 BTC 的余额。 承诺事务在支付通道打开之后,Alice 希望给 Bob 支付 0.02 BTC。双方之间的支付是使用一种特殊类型的交易来达成的,它叫做 “承诺事务(commitment transactions)”。 这种事务的特殊之处在于:
承诺事务的初衷是放在支付通道里使用,而不是放到主链上,不过,它们是完全有效的比特币交易,任何一方,只要想的话,都可以将它广播到主链上。 - 一个支付通道内部的多笔承诺事务 - 为了给 Bob 支付,Alice 必须创建两笔交易,两笔都会给 Bob 支付 0.02 BTC,但这两笔交易的输出有不同的花费条件。下文我们会管这两笔交易叫 “先给自己支付” 交易和 “先给对方支付” 交易。记住,两笔交易都由 Alice 来创建,无需使用来自 Bob 的输入。在 Bob 发送 “先给自己支付”在 “先给自己支付” 交易中,Alice 可以理解花用自己的输出,而 Bob 必须遵守 RSM 合约。RSM 合约(Revocable Sequence Maturity Contract,可撤销的相对时间锁合约)对输出的花费作了以下限制:
更多关于 RSM 合约的细节可见此处。 这笔交易对 Alice 更有利,你可以在这里看到这种交易的一个例子。 - Alice 创建的 “先给自己支付” 的交易 - “先给对方支付”在 “先给对方支付” 交易中,Bob 可以立即花费属于他的输出,但 Alice 受到 RSM Contract 的约束。这种交易对 Bob 更有好处。你可以在这里看到这种交易的一个例子。
|