文章将从一个实际的项目作为例子,详细的描述了把一个项目从之前基于 EVM 的 solidity 的应用程序,迁移到 PolkaVM 的过程是怎么样的。
首先什么是 PolkaVM,PolkaVM 是 Parity 打造的智能合约执行环境,它基于 RISC-V 一种先进的基于寄存器的指令架构,用以取代老旧的 EVM 堆栈逻辑。它具有很高的执行效率,节省代码空间等很多优势。
为了方便众多的 Solidity 开发者和项目,Parity 推出了 Resolc 编译器,可以将 Solidity 的代码编译到 PolkaVM 的字节码。这样很多的已有项目可以在做很小的修改后,部署到 PolkaVM 里面执行。
Passet Hub 是一个由社区维护的测试环境,里面包含了对 PolkaVM 的支持,开发者和项目可以先把程序在这里做验证,等 Kusama 和 Polkadot 升级到支持 PolkaVM 的版本后,就可以直接部署到生产环境了。
作者自己通过一个简单项目的迁移,记录下了基本步骤,希望对 PolkaVM 有兴趣的开发者参考。
首先我们来看之前的项目的 Github 地址:🔗 https://github.com/papermoonio/moonbase-mintableERC20
这是一个部署在 Moonbase 上的应用,由于 Moonbase 和 EVM 完全兼容,所以它也可以部署在其他支持 EVM 的链上。这个项目使用 Hardhat 来部署类 ERC20 合约,然后用一个 React 项目来和合约交互,连接钱包,发送交易等。
合约部署
对于在 PolkaVM 上的合约部署工具,Parity Hardhat 已经十分成熟,可以完成合约的编译,测试和部署。Hardhat 项目的设置可以参考这个文档:
🔗 https://papermoonio.github.io/polkadot-mkdocs/tutorials/smart-contracts/launch-your-first-project/test-and-deploy-with-hardhat/
在完成环境的基本测试之后,就可以写一个 ERC20 合约。先在本地完成编译和单元测试。
在部署到 Passet Hub 之前需要检查 Hardhat 的设置,比如 RPC 地址,帐号等。需要把帐号的私钥写到本地的 .env 文件中,这里是 Faucet 的地址:🔗 https://faucet.polkadot.io/?parachain=1111,发送交易需要的 Token 可以打开链接并领取。当然还需要配置 Metamask,添加 Passet Hub 网络到配置列表中。
当所有设置完成后,就可以部署合约了,具体命令在 README 中可以找到。对于 ERC20 需要的参数,可以刚到一个配置文件中,设置不同的 name 和 symbol。返回的合约地址记得保存,在我们配置 Dapp 的时候要用。
Dapp 修改
Dapp 中资源的修改,需要用到我们在部署合约时候用到的 name 和 symbol,以及合约的地址。把他们放到 address.json 文件中,这个文件列出了所有 Dapp 目前支持的 ERC20 信息。对于每个合约,我们可以配上一张图片,以便在 UI 界面上识别。
在 web3.js (http://web3.js) 里面我们把 RPC 地址修改成为 Passet Hub 的参数 https://testnet-passet-hub-eth-rpc.polkadot.io。 在项目文件中搜索用到 chain id 的地方,把它换成 Passet Hub 的 id,420420421,或者是 16 位格式。
在配置完成之后,可以运行 “npm run dev” 来启动后台服务,然后就可以打开浏览器来使用了。前端界面截图如下:
整个项目完成之后的代码放在下面这个 Github 地址,可以 clone 下来,本地运行并测试。
🔗 https://github.com/papermoonio/polkadot-mintableERC20
对于这个 Dapp,我们已经部署到了这个地址 https://polkadot-erc20.netlify.app/,有兴趣的同学可以尝试一下。
免责声明:由 PaperMoon 提供并包含在本文中的材料仅用于学习目的。它们不构成财务或投资建议,也不应被解读为任何商业决策的指导。我们建议读者在做出任何投资或商业相关的决定之前,进行独立研究并咨询专业人士。PaperMoon 对根据本文内容采取的任何行动不承担任何责任。
👇 点 击 解 锁 往 期 精 彩 👇
About Us
关于我们
Twitter: https://twitter.com/OneBlock_ Medium: https://medium.com/@OneBlockplus Telegram: https://t.me/oneblock_dev Discord: https://discord.gg/fE8deY4UbP Bilibili: https://space.bilibili.com/1650224419 YouTube: https://www.youtube.com/channel/UCWo2r3wA6brw3ztr-JmzyXA
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。