dYdX 最近推出了基于 ZK-Rollup 模式(即链上数据)下的 StarkEx 可扩展性引擎的永续合约平台。StarkEx 既能为用户提供可扩展性和更低的 gas 成本,又能用来构建更好的系统:实现新的业务逻辑,包括需要依靠 Layer 2 方案降低高昂成本的新功能。
在本文中,我们将讨论 StarkEx 是如何以更加高效安全的方式使用来自价格输入机制(Oracle)的价格信息的。
价格输入机制是免许可型区块链的重要组成部分,可以让去中心化应用能够使用链外数据。dYdX 也不例外:它利用在其平台上交易的各种资产的喂价(price feed)来追踪交易者的质押率。
但是,价格输入机制的更新成本很高。可靠的更新会聚集多个来源的数据,因此需要在 Layer 1 上进行很多签名验证和存储操作。这种更新通常需要消耗数百万 gas —— 如此高昂的成本最终由用户承担。
高昂的成本限制了更新频率,从而导致去中心化应用的效率降低。由于成本太高,每挖出一个区块就更新链上的 ETH 美元价格是不现实的。这意味着,依赖于可靠更新的去中心化应用响应价格变化的速度将变慢。当我们最需要频繁更新价格的时候(价格快速波动时期),这个问题就会更加严重。这往往是人们最想要与 Layer 1 交互、最需要获得最新价格的时候,因此会加剧链上拥堵。不幸的是,拥堵意味着价格更新频率会降低(就像黑色星期四那样)。尽管 dYdX 的 StarkEx 系统仅上线两周,但是我们已经有幸经历了一场压力测试:在 2021 年 4 月 7 日上午,密码学货币价格暴跌 20% 之多 ——StarkEx 在不到一小时内顺利处理了 1000 多笔清算,每笔清算的成本略高于 6000 gas。
在 StarkEx 的帮助下,dYdX 可以显著增加信息输入机的数量并提高更新频率,从而更好地保护喂价机制免受价格操控。我们目前正在使用 Chainlink 的价格输入机网络为我们的 Layer 2 协议提供安全的喂价。Chainlink 已与 Starkware 整合,将 Chainlink 的价格输入机制功能扩展到高性能的 Layer 2 解决方案上。很快,其它价格输入机制提供商(如 MakerDAO)或将应用于部分市场。有了低成本、高频率、可信赖的价格更新,dYdX 可以为交易者提供更高的杠杆率。
首先,负责向 dYdX 提供链下价格信息的各方名单的具体细节(连同所需的最低参与者数量)已经经过哈希计算并存储在 dYdX 的智能合约中。交易者很快就能在 dYdX 的网站上看到原像,并决定是否要信任这些实体和门槛要求 —— 具备与 Layer 1 智能合约相同的透明性。
接下来看看我们是如何以较低成本实现高频价格更新的。首先,有资格的喂价方在链下提交经过签名的价格数据。dYdX 将这些输入聚集起来,计算价格中位数。
然后,完整的签名集合和价格中位数将被发送至 StarkEx。dYdX 的 Cairo 程序会检查以下内容:
输入有效期:签名是有效的,且所有公钥都属于链上名单内有资格的喂价方
时间戳足够新
有效公钥签名的数量达到门槛要求
价格中位数计算正确
假设上述几点成立,Cairo 程序就会生成一个 STARK 证明来证明该程序是正确执行的。这个 STARK 证明会被发送到链上,如果验证通过,就会在链上存储一个数(即,一批交易的最低价格和最高价格的平均数)。需要注意的是,每种资产每上链一批交易都会存储一个价格,与该资产的链外喂价服务提供商数量无关,与每批交易上链期间的喂价频率也无关。
就是这么简单!
该价格可以立即用于后续的链下交易,即使是在 STARK 证明在链上得到验证之前。这里要强调是,价格更新的正确性由 STARK 证明保证。这就意味着,如果某个价格与执行的结果不对应(invalid),则包含该价格的交易批次以及所有基于该无效价格的交易都将被拒绝。
不同于 ZK-Rollup,Optimistic Rollup(OR)要求在链上发布所有与价格输入机制相关的数据。也就是说,在 OR 中,gas 成本随价格更新频率和链下价格提供商的数量线性增长。
令人振奋的是,随着 Layer 2 可扩展性解决方案变得越来越复杂且流行,这些方案不仅可以扩展现有的 Layer 1 功能,还能解锁全新的功能和业务逻辑。我们希望在不久的将来会有更多去中心化应用整合 StarkEx(以及即将到来的 StarkNet),为用户提供可扩展性更强、更安全、更可靠的实时服务。
原文链接:
https://blog.mycrypto.com/how-to-beat-an-ethereum-based-sweeper-and-recover-your-assets/
作者: Harry Denley
翻译&校对: 闵敏 & 阿剑