转载本文,请联系区块链研究院公众号。什么是ERC20代币?ERC20的意思是“以太坊请求注释20”。征求意见是社会团体进行同行评审的一种方式。以太坊通过让人们创造想法并让其他人发表评论来改善生态系统。ERC20是由FabianVogelsteller和VitalikButerin创建的第20个以太坊征求意见稿。此评论请求提供了一种在以太坊平台上创建“令牌”的方法,这是所有令牌都遵循的标准,因此平台和工程师无需重做即可轻松使用它们。每个ERC20都遵循相同的模式,并且具有相同的功能列表,这些功能执行基本相同的功能。其中一些是:转移:在所有者之间转移代币。balanceOf:如何查看一个地址有多少令牌。transferFrom:允许非所有者将代币从一个地址转移到另一个地址。approve:批准合约调用transferFrom函数。它们是跟踪每个地址在区块链上有多少价值单位的合约,而ERC20代表代币的智能合约。示例ERC20代币的一些示例是LINK、AAVE、USDT和DAI。您会注意到一些代币,例如LINK代币,实际上是ERC20的更高级形式。LINK,尤其是ERC677,它增加了一些额外的功能和工作预言机,但它仍然向后兼容ERC20s并具有它的所有功能。另一个流行的令牌标准是ERC777,它比ERC20有一些不错的生活质量改进,并且向后兼容ERC20。为什么要制作ERC20?ERC20的作用是什么?它们的目的是什么?1.治理治理代币是允许用户在协议的未来进行投票和持有股份的代币。治理令牌的一些示例是UNI、AAVE和CRV。代币可以“抵押”到平台中,用于投票和提出新的协议方向以供收听。2.保护网络通常,一个网络或协议采用多个区块链,协议的整体安全性不应与单个底层区块链相关联。协议通常需要使用对协议更有意义的基础资产进行商业交易。它将资产与与网络无关的其他资产的市场波动分开。如果它是底层链,则如果底层市场波动加剧,网络的安全性可能会降低。3.合成资产和稳定币如果你有某种形式的价格信息,你可以很容易地制作出由某种抵押品支持的合成资产。这是获取和交易不在区块链生态系统中的资产的好方法。这正是Synthetix协议的工作原理,将Chainlink价格馈送与SNX支持的抵押品相结合,让DeFi(去中心化金融)投资者能够进入传统金融世界。同理,稳定币也是合成资产,只不过代表的是美元等“稳定”资产。Tether、USDC和Dai是稳定币的例子。4.其他当想出制作ERC20代币的想法时,创造力是你唯一的限制。我们已经看到使用ERC20作为抵押品的基础抵押资产的协议,提供激励措施以鼓励使用协议(参见收益农业),围绕代币创造经济等等。如何创建ERC20?让我们从克隆这个示例存储库并安装eth-brownie开始。我们假设您已经安装了Python。Brownie是一个致力于简化智能合约部署的Python框架。gitclonehttps://github.com/PatrickAlphaC/erc20-browniecderc20-browniepipinstalleth-browniecontracts文件夹中有两个合约:EasyToken.solTokenERC20.sol这个TokenERC20是一个例子,我们可以自己写整个合约,因为我们要做的就是Make确保实现适当的功能。此外,更简单的方法是使用OpenZeppelin包。这抽象出了大部分功能,并允许我们使用Solidity的继承关系让我们的合约“继承”我们需要实现的所有功能!我们所要做的就是给代币一个名字、一个符号和一个初始供应量。pragmasolidity^0.6.0;import"@openzeppelin/contracts/token/ERC20/ERC20.sol";contractEasyTokenisERC20{constructor()publicERC20("EasyToken","EzT"){_mint(msg.sender,100000000000000000000}0}00in在这个例子中,我们的EasyToken代表代币,EzT的初始供应量是100万。你可能会问为什么它的初始供应量不是1000000000000000000000000。好吧,Solidity不带小数,所以我们实际上指定了18个额外的零作为小数,因此我们可以与令牌的小数部分进行交互。创建令牌合约后,我们可以创建一个脚本将其部署到区块链:frombrownieimportaccounts,config,EasyToken,EasyTokenfromscripts.helpful_scriptsimportget_accountdefmain():account=get_account()erc20=EasyToken.deploy({"from":account})Brownie允许我们自己取消合约,我们可以在主合约中调用这个函数:EasyToken.deploy({"from":account})这将把它部署到布朗尼连接到的任何区块链。你会注意到每笔交易我们还需要与之关联的账户。我们的帐户是从get_account函数返回的。我们暂时可以忽略这一点。部署到区块链默认情况下,此包设置为部署到本地ganache区块链,您将需要两个环境变量:Infura是我们连接到区块链的一种方式,并且有一个免费层级供我们使用。您还需要自己将PRIVATE_KEY设置为环境变量。您可以从MetaMask获取私钥。设置您的MetaMask您可以通过从MetaMask导出私钥并在开头添加0x来获取您的私钥。设置好环境变量后,还需要获取一些TestnetKovanETH。然后,您可以运行deploy脚本:brownierunscripts/2_deploy_easy_token.sol您将看到类似下面的输出:Running'scripts/2_deploy_easy_token.py::main'。..Transactionsent:0x223af315917c07956243ed0915a3b142a5697ad6e497adeae3e3ad886f37b37aGasprice:3.0gweiGaslimit:792680Nonce:3653EasyToken.constructorconfirmed-Block:24760550Gasused:720619(90.91%)EasyTokendeployedat:0x8922C8e8534e10A0B42c072eA0e94A80Cb2E0985WecanthentakethataddressandputitintoKovanEtherscanwhereyouwillseeyourtokens!您需要做的最后一件事是获取该地址并将其添加到您的MetaMask。您可以单击MetaMask中的“添加令牌”按钮,转到自定义令牌,然后在Kovan网络上添加您的合约地址,您应该会在那里看到令牌。恭喜!您已经部署了您的第一个ERC20代币!
