如今,这个领域的许多人在回应任何有关比特币协议变更的讨论时普遍高喊的是“不要搞乱第一层!” 你可以在 Layer 2 上构建它!” 这看起来是一件非常合乎逻辑的事情,对吧? 当您可以在 L1 之上进行构建时,为什么要冒 L1 的安全性和稳定性的风险呢? 问题是这从根本上无法理解第 1 层和第 2 层之间的关系。
L2 协议是 L1 协议的扩展。 L2 设计的所有功能最终都必须简化为 L1 的功能。 “就在 L2 上做吧!”的笼统声明。 在给定基础层的当前状态的情况下,混淆了 L2 上可以做什么或不能做什么的许多隐含现实。 例如,想象一下尝试在不存在多重签名脚本的情况下构建闪电网络。 你不能。 不可能在多个人之间共享控制权,并且支付渠道的整个概念也不可能实现。
支付渠道的演变
支付通道之所以能够存在,首先是因为比特币的 L1 支持多人通过多重签名脚本共享 UTXO 的控制权。 L2 上的可能性本质上受到 L1 上的可能性的限制; 是的,当然可以在 L2 上做在 L1 上不可能做的事情,但链下可以做的事情的最终限制因素是链上可以做的事情。 支付渠道中更快的支付确认之所以可能,是因为链上托管可以在多人之间共享。
但即便如此,对于安全的支付渠道来说,这还不够。 最初的支付通道有一项使用 nLocktime 时间锁的预签名交易,该交易在经过多次区块后将资金返还给资助者,并且仅支持一个方向的支付通道。 交易的可延展性使得这些原有的支付渠道使用起来不安全。 如果资金交易在确认前被他人恶意篡改,则退款交易将失效,资金提供者将无法收回资金。 渠道中的另一方可以有效地扣押他们的资金。
CHECKLOCKTIMEVERIFY(绝对时间锁定操作码)是解决方案。 CLTV 允许您使代币在未来某个区块高度或某个时间之前无法使用。 这与制作可以多种方式使用的脚本的能力相结合,使得多重签名 UTXO 能够拥有一个脚本路径,资助者可以在时间锁定后自行花费所有资金。 这保证了资助者能够在最坏的情况下收回资金,即使资助交易受到恶意攻击。 不过,该渠道仍然只能促进单向支付。
为了促进双向支付,需要一个适当的交易延展性解决方案。 这是隔离见证的巨大动力。 时间锁是单向通道所必需的,因为资金 仅有的 向一个方向增加。 发送者面临的唯一风险是,对方永远不会领取他们已经在链上发送的资金,从而使发送者的其余资金被困。 时间锁退款既让接收者有动力在时间锁之前在链上领取资金,否则他们将失去所有已发送的资金,并且发送者可以在最坏情况下追索,以防发生某些事情导致接收者永久离线。 脚本不支持对某些未来脚本强制执行一定金额,因此如果付款要双向流动,则预签名交易是唯一可行的初始退款机制。 这重新开启了资金被扣押的风险。
随着Segwit的升级,这个问题得到了解决。 引入了惩罚密钥,取代了激励诚实行为的时间锁退款。 由于双向通道中的资金可以在各个方向来回流动,因此不可避免地会出现双方在通道先前状态下的资金多于当前状态的情况。 通过使用惩罚密钥在每个通道状态的预签名交易中建立一个分支,用户可以在签署新状态后交换这些交易,并知道如果对方尝试使用旧交易,他们可以索取通道中 100% 的资金。 时间锁用于保证用户各自余额的正常支出路径在一段时间内无效,以便渠道方有机会在必要时使用惩罚密钥。 但这有一个问题,使用 CLTV 意味着在未来的某个时刻该频道 有 关闭,否则时间锁将过期,您将不再有安全期来惩罚不诚实的一方。
双向支付通道还需要CHECKSEQUENCEVERIFY或相对时间锁来解决这个问题。 与 CLTV 指定未来的特定时间或区块高度不同,CSV 指定从脚本中使用 CSV 的 UTXO 在区块链中得到确认的时间或区块开始的相对时间长度或区块数量。 这使得安全期可以用于惩罚密钥的使用,而无需在预先确定的时间关闭链上通道。
但即便如此,我们也无法获得闪电网络。 目前仍然没有办法真正跨多个支付渠道进行支付。 他们可以双向进行支付,但只能在参与渠道的两个人之间进行。 您猜对了,为了跨多个渠道进行支付,您需要 L1 的其他功能。 哈希时间锁定合约就是实现这一点的方式,它们需要 CLTV 和哈希锁。 哈希锁需要向哈希提供原像才能花费硬币。 这就像签名,只不过您实际上只是透露“私钥”而不是用它签名。 这允许闪电支付中的接收方提供哈希锁,并且发送方和接收方之间的每个中间通道都会创建一个脚本,允许立即使用哈希原像进行支出,或者在时间锁后向后退还资金。 如果接收者泄露了哈希锁,那么每个人都可以领取用于转发付款的资金,如果没有,则可以向后领取并撤销这笔资金,而无需最终确定。
因此,今天存在的闪电网络完全取决于 五 比特币基础层上的功能是可能的。 多重签名脚本、绝对时间锁、相对时间锁、隔离见证和哈希锁。 如果 L1 上没有这些功能中的任何一个,我们今天所知道的闪电网络就不可能是我们可以构建的 L2。 它作为 L2 的存在完全取决于 L1 执行某些操作的能力。 因此,如果有人想要在一个比特币不支持散列锁、脚本中的时间锁且没有延展性修复的世界中,只需“在第 2 层上构建一个双向多跳支付通道系统! 我们不应该搞乱第一层”,这将是一个完全不连贯的说法。
捕获
也就是说,严格来说,如果没有 L1 上的这三个功能,仍然可以在那个世界中构建双向多跳支付通道系统。 在一个 大量的 成本是指让其他人相信他们不会偷你的钱,当他们有能力这样做时。 联合侧链。 每个人都可以建立一个像 Liquid 或 Rootstock 这样的联邦链,并将这些功能添加到侧链中,在那里而不是在主链上构建闪电网络。 问题是,这不是同一件事。 在技术层面上,该网络的功能完全相同,但使用该网络的人实际上不会对其代币拥有相同程度的控制权。
当他们关闭闪电通道时,它将落在由联盟支持的侧链上,即它只是其他人的多重签名钱包之上的一个会计条目,您无法在 L1 上控制这些代币。 你只需要相信运营联邦的分布式团体不会欺骗所有人。 甚至驱动链(具有讽刺意味的是,它本身需要完成新的 L1 功能)最终也只是另一种形式的联合,在退出过程中添加了一些额外的限制。 联盟只是矿工,而不是持有私钥的人。
无论他们是否理解,这都是隐含的现实,是“在 L2 上构建它!”的反应的基础。 每当有人讨论 L1 的改进时。 L2 上已经可以构建的范围是相当有限的,并且受到其自身扩展限制的限制,然后还有尚不可能的范围。 如果不插入最终控制用户资金的可信实体或实体组,则属于后一类的所有内容都是不可能构建的。
重点是什么?
“第二层”并不是一个魔法咒语。 你不能只是挥舞魔杖并念诵咒语,任何事情都变得神奇可能。 L2 可以完成的任务存在严格且不可避免的限制,而这些限制正是 L1 可以完成的任务。 当观察像比特币这样的系统时,这只是工程现实的一个固有事实。 你无法以任何方式逃避它,除非你构建的 L2 的灵活性超出了 L1 的能力,并且越来越多地降低信任假设。
因此,当围绕这些问题进行讨论时,例如可以对 L1 进行哪些改进,有两件事至关重要。 首先,对 L1 的这些改进几乎完全集中在构建更灵活和可扩展的 L2 上。 其次,L2 无法神奇地实现一切。 基于 L1 的局限性,L2 有其自身的局限性,并且在不承认解决这些限制的唯一方法是引入可信实体的情况下讨论 L1 的更改并不是诚实的对话。
如果我们要讨论未来如何处理比特币,那么现在是时候开始承认现实了,否则除了否认现实和煤气灯操纵之外什么也不会发生。 但这是没有成效的。