Skip to content

Latest commit

 

History

History
20 lines (11 loc) · 1.92 KB

overview.md

File metadata and controls

20 lines (11 loc) · 1.92 KB

概览

关于 flexEmu

随着链上交易量增多,Layer2 成为解决扩容问题的一个重要研究领域,其中 optimistic rollup 这一方向已经有了落地的解决方案,比如 Arbitrum (后称 arb), Optimism Cannon (后称 op)。

arb 和 op 都采用了交互式的链上仲裁技术。交互式的意思是,挑战者在一层不断的挑战出块者在执行区块时产生的中间状态,直到双方在某一个中间指令的执行结果上出现分歧,抑或是最终没有分歧。这种仲裁手段要求 Layer2 的虚拟机能够保存执行区块过程中产生的中间状态的证明,抑或是能够在某次指令执行时进行中断,并保存当前状态的证明。

因为不同的optimistic rollup 解决方案可能使用了不同的虚拟机,比如, Arbitrum 自己研发了 AVM。为了生成中间状态证明,不同的虚拟机可能需要定制自己的状态证明技术,且通用性比较差。虽然 optimistic rollup 的技术原理基本上都是一样的,但现如今,公链多点开花,应用也百花齐放,智能合约语言也呈快速演进趋势,为某个公链实现基于某种智能合约语言的 optimistic rollup,仍然需要在工程中付出很多重复性的工作。

基于此,我们试图实现一个通用的可验证的合约执行环境。该环境基于 Linux 系统,可模拟不同 CPU 指令架构的代码执行,并生成对应的中间状态(寄存器+内存数据)以及状态证明。整体思路受 Cannon 的启发,并借鉴了 Qiling 框架的部分实现。

和 Qiling 不同的是,区块链中的合约执行环境相对简单,没复杂 I/O 的外部交互,也无需考虑系统隔离性。另外,qiling 缺少中间状态生成以及状态证明,这是做交互式仲裁所必须的功能之一。

我们把这个合约执行环境称作 flexEmu。

更多资料

可以阅读项目文档