随着区块链、比特币、以太坊、加密货币和ICO的最新消息不断涌现,区块链业务正引起广泛关注。因此,我编写了这个教程,这是系列教程中的第一篇,旨在帮助人们更好地了解如何利用区块链技术和加密货币来构建有意义的应用程序。
在本教程中,我的目标是指导你完成从设置帐户到使用单个智能合约和元掩模在以太坊测试网络上发行首个代币的全过程。这个代币将是以太坊测试网上的标准 ERC20 代币,它将具有主要功能,可以作为比简单转账更复杂应用的通用基础。
开始之前:在建立你自己的 ERC20 代币之前,你需要准备以下:
一个 Web3 钱包(例如:MetaMask、Phantom 或任何与 WalletConnect 相容的钱包)测试用 ETH(你可以从这里获取测试代币 QuickNode 多链水龙头 )这一步需要 Gas 费用网路浏览器(建议使用 Chrome)
什么是 ERC20 代币ERC 是 Ethereum Request for Comment(以太坊征求意见)的缩写,20 是提案识别号。 ERC-20 的目标是为了改进以太坊网络。 ERC-20 是最重要的 ERC 之一。它已成为在以太坊区块链网络上编写智能合约的技术标准,用于代币实现。 ERC-20 包含了所有基于以太坊的代币必须遵循的一套规则。 ERC-20 将代币定义为可以发送/接收并具有价值的基于区块链的资产,在以太坊的区块链网络上运行,并使用 gas 作为交易费用。
2015 年,德国开发者Fabian Vogelsteller 决定为以太坊的历史做出贡献,并在该专案的Github 页面上留下了评论。 这是他连续第20 次发表评论,这是他第一次提到ERC-20,随着以太坊持续快速成长,ERC-20 是作为解决网路可扩展性问题的一种方法而提出的。
ERC-20 作为以太坊改进协议(称为EIP-20)的认可和正式采用发生在2017 年底。 EIP-20 由Vogelsteller 和以太坊联合创始人Vitalik Buterin共同撰写。
在 ERC-20 标准出现之前,代币创建者需要从零开始设计。这导致不同代币之间存在差异。开发者若想使用其他代币,必须理解整个智能合约代码,因为缺乏统一结构。这给钱包和交易所带来了困难,他们需要审查每种代币的代码才能提供支持。向应用程序添加新代币变得复杂。
而 ERC-20 标准出现后,它的标准化功能、互操作性、可转让性使钱包和交易所能够轻松整合各种代币,并促进代币之间的交换。而 ERC-20 代币中使用的智能合约能够自动执行和强制执行复杂的金融操作,这对DeFi平台至关重要。因为在 DeFi 平台上,代币可以代表各种金融工具,如贷款或流动性池中的份额。
ERC-20标准定义了智能合约应实现的六个必要功能和三个可选功能。
以下是必要的功能及其解释:
总供应量:定义代币总供应量的方法;当达到此限制时,智能合约将拒绝创建新代币。余额:返回钱包地址拥有的代币数量的方法。转移:从总供应量中取出一定数量的代币并给予用户的方法。转自:另一种用于在用户之间转移代币的方法。批准:验证智能合约是否允许向用户分配一定数量代币的方法,考虑到总供应量。津贴:与approve方法相同,但检查一个用户是否有足够的余额向另一个用户发送一定数量的代币。
除上述必要功能外,以下功能为可选,但可提高代币的可用性:
姓名:返回代币名称的方法。象征:返回代币符号的方法。小数:返回代币使用的小数位数的方法。它用于定义代币的最小单位。例如,如果一个ERC-20代币的小数值为6,这意味着该代币可以分割到小数点后6位。
如果你了解面向对象程式设计(object-oriented programming),你可以将 ERC-20 比作一个介面。如果你想让你的代币成为一个 ERC-20 代币,你必须实现 ERC-20 介面,这要求你实现这 6 个必要的功能。简言之,ERC-20 介面就像一个模板,任何想要成为 ERC-20 代币的合约都必须按照这个模板来设计和实现自己的功能。
开始创建自己的 ERC20 代币:获取测试用ETH要开始在以太坊 Sepolia 测试网上部署你的合约,你需要安装 元掩码 浏览器扩展程序或使用其他 web3 的钱包,如 Phantom, 或与 WalletConnect 兼容的钱包。一旦你的钱包设置完成,你需要获取一些测试用的 ETH。这可以从专门为以太坊测试网 Sepolia 网络设立的 QuickNode 多链水龙头 获得。获得测试ETH很简单,只需要访问水龙头网站,连接你的钱包或输入你的钱包地址,然后按照步骤继续操作。你还有机会通过分享推文以获得额外奖励,你也可以直接选择”不用了,请直接给我发送 0.05 ETH” 的选项来接收你的测试 ETH。不过这里请注意:你需要在以太坊主网上至少有 0.001 ETH 的余额才能使用QuickNode测试币水龙头。
撰写智能合约在以太坊区块链上已经有许多由不同团体开发的符合ERC20标准的代币在运行。这些实现方式各不相同,有些侧重于降低gas成本,有些则优先考虑强化安全性。为了实现一个强大且安全的代币,许多开发者会选择使用 OpenZeppelin 的 ERC20 代币标准。 OpenZeppelin 是一个经过充分测试和社区审核的可重复使用的智能合约库,其中包括一个可靠且安全的 ERC20 代币框架。而它能确保代币开发合规和安全,也成为目前代币开发者的首选。
为了简单和安全起见,我们在这篇指南中选择使用 OpenZeppelin ERC-20 合约来创建我们的代币。使用 OpenZeppelin,我们无需编写整个 ERC-20 接口,只需要导入库合约并使用其函数即可。本次我们将新发行 1 百万枚,名称为 运动神经元 的 ERC-20 代币。
接着前往 以太坊混音 IDE(以太坊的集成开发环境,支持Solidity语言) 并创建一个新的 Solidity 文件,比如 - MyNewToken.sol。
在Ethereum Remix IDE 里创建新文件
请将以下代码贴到你的新Solidity代码脚本中:
// SPDX-许可证-标识符:MIT pragma Solidity ^0.8.20;
导入“@openzeppelin/contracts/token/ERC20/ERC20.sol”;
合约 MyNewToken 是 ERC20 { 构造函数() ERC20(“MyNewToken”, “MNT”) { _mint(msg.sender, 1000000 (10 * uint256(decimals()))); } }
复制贴上上述发币智能合约代码
以上代码的含义是:
SPDX-License-Identifier 注释指定了合约发布所使用的许可证。
杂注指令声明了要使用的编译器版本。
从 OpenZeppelin 导入ERC20合约并将其用作基础。
我的新代币是你的合约名称,它继承自 ERC20 合约。
构造函数函数使用名称(”我的新代币”)和符号(”运动神经元”)初始化你的代币。
构造函数中的_作为函数铸造了初始供应量的代币。在这个例子中,100万个代币被铸造并分配给部署合约的地址。代币数量会根据小数值进行调整,在 OpenZeppelin 实现中预设为 18。
由于我们从 OpenZeppelin 导入了 ERC20 智能合约,并且 MyNewToken 合约继承了 ERC20 合约,因此不需要定义所有函数。 ERC20 合约中定义的所有函数都被导入到 MyNewToken 合约中。如果你想查看更详细的完整 ERC-20 代码,可以查看这个文件
现在,花点时间根据你的需求自定义智能合约。你也可以通过更新以下部分来修改代币名称和符号:ERC20(“MyNewToken”,“MNT”)。
部署智能合约完成智能合约的自订后,接下来进行编译。
第1步:点击Solidity编译器 (Solidity compiler) 按钮。检查编译器版本和选定的合约。由于智能合约中有杂注可靠性^0.8.20;这一行,编译器版本应至少为20.0.8。然后,点击编译MyNewToken.sol 按钮。如果一切顺利,你会在编译按钮上看到一个绿色的勾勾。
编译智能合约
编译完成(绿勾勾)
第2步:前往部署和执行交易(DEPLOY & RUN TRANSACTION)标签。在环境(Environment)下选择注入的提供者(Injected Provider)选项进行部署。部署前,请确保你的 MetaMask 设定为Sepolia 测试网,并选择我的新代币合约作为要部署的合约。最后,点击部署(Deploy)按钮来部署你的合约。
选择注入的提供者为本地的 Web3(MetaMask)钱包
连结Web3钱包
确定部署合约,以及选择要部署的网络(本篇为测试网)
如果你不确定如何更改网络,打开MetaMask扩展程序,点击左上角的网络选择器,然后选择Sepolia。如果你没有看到它,请确保启用了「显示测试网络」选项。如果你想了解如何将QuickNode RPC URL添加到MetaMask,请查看快速节点指南指南。
以下需要 GAS 费用换取 测试ETH
第3步:在MetaMask中确认交易:
恭喜!到了这一步代币合约现在已经成功部署在以太坊的 Sepolia 测试网上,你拥有了第一个属于自己的代币了。