本文主要介绍了以太坊Layer2扩展方案,包括状态通道、Optimistic Rollup、ZK-Rollup以及侧链等技术方案,并对比分析了各种方案的优缺点。同时,文章还提到了作者所在的机构与Nethermind合作,基于以太坊构建金融结算系统的愿景。
我们非常高兴能与 Nethermind 合作,这是一家对以太坊充满热情的公司——实际上,他们拥有以太坊主网上大多数的以太坊客户端。
由于这与我们对以太坊的热情相符,这是一个很棒的合作伙伴关系。
因此,在过去一周左右的时间里,我们已将 Gethinfrastructure 迁移到使用 Nethermind Ethereum Layer 1 (L1),然后应用 Surge 架构作为 Layer 2 (L2) 集成 [ here]。这将使我们能够支持 zk-Rollups,并为我们的应用程序带来一个全新的机会世界——包括提高安全性、信任度和可扩展性,并降低 gas 费用。
在不久的将来,我们需要意识到我们正在运行一个传统的金融世界,并且我们需要构建一个更值得信赖的数字基础设施。实际上,我们需要转型的不仅仅是金融,而是任何需要高水平信任、安全和分配的领域。为此,我们可以使用以太坊等 Layer-1 区块链方法,但它已经显示出扩展问题,即主账本和计算基础设施无法应对每秒超过 15-30 笔交易。
但是,现在正在应用新的方法来减轻以太坊的负载——同时仍然保持可信赖性和分配性。这些包括用于共享的 Layer 1 实现以及向 Proof-of-Stake (PoS) 的过渡。然而,最有趣的进展发生在 Layer 2 方法中,它构建在核心以太坊网络(主网)之上。
状态通道 最初是在 Bitcoin Lightning network 中实现的,此后已在以太坊上扩展。通过这种方式,我们基本上在主网账本上有两个记录,并且所涉及的各方必须承诺一些可能花费或可能不花费的资金。例如,假设 Bob 想要创建一个侧通道来支付他的客户,并将承诺 10 个 Eth。然后,他将创建一个通道合约。承诺的 Ether 将在通道期间被锁定,并且不能被花费。然后,Bob 可以给 Alice 2 个 Eth,给 Carol 3 个 Eth。一旦他完成此操作,他将把完成的交易提交回来,Bob 将获得 5 个 Eth,Alice 将获得 2 个 Eth,Carol 将获得 3 个 Eth。最后,Bob 只发布摘要数据,并将仅支付两次提交到账本的 gas 费用。 Polygon 提供了状态通道的实现,他们实现了完整的 EVM 兼容性和低交易费用。以下是来自 这里 的示例:
pragma solidity ^0.7.0;
contract PaymentChannel {
address public sender;
address public receiver;
uint256 public expiration;
uint256 public amount;
constructor(
address _receiver,
uint256 _amount,
uint256 _expiration
) payable {
sender = msg.sender;
receiver = _receiver;
amount = _amount;
expiration = block.timestamp + _expiration;
}
function close(uint256 _payment) public {
require(
msg.sender == receiver,
"Only the receiver can close the channel" // 只有接收者才能关闭通道
);
require(
_payment <= amount,
"Payment amount exceeds amount in the channel" // 支付金额超过通道中的金额
);
selfdestruct(receiver);
}
function extendExpiration(uint256 _expiration) public {
require(
msg.sender == sender,
"Only the sender can extend the expiration" // 只有发送者才能延长有效期
);
require(
_expiration > expiration,
"Expiration must be set to a longer time than the current expiration" // 有效期必须设置为比当前有效期更长的时间
);
expiration = _expiration;
}
}
扩展以太坊的最佳机制之一是通过 roll-ups 和侧链将交易移至链下。
这些方法在链下处理交易,并假定交易有效(基本上是一种“信任并验证”的方法)。它们仅在主网上的交易存在争议时才占用计算资源。因此,在交易实际确认到主网之前,需要一个“挑战期”延迟。
通过 Arbitrum,欺诈观察者会分析交易,如果发现欺诈交易,观察者会将欺诈证明发布到主网。实际上,Arbitrum 可以识别与欺诈分析相关的代码行,然后将其发布到主网。然后,主网可以裁定欺诈证明,并决定是否执行所需的代码。对于 Arbitrum,有一个为期七天的提款期 [ here]。
Optimism 也使用链下方法和 optimistic roll-ups,并假定交易有效。它使用观察者(或验证者)来确定是否存在欺诈交易,并且可以提交欺诈证明,并且可以删除该交易。观察者将因发现欺诈交易而获得奖励。总体而言,挑战的延迟约为七天,如果发现欺诈证明是正确的,则交易将被撤销 [ here]:
这些方法将计算和状态存储转移到链下,并涉及一种无需信任的方法。一旦发布回主网,状态更改和与此相关的证明将只需要进行最小的更新。由于我们以压缩形式拥有证明,因此我们可以快速验证更新的交易,同时支持交易的隐私。这样,与需要数天才能提交的 optimistic roll-ups 相比,使用 zk-Rollups(基于 zkSnarks),我们只需要大约一个小时来验证证明。这确保了没有双重支出,并且所有交易都是有偿付能力的。一个例子是 ZKsync [ here]:
使用 zk-Rollups,存在交易有效性的加密证明,然后它们链接到主网。因此,执行欺诈交易将非常困难。使用 optimistic roll-ups,缺少加密证明,因此在提交回主网之前,会有一个延迟,以便可以检测到欺诈交易。
这是一个独立的侧链,是一个与主网桥接的单独区块链。与 roll-up 方法不同,更新后的交易可以在需要时回显到主网上。总的来说,它们有自己的区块链和自己的共识机制——比如 Proof of Authority (PoA)。 Polygon 是侧链基础设施的一个例子。侧通道的总体弱点是它们可能具有与主以太坊网络不同的安全模型 [ here]:
我们与 Nethermind 合作的重点是为银行构建一个外部账本,这将使他们能够整合批发结算。在下图中,我们看到 optimistic roll-ups 在应用回账本后需要大量的检查,并且 T3 交易被识别为欺诈交易。使用带有 zk-Snarks 的 zk-Proof 方法,这种情况极不可能发生,因为有加密证明表明它们没有双重支出,并且交易是有偿付能力的:
目前,我们正在构建我们的 L1 Nethermind 测试网,然后将他们的 Surge 架构应用作为 Layer 2 集成。我们认为——我们希望——我们可以为批发结算构建一个未来的金融世界。
对我来说,离线链中的零知识证明是最好的解决方案,因为它可以快速验证主链上的交易,并保持交易者的隐私。我们还可以在 ZKP 中使用选择性披露,这可能有助于揭示重要信息,例如某人是否有权访问资源。
使用 optimistic rolls-ups,我们假设交易有效,除非另有证明,并且我们需要一个挑战期,以便在最终确定之前对交易提出质疑。使用 zk-Rollups,我们的交易将是有效的,因为存在与此相关的证明,并且我们可以快速提交到主网。不幸的是,zk-Rollups 需要对密码学和区块链有深刻的理解,这可能会减慢开发速度。
显然,以太坊并不是唯一的选择,Polygon [ here], Solana [ here], Cardano [ here], 和 Polkadot [ here] 正在提供比以太坊更好地扩展的替代方案。但是,我们喜欢为我们带来智能合约和 EVM(以太坊虚拟机)的区块链,并且许多人希望它可以克服其可扩展性问题,并保持相同的分配和安全级别。
- 原文链接: medium.com/asecuritysite...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!