观点 | 最优化 Rollup 方案中的挑战期时长
交互式 Rollup 方案,比如我们的 Arbitrum Rollup,通过让某个验证者断言执行结果、而其他验证者可以挑战断言的方式,来加速智能合约的执行。如果挑战期过去,而没有任何人提出挑战,则该断言就被认为是真的,然后系统就推进。一般情况下,断言都会是对的,挑战也是很少出现的,所以一条 Rollup 侧链就能比链上合约更快推进、开销也更低。
但,挑战期应该设成多长呢?在本文中,我将指出,有些因素会使我们希望有更长的挑战时间,某些因素正好相反。我会推导出一个旨在最小化侧链整体运行成本的最优挑战期公式。
长挑战期的好处
众所周知,更长的挑战时间就是更安全,因为审查攻击的难度会变得更高。恶意行动者可能会尝试报一个虚假断言,然后审查尝试挑战断言的交易,直到挑战期过去。但是,挑战期越长,这样的攻击就越不可能成功。
一种看起来可行的模型是定义挑战期时长为 C(个区块),而审查攻击成功率随 C 的增长而呈指数级下降。如果整个 Rollup 侧链的价值(也就是一名攻击者将侧链上的所有资产洗劫一空可获得的最大价值)是 V,那么攻击者能盗取的价值预计为 V·e^(-AC),A 为常数。
那么,为了阻止这样的攻击,我们就需要断言者先存储,比如 10V·e^(-AC),的价值,如果攻击失败,攻击者要付出的代价会远大于其攻击预期收益。
但这样就为诚实的断言者施加了同样的成本,他们也必须锁定同样规模的资金。如果协议设计良好而且底层链也活跃,那么一般来说恰好会有一位诚实断言者存储了这么多保证金。那么,单位时间内的成本就是保证金规模乘以一个名义利率。
挑战期越长,保证金规模就可以越小,所以 —— 更长的存款时间可以降低侧链的(这部分)运营总成本。
短挑战期的好处
要从侧链中取钱的人当然喜欢更短的挑战期,因为用户取款之后要等一个挑战期走完,钱才算真正回到了底层链上。从用户的角度来看,在挑战期中,他们的钱是完全被锁定的。
(用户可以找到流动性提供者来马上取得现钱,代价是提供者会在稍后收到用户取出的资金。但这只是暂时把锁定资金的成本转嫁给了流通性提供者,而用户必须给提供者支付手续费 —— 所以其实还是用户要支付资金锁定的成本)
我们可以这样建模:假设在一个平均区块时间内,有比例为 W 的资金要退出。那么,在任一时间点,锁定的取款数量就是 CWV(W 乘以 V 是一个区块的取款数量,而任一时刻都有前面 C 个区块的取款仍在锁定中),因此侧链用户的成本就是这个数值乘以一个利率。
因为这个成本也跟 C 成比例,因此更短的挑战期能够降低(这部分的)运营成本。
找出最优挑战时长
最优的挑战市场会是某种折中,即两项成本的总和是最小化的。有趣的是,两个方面的成本都是由资金锁定带来的,就是锁定的资金数量乘以假设的利率。因此,挑战期最优时长就跟利率无关了 —— 只需最小化锁定资金的总数量(断言者锁定的保证金 + 用户锁定的取款数量)即可。
从等式来看,任一时间点,锁定的资金总量(平均来说)是:
10V * e^(-AC) + CWV
因为 V 在两项中都有,所以它不会影响最小值点。最小值点会出现在 10×e^(-AC) + CW 最小的时候。只需对 C 求导,令倒数值为 0,就可以解出最小值点处的 C。
结果就是 C= ln(10A/W)/A 。
这个值对实践有什么意义?我们可代入一些还算可靠的数字,如上图所示。我们假设 A 使得攻击者在一个区块的时间内持续审查成功的成功率高达 99%,即 A = -ln(0.99) = 0.01。再假设每天都有 1% 的资金要取出,那么按 15 秒的区块时间算,每个区块的取款比例约为 W = 0.000002。把这些假设代入公式,可得最优挑战期为 C = 1081 个区块,约为 4.5 小时
那么成本到底有多高?在任一时间点,都有约等于侧链全部资产价值的 0.2% 以不同方式锁定。如果名义利率是 5%,那么结果就是:总的锁定成本约为每年对侧链的总价值征收 0.01% 的税收。只需付出这么低的代价,你就能得到一条(比底层链)更快、Gas 消耗量更小,更可扩展的侧链。
(完)
原文链接:https://medium.com/offchainlabs/optimizing-challenge-periods-in-rollup-b61378c87277 作者: Ed Felten 翻译: 阿剑