智能合约部署

ERC-20代币标准arrow-up-right为Berachain网络代币部署提供了通用接口。ERC-20遵循标准接口,因此其他应用程序可以轻松地在链上与它们交互,并且可以扩展更多功能。该标准为用户提供从简单代币转移到复杂DeFi交互的全方位支持。

本节中,我们将介绍如何使用Solidity创建ERC-20代币,并将其部署到Berachain测试网。

先决条件arrow-up-right

在开始之前,请确保您已准备好以下内容:

  • Foundry工具包

  • 你选择的文本编辑器

初始化Repositoryarrow-up-right

首先,我们将使用Forge的init命令创建一个新项目:

forge init my_token;

这将创建一个名为my_token的新目录,其中包含基本的Forge项目结构和示例合约。如果使用VS Code作为文本编辑器,您可以添加--vscode flag,以初始化一些额外的默认设置。

forge init my_token --vscode;

现在您可以cd进入该目录,以便稍后运行代码:

cd my_token;

使用Foundry Forge格式化编写合约和测试合约,你可以随意删除下方生成的文件,因为本节不需要。

  • src/Counter.sol

  • test/Counter.t.sol

  • script/Counter.s.sol

安装依赖项arrow-up-right

OpenZeppelin ERC-20arrow-up-right

OpenZeppelin提供了各种ERC代币标准(包括ERC-20)的常用接口和示例,这些代币经过审计和测试,因此可以使用他们的ERC-20标准接口来创建代币。这可以让我们更轻松地快速上手,而无需从头开始。

Foundry

如使用Foundry,请使用下方代码安装OpenZeppelin库:

上方代码将拉取OpenZeppelin请求,以暂存.gitmodules文件,并提交一条消息"Installed openzeppelin-contracts"。

要使用该库,请在项目的根目录下编辑 remappings.txt文件。

文件位置./remappings.txt,运行以下代码:

以上为了指引Foundry在编译合约时能正确调用@openzeppelin

创建代币合约arrow-up-right

现在你可以开始创建代币合约了,首先在src/文件夹中创建一个名为MyToken.sol的新文件。

然后,导入OpenZeppelin的ERC-20代币合约。

文件位置: ./src/MyToken.sol,运行以下代码:

这将从OpenZeppelin中导入ERC20代币合约,其中包含ERC-20代币标准中所有函数的基本功能实现,可以以此作为代币合约的基础。

接下来,将创建可供实际使用的代币合约,该合约在导入的ERC-20合约基础上扩展。

  • 代币名称设置为“MyToken”

  • 代币符号设置为“MT”

  • 代币初始供应设置为1,000,000

文件位置./src/MyToken.sol,运行以下代码:

circle-info

ERC-20代币标准的默认小数位数为18位,例如,1ETH只是以太坊代币的基本单位,还可以是0.00000001ETH。了解更多信息,请查看OpenZeppelin Docsarrow-up-right 上方合约部署可以解释为:创建了一个名为MyToken,代币符号为MT,代币初始供应量为100万,代币最小交易单位为小数点后18位的代币。

从技术上讲,完成以上操作,你已经成功创建代币!如果满意,你可以部署此合约,它会将100万个$MT代币发送到你部署合约的钱包(msg.sender)。接下来你可以随意处理这些代币,例如在Berachain BEX中将$MT与另一种代币创建流动性,以便其他用户可以交换获得$MT

然而,我们通常希望代币的用途更广,以便脱颖而出。接下来,让我们为$MT代币添加更多功能。

设置转账销毁机制

通过重写OpenZeppelin ERC20.sol中的默认_update函数,添加一些常量。

文件位置ERC20.sol,运行以下代码:

我们通过在$MT代币合约中使用override 修饰符重写了父合约 _transfer函数。我们仍然可以使用super._transfer调用父合约的默认_transfer函数,以在计算完销毁金额后运行实际的代币转账逻辑。

circle-info

上方合约部署可以解释为:每次转账时,合约会自动计算并销毁 1% 的代币,同时将剩余的 99% 转给接收者。

部署代币合约arrow-up-right到Berachain

使用forge脚本将$MT代币合约部署到Berachain测试网。

验证代币合约arrow-up-right

验证Berachain测试网上的$MT代币合约是否成功部署。

后续步骤arrow-up-right

现在,你已经掌握了如何使用Foundry将ERC20代币合约部署到Berachain测试网,请查看开发者指南,学习部署其他合约或构建dApp。

最后更新于