Назад к новостям

主网三周年特辑 | 全面兼容以太坊生态的Ontology EVM


早在今年伊始,本体技术团队开始了本体版本 EVM 的研发。在已有的三种多虚拟机(NeoVM、Native 和 Wasm)的基础上,增加最具有广泛适用性的 EVM(以太坊虚拟机)。目标是尽可能保持本体和以太坊平台的无缝衔接,带来对开发者与用户高度友好的体验。


时值本体主网上线三周年之际,我们宣布 Ontology EVM 开发完成,现有版本新增以太坊账户体系以太交易类型和 Web 3 API 等,同时对虚拟机层和交易池等进行优化增强,并对区块链浏览器进行同步更新。


更多设计与开发细节请锁定下方。


01 关于 EVM


EVM 简介


根据以太坊的官网定义,EVM 指的是“处理交易的计算机”(The computer that processes transactions)。在2021年5月更新的介绍中,开发人员@endorphin 写到:


EVM 的物理实例不能用类似于云或海浪的方式描述,但它确实作为一个单一实体存在,由运行以太坊客户端的数千台相连的计算机维护。


以太坊协议本身仅仅是为了保持这种特殊状态机的连续、不间断和不可变操作而存在,这是所有以太坊账户和智能合约存在的环境。在链上的任何制定区块中,以太坊都有且仅有一个“规范”状态,EVM 定义了从一个区块到另一个区块计算新的有效状态的规则。



Ontology EVM 简介


Ontology EVM 是一个兼容以太坊生态的虚拟机,采用原生的数字资产(ONG)作为链上手续费,提供整个生态中相对较低的手续费消耗,致力于实现与以太坊生态完全兼容。


02 设计与开发设计


初衷与目标


本体的智能合约体系采用通用的多虚拟机方案,早在2020年中已率先支持 NeoVM、Native  Wasm三种合约。考虑到领先区块链平台以太坊拥有强大的链上生态与社区基础,在本体平台上增加 EVM 虚拟机支持将为广大开发者提供更多便利,让更多用户体验到功能丰富、生态兼容的本体平台。


Ontology EVM 设计的目标是尽可能地保证本体和以太坊平台的无缝衔接,并不是照搬或雷同,而是做到高度一致,从而显著降低开发者的迁移成本,同时避免对本体平台本身的较大程度的更改,使得生态发展具备连贯性


开发过程与结果


经过技术团队的深入调研,在为期1个多月的集中开发和1次版本迭代后,实现了2个平台无缝衔接,保证了其中的高度兼容。在功能方面,进行了浏览器的更新,支持以太坊账户体系、底层使用、RPC 远程过程调用和 Web3接口增加。

为此,技术团队在以下几个部分进行了增强:


注:Ontology 与 Ethereum 在此章节特指技术平台。


1)账本层的账户体系  


Ontology 的底层账本状态只存储合约数据,账户数据都分散存储在各个合约存储区,包括原生的 ONT 和 ONG 合约。而 Ethereum 账本状态由两层的 MPT 构成,第一层为账户状态,包含账户的 Nonce(Number only used once,只使用一次的非重复的随机数值),Ethereum 余额和账户数据的状态根,第二层为合约账户的键值对数据。由于两者之间有较大的差异,采用 Ethereum 的方案将导致对 Ontology 的大量破坏性更新。



因此,本体技术团队另开辟一份存储空间,用于专门存储与 Ethereum 交易相关的账户的 Nonce 和合约代码。而合约账户的键值对数据和现有的 Ontology 版本保持一致,既兼顾了 Ethereum 功能,也保证了 Ontology 本身的兼容性。


2)虚拟机层


在现有的多虚拟机体系之上,Ontology 可以方便地添加 EVM 支持。绝大多数指令完全和 Ethereum 平台上的 EVM 指令相同,少量 EVM 指令如 COINBASE、DIFFICULTY 等只特定于 Ethereum 的共识,在本体上采用默认值,由于在 dApp 中使用比较少,因此在实际应用中大部分合约都可以做到无缝迁移



我们提供了现有 NeoVM、Wasm 虚拟机对 Ontology EVM 调用的支持,方便已有的合约应用和 EVM 应用的交互,同时为了避免对 EVM 进行扩展分叉,Ontology EVM 暂时没有提供 EVM 的跨虚拟机调用支持。


3)交易结构


Ontology 的交易结构本身是一个可扩展的设计,可以按需添加交易类型的支持。我们在现有的交易类型基础上增加了 Ethereum EIP-155交易的支持,这样现有的 Ethereum 生态钱包签发的交易都可以被 Ontology EVM 所接受。


4)交易池更新


Ethereum 的交易落账顺序必须按照账户的 Nonce 值进行递增。为保证这一特性,我们在交易池中专门为 EIP-155的交易维护了一份列表。只有满足条件的交易才会被打包进区块。


5)Web 3 API


Ontology 目前提供了 RESTful、JSON-RPC 和 WebSocket 等丰富的接口。而目前 Ethereum 生态中的合约开发工具,钱包和 dApp 应用等都使用 Web3的 API,因此我们额外开发了一个接口的适配层来支持 Web3的 API,使得 Truffle、Remix 和 MetaMask 等合约开发工具和钱包能够直接用于 Ontology dApp 的开发。


03 优势分析


Ontology EVM 的发布,让用户得以一站式使用基于 Ethereum 平台的数字钱包等应用。


对于开发者而言,使用 truffle、remix 等合约开发工具更加便捷,从而实现2种链的无缝衔接,体验更兼容的链上生态。


目前,Ontology 合约开发具备多项领先优势:


- 合约支持:提供包含4种合约(NeoVM、Native、Wasm、EVM)的 Multi-VM,属行业前列;

- 费率 & 速度:用户在本体链上即可体验 Ethereum 生态;

- Wasm 支持:Wasm 自上线以来运转良好,性能表现优秀。


04 结语


在2020年发布 Multi-VM 时,本体技术团队曾表示:“在区块链领域中,虚拟机(VM)技术的目标是打造一个适用于所有业务的智能合约执行环境。但是从技术角度来说,合约的执行效率、所支持业务的复杂程度和跨系统协作的能力都是非常关键的因素。在这一过程中,不同 VM 的实现有不同的适用范围,Ontology Multi-VM 致力于满足更广泛的业务需求,带来更高的执行效率与更低廉的 Gas 费用。”此次 Ontology EVM 的设计与发布是实现这一目标的重要体现,将带来更多业务场景拓展。


本体技术团队将在 Ontology EVM 底层功能基本完备的前提下,进行更多 Ethereum 工具链的兼容性测试和增强,进一步满足数据可信交互的需求,为开发者和用户带来更加便捷与高效的使用体验。