译者 | 布加迪
审校 | 重楼
几年前以太坊区块链出现后,由于可以创建智能合约,以太坊区块链逐渐成为开发人员和项目用来创建以前不可想象的新平台和新体验的入口点,比如视频游戏和去中心化金融(DeFi)等。起初,以太坊似乎是最好的区块链,但随着项目和交易数量增加,技术局限性逐渐暴露出来,引发了对其长期可持续性的质疑。
在2016年至2017年期间,随着比特币的局限性显露无遗,一些人和项目开始探索更有效的区块链的替代想法。这与以太坊作为构建去中心化应用程序(dApps)的平台出现时的情况相似。在这方面,值得注意的动向之一是EOS区块链的形成。
其他项目(不是完全创新)通过修改其他参数将以太坊结构作为基础,使其成为理论上更快速更便宜的以太坊版本。
即使对于非专业人士来说,这些区块链令人难以置信,截然相反的情绪源自技术视角,它们具有与EVM(以太坊虚拟机)兼容的优势,实际上允许那些在以太坊上开发某些产品的人将其移植到这些新的所谓的“与EVM兼容”的区块链上,没有太多的问题。
与EVM兼容的区块链
如前所述,这种类型的区块链允许您使用在以太坊上创建的相同代码,这里由一种专门创建的名为Solidity的语言表示,含有智能合约指令的文件采用“.sol”格式。
因此对于程序员来说,使用相同的文件就足以在这些与EVM兼容的区块链上使用它,甚至不需要修改;这已一再证明是将开发人员和应用程序吸引到新区块链的基本功能和特征。
EOS EVM
到目前为止我们讨论了脱胎于以太坊的区块链,但技术环境其实并没有出现创新。事实上,大多数与EVM兼容的区块链几乎彼此都相同,只是代币(Token)的名称发生了变化。
EOS区块链本身与以太坊和EVM不兼容,因此必须开发一种技术上具有挑战性的解决方案,以便在其生态系统内模拟EVM。由于两种区块链的架构和共识机制不同,在EOS上模拟EVM需要花很大的精力。
这种模拟允许EOS运行基于以太坊的dApps,并在其生态系统内执行以太坊智能合约,从而为开发人员提供更多选择。
尽管如此,在技术娴熟的EOS工程师的帮助下,EOS EVM诞生了,并于4月中旬推出。与其他区块链上的其他EVM相比,EOS EVM展示了其所有技术力量;它选择的数据是“每秒交换”,比当时被认为速度最快的EVM(即Solana上的EVM)快4倍。
如何将智能合约迁移到EOS EVM?
既然我们已经了解了EVM的历史和功能,现在是时候让我们动手编写代码了,看看如何将我们为以太坊或另一种EVM区块链创建的代码迁移到EOS EVM。
为了迁移智能合约,我们需要一些支持:
- 加载到我们的MetaMask钱包中的主网或测试网网络
- 智能合约的代码
- 支付网络费用的EOS加密货币(这里是测试网水龙头)
如何部署?
要部署智能合约,即将代码加载到区块链上,我们基本上有两种方法:
- 使用IDE,比如Remix
- 从命令行使用Hardhat
1. 使用Remix IDE进行部署
人人都可以上手的一种快捷方法就是使用Remix,此后我们将部署智能合约。
首先,确保我们的MetaMask钱包在EOS EVM、测试网或主网上是活跃的,然后连接到Remix web界面,在这里创建一个新文件,给它取个名字和.sol扩展名:
图1
在空文件中,我们将粘贴代码;或者如果我们有多个智能合约,可以从我们的PC上传文件。
此时,选择我们想要上传到区块链的.sol文件,然后移动到“Solidity Compiler”菜单:
图2
在这里,我们不需要做任何其他事情,只需按下蓝色按钮,等待操作成功(只需查看绿色√号):
图3
在部署到区块链的最后一步中,浏览到“Deploy & Run Transactions”菜单。在“Environment”部分中,选择“Inject Provider – MetaMask”选项。这个选择会自动考虑EOS EVM(无论您选择的是测试网还是主网)。现在点击“Deploy”按钮,继续下一步。会出现提示,您需要确认使用您的MetaMask钱包进行交易。
图4
就这样,在不到5分钟的时间里,我们已经将智能合约迁移到了EOS EVM。
2. 使用Hardhat进行部署
如果我们使用Hardhat开发dApp,将以下网络添加到“hardhat.config.js”配置文件中就足够了:
图5
然后运行命令来部署(请记住,我们应该在用于支付交易成本的地址上有一些EOS):
- 针对EOS EVM主网,npx hardhat运行scripts/deploy.js--network eosevm
- 针对EOS EVM测试网,npx hardhat运行scripts/deploy.js--network eosevm_testnet
最后,如果在使用dApp时出现任何错误,尤其是附有消息“gas required exceeded allowance”的错误32603 - MetaMask -RPC Error: Internal JSON-RPC错误:
图6
它不依赖EOS EVM的问题,而是来自MetaMask的问题,建议使用另一个浏览器并重新执行交易,会没有问题地加以处理。
结语
总之,由于这些简单的操作,我们不仅可以使用自己的旧代码,还可以使用高性能的EVM,而最终用户不必安装任何其他东西,因为它足以添加新的网络和相关的加密货币。
原文标题:How to migrate smart contracts to any EVM,作者:Alfredo de Candia