# 轻松部署ERC20：3行代码让您在BSC测试网上轻松完成！

By [GeekWho](https://paragraph.com/@geekwho) · 2023-03-16

---

我们的目标： 在BSC测试网创建一个名称为GeekWho Token，标识符为GEEK的TOKEN，发行量为2100w，然后给自己转账一笔。

准备工作：

1.  从 [https://metamask.io/](https://metamask.io/) 安装MetaMask chrome钱包，创建一个钱包，备份助记词。
    
2.  通过 [https://chainlist.org/](https://chainlist.org/) 链接到BSC测试网络。
    
3.  在 [https://testnet.bnbchain.org/faucet-smart](https://testnet.bnbchain.org/faucet-smart) （BSC测试网）领水，部署时需要消耗GAS。
    

实现步骤：

1.  打开remix网址： [https://remix.ethereum.org/](https://remix.ethereum.org/)
    
2.  在默认工作区的文件夹contracts下，新建文件GeekWhoToken.sol
    
3.  在打开的文件里，填写以下内容。
    

ERC20合约内容：

    //SPDX-License-Identifier: MIT
    
    pragma solidity ^0.8.0;
    
    import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol";
    
    contract GeekWhoToken is ERC20 {
    
      constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol) {
        _mint(msg.sender, 21000000 * 10 **18);
      }
    }
    

其中21000000为发行总量。

![合约编译成功](https://storage.googleapis.com/papyrus_images/847e1a49a0f11628b67aaf5c646a646178c4af12f812a1fb7a8e171f130495f9.png)

合约编译成功

接下来我们开始合约部署，点击左侧的编译按钮下方的部署&发送交易按钮：

1.  选择环境为Injected Provider - MetaMask。
    
2.  保证你的MetaMask当前环境为BSC测试网。
    
3.  在弹出的按钮选择你要链接的地址
    

![合约部署](https://storage.googleapis.com/papyrus_images/b86d70cafd0650c2d0290dc047406fc2fbc77ae18ee8eb9118ceb4b86d1b0f8f.png)

合约部署

在部署右边点击箭头向下的三角，会让你输入name和symbol。在这里，我们输入

    _NAME=GeekWho Token
    _SYMBOL=GEEK
    

点击transact，发送交易到BSC测试网，在弹出的MetaMask确认框，点击确认，开始部署合约写入TOKEN信息。

![合约部署成功](https://storage.googleapis.com/papyrus_images/78a4da298eae293c4d57aaa21ba7a372d0c140b1775aac73d1148bfe62a5ea4d.png)

合约部署成功

我们稍等一会儿，就提交成功了。部署合约的交易TX： [https://testnet.bscscan.com/tx/0xe94f7bf3b13e93f6a15890628c58e972f76d0555bf1d25ba386be104637c5284](https://testnet.bscscan.com/tx/0xe94f7bf3b13e93f6a15890628c58e972f76d0555bf1d25ba386be104637c5284)

注意事项：

1.  BSC测试网选择chainid为97。
    

    [Binance Smart Chain Testnet](https://chainlist.org/chain/97)
    
    ChainID：97
    
    Currency：tBNB
    

1.  注意确认MetaMask的环境是否已经切换BSC测试网，否则部署会不成功。部署合约前，注意要填入TOKEN的名称以及标识符，不然可能部署名称为空的合约。
    
2.  注意数值的精度为10^18，所以发送一个GEEK的数值，在转账时要填的参数值为1000000000000000000。一共18个零。
    

合约代码解析：

1.  第一行注释是机器可读行 (// SPDX-License-Identifier: MIT)，这里我指定了MIT许可协议。
    
2.  第二行代码标识我们采用0.8.0以上的编译器进行编译。prama指令必须在代码的第一行，它告知编译器用什么版本将solidity代码转换为机器可读的字节码。
    
3.  第三行是申明了一个GeekWhoToken的合约。关键字 contract告诉编译器你正在声明智能合约。如果你有面向对象编程的经验，你可以理解为有一个GeekWhoToken的类，继承了基类ERC20的全部属性和方法。
    
4.  第四行申明了一个构造函数，传入TOKEN的名称和标识符，并必须调用父类ERC20的构造函数。
    
5.  第五行我们通过\_mint函数初始化了发行总量。在构造函数中使用\_mint 函数，将 21000000 个代币分配给合约创建者。这里使用了 18 位小数，乘以 10 的 18 次方，表示将代币的总数转换为 wei 单位。
    
6.  实际代码有5行，前2行都是Solidity统一规范，后面3行就是实际发行TOKEN的代码。
    

合约调用：

在这里，我们通过已部署的合约进行调用：

![合约调用](https://storage.googleapis.com/papyrus_images/f59398a02cc1953fc6d3c41bdf5ba436a076761dd1c9ed2d6415bd94c1b812c5.png)

合约调用

调用对应的name函数：

![](https://storage.googleapis.com/papyrus_images/1dd79a36eba23bf53ccfa32f16bef2129856965b35124eeeae80f1efd689d8d7.png)

调用symbol函数

![](https://storage.googleapis.com/papyrus_images/5fbf4adb4a825e4a9ac6b734b68269a894ea4344df8266b8632b5963a259f63e.png)

调用totalSupply函数

![](https://storage.googleapis.com/papyrus_images/bb6c78699227a9b38f1479cbfda700d0e6310b827178c9467c6f2c3f6f8d3a3a.png)

调用transfer函数

![](https://storage.googleapis.com/papyrus_images/e0b5750dfda344d2e0e61d4cee85204eaa04e803b131d9db78ff99e4f9161a2d.png)

转账成功交易TX： [https://testnet.bscscan.com/tx/0x967ad0883277320043c3569bb4639c37545481b765d027e1787b9aa6f8192ecd](https://testnet.bscscan.com/tx/0x967ad0883277320043c3569bb4639c37545481b765d027e1787b9aa6f8192ecd)

总结：

1.  我们成功地部署一个合约，发行了名称为GeekWho Token，标识符为GEEK的TOKEN，初始总量为2100w。
    
2.  在REMIX IDE下，通过接口成功查询到已部署合约的信息，比如总量、名称、标示符等。
    
3.  合约部署成功后，我们给自己转账一笔，发送1个GEEK给指定的账户。

---

*Originally published on [GeekWho](https://paragraph.com/@geekwho/erc20-3-bsc)*
