技术的突破是推动区块链行业前进的引擎,币安中国区块链研究院与链闻 ChainNews 同为密切关注区块链与密码学等领域技术发展前沿的组织,故而联合推出「他山之石」专栏,向中文世界读者介绍全球范围最值得关注的区块链技术进展,以及在金融等产业最新的应用分析与动态,以期为中国的区块链行业「攻玉」提供借鉴和思考。
本文引入一个有趣的场景,一所高中面临每隔几天就有热恋中的学生打架的困扰,Optimistic Rollup 如何解决?
原文标题:《
【他山之石】Optimistic Rollup 自下而上全解读
》
撰文:Ali Atiia
本文已取得作者授权,并由链闻和币安中国区块链研究院获得中文地区翻译首发权。
要想理解一件事,最好的方法是把这件事做一遍。
他很乐观,有信心能抵达另一端,否则,问题就严重了,但是,加密经济学保证了,下面会有安全气囊等着他。
摄影师:Alex Radelich
本文通过一个简单的示例,从下而上完整地介绍了 Optimistic Roll-Up (ORU)是什么。为了理解简单的 ORU 链,我们找出了规范说明书,「触摸并感受」其全部含义。
ORU 是用于第二层扩容的一种关键设计模式(design pattern),其作用是让你实现并利用可扩展性。它们之所以令人兴奋,是因为其近亲——ZK-Rollups 克服了多年来一直困扰着侧链、Plasma 和 State Channel 的基础性限制问题。
问题
一所高中面临这样的一个问题:每隔一天,两名正在热恋中的学生总会打架,原因是有一方发现了另一方出轨了。
典型场景:
Alice 因为看到自己的男朋友 Bob 亲了 Cathy,非常生气。Bob 会说:「我保证,你误会我了」,或者说:「我和她已经分手了!」但 Alice 不相信,在走廊上抄起椅子,砸向了 Bob,从而影响到了整个学校。
解放方案 v1
Jamal,学校里最聪明的书呆子,针对这个烦人的问题,提出了一种解决方案:每天晚上,每个学生用暗号发出下面的某一条消息:
「我现在单身,不想谈恋爱」
「我现在单身,想要谈恋爱」
「我在约会 X,我很专一」
「我在约会很多人,我不专一」
这些签名没什么特别的,它们都是同一类签名,能帮助加密货币从一个地址转移到另一个地址。
在学校的走廊上,公布了一张「学生—公钥」映射表,所有人都能核实学生的签名是否有效。
Jamal 让学生的恋爱生活变轻松了。在他开发的手机 APP 上,每个学生只需输入上面的四条消息之一,然后点击「签名并发送」即可。在后台,被签名的消息会广播至以太坊 P2P 网络。实际上,这些消息会进入 Jamal 家里的服务器,因为他充当了学生们的中继器,这样的话,学生们就不需要担心燃料(gas)了,甚至什么不需要知道。Jamal 利用了神奇的智能合约(CREATE2 EVM 操作码),使他能代表学生支付燃料费。每个月,学校都会报销这笔钱。
学校里有 1000 名学生,每名学生每天签发 1 条消息,每条消息的平均燃料费是 0.1 美元,则学校每月的开销是:
1000 名学生 x 1 条消息 / 每天 / 学生 x 0.1 美元燃料费 / 消息 x 30 天 / 月
= 3000 美元 燃料费 / 月。
心疼。
解决方案 v2
囊中羞涩的学校无法负担每月 3000 美元的开销。
这时候就需要 Optimistic Rollups (ORU)前来救场了。Jamal 说,通过 ORU,学校可以使燃料费降低 99%左右,方法如下:
当学生点击「签名并发送」时,签名后的消息还会像以前一样发送到 Jamal 家里的服务器上。但随后,他会把所有这些签名添加到一大串数据中。我们把这些数据叫做 WiSWho (即「谁在和谁约会」):
WiSWho=「【alice 的 ID,alice 的消息 msg,alice 的签名】、【bob 的 id,bob 的消息,bob 的签名】……
当然有其他更有效的方法来封装这些 WiSWho 数据,不过先忽略这一点。
然后,Jamal 广播了一个用他的私钥签名的交易。交易消息显示:
「本人,Jamal,证明本交易附带的数据(WiSWho)代表了 XX 学生在 X 日 /X 月 /X 年的关系状态,并且我拉钩发誓,这里面包含了全部的事实且只有事实」。
用行话来说,Jamal 是第二层的「操作员」。
如果你曾经在以太坊上进行过交易,那么你会知道这些附加数据的去向,即 Etherscan 资源管理器中的「输入数据」字段。如下图所示,在进行简单的以太坊转账时,多数情况下不会填写这个字段。当调用一个函数时,例如 Uniswap 的交换函数,会附加上函数名称及函数输入。而且,WiSWho 就是在这里被附加到了 Jamal 的交易中。Jamal 的交易是对第一层 ORU 合约中一个函数的调用。
左:无数据附加到简单的 Ether 转账交易。右:附加 Uniswap 的函数名称及输入(例如:min_tokens 是需要接收的金额)作为数据。
只有 Jamal 的签名能校验以太坊上的这一份 ORU 合约。就第一层而言,WiSWho 中的学生签名只是一块又一块「冰冷的」二进制数据。
这便是可扩展性取得进展的缘由:第一层上的全节点不会校验 WiSWho 内部的签名,而是仅校验 ORU 操作者的签名,并将附加的数据保存起来。
接下来,我们看看为什么这些数据必须永远只能由全节点保存。
悬念
你可能已经在上面 Jamal 的签名消息中,注意到了两个被强调的词语:
- 全部的事实
- 只有事实
缺点(1)——审查。即在 Bob 的收买下,Jamal 恶意地审查了 Alice 的消息。Bob 和 Alice 吵架了,于是想要破坏 Alice 的浪漫生活。
缺点(2)——欺诈。即 Jamal 加入了一条或多条无效的消息。例如,Jamal 在 Alice 的消息中加入信息,说:「我正在同时和 10 个男孩和 10 个女孩约会」,而实际上,Alice 根本没有签署过这样的消息。在 WiSWho 中,Jamal 加入的 Alice 签名是无效的,是伪造的签名。他这么做的原因可能是 Bob 收买了他,想要伤害 Alice,或者是 Jamal 本人憎恨 Alice,想让她尴尬。正向我们所说的那样,ORU 智能合约不会检查 WiSWho 内部内容的有效性,因为这么做会违背 ORU 的初衷:增加燃料费(签名校验可不便宜),并且在本质上变成了上述不可持续的解决方案 v1。
如果 Jamal 是个好人,承诺永远不会进行审查或欺诈。但是,为了安全起见,我们最好不要依赖「不可能作恶」或「不会作恶」。
始终检查 Jamal
学校通过软硬兼施政策,激励 Jamal 不进行审查或欺诈:
软政策 :向 Jamal 提供的服务,支付有吸引力的费用。每当 Jamal 提交每天的 WiSWho 交易时,智能合约向他的学校钱包中汇入一笔可以取出来的费用,就比如 5 美元吧。但是,Jamal 现在不能把这 5 美元立刻取出来,必须要到月底。于是,Jamal 会发现金额与日俱增,高到让他开始流口水。
对抗审查的软措施 :如果 Jamal 忽视了 Alice 的签名,那么 Alice 必须直接把自己的签名发布到当晚的智能合约中(当然会产生燃料费)。接着,第二天早上,Alice 告诉了校长存在审查的情况。她也可能会告诉所有的学生。Jamal 的声誉就会受到打击。
学校可以很容易地找到 Jamal 的替代者:合约已经在第一层上启动并运行,Jamal 的替代者只需启动一个 AWS lambda 函数,即可听取学生的消息,批量处理签名,并把该单笔交易(tx)广播到 ORU 合约中。才多大点儿事啊!
实际上,任何愿意在合约上锁定保证金的人都可成为操作者。只不过他们需要向学生宣传自己,等等。
对抗欺诈的硬措施 :任何人都可以检测到 Jamal 的欺诈发布,并通过可以简单的欺诈证明,调用第一层的合同。另外,要求 Jamal 将保证金锁定在合约中(任何想要成为操作员的人都必须在合约将其认定为操作员之前存入一笔保证金)。
举报人可以通过如下的反欺诈证明举报 Jamal:「嘿,ORU 合约,这是已发布数据中 Alice 的签名,Jamal 证明了该签名是由 Alice 签署的,但是我—举报人—声称该签名无效」。
合约会从历史数据内部提取 Alice 的签名,并根据 Alice 的公钥(在 ORU 合约订立时,储存在合约中)进行签名校验。如果签名的确是伪造的,则合约:
- 将清零 Jamal 的待定奖励。
- Jamal 的保证金则会一半发送给举报人,另一半销毁。
深入硬措施
这一硬措施是 ORU 中最有趣、最典型的方面。实际上,这就是二层解决方案能成为 ORU 的原因!
这一措施有何与众不同之处:任何人都可以使用它,不仅限于学校或学生。WiSWho 数据已经上链并长期可用,举报者只需要这些就能够检测 Jamal 提交的无效消息,向 ORU 智能合约证明存在这种问题,从而获得奖励。
硬措施的设计与执行方式是不同 ORU 实现方案之间最重要的区分因素。
教育部的来电
「何时实现主流应用」是密码界经常问的问题。如果主流最终大范围地采用「区块链」,那么 ORU 则有助于避免一时间的蜂拥而至。
假设教育部希望委托 Jamal 开始处理全国所有学校的签名。我们就会问:1 层能处理多少所学校,而不是多少名学生。
或许你会问:「为什么不通过全国一个交易来更进一步,反而采用每所学校一个交易的方式呢?」
这个问题触及到了 ORU 可扩展性的天花板:区块燃料限制(block gas limit)。从燃料的角度看,Jamal 发布的数据尽管价格便宜,但始终要消耗燃料。最终,全国所有学校全部数据的燃料总量可能会超过区块燃料限制的上限,在这种情况下,Jamal 就需要分批提交。
因此,从 ORU 中可以挤出的扩展性收益是有上限的。如果要无限扩展,应使用侧链或 Plasma 等,但是,资金就不安全了。
收益,还是收益
收益来自于这样的事实:在理想的情况下,第一层的全节点无需执行埋藏在 ORU 操作者所附加数据内部的交易:
第一层全节点所产生的开销成本更低,因为存储数据的成本要比在其内部运行任何逻辑的成本低得多。
每笔交易的天然气成本更低,因为与执行交易相比,存储数据的天然气成本更低。
ORU 与侧链 /Plasma/State Channel 有何不同?
不同于自 2014 年出现至今仍未获得任何前进动力的侧链,ORU 链由第一层保护。
如果在 ORU 链上进行交易,例如,玩扑克或交易代币,资产的安全性则等同于在第一层本身(例如,以太坊主网)进行交易。当发生欺诈时,尽管可能会遇到不便,例如,等待一两个星期才能释放资金,但是第一层仍然可以保证资金的安全。
相反,如果在侧链上进行交易,则侧链上的矿工(PoW)或验证人(PoS)有能力窃取资金,因为无论第二层上在进行什么,他们可以随便地欺骗第一层。而第一层没有任何办法知晓下面的情况。
区别于 Plasma 和 State Channel,ORU 的反欺诈证明机制十分简单,任何人都可以提交。举报人拥有第一层上所有可用的数据,可以向 ORU 智能合约举报欺诈情况,并以此获得奖励。通常,在 Plasma 和 State Channel 中,用户有责任保证其资金的安全,并且必须「关注着」第一层上的情况,以防操作员或其他用户尝试欺诈性地退出。
执行摘要
Optimistic Rollup 链实际上只是(1)以太坊主网等第一层链上的智能合约,以及(2)区块生产者(block producer),负责侦听专用 P2P 网络上的交易,将其批量处理成一大串数据,然后连同证明其有效性的签名一并发布到链上。
如果操作者在进行审查,则合约可直接接受用户的交易。这样的话,当操作者进行欺诈或不做出反应时,用户便可以带着自己的资金安全地退出 ORU。而且更重要的是,如果确实存在欺诈,合约可核实欺诈索赔,扣除操作者的保证金。
检举人只需要附加至 ORU 交易的全部数据便可发现并举报欺诈行为,这是一定的。第一层全节点永远不会执行附加数据中的内容(除非有人举报欺诈行为),而这正是可扩展性收益的来源。对于第一层而言,这些数据只不过是需要永久保留的二进制块。
在接下来的文章中,我将介绍一些以太坊「杀手」、DeFi 所追求的治理与预言机风险最小化、可自动调节的稳定币,或者更大胆一些完全无治理、无预言机,以及某些项目的对照。
感谢 Takahiro Kido 的歌曲,伴随了本文的创作。感谢 Harry Kalodner 提供的反馈意见。