教程:如何在没有 Web 界面的情况下创建 ERC20桥

本篇是关于Node.js脚本管理ERC20桥的一个教程。

本篇是关于Node.js脚本管理ERC20桥的一个教程。

为了完成本教程,你需要什么?

  • 将Node.js安装在机器上;

  • Metamask,一个全新的钱包;

  • BSC Testnet和Polygon Mumbai上的测试资金。

桥是什么?

区块链桥是一种工具,可以让用户将资产从一个区块链移到另一个区块链,以解决区块链中的一个主要痛点:缺乏互操作性。

由于区块链资产通常彼此不兼容,因此桥创造了代表来自另一个区块链资产的合成衍生品。

——CoinDesk

体系结构

为了创建ERC20桥,我们需要部署4个智能合约和一个Node.js脚本,该脚本将侦听发出的事件并使用“热钱包”执行操作。

  • 简单的ERC20智能合约将部署在BSC测试网和Polygon Mumbai上。

  • 将接收和发送ERC20代币的自定义智能合约。同样,这将部署在两个网络上。

  • Node.js脚本,它将侦听两条链上代币智能合约发出的Transfer事件。

代码

要在两条链上部署智能合约,我们可以使用Remix — Ethereum IDE。但为了做到这一点,我们需要1)在自己的Metamask上添加两个网络;2)在两个网络上申请水龙头资金:BSC测试网水龙头和Polygon Mumbai水龙头。

  • ERC20智能合约

1.jpg

简单的ERC20智能合约;源代码:https ://github.com/DRIVENpol/bridge/blob/main/CONTRACTS/TokenSc.sol

  • 自定义智能合约

现在我们需要一个自定义智能合约,用户将在链 A上发送代币,以便在链 B上接收代币。

2.jpg

自定义智能合约

现在让我们来解释一下这个智能合约的每一行。(如果你是一个有经验的Solidity开发人员,你可以在两条链上部署这个智能合约后跳到第三步)。

第1行和第3行:SPDX许可证和我们正在使用的Solidity版本。

第6-10行:我们声明了IERC20接口。为了能够与我们的ERC20代币交互,我们需要它。

第12-18行:我们声明智能合约和所需的变量。在我们的例子中,我们有1)热钱包,这是一个EOA;2)最近部署的代币地址。

第21-24行:构造函数——部署智能合约时执行的一段代码。在这里,我们将值赋给hotWallet和myToken (IERC20对象)。

第28行:声明一个事件,当智能合约将代币转移到一个地址时,将发出该事件。为了发出事件,我们会消耗gas。使用它们是一种很好的做法,许多审核员会在这方面提出要求,但我们可以在内部函数中避免使用它们。

第32-34行::onlyHotWallet修饰符。如果函数使用修饰符,则写入修饰符的代码段将在函数体之前执行。在我们的例子中,我们将它用于“sendTokens”函数,并要求 msg.sender(调用该函数的人)等于热钱包的地址。

第37-45行:" sendTokens "函数-接受两个参数作为输入:1) _to——接收方的地址和 2) _amount——我们发送的数量。函数的第一行要求ERC20代币的智能合约余额大于或等于我们发送的金额。

之后,我们调用“approve”函数,并允许接收方使用代币。

最后,我们从智能合约中发送代币并发出事件。

Node.js脚本

3.jpg

源代码:https ://github.com/DRIVENpol/bridge/blob/main/bot.js

代码解释:

第1-2行:导入“ether”和“dotenv”模块。

第5-15行:我们从.env文件中获取变量。

4.jpg

第18-21行:我们为智能合约导入ABI(应用程序二进制接口)。

第24行:main函数的开始。

第27-35行:将我们的应用程序连接到两个网络上的热钱包。

第38-44行:将热钱包连接到两个网络上的自定义智能合约。

第47-53行:将我们的热钱包连接到两个网络上的代币智能合约。

第56-74行:我们创建了一个函数,从BSC测试网上的自定义智能合约调用“sendTokens”方法。

第77-95行:我们创建了一个函数,该函数从Polygon Mumbai 上的自定义智能合约调用“sendTokens”方法。

有趣的部分

第98-129行:我们正在监听ERC20智能合约发出的“Transfer”事件,我们查询该事件的数据,并检查接收者是否是自定义智能合约。

基本上,如果有人想要将你的ERC20代币从BSC测试网连接到Polygon Mumbai,他们需要将他们的代币发送到部署在BSC测试网上的自定义智能合约,而你的脚本正在服务器或本地机器上运行。

Require:为了使一切能够顺利进行,我们需要批准智能合约使用发送给它的代币(可以通过从ERC20智能合约调用approve函数来完成),并向智能合约发送代币。

源代码:https://github.com/DRIVENpol/bridge

如果想部署机器人,只需要:

  • 在两条链上部署ERC20智能合约

  • 在两条链上部署自定义智能合约

  • 创建一个新文件夹,并从我的GitHub下载代码

  • 打开终端并导航到项目的目录。然后运行npm install

  • 创建一个.env文件并更改变量

  • 在终端中运行node bot.js

Source:https://medium.com/@psocarde/how-to-create-an-erc20-bridge-without-a-web-interface-54a717f5263d

关于

ChinaDeFi - ChinaDeFi.com 是一个研究驱动的DeFi创新组织,同时我们也是区块链开发团队。每天从全球超过500个优质信息源的近900篇内容中,寻找思考更具深度、梳理更为系统的内容,以最快的速度同步到中国市场提供决策辅助材料。

本文首发于:https://mp.weixin.qq.com/s/Ua4TqHuDYC-CXkuT6Bj4Qw

点赞 3
收藏 1
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
ChinaDeFi 去中心化金融社区
ChinaDeFi 去中心化金融社区
ChinaDeFi.com 是一个研究驱动的DeFi创新组织,同时我们也是区块链开发团队。每天从全球超过500个优质信息源的近900篇内容中,寻找思考更具深度、梳理更为系统的内容,以最快的速度同步到中国市场提供决策辅助材料。