Itachi:完全去中心模块化 Appchain Sequncer
2024-04-0523:10
Reddio
2024-04-05 23:10
Reddio
2024-04-05 23:10
收藏文章
订阅专栏

Neil Han

读完需要

11
分钟

速读仅需 4 分钟

"Itachi"引入了革命性的、完全去中心化的定序器框架,专为 Layer 2(L2)/Layer 3 应用链(Appchains)量身定制,首先与 Starkne 集成。它建立在由 Reddio 团队用 Golang 开发的 Yu 框架 ( https://github.com/yu-org/yu?ref=blog.reddio.com ) 之上,以模块化和高度可定制能力著称,与 Substrate 或 Cosmos SDK 相比,是一个对开发人员更加友好的框架。Itachi 简化了用户的交易流程,确保交易的合法性,并为共识和执行做好准备,包括检查签名有效性和防止重放攻击。

Itachi 功能的核心是其共识机制,定期生成 L2/L3 区块,通过 CairoVM 执行,并确保与 Cairo-state 无缝同步。这一过程凸显了 Itachi 在处理交易、存储区块数据以及通过生成证明和数据可用性(DA)数据构建与第一层对接方面的效率。

展望未来,Itachi 源代码的发布将使开发人员有能力扩展其功能,开发人员完全可以集成 EVM/ZK 模块作为 L2/L3 的完美解决方案,或集成 BitVM/ZK 模块构建 BTC L2,甚至集成 Solana VM 作为 Solana Layer 2。此外,Itachi 还为 Reddio 自己的 Starknet 兼容 zkVM Layer 2 提供了极高性能,使 Starknet 智能合约无需修改即可无缝部署到 Reddio 的 zkVM Layer 2 中。一旦各个模块准备就绪,您会看到Reddio 的 Layer 2 华丽转身为集成了 CairoVM/EVM/Solana VM 的VM 合一的Layer 2。

现在,让我们深入了解一下 Itachi 是如何做到这一点的。

1

   

定序器的构成

1.1

   

概述

定序器是 L2 中非常重要的角色,在 zk-rollup 架构中,定序器的核心功能是负责给交易排序、执行交易、委托给 prover 生成证明,再将证明和数据发送至 L1。

定序器实质也是一个带有特殊功能的应用区块链, 除了传统区块链所必须的几个组件以外,它还需要有 和 zk-prover 对接的功能,和 L1 DA 对接的功能,对于 starknet 这样的生态来说,还需要能够兼容 cairo 合约的 cairoVM。如果想实现更多特色的功能:如定制共识、定制 交易打包方式,那还需要更多的模块来实现,而这些功能模块往往都不是能通过智能合约就能完成的。

因为重新写一个区块链的成本过高,很多 rollup 的定序器都是 fork go-ethereum 的源码并进行不同程度的魔改或者封装,以便尽可能地复用 go-etherem 的底层组件。

但是对于 madara 和 itachi 来说, 我们使用的是区块链框架来完成。其好处是,一些链的底层组件和定序器需要添加的核心功能之间可以实现解耦,如此,一旦需要修改、添加功能,可以以更低的成本进行开发迭代。

与 Madara 用的 Substrate 框架不同的是,Iitachi 使用的区块链框架是由 Reddio 团队开发的 Layer 2 原生框架 GitHub - yu-org/yu: Yu is a highly customizable modular blockchain framework. ,一个由 Ggolang 开发的高度可定制的模块化区块链框架,它给开发者提供了 web API 一般的开发体验,使得开发者可以更加轻松的上手对区块链的开发。让我们以一个区块链的角度大致看下兼容 cairo 合约的 sequencer 的运行机理和流程:

1.2

   

User

  1. 用户通过 RPC 将交易发到 sequencer,交易也可能是从 P2P 网络中接受到来自其他节点广播来的

  2. sequencer 通过 rpc 接收到交易后,会先对交易进行合法性检查和预处理,例如:

    • 签名是否合法

    • 交易数据的体积是否过大

    • 交易是否有重复(防止重放攻击)……

  3. 当交易数据通过检查之后,会被放入 txpool(交易池)中,并同时通过 P2P 网络广播给公网中其他节点

1.3

   

共识

  1. 通过共识系统,sequencer 会定期产出 L2 block,会从 txpool 中批量打包一定数量的交易放在区块中,并将该 block 通过 P2P 网络广播给其他节点

  2. 接下来,打包后交易后的 block 会交给 cairoVM, cairoVM 依次执行 block 中的交易,并将这些交易执行的状态同步到 cairo-state 中

  3. cairoVM 执行完后返回的 actualFees,trace 等数据,会先构建出一部分例如 state-root 的数据填入 block 中,完整 block 被构建完成之后,会被放入 blockchain 的末尾中存储

1.4

   

对 Layer1

  1. 根据执行完后的 block 和 stateDiff 构建 DA 数据,并发送到 DA 层

  2. 每当有新的 block 被执行完后,将其送往外部的 prover,让其生成 zk-proof 并上传到 ETH L1 进行 verify

2

   

我们如何构建定序器

现在,我们来看看 yu 的流程和其构成

  1. 从客户端发起一个交易到链上, 会先经过 txpool 的检查, 当检查通过后才会被放入交易池当中 并且 广播给其他区块链节点。从 P2P 网络里接收到来自其他节点广播的交易,检查通过后放入 txpool 中(不再广播)

  2. land 运行,开始生成区块,并且对区块进行一系列的处理:包括挖矿出块、广播、验证来自其他节点的区块、执行区块内交易、将区块存入链 等等。在这个过程中 可以自由控制的事情有非常多,你可以通过它实现你想要的任何共识协议、出块时间、打包交易方式、选择何时执行交易 等等。与 blockchain, txdb, state 的交互也在这个过程中。

每个区块经过 land 内所有 自定义 tripod 的逻辑之后, 会进入下一个区块阶段,生成下一个区块并处理,周而复始下去。

下面我们看下,yu 的组件构成:

2.1

   

核心组件

以下的 blockchain,txdb,txpool 均为 interface, 内置默认的实现, 如果开发者有特殊需求,可自行重新实现 interface

  • blockchain: 链结构,负责存储区块数据 并 组织链结构与分叉逻辑。

  • txdb: yu 的数据库,存储所有区块中的具体交易数据、 交易执行后的 receipt 等

  • txpool: 交易池,负责验证和缓存从外部发来的交易。

  • state: 存储状态, 储存着每个交易执行后的状态。

  • tripod: 运行区块链 和 供开发者定制逻辑 的 基本最小单元, 开发者可以定制多个 tripod 并将他们排序组合装载入 land 里供框架调用。这是整个框架的核心所在。

tripod 中有最重要的两个函数是 writing 和 reading:

  • writing 是供开发者自由定制实现的,并且会被全网的节点共识 和 执行。比如在 starknet 中, declare/deployAccount/invoke/L1Handle 这 4 类 tx 就是需要通过 定制 writing 来实现。

  • reading 也是供开发者自由定制实现的,它并不会被全网共识,只会在本地节点上执行。比如在 starknet 中,call tx 操作就需要 通过定制 reading 来实现。

2.2

   

底层组件

  • storage: 存储层,支持 kv、sql、 fs 等多种形式的存储,且均为 interface,开发者可以指定需要的存储引擎(比如 kv 目前具备 pebble 和 boltdb 两种存储引擎) 目前 state 内的存储是用 pebble 实现的, 而 blockchain 和 txdb 内的存储使用 sqlite 实现的

  • p2p: 点对点传输网络,用来发现网络中的节点以及传播交易和区块等。

  • crypto(keypair): 公私钥的非对称加密算法,目前支持 sr25519 和 ed25519。该组件以 interface 形式,可自行扩展其他加密算法。

综上,yu 已经为我提供了区块链所必备的一些组件给开发者调用。我们基于此,只需要实现一些定序器特有的模块功能即可。对于一个 starknet 定序器而言,我们当然需要这个定序器能够执行 cairo 合约。cairo 合约的运行需要 cairoVM 和 cairo-state 的参与,那我们就需要让定序器集成 cairoVM 和 cairo-state, 那我们就需要使用 yu 开发一个叫【cairo】的 tripod,让它能够调用 cairoVM 执行合约。同时,再使用 POA tripod 来作为我们现阶段 sequencer 的共识。注意:POA 是 yu 自带的一个默认实现的 tripod,我们无需从 0 实现,直接引用即可。不过,POA 只是为了过渡到去中心化网络而用的, 后续我们会开发全新的 L2 共识来替换掉 POA。

我们来看一下其中的【cairo】 tripod 核心逻辑的大致实现 ( 细节省略 ):

随后,将【cairo】和 【POA】两个 tripod 导入 yu 的启动函数中:

如此,一条兼容 cairo 合约的 sequencer 便轻松完成了。其总览图大致如此:


   

下一步计划

我们将在两周内发布源代码,届时开发者将可以试用,并开始为定序器添加更多模块,如 EVM/ZK prover 模块作为 ZK Layer 2,BitVM/ZK 模块作为 BTC Layer 2, 甚至 Solana VM 模块作为 Solana Layer 2。如果你对 Appchain 不感兴趣,我们将推出由 Itachi 定序器驱动的 zkVM Layer 2,你可以使用相同的工具包将你的 Starknet 智能合约顺利部署到 Reddio zkVM Layer 2 上,而无需进行任何修改,快来试试我们由 Itachi 驱动的高性能 zkVM Layer 2 吧!

一旦各个模块准备就绪,您会看到 Reddio 的 Layer 2 华丽转身为集成了 CairoVM/EVM/Solana VM 的多 VM 合一的 Layer 2。

关注我们的公众号,随时了解所有更新。


【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

专栏文章
查看更多
数据请求中

推荐专栏

数据请求中

一起「遇见」未来

DOWNLOAD FORESIGHT NEWS APP

Download QR Code