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

本体技术视点 | 关于本体EVM合约开发,你必须知道的事(一)


今日,专注为 Web 3.0提供去中心化身份和数据解决方案的高性能低费率区块链平台——本体,宣布支持 EVM 的测试网正式部署并向全球开发者开放 EVM 兼容公测。同时,与知名代码审计机构慢雾科技合作发布《本体安全漏洞与威胁情报赏金计划》(https://slowmist.io/en/ontology/)正式启动,上报单个有效漏洞奖励最高可达12,000美金。



通过对 EVM 虚拟机的集成,本体实现了对以太坊生态的全面兼容。目前本体测试网已经支持 EVM 合约,和以太坊链的节点调用方式,开发者可以直接在本体测试网上上使用 Truffle,Remix 和 Web3.js 等 EVM 开发工具进行 dApp 部署。


作为开发者的你,是否已经跃跃欲试了呢?为方便广大社区开发者们能够快速便捷地熟悉本体 EVM 开发环境,我们特地为您准备了这篇“葵花宝典”,详细介绍关于本体 EVM 合约开发,你必须知道的事!


第一部分 网络详情  


在使用本体 EVM 之前,我们先了解下和本体 EVM 相关的 ChainID、RPC URL、浏览器地址等配置信息。根据这些信息,可以配置 MetaMask 钱包连接到本体网络。  


值得注意的是,由于本体 EVM 中 ONG 精度(9位)和 Metamask 支持的精度(18位)不同,在 Metamask 中显示会有问题。推荐使用 “Ontology Bridge“  (https://bridge.ont.io/transfer) 查询 ONG 余额或进行转账。Ontology Bridge 的测试网链接为:https://bridge.ont.io/testnet/  


1. 节点网络


主网信息

  



测试网信息




注:在使用 MetaMask 连接到本体网络时,请在 MetaMask 的网络设置中选择”自定义 RPC ”,然后根据网络类型输入并保存配置信息。

  



2. 本体链测试网上的 EVM 资产


资产名    资产地址
  USDT   0x90118d110B07ABB82Ba8980D1c5cC96EeA810d2C
  DAI   0x0b48aF34f4c854F5ae1A3D587da471FeA45bAD52


3. 手续费


本体链上的 EVM 合约部署需要使用 ONG 作为手续费,您可打开链接(https://developer.ont.io/)领取 ONG 测试 Token。  


4. Ontology Bridge


本体网络已通过 Ontology EVM 虚拟机实现了对以太坊生态的兼容。因此,除了原生合约以外,本体支持的合约类型还有 NeoVM 合约、Wasm 合约和 EVM 合约,这也意味着在 Ontology 的系统里面可以存在基于 NeoVM 的 OEP-4 Token 和基于 EVM 的 ORC-20 Token。由于 EVM 所支持的地址格式以及签名方法等和 NeoVM/WasmVM 所支持的不同,所以在 Ontology 系统里的 ORC-20资产(EVM 合约实现,类似于 ERC-20资产) 一定要保存在 Ethereum 私钥对应的地址(0x开头),OEP-4资产(Neovm 合约实现)一定要保存在 Ontology 私钥对应的地址(A 开头),但是作为本体网络的交易手续费 ONG 是个例外,ONG 可以同时存在 Ethereum 账户地址和 Ontology 账户地址。


为了方便本体网络内部的 ORC-20资产和 OEP-4资产在 Ethereum 账户和 Ontology 账户之间互相流通,本体提供了 Ontology Bridge 服务(https://bridge.ont.io/), 该服务是通过在本体网络部署一本 Bridge 合约(Wasm 合约实现)实现 ORC-20 Token 和 OEP-4 Token 在两种不同类型账户之间互相流转。对于 ONG,用户可使用Ontology Bridge(http://bridge.ont.io/transfer)在不同类型的地址之间进行转账。  


Ontology Bridge 合约实现逻辑 


  • OEP-4 Token 换 ORC-20 Token

用户通过 Ontology 的私钥签名调用 Bridge 合约的 oep4ToErc20方法, 该方法将用户的 OEP-4 Token 转给 Bridge 合约地址, 然后把 Bridge 合约地址里的对应数量的 ERC-20资产转移给用户的 Ethereum 私钥生成的地址。

  • ORC-20 Token 换 OEP-4 Token
  1. 用户需要先用 Ethereum 私钥调用 ORC-20 Token 的 approve 方法授权用户 Ontology 私钥对应的地址可以把 ORC-20 Token 转移走的能力。
  2. 用户用被授权的 Ontology 私钥调用 Bridge 合约的 ERC-20 To OEP-4方法,该方法会将用户 Ethereum 地址里面的 Token 转移给 Bridge 合约地址, 然后把相应数量的 OEP-4 Token 转移给用户的 Ontology 地址。


注意,不管是在 OEP-4 Token 换 ORC-20 Token 还是 ORC-20 Token 换 OEP-4 Token 的过程中,用户始终用的是 Ontology 私钥和 Bridge 合约交互,为了把用户 Ethereum 地址里的 Token 转移走,需要用户使用 Ethereum 私钥进行授权操作。在兑换的过程中,切记  ORC-20资产始终存在 Ethereum 私钥对应的地址, OEP-4 Token 始终存在 Ontology 私钥对应的地址。  


关于网络详情的介绍就到这里,下一期我们将为您详细介绍关于本体 EVM 合约开发的环境工具。