Opside白皮书V2发布:引入多链ZK-PoW机制
什么是 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 的提交者,也就是矿工。
1.提交 proofhash:在一个时间窗口内,对于某个 sequence,允许多个矿工参与 zero-knowledge proof 的计算。各个矿工计算出 proof 之后,并不直接提交原始的 proof,而是计算(proof / address)的 proofhash,并向合约提交 proofhash。
2.提交 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 + 1 TB RAM 组成的机器集群,测试交易稳定在 27.8 TPS 约 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 是一个合作共建的经济体,并随着时间推移而不断发展演化。未来的改进会以 DAO 提案的形式详细地解释这些方案是如何给 Opside 经济的长期利益和每个参与者类别带来好处。随着网络的发展,打造一个无需大量工具和补贴亦可以独立且稳健运行的经济至关重要。