科普

自下而上解释 Optimistic Rollup

Ajian   |     |   380 次阅读

Default featured image huge


- 图片来自 Alex Radelich -

本文将通过简单的例子,自下而上地阐述 Optimistic Roll-Up (ORU) 的运作方式;为了让我们能 “看得见摸得着” ORU 链所有的意涵,本文举的示例也会比较特殊。

ORU 是以太坊 layer 2 扩展方案中的佼佼者,既能把可扩展性的蛋糕做大,也能让你吃到 —— 至少是吃到一部分吧。大家之所以对 ORU 如此兴奋,是因为它及它的表亲—— ZK-Rollup,克服了侧链、 plasma、状态通道等方案都没有解决的 layer 2 难题。

ORU 要解决什么问题?

某所高中正面临这样的问题:每隔几天,就会出现小情侣的争吵事件,通常是因为其中一方劈腿。

典型的场景如下:

Alice 看到男朋友 Bob 亲吻 Cathy,她感到非常生气。但 Bob 可能会辩解 “我发誓我没这么做!” 或 “我俩早就分手了!”......但 Alice 根本听不进去,抓起椅子就朝 Bob 扔去;这种在走廊上演的小剧场,正破坏着整个校园的环境。

解决方法 v1

校园里的超级书呆子 Jamal 提出了一种解决方案:

每天晚上,要求所有学生选择以下信息之一,并签署自己的密码学签名——

  • “我单身,勿扰”
  • “我单身,待配对”
  • “我正在与 X 约会(只和 X)”
  • “我正在和多个人约会(还没安定)”

这里的签名和用于密码学货币转账的签名类型是一样的。

学校会在布告栏张贴 “学生与其对应公钥” 的公告,所以任何人都能用签名验证的方法来确实谁签了什么消息。

为了方便同学们使用,Jamal 开发了一款 app ,每个同学只要在 app 上选择四条内容之一,然后点击 “签名 & 发送” 按钮就行,之后签名消息会从后端向以太坊 P2P 网络广播 —— 事实上,这些消息会先发到 Jamal 家里的服务器,由他代表同学们向以太坊发送消息,这样同学就不需要操心以太坊 Gas 的设置。Jamal 通过一些智能合约高级技巧(CREATE2 操作码),就可以自己先替同学们支付 Gas ,然后再按月度向学校报销 Gas 费用。

学校里有 1000 位同学,每人每天都要签署发送 1 条消息,平均每条消息要花费 $ 0.1 的 Gas;所以每个月学校用在 Gas 上的费用为:

(1000 学生) x (1 信息/天/学生) x( $.1 gas/信息) x (30 天/月)

= $3000 gas/月.

肉疼!

解决方法 v2

对于财政吃紧的学校来说,每个月 $ 3k 的支出显然是不合适的。

这时候 ORU 就派上用场了。 Jamal 告诉校方,使用 ORU 可以降低约 99% 的 gas 费用 ,以下是改进的方案:

和 v1 方法一样,当每位学生点击 “签名 & 发送” 之后,信息会先发送至 Jamal 家的服务器。然后 Jamal 将所有的签名叠加成一串字符串数据WiSWho (也就是 “谁在和谁约会”)的信息 。

WiSWho 的信息格式是 [ Alice 的 ID、Alice 的消息、Alice 的签名 ]、 [ Bob 的 ID、Bob 的消息、Bob 的签名 ] ……

接着,Jamal 用自己的私钥签署这一笔交易,并广播之。交易信息为:

“我,Jamal,检查过这笔交易附带的 WiSWho 数据,WiSWho 代表截至 dd/mm/yyyy 所有学生的交往关系,我对天发誓这些数据包含了完整的事实,无任何人工添加。”

用行话来说,Jamal 充当了 layer 2 “执行者” 的角色。

如果你曾经用以太坊进行交易,你可能注意过附加数据 —— 也就是以太坊浏览器中 “Input date” 那一栏。如下图所示,简单交易中大多数人会将附加数据留空;如果交易中调用了如 Uniswap 的 swap 函数,则调用的函数名和传入的参数就会附加上作为交易的 Input Data ;Jamal 的交易会调用 layer 1 的 ORU 合约, WiSWho 就是 Jamal 广播的交易的 Input Data 。

左图:简单交易,没有附加数据。右图: Uniswap 函数和入参(例如 min_tokens 是收到的以太坊数量 )作为附加数据。

以太坊(layer 1)的 ORU 合约只会验证 Jamal 的签名,而附加数据 WiSWho 中的其他同学的签名,只会被视为区块的二进制“ 冷数据”(注:不会被访问或检索的数据)。

这就是扩展性的体现,因为这样一来 layer 1 的全节点只要验证 ORU 执行者的签名并存储附加数据,而不需要验证WiSWho里的所有签名。

悬念

你可能已经注意到 Jamal 签署的信息,强调了两句话:

  1. 包含了完整的事实,且
  2. 仅包含事实。

违反规则 1 的情况称为恶意审查(censorship),意思是 Jamal 在恶意地过滤信息,比如 Bob 和 Alice 有过节,所以 Bob 贿赂 Jamal ,让他审查 Alice 的信息以破坏 Alice 的美好生活。

违反规则 2 的情况称为诈欺(fraud),意味着 Jamal 将一条或多条不存在的信息加到 WiSWho 。比如,数据中包含一条 Alice 的声明 —— “我正在和 10 位男孩及 10 位女孩约会”,而事实上 Alice 根本没有签署这样的信息,所以 Jamal 在 WiSWho 中放入的 Alice 签名是非法的(可能是 Bob 贿赂 Jamal ,以此造谣中伤 Alice ;又或是 Jamal 对 Alice 不满,想让她尴尬......)。

因为 ORU 合约不会检查 WiSWho内容的正确性,所以诈欺行为会严重影响使用 ORU 的初衷,还会让 gas 费用上升(验证签名并不便宜),因为存在诈欺行为会迫使大家退而使用 v1 解决方法。

虽然我们相信,Jamal 是个正直的人,他承诺绝对不会搞审查或诈欺,但从安全性的角度考虑,我们最好还是将希望寄托在 Jamal “无法作恶” 而非 “不会作恶”。

保留对 Jamal 的检查权

校方决定对 Jamal 采行胡萝卜加大棒(软硬兼施)的管理方式:

胡萝卜:Jamal 提供服务换取可观的报酬,每天 Jamal 发送 WiSWho 交易之后,智能合约就会从授权 Jamal 向校方提领 \$ 5 的权利。但 Jamal 不能立刻拿到这 \$ 5 ,他只能在月末提领。Jamal 看着可提领额度每天蹭蹭往上涨,他肯定会愿意继续提供服务。

避免恶意审查的柔性手段:如果 Jamal 故意无视 Alice 提交的信息,当晚她可以自行向智能合约提交签署信息(当然,要自己负担 gas 费用)。隔天一早, Alice 可以去找校长告状,同时其他同学也会有所警惕,Jamal 的声誉会因为作恶行为而下降。

对于校方来说,很容易就能找到能替代 Jamal 角色的人选:智能合约已经在 layer 1 上部署运行, Jamal 的替代者只要运行 AWS lambda 服务,每天持续监听同学们发来的信息、打包签名、向 ORU 合约广播单笔交易即可。

  • 实际上,任何愿意在合约上锁定保证金的人都可以成为执行者(差别只是他们要重新向学生宣传自己而已)。

避免诈欺行为的强硬手段任何人都能发现 Jamal 存在诈欺行为(如果有),并通过简单举证向 layer 1 的 ORU 合约证明存在诈欺。除此之外, Jamal 必须事先向智能合约锁定一笔保证金(想成为执行者的人都需要锁定,作恶就会被罚款),保证金增加 Jamal 进行诈欺的成本。

简单举证包含如下内容 —— “嘿 ORU,这个签名是 Jamal 检查过的数据之一,由 Alice 签署;但我,作为举报者,我宣布这是个无效的签名!”

  • 智能合约会从先前发布的数据中抽取出 Alice 的签名,并通过 Alice 的公钥(在 ORU 合约设置之初就存好了)执行签名验证。如果这个签名的确是无效的,则:
    • 清零 Jamal 的待提领奖励,
    • 将 Jamal 的保证金一般奖励给举报者,另一半销毁。

更进一步剖析强硬手段

强硬手段是 ORU 合约中最有趣、最具决定性的内容;事实上,它就是 ORU 成为 layer 2 解决方案的核心因素。

这个手段的特别之处在于:不只是校方或学生,任何人都能举起这监督的大棒。只要 WiSWho 数据上链,举报者们就能拿到证明 Jamal 是否作恶所需要的所有材料。人人都能向 ORU 合约发出对 Jamal 交易的质疑,并有机会获得举报成功的奖励。

强硬手段的设计及运作,是不同 ORU 实现之间最重要的区别。

来自教育部的电话

“何时能得到大规模接受?”这是我们圈子里最常见的问题。假设大家都开始采用区块链技术,ORU 也能用于解决网络拥堵 —— 但现在却出现另一个问题。

假设教育部希望 Jamal 处理全国范围内,所有学校的签名,这时候我们的问题就会从 “能处理多少学生?” 转为 “你能处理多少学校?”。

你可能会说,“既然可以将整个学校的所有签名整合为一笔交易,那同理将全国的签名整合为一笔交易不就好了?”

这就牵扯到 ORU 扩展性的上限:区块的 Gas 上限。虽然 Jamal 广播交易的 Gas 消耗量很低,但并不是不存在。 如果想要在一笔交易中包含全国范围内的所有学生数据,很有可能会超过区块的 Gas 限制,换言之, Jamal 需要将数据进行拆分,分批广播。

所以说,通过 ORU 能获得的扩展性是有上限的,如果你需要无限扩展,可以考虑侧链或 plasma 等......但这样资金安全就没那么有保障。

重温一下 ORU 的好处

在乐观情况下, layer 1 的全节点无需执行 ORU 操作者发起的交易的附加数据,这样一来:

  • layer 1 全节点层面的执行成本更低;因为存储数据要比在其内部运行任何逻辑便宜得多。

  • 每笔交易的 Gas 成本更低;因为与执行交易相比,存储数据的 Gas 成本更低。

ORU 与侧链/Plasma/状态通道有什么区别?

与侧链不同:侧链的理念发端于 2014 年,但从未产生很大的吸引力;而 ORU 链的安全性是直接由 Layer-1 来保护的。

假设你在 ORU 链上玩扑克或交易代币,则你的资产转移就等同在 layer 1(例如以太坊主网)上转移一样安全。虽然当发生欺诈情况时,可能会遇到一些不便 —— 例如你需要等待一两个星期才能释放资金,但是 layer 1仍然可以保证资金的安全。

另一方面,如果你在侧链进行交易,侧链上的矿工(PoW)或验证者(PoS)可以窃取你的资金;因为只要他们想要,就能单方面向 layer 1 讲述对他们有利的故事,而 layer 1 无从考证。

与 plasma 和状态通道不同:ORU 的诈欺证明机制非常简单,任何人 都能提交挑战。举报者有 layer 1 上可用的所有数据,能够检测并向 ORU 合约提交诈欺行为证明,以此获得奖励。如果采用 plasma 或状态通道,用户必须承担其资金的部分或全部的安全性责任,并且必须时刻 “监视” layer 1 合约的情况,以防执行者或其他用户搞欺诈。

总结

所谓的 optimistic rollup (ORU),其实就是 ①智能合约 —— 部署在某 layer 1 (如,以太坊主网) 上,以及 ② 区块生产者 —— 会监听特定 p2p 网络的交易的,并将其汇总成一个大字符串数据,附上验证签名后上链。

因为合约能够直接接收用户的交易,即使执行者掉线或是作恶,都能保证用户能够安全地将资金从 ORU 退出。更重要的是,合约能够核实执行者是否存在诈欺行为,如有有,合约还能罚没执行者的保证金。

举报者进行诈欺检测及举证所需的所有数据,都能从 ORU 交易的附加数据取得; Layer 1 的全节点不会执行附加数据的内容(除非有人举报存在诈欺),这就是 layer 1 能够扩展的根本因素。对于 Layer 1 来说,这些附加数据只是个二进制数据包,并会被永久存储,仅此而已。

(完)


原文链接: https://gourmetcrypto.substack.com/p/optimistic-rollups-from-the-bottom
作者: Ali Atiia
翻译&校对: IAN LIU & 阿剑


你可能还会喜欢:

Rollup 的用户体验

Optimistic Rollup 为什么要这么设计?

深入理解 OVM

 
0 人喜欢