本篇是关于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智能合约;源代码:https ://github.com/DRIVENpol/bridge/blob/main/CONTRACTS/TokenSc.sol
现在我们需要一个自定义智能合约,用户将在链 A上发送代币,以便在链 B上接收代币。
自定义智能合约
现在让我们来解释一下这个智能合约的每一行。(如果你是一个有经验的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脚本
源代码:https ://github.com/DRIVENpol/bridge/blob/main/bot.js
代码解释:
第1-2行:导入“ether”和“dotenv”模块。
第5-15行:我们从.env文件中获取变量。
第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篇内容中,寻找思考更具深度、梳理更为系统的内容,以最快的速度同步到中国市场提供决策辅助材料。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!