一文解读Opside白皮书V2
什么是Opside
Opside 是一个去中心化的ZK-RaaS (ZK-Rollup as a Service)平台,也是支持ZKP(零知识证明)挖矿的PoW网络。Opside采用PoS & PoW 混合共识,为Web3开发者提供了一键生成zkEVM应用链的功能。同时,数量众多的ZK-Rollup带来的ZKP计算任务也产生了巨大的算力需求,从而为全球矿工提供了一个有意义的挖矿场景。
在扩容领域,L2 的概念并不陌生。但L2不能很好地统筹各种类型的硬件资源,例如数据可用性、ZKP算力、打包节点等。此外,运营一个L2,尤其是ZK-Rollup,需要很高的硬件维护成本以及专业技术门槛,因此很多开发者望而却步。针对这些问题,Opside首次提出了ZK-RaaS的概念,开发者无需掌握ZK或者链节点的知识,也可以在一分钟内启动一条属于自己的zkEVM链。同时,Opside还提出了ZK-PoW的概念,引入矿工这个角色来参与zkEVM节点的维护和ZKP的计算。
Opside的宗旨是让ZK-Rollup变得更加友好和大众化,从而使得以zkEVM为基础的应用链大规模落地成为可能。
ZK-Rollup as a Service:对于开发者,可在多链上一键部署属于自己的ZK-Rollup(zkEVM)
Opside ZK-PoW Cloud:对于矿工,Opside也是一个多链的PoW协议,支持ZK挖矿,为多个公链上的ZK-Rollup生成零知识证明。
ZK-RaaS
ZK-RaaS (ZK-Rollup as a Service) 可以为任何人提供一键生成 ZK-Rollup的服务。
Opside 提供通用的 ZK-Rollups launchbase,开发者可以通过launchbase轻松地部署不同类型的ZK-Rollups到不同的base chain上。
base chain,包括Ethereum/Opside chain/BNB chain/Polygon PoS等公链。
ZK-Rollup类型,包括zkSync、Polygon zkEVM、Scroll、StarkNet 等zkEVMs,以及其他种类的ZK-Rollups。
在每个base chain上,Opside都会部署一个Rollup系统合约(Rollup System Contracts,RSC),来管理该链上的Rollup的生命周期,包括注册、中止与退出等操作。开发者花费一定数量的IDE(Opside token)租赁一个Rollup slot,即可拥有一个ZK-Rollup。
Rollup slot的概念类似于波卡插槽或者cosmos的应用链,但是cosmos应用链需要自己维护一套共识层以及跨链桥,这带来了极大的安全风险。而ZK-Rollup采用了ZK技术,在数学意义上严格地保证了Rollup和base chain 共享了同一个共识和数据可用层,安全性更高,更加去中心化,维护成本也更低。
开发者租赁了一个Rollup slot后,即拥有独立的运行环境,例如,开发者可以单独拥有一条zkEVM链。开发者对ZK-Rollup拥有主权,可以自定义rollup经济模型,包括选择gas token。开发者可以自由调整gas费用,甚至是0,这样用户不需要支付任何费用。
开发者不需要承担任何硬件成本。所有的硬件资源,包括数据可用性、sequencer、ZKP算力等,皆由下面的Opside ZK-PoW cloud来去中心化地提供。
此外,同一个base chain上,各个 ZK-Rollups之间可实现原生的跨rollup 通信。跨rollup通信是一种消息通信机制。也就是说,一个rollup上的地址,可以直接调用另一个rollup上的合约。这极大地解决了用户资产碎片化的问题,增强了应用之间的可组合性。
Opside ZK-PoW Cloud
ZK-Rollup 和 OP-Rollup 相比,有很多优点,包括更安全、无需信任以及更快的提款速度。同时技术上也有一个非常大的不同,就是ZK-Rollup额外需要有一个强大的ZKP算力来支撑零知识证明的生成。
多链的ZK-PoW机制
Opside ZK-PoW Cloud会部署到多链上,包括但不限于Ethereum、BNB Chain、Polygon PoS以及Opside Chain本身。在Opside的设计中,开发者可以在上述不同的base chain上部署ZK-Rollups。随着ZK-Rollup技术的逐渐成熟,未来可能会诞生成百上千个ZK-Rollups,这将带来极大的ZKP算力需求。因此,我们需要激励矿工加入这个生态来做出贡献。从以太坊 PoW 转向 PoS 以后,有很多以太坊矿机失去了应用场景,从资金规模上来讲,矿机的价值就有 120 亿美元,目前很多都处于闲置的状态。随着ZK-Rollup大规模落地,ZKP的生成需要大量的 CPU、GPU、FPGA等硬件和矿机来提供计算能力。
Opside使用 ZK-PoW 机制来激励 Miner 提供 ZKP 算力,从而为 ZK-Rollup 提供完整的硬件设施。这也是 Opside 核心思想之一。所有角色,包括用户、开发者、矿工,都能够在这个 Opside 经济模型当中获得利益。
ZKP的两步提交算法:标准的去中心化Prover机制
为了鼓励更多矿工同时参与ZKP的计算任务,Opside提出了一个两步提交的ZKP验证机制。一个ZKP对应的PoW奖励份额,会按照一定规则分配给有效ZKP的提交者,也就是矿工。
提交proofhash:在一个时间窗口内,对于某个sequence,允许多个矿工参与zero-knowledge proof的计算。各个矿工计算出proof之后,并不直接提交原始的proof,而是计算(proof / address)的proofhash,并向合约提交proofhash。
提交ZKP:在时间窗口后,矿工提交原始的proof,并与之前提交的proofhash进行验证。验证通过的矿工都可以得到PoW奖励,奖励金额按照矿工质押量的比例来分配。
更多细节请参考 ZKP's Two-Step Submission Algorithm
优化的ZKP生成算法:矿工效率提高了80%
Rollup的智能合约验证ZKP的时候,如果提交的是原始proof数据,就有可能引发链上攻击行为。为了防止恶意攻击行为,ZK-Rollup往往需要进行额外的工作量来隐藏原始的proof数据。有一种解决方案是,矿工提交的ZKP包含了对矿工地址的聚合结果。Opside提出的ZKP的两步提交算法,则巧妙地采用了先提交+后验证的模式,不再需要对proof和地址做类似的不必要的聚合计算。
此外,在一些开源的zkEVM中,ZKP的计算与提交都是串行的。当ZK-Rollup提交了大量的sequence时,矿工无法同时计算多个ZKP。在Opside中,ZKP的两步提交算法实现了ZKP的并行计算与串行提交,允许矿机同时执行多个ZKP生成任务,从而大大加速了ZKP的生成效率。
Opside团队还对ZKP递归聚合算法进行了一系列的优化,充分提升了集群内机器资源的利用率,进一步提高了ZKP的计算速度。
在实际的压测环境中,矿工拥有20台128 core CPU + 1TB RAM组成的机器集群,测试交易稳定在27.8TPS约40分钟。在相同条件下,Opside将交易的平均确认时间从约5-6分钟降低到了约3分钟,ZKP生成效率提高了约80%。在未来,随着更多ZK-Rollup以及矿工的加入,ZK算力市场的需求端和供给端的规模将进一步扩大,Opside的PoW算法带来的效率提升将体现得更加明显。
Opside Chain
Opside Chain作为base chain之一,除了支持Opside ZK-PoW Cloud以外,还针对ZK-Rollup做了更多的优化。例如使用预编译合约进行ZKP加速验证,支持数据分片,采用基于 ETH 2.0 的 PoS 共识。未来还将支持EIP-4844、DankSharding等全分片方案,将Rollup的Gas费用降到最低,甚至是0。
以太坊现在是全球最大规模的去中心化网络,有超过 50 多万个节点。这些节点不但提供了大规模的去中心化,在未来,得益于数据分片技术,这50多万个节点也提供了海量的数据可用性。
Opside Chain的灵感来自于以太坊,这也是 Opside 选择基于 ETH 2.0 的 PoS 共识来改进的原因之一。我们预期 Opside Chain上将拥有超过10万多个节点。
对于Rollup来说,如何让sequencer更加去中心化,而不是由一个单节点去完成中心化的打包?一个很好的做法是让 Opside Chain 的区块提议者同时提议 Rollup Layer 的区块。对于 Rollup Layer 来说,实际上就是完成了 builder 与 proposer 的分离:builder 是无需许可地由一个 P2P 网络来支持,proposer 则沿用了 Opside chain 的区块 proposer,这样避免了单节点带来的可用性风险,同时也具有一定的抗 MEV 性和抗审查性。
因此Opside Chain提供标准化的去中心化sequencer机制,Opside Chain 的区块提议者同时负责提议 Rollup 的区块。Opside Chain让 ZK-Rollup 不但能继承上一层的安全性,还继承了上一层的去中心化程度。
下面是Opside Chain的 PoS & PoW 混合共识:
Opside chain
PoS:Opside 将采用以太坊 2.0 的 PoS 算法,并对其进行必要的改进。任何人都可以持有Opside token代币并成为 validator。validator 可以在 Opside chain 中获得区块奖励和 gas 费用。
Rollup layer
PoS (Sequencer):validator 不仅提议 Opside chain 区块,还提议 Rollup layer 区块 (即data batch)。因此 validator 同时也是 Rollup layer 中 rollup 的 sequencer。sequencer 可以从 Rollup layer 交易中的交易费中赚取 gas 费用。
PoW (Prover):任何人都可以成为 Rollup layer 中 rollup 的 prover,只要它具有足够的计算能力进行 ZKP 计算。根据 PoW 规则,prover 根据 sequencer 提交的 Rollup layer 区块生成 zk 证明。
一个 ZK-Rollup 就类似于一台电脑。电脑是有两个核心组件,一个是硬盘,一个是 CPU。PoS 提供的数据可用性就相当于是硬盘,PoW 提供的算力就相当于是 CPU。Opside Chain 需要做的是在 PoS 与 PoW 当中找到一个平衡,从而让每一个角色都能充分发挥价值并从中受益,让大规模的 ZK-Rollups 网络有更好的性能和体验。
代币的供应与需求
Opside token称为IDE,IDE将通过PoS与PoW奖励的形式来增发,分别对应 Validator 和 Miner。在 Pre-Alpha 测试网阶段,PoS 与 PoW 的区块奖励比例暂时固定为1:2。在未来,这两者的比例会随着整个网络的 ZKP 算力供需关系动态调整。
PoS
如上所言,Opside Chain采用了基于 ETH 2.0 改进的 PoS 共识。要作为 Validator 参与,用户必须将一定量的 IDE 存入存款合约,并运行三个独立的软件:执行客户端、共识客户端和 Validator。这些 Validators 负责检查通过网络传播的新块是否有效,并偶尔自己创建和传播新块。如果 Validator 行为不诚实或懒惰,那么抵押的 IDE 将作为抵押品被销毁。
在 PoS 下,Opside Chain 的出块速度是固定的,时间分为 slot(12 秒)和 epoch(32 个slots)。在每个 slot 中随机选择一个验证者作为区块提议者。该 Validator 负责创建新块并将其发送到网络上的其他节点。同样在每个 slot中,随机选择一个 Validator 委员会,其投票用于确定所提议区块的有效性。具体机制请参考 ETH PoS。
Opside Chain 预期在 Alpha 测试网支持 EIP-4844,数据可用性抽样(DAS) 将用于确保 ZK-Rollup 在执行后提供其交易数据,同时不会对任何单个节点造成太大压力。每个 Validator 随机抽取 blob 中提供的交易数据,以确保所有数据都存在。同样的技术也可以用来确保区块生产者将他们所有的数据提供给安全的轻客户端。同样,在提议者-构建者分离(PBS)下,只需要区块构建者来处理整个区块——其他验证者将使用数据可用性抽样进行验证。
在一些具体参数上,Opside将有所不同,读者可以在代码库里找到最新的值。
总的来说,Staking 使个人更容易参与保护网络,促进去中心化。Validator 节点可以在普通笔记本电脑上运行。一些代理质押池甚至允许用户在没有足够 IDE 的情况下进行质押。
ZK-PoW
基于Opside提供的ZK-Rollup launchbase,开发者可以选择在一个base chain上拥有一个专属的 ZK-Rollup。为了支撑数量众多的 ZK-Rollups 带来的海量硬件资源的需求,Opside 提供了一个统一的 ZKP 算力市场,鼓励 miner(也就是prover)来为这些 ZK-Rollups 生成 ZKP。这就是 Opside 的 ZK-PoW 机制。
单个Rollup sequence的奖励份额计算
ZK-PoW是一个多链协议,这意味着PoW奖励将在各个base chain上发放,包括Etheruem,Opside Chain,BNB Chain,Polygon PoS。每个base chain的PoW奖励数量取决于对应的Rollup slot注册数量、ZKP工作量等。
对于每个base chain,一个区块内,每个Rollup只能提交一个sequence(可以包含该Rollup的多个区块)。各个sequence均分当前区块的PoW奖励。这也就意味着,如果在base chain的一个区块中,有4个Rollup提交了sequence,则PoW奖励被均分为4份,每一个sequence获得的奖励为区块PoW奖励的1/4。当然,可能在某些区块没有任何Rollup提交sequence,因此PoW实际的通胀可能会低于预期。
在未来,各个sequence将根据对应的ZK-Rollup类型、所包含的Rollup交易数量、gas使用量等进行工作量预估,从而对不同sequence进行不同的定价。
Prover的质押与惩罚
为了避免prover相关的恶意行为,Prover需要在一个特殊的系统合约中注册,并质押代币。Prover可以自由选择参与一个或者多个Rollup的PoW挖矿。Prover需要在系统合约中为每一个要参与的Rollup质押一定量的IDE(Opside token),才可以为该Rollup提交ZKP。如果当前质押数量小于阈值,则不允许为该Rollup提交ZKP。prover提交ZKP获得的奖励也将依据质押量比例来分配,从而避免prover多次提交ZKP的恶意行为。
当prover出现以下行为,会进行不同程度的惩罚:
如果prover提交了错误的hash
如果没有ZKP通过验证,则所有提交过hash的prover都将被惩罚
罚没的Opside token将被烧毁。
关于ZKP的两步提交机制更多的细节与考量,请读者参阅官方文档。prover质押以及惩罚的具体数字在未来可能会改动。
开发者租赁Rollup slot
在各个base chain上,Opside部署了ZK-PoW协议,开发者可通过ZK-Rollup launchbase一键注册一个Rollup slot,从而启动属于自己的ZK-Rollup。该ZK-Rollup所有的硬件资源都由Opside去中心化网络来提供。开发者需要向Opside网络支付Rollup slot的租金,这部分租金将直接烧毁。
除了一个固定金额的租金以外,开发者还可以为自己的ZK-Rollup提供额外ZKP补贴,以激励矿工提供算力。
具体的租金与补贴规则与参数,读者可以在官方文档或者代码库里找到。
治理与发展
Opside网络的功能和性能将随着时间的推移而不断发展,以下为几个优先级更高的示例:
根据整个网络的ZKP算力供需关系,动态调整PoS与PoW的奖励分配比例
Validator的数据分片与数据可用性抽样,将为整个Rollup Layer提供更加丰裕的存储空间,从而容纳更多的ZK-Rollup生态
Rollup的提议者与构建者分离,使得Rollup layer共用Opside chain的validator作为区块提议者,继承上一层的去中心化
矿工的质押与slash机制的优化,鼓励矿工提供持续而稳定的ZKP算力
应用开发者对所属Rollup的ZKP生成进行补贴,以激励矿工提供算力
根据ZK-Rollup类型、Rollup交易数量、gas使用量等进行工作量预估,建立Rollup batch的个性化定价机制
这些改进将显著提高Opside的网络效用,从而促进ZK-Rollup as a Service的长期发展以及繁荣。
Opside主网启动后,建立一个Opside DAO,包含合理的流程和机制来共同决定网络的未来。Opside主网的所有参数和机制的更新将通过Opside DAO来确定。需要强调的是,Opside是一个合作共建的经济体,并随着时间推移而不断发展演化。
Scan QR code with WeChat