如何在BNB链上创建BEP-20通证

BEP-20通证是在BNB Chain上进行交易的基础。在本教程中,你将学习如何创建一个BEP-20通证并部署到BNB Chain。

什么是BEP-20通证?

BEP-20是BNB Chain上的一种通证标准,它基于ERC-20标准框架建立。BEP-20和ERC-20标准都是用于创造互换的同质化通证。同质化表示你只需要关心其数量–它们不是独特的。法定货币就是一个很好的例子。你不需要关心你有哪个美元,而是有多少。非同质化物品是不能互换的,你关心的是你拥有哪一个。

什么是BNB Chain?

BNB Chain是通过对Go Ethereum协议(Geth)的硬分叉,或者说是永久分叉而产生的。虽然它与以太坊相似,但也有一些明显的区别。

其中最明显的区别是BNB Chain使用了不同的共识机制。BNB Chain使用了21个验证人,它们轮流生产区块。这些验证者由持有BNB(BNB Chain的原生通证)的委托人支持。这种共识机制被称权益证明(PoSA)。验证人是根据抵押金额来选择的,前21名候选人被选为验证人。

BNB Chain的优势

由于BNB Chain是通过Geth的分叉创建的,它是与EVM兼容的网络。这意味着你可以在BNB Chain上部署与Ethereum上相同的合约。作为一个权益证明网络,BNB Chain与以太坊有不同的权衡。这形成了一些特定用例的优势。值得注意的是,BNB Chain的速度相对较快,成本较低,这吸引了开发者们对该网络的关注。

桥接资产到BNB Chain

如何将你的资产从以太坊主链转移到BNB Chain?

要将资产从以太坊转移到BNB Chain,可以使用币安桥。这是一个合约,它将在以太坊链上保管你的资产,并在稍作延迟后,在BNB Chain创建该资产的一个版本。

这有点像在街机中使用游戏币。你把你的钱(ETH)交给电玩城员工(桥合约),反过来,他们创造游戏币(ETH BEP-20,ETH的BEP-20版本),在街机(BNB Chain)内使用。你可以在街机内使用游戏币(ETH BEP-20)。如果你想退出,你可以把你的游戏币(ETH BEP-20)还给员工(桥合约),他们会销毁或烧毁游戏币(ETH BEP-20)。然后他们会把游戏币(ETH BEP-20)的钱(ETH)还给你。

你需要什么?

在BNB Chain上开发,需要和在任何EVM兼容的链上开发时一样的工具。这就是使用EVM兼容链的好处。通常它们都支持相同的工具。

在本教程中,我们将使用:

连接到BNB Chain Testnet

在BNB Chain测试网上构建一个应用程序之前,需要设置钱包。一个很好的工具是Chainlist,它允许你简单地连接你的钱包并从那里添加链(你需要先设置钱包。)自己添加链的细节可以在文档中找到。

Network Name: Binance Testnet
New RPC URL: https://bsc-dataseed.binance.org/
ChainID: 97
Symbol: BNB
Block Explorer URL: https://testnet.bscscan.com

获得测试网BNB

BNB Chain测试网的原生通证是BNB。为了部署以及与合约交互,我们需要获得一些BNB。前往Binance水龙头获得一些测试网BNB。需要提供你的钱包地址,并点击“给我BNB”。

BNB Faucet screenshot

构建合约

首先前往Remix集成开发环境

现在可以忽略样本合约。

Building the contract screenshot

在合约目录中创建一个新的合约。

 

Building the contract screenshot - new file

命名为BSCCoin.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC-20/ERC-20.sol";
contract BSCCoin is ERC-20 {
    constructor(uint256 initialSupply) ERC-20("BSCCoin", "BSCC") {
        _mint(msg.sender, initialSupply);
    }
}

让我们来看看这段代码。

首先,我们定义我们将使用的Solidity的版本。

pragma solidity ^0.8.2;

这是OpenZeppelin的基本ERC-20通证。我们把它导入到我们的合约中。在创建BEP-20通证时,请记住它们与ERC-20通证非常相似。因此,我们可以利用OpenZeppelin的ERC-20合约来创建我们的通证。

import "@openzeppelin/contracts/token/ERC-20/ERC-20.sol";

可参考OpenZeppelin的的入门页面了解更多细节。

使用OpenZeppelin的合约意味着我们的合约可以更简约。我们继承了ERC-20合约并使用它来创建我们的BEP-20通证。

// Define our contract and inherit the ERC-20 contract
contract BSCCoin is ERC-20 {
 // When the contract is run create a BEP-20 Token
 // The token will be names "BSCCoin"
 // The token will have the symbol "BSCC"
    constructor(uint256 initialSupply) ERC-20("BSCCoin", "BSCC") {
 // Create an initial value for the runner of the contract
        _mint(msg.sender, initialSupply * 10 ** decimals());
    }
}

关于小数的说明

Solidity不使用小数。这意味着当你想使用小数时,就需要使用定点运算。你需要在数值中存储固定数量的小数。在这个例子中,digimals()被设置为18,这意味着我们要用10^18乘以我们铸造的通证的数量。

部署

有了这个合约,你就有了一个功能完备的BEP-20通证!现在是时候把它部署到BNB Chain测试网了。

首先,将环境改为“Injected Web3”。这将使Remix能够通过你的钱包与区块链互动。

Changing the environment to Injected Web3

接下来,确保你部署的是正确的合约。在这个例子中是“BSCCoin”。

Selecting the contract

指定要创建的通证数量,然后点击“部署”按钮,你应该看到一个确认按钮。我们正在部署合约到一个运行中的区块链上。因此,会涉及gas费用。

Deploying the contract

Deploying the contract 2

该合约可能需要一段时间才能完成部署。一旦完成,你会在“已部署的合约”下看到它。你都可以看到合约中的所有可用功能。这些功能都是从OpenZeppelin合约中导入的。

The details of the contract

验证

一旦合约部署完成,我们可以仔细检查它是否显示在BNB Chain测试网中。

复制合约的地址,然后去BNB Chain浏览器

Copying the contract address

输入合约地址并搜索它。

你可以看到合约和通证。

Verifying the contract on BscScan

恭喜你,你刚刚成功部署了一个BEP-20通证到BNB Chain的测试网中。

下一步该怎么做

从这里开始,你可以把你的通证部署到BNB Chain主网,或者你可以为它添加更多的功能。OpenZeppelin合约支持额外的铸造、销毁、投票等功能。可查看OpenZeppelin文档了解完整的细节。

现在你知道了如何创建一个BEP-20通证,许多新的机会向你敞开。你可以用它来与DeFi应用程序互动,创建一个治理协议,或启动一个Chainlink Price Feed来跟踪其价格。

你也可以查看下面的完整的视频教程,学习如何在BNB Chain上创建一个BEP-20通证。

获取更多关于Chainlink的信息,请访问chain.link或在docs.chain.link阅读文档。要讨论集成问题,请联系专家。

Need Integration Support?
Talk to an expert
Faucets
Get testnet tokens
Read the Docs
Technical documentation