当前位置:网站首页>如何在BNB链上创建BEP-20通证
如何在BNB链上创建BEP-20通证
2022-04-23 19:29:00 【Chainlink资讯】
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兼容链的好处。通常它们都支持相同的工具。
在本教程中,我们将使用:
● Remix– 一个基于Web的Solidity集成开发环境
● Brave钱包–一 个类似于Metamask的加密货币钱包
● BNB Chain测试网– BNB Chain的测试网络
● 币安水龙头– 获取测试网络BNB
● OpenZeppelin– 区块链合约的安全标准
连接到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”。
构建合约
首先前往Remix集成开发环境。
现在可以忽略样本合约。
在合约目录中创建一个新的合约。
并将其命名为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());
}
}
关于小数的说明
这意味着当你想使用小数时,就需要使用定点运算。你需要在数值中存储固定数量的小数。在这个例子中,digimals()被设置为18,这意味着我们要用10^18乘以我们铸造的通证的数量。
部署
有了这个合约,你就有了一个功能完备的BEP-20通证!现在是时候把它部署到BNB Chain测试网了。
首先,将环境改为“Injected Web3”。这将使Remix能够通过你的钱包与区块链互动。
接下来,确保你部署的是正确的合约。在这个例子中是“BSCCoin”。
指定要创建的通证数量,然后点击“部署”按钮,你应该看到一个确认按钮。我们正在部署合约到一个运行中的区块链上。因此,会涉及gas费用。
该合约可能需要一段时间才能完成部署。一旦完成,你会在“已部署的合约”下看到它。你都可以看到合约中的所有可用功能。这些功能都是从OpenZeppelin合约中导入的。
验证
一旦合约部署完成,我们可以仔细检查它是否显示在BNB Chain测试网中。
复制合约的地址,然后去BNB Chain浏览器。
输入合约地址并搜索它。
你可以看到合约和通证。
恭喜你,你刚刚成功部署了一个BEP-20通证到BNB Chain的测试网中。
下一步该怎么做
从这里开始,你可以把你的通证部署到BNB Chain主网,或者你可以为它添加更多的功能。OpenZeppelin合约支持额外的铸造、销毁、投票等功能。可查看OpenZeppelin文档了解完整的细节。
现在你知道了如何创建一个BEP-20通证,许多新的机会向你敞开。你可以用它来与DeFi应用程序互动,创建一个治理协议,或启动一个Chainlink Price Feed来跟踪其价格。
你也可以查看下面的完整的视频教程,学习如何在BNB Chain上创建一个BEP-20通证。
获取更多关于Chainlink的信息,请访问chain.link或在docs.chain.link阅读文档。要讨论集成问题,请联系专家。
版权声明
本文为[Chainlink资讯]所创,转载请带上原文链接,感谢
https://blog.csdn.net/ChainlinkO/article/details/124279143
边栏推荐
- goroutine
- MySQL syntax collation
- HTTP cache - HTTP authoritative guide Chapter VII
- How to uninstall easyton
- 优先使用组合而不使用继承
- OpenHarmony开源开发者成长计划,寻找改变世界的开源新生力!
- An example of using JNI to directly access surface data
- A brief explanation of golang's keyword "competence"
- Thoughts on the optimization of examination papers in the examination system
- Matlab 2019 installation of deep learning toolbox model for googlenet network
猜你喜欢
Audio signal processing and coding - 2.5.3 the discrete cosine transform
精简CUDA教程——CUDA Driver API
First experience of using fluent canvas
Using oes texture + glsurfaceview + JNI to realize player picture processing based on OpenGL es
Garbage collector and memory allocation strategy
The platinum library cannot search the debug process records of some projection devices
RuntimeError: Providing a bool or integral fill value without setting the optional `dtype` or `out`
山大网安靶场实验平台项目-个人记录(五)
MySQL lock
优先使用组合而不使用继承
随机推荐
C6748 软件仿真和硬件测试 ---附详细FFT硬件测量时间
Openlayers draw rectangle
Regular expressions for judging positive integers
The flyer realizes page Jump through routing routes
RuntimeError: Providing a bool or integral fill value without setting the optional `dtype` or `out`
Codeforces Round #783 (Div. 2) D题解
Is meituan, a profit-making company with zero foundation, hungry? Coupon CPS applet (with source code)
A brief explanation of golang's keyword "competence"
Web Security
UML类图几种关系的总结
MySQL数据库 - 单表查询(三)
Speex维纳滤波与超几何分布的改写
Coordinate conversion WGS-84 to gcj-02 and gcj-02 to WGS-84
Common processing of point cloud dataset
Kubernetes入门到精通-KtConnect(全称Kubernetes Toolkit Connect)是一款基于Kubernetes环境用于提高本地测试联调效率的小工具。
js获取本机ip地址
First experience of using fluent canvas
Data analysis learning directory
Openlayers 5.0 discrete aggregation points
Deep learning -- Summary of Feature Engineering