Cointime

扫码下载App
iOS & Android

想发行自己的以太坊ERC20代币?教程来了

随着以太坊的普及率日益攀升,制定可靠的跨平台软件应用标准变得至关重要。以太坊改进提案(EIP)通常是人们探讨区块链开发生态系统新标准的途径。其中一项备受瞩目的提案便是可互换代币(fungible token)的标准:ERC-20。作为以太坊中第一个也是最受欢迎的代币标准,ERC-20(又称EIP-20)自2015年面世以来就备受关注。

ERC-20代币标准为开发人员提供了一种便捷的途径,通过智能合约创建可互换的代币(fungible token)。如今,该标准已成为在以太坊区块链上创建代币的流行方式,进而催生了各种各样、用途不一的数字资产。

什么是ERC-20代币标准?

ERC-20标准规定了一系列API方法和事件,以确保采用该标准创建的所有代币与其他以太坊代币具有兼容性。这些API方法包括:

  • totalSupply():返回流通的代币总数;
  • balanceOf(address _owner):查询特定地址的代币余额;
  • transfer(address _to, uint256 _value):从发送者账户向指定接收者转移特定数量的代币;
  • transferFrom(address _from, address _to, uint256 _value):允许第三方将代币从一个账户转移到另一个账户;
  • approve(address _spender, uint256 _value):让代币持有者能够授权第三方代表他们进行代币消费;
  • allowance(address _owner, address _spender):返回允许账户代表代币持有者消费的代币数量。

在ERC-20标准中定义的事件有:

  • Transfer:账户之间转移代币时触发;
  • Approval:当代币持有者批准另一个账户代表他们使用代币时触发。

除了这些方法和事件之外,ERC-20代币还具备以下三个关键字段:

  • name:代币的名称(例如Binance USD);
  • symbol:代币的简称(例如BUSD);
  • decimals:表示余额时支持的小数位数。

  自行创建代币所需的工具

创建一个全新的ERC-20代币并不复杂,您可以使用Remix直接在浏览器中完成所有操作。Remix是一个完整的Solidity开发IDE,可在浏览器上运行,非常适合处理简单的项目。尽管不建议将Remix用于更为复杂的项目,但您可以利用其工具与智能合约互动并构建POC(概念证明),而无需花费大量时间来配置开发环境。

对于更复杂和庞大的项目,使用像Hardhat(适用于JS/TS开发者)或Brownie(适用于Python开发者)这样的框架可能是更佳选择。在本教程中,我们将介绍使用Hardhat创建ERC-20令牌的过程,因此您可以随时深入了解其文档,以获取更多相关信息。

如何创建ERC-20代币

现在让我们开始编写代码,构建全新的ERC-20代币。如果您之前从未使用Solidity创建过智能合约,建议您阅读这篇文章,这是对这个主题的一个很好的入门介绍。

第0步 – 安装全局依赖项(可选)

要使用Hardhat,您需要在计算机上安装NodeJS(以及NPM)。如果尚未安装,请从此处安装。NPM会与NodeJS一起安装,安装完成后,您应该可以从终端使用它们。

步骤1 – 配置开发环境

首先,在项目所在位置创建一个新文件夹。创建文件夹后,运行以下命令:

npx hardhat

如果一切正常,您应该会看到如下内容:

如果您熟悉TypeScript,可以用TS创建项目。但在本文中,我们将选择JavaScript选项。对于接下来的问题,我们将使用默认选项,只需按回车键即可。回答完所有问题后,NPM(Node Package Manager)将完成安装所有项目依赖项的工作,这可能需要一段时间,请耐心等待。

第2步 – 了解项目结构

设置完成后,您可以使用IDE打开项目文件夹,您将看到以下文件夹结构:

Hardhat默认会以这种方式组织新项目:

  • contracts:包含所有相关源代码(Solidity智能合约)的文件夹;
  • scripts:存放与区块链交互的有用脚本的位置;
  • test:一个重要的文件夹,用于存放所有自动化测试,以测试您的合约并提高其安全性;
  • hardhat.config.js:所有Hardhat设置都放在这个文件中;
  • package.json:存储有关项目的一般信息的文件,例如名称、版本和依赖项;
  • package-lock.json:用于存储已安装依赖项版本控制信息的文件。此文件是自动生成的,您永远不应手动编辑此文件。

当然,还有另一个文件夹:node_modules。该文件夹由包管理器自动处理,包含所有外部依赖项。您永远不应手动修改其内容。

如果这是您第一次使用Hardhat,请花些时间查看每个文件夹和文件,以便熟悉这种结构。

第3步 – 安装外部依赖项

正如前文所述,社区讨论并不断完善ERC-20等标准。OpenZeppelin是这个领域最大的组织之一,它是一个重要的参与者,负责开发一些众所周知的标准。我们将使用他们的合约来帮助我们开发ERC-20代币。

为了安装OpenZeppelin的合约,我们将使用以下命令:

npm install @openzeppelin/contracts --save-dev

第4步 – 创建智能合约

安装OpenZeppelin的合约之后,我们需要整理项目文件夹,从contracts、scripts和test中删除不必要的内容。清理完项目结构后,我们将在contracts文件夹内创建一个新文件Token.sol。

现在我们已经创建了智能合约文件,接下来就需要用实际的代码填充它。让我们从基本结构开始。以下代码将作为构建我们智能合约的基础:

  编写完基础代码后,我们需要从OpenZeppelin导入依赖项并将其用于我们的智能合约。为此,我们应将以下代码添加到文件的顶部(最好放在pragma版本和合约声明之间):  

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

所有依赖项都已加载,现在我们可以在代码中使用它们。让我们的代币合约继承ERC20合约。为此,我们使用is关键字来告诉Solidity合约正在扩展另一个合约。代码应如下所示:

contract Token is ERC20 {

如果您的代码编辑器已经可以与Hardhat正常协作,您可能会看到以下编译错误:

这是因为我们的合约需要实现某些功能并初始化ERC20继承代码。为此,我们将在构造函数中使用它。让我们添加代码来初始化继承的合约代码,如下所示:

代码差不多完成了,还剩一件事:在部署时铸造一些代币。 我们将从 ERC20 调用 _mint 函数以向部署者发送一百万个代币:

现在几乎就是一个功能完善的ERC-20代币了。如果您部署它,它会正常工作并在网络上部署一个供应量为1M的新代币。比想象中的简单,对吧?但现在我们将介绍如何扩展和修改ERC-20标准的一些功能。

第5步 – 修改和扩展默认的ERC-20行为

如今,具有内置税收和奖励等附加功能的代币已经很常见。我们现在将学习如何向智能合约添加一些简单的功能。

修改1:允许用户销毁他们的代币. 

修改2:允许用户通过存入一定数量的以太币来铸造新代币

第6步 – 编译和部署

在构建和运行部署脚本之前,请安装dotenv以管理项目中的密钥:

npm install dotenv --save-dev

为了将我们的合约部署到区块链,我们将在scripts文件夹中创建一个deploy.js文件:

创建脚本后,我们需要添加钱包的私钥以便在区块链上进行实际交易。为此,请按照以下方式编辑hardhat.config.js文件:

现在您需要输入钱包的助记词,以便用于验证智能合约并将其部署到网络。在项目的根目录中创建一个.env文件,内容如下:

MNEMONIC=rifle enter coyote much acid smooth dolphin stairs south cattle immense paper

完成后,我们应该能够运行部署脚本,使用以下命令:

npx hardhat run scripts/deploy.js --network goerli

以下是预期输出:

现在我们可以在区块链浏览器中找到合约:

https://goerli.etherscan.io/token/0x454337827f119cdd56e2962ef40a4ccc1a44bc63#code

接下来我们将验证合约的源代码。最简单的方法是将合约代码扁平化(将所有智能合约合并到一个文件中)并将其上传到Etherscan。让我们开始:

npx hardhat flatten > output.sol

在提交代码之前,扁平化文件可能存在一个问题:它包含多个SPDX许可证标识符。为了解决这个问题,我们将从文件中删除除第一行之外的所有SPDX行。

解决问题后,我们将其复制粘贴到 Etherscan 验证步骤中:

如果一切正确,您将看到此消息:

现在合约代码已经过验证,并且对所有用户公开可见。

合规问题

遵循所有ERC-20标准至关重要。ERC-20的指定行为得到了所有将ERC-20代币作为软件一部分实施的来源的信任。例如,在用户之间执行转账时,您应该且只应该发出Transfer事件。这些事件被视为资金在账户之间转移的证据,如果执行不当,可能会导致交易所和钱包在跟踪交易和余额方面遇到问题。

处理ERC-20代币时,还会预期发生其他一些行为。例如:

  • 转账应该返回一个代表交易成功的布尔值;
  • 零代币的转移应被视为正常转账并发出Transfer事件;
  • 铸币和销毁被视为转账,因此它们应该发出一个Transfer事件。铸造新代币时,_from为0x0。销毁时,_to为0x0。

始终参考原始文档,以避免构建违反ERC-20标准的合约。

最后的话

正如本文所述,创建ERC-20代币智能合约可能很简单,但仍然具有挑战性,应遵循规则以避免出现问题。检查合约合规性的一种好方法是编写自动化测试。Hardhat提供了一套很好的测试工具,您可以用来测试智能合约可能遇到的所有情况。毫不犹豫地创建大量测试,以确保覆盖每一个可能的情况。

对于开发人员来说,文档永远是您最好的朋友。记住查阅官方语言文档和框架规范。玩得开心,快将您的新代币分享出去!

评论

所有评论

推荐阅读

  • 布鲁金斯研究:美国AI基建投资年均占GDP3.63%,为互联网热潮3倍

    10月12日,据华尔街见闻报道,哥伦比亚大学商学院教授Stijn Van Nieuwerburgh在布鲁金斯学会最新论文中指出,2025至2032年美国AI数据中心建设总投资规模将达10.3万亿美元,年均约占GDP的3.63%,为1870至1890年铁路建设高峰期的1.6倍,也是互联网与光纤热潮的3倍以上;每座100兆瓦AI训练园区建设成本约41亿美元,约三分之二为IT设备。融资方式上,Meta的Hyperion数据中心约300亿美元项目资产承载270亿美元债务,项目层面债务资产比达90%,但因债务留在合资企业与特殊目的载体中而未并入Meta资产负债表。目前已约1.4万亿美元债务用于此类结构,其中约7000亿至8000亿美元由银行持有。他未认定AI已形成泡沫,但认为表外融资令市场难以看清完整经济责任。

  • 何立峰会见苹果公司执行董事长蒂姆·库克

    10月12日,中共中央政治局委员、国务院副总理何立峰12日下午在人民大会堂会见美国苹果公司执行董事长蒂姆·库克。 何立峰表示,落实好两国元首共识,构建“基于尊重、公平、对等的中美建设性战略稳定关系”,有利于两国乃至全球经济的稳定和发展,将为跨国企业提供稳定预期和良好经营环境。欢迎包括苹果公司在内的各国科技企业持续深化对华互利共赢合作,共享中国式现代化发展机遇。 库克表示,苹果公司对在华长期发展充满信心,将发挥工商界沟通桥梁作用,为推动美中经贸关系稳定健康发展贡献更多力量。(新华社)

  • 标普500指数期货抹去早期涨幅

    10月12日,道琼斯指数期货涨0.03%,标普500指数期货涨0.01%,纳斯达克100指数期货跌0.23%。

  • 美股三季度财报季将启幕 盈利增长能否匹配估值成焦点

    10月12日,美股三季度财报季将启幕。华尔街预计标普500成分股盈利同比增长约29%–31%,其中约三分之二来自Alphabet、亚马逊、Meta等科技巨头。市场关注点已从「盈利是否增长」转向「增长能否匹配估值」,投资者关注三点:AI资本开支能否转化为收入与利润、AI需求能否向更多行业扩散、企业是否开始受融资成本上升冲击。当前10年期美债收益率升至5%以上,高利率持续压制估值。大型银行将率先发布财报,提供信贷需求、信用质量与利率路径信号。最大风险是盈利预期已充分计入价格,只有明显超预期才能推动估值扩张,否则高油价、高收益率与AI回报周期不确定性或引发更大波动。财报时间(美东):10月13日盘前摩根大通、高盛、富国银行、花旗;10月14日美国银行、摩根士丹利、贝莱德、ASML;10月15日台积电;10月下旬特斯拉10月21日、微软与Alphabet 10月27日、Meta 10月28日、苹果与亚马逊10月29日盘后,英伟达11月17日左右;加密公司Coinbase、Strategy均10月29日,矿企Marathon、Riot于10月底至11月初。

  • 香港交易所与标普道琼斯指数合作推出联名指数

    香港交易所宣布与标普道琼斯指数合作开发推出标普500香港交易所科技100指数。该指数旨在衡量美国上市龙头企业以及在香港上市市值最大的科技公司的表现。指数约60%配置于香港交易所科技100指数,40%配置于标普500指数,并按季调整权重。

  • LeCun等提出H-JEPA分层世界模型 端到端学习视觉规划

    10月12日,据arXiv论文,研究者Wancong Zhang、Basile Terver、Michael Rabbat、Yann LeCun、Randall Balestriero提出H-JEPA,一种端到端训练分层动作条件化JEPA世界模型的方案,各层级在自身学得的潜在空间中预测更远的未来。规划自顶向下进行:顶层优化目标推进,各层预测成为下层的子目标。当数据中的因素以分离的时间尺度演化时,更高层会丢弃快速、不可预测的细节,保留较慢的任务相关状态。在四个模拟导航与操作环境中,分层规划的表现在扁平JEPA之上;在Visual AntMaze任务中,三层结构将成功率从18%提升至73%,且规划算力更少。消融实验显示,增益来自时间分解与高层目标表示两方面。在逆动力学监督下,该方法可扩展至DROID的真实机器人视频。

  • Anthropic半年封掉1140万账号,39.8万申诉仅4.2万改判

    10月12日,Anthropic7月23日更新的透明度报告显示,2026年上半年共封禁1,140万个账号。2025年下半年为145万个,新一期约为前一期的7.9倍。统计范围覆盖Anthropic的产品与服务,并未单独区分Claude聊天与开发者产品。同期收到39.8万次封号申诉,其中4.2万次推翻原封禁决定。按两项同期数据计算,改判数约占申诉数的10.6%。Anthropic表示,账号可能因违反使用政策、服务条款或支持地区政策被封禁。

  • 2026年诺贝尔经济学奖公布

    10月12日,瑞典皇家科学院12日宣布,罗伯特·E·霍尔和迈克尔·伍德福德荣获诺贝尔经济学奖。表彰他们开发了新的宏观经济模型,显著提升了实施有效稳定政策的能力。基于这些模型,适时的财政和货币政策措施可以减少经济的高峰和低谷。 罗伯特·E·霍尔和迈克尔·伍德福德因展示如何重构经济模型以振兴稳定政策而获得今年的经济科学奖。他们没有基于宏观经济变量(如通胀、生产和消费)之间的统计联系来构建模型,而是选择建立在微观经济基础上。这包括理解家庭和企业的整体数量如何通过其行为影响经济。 罗伯特·E·霍尔,1943年出生于美国加利福尼亚州帕洛阿尔托。1967年在美国麻省理工学院剑桥分校获得博士学位。美国加利福尼亚斯坦福大学教授。 迈克尔·伍德福德,1955年出生于美国马萨诸塞州奇科皮。1983年在美国麻省理工学院剑桥分校获得博士学位。美国纽约哥伦比亚大学教授。

  • 亚马逊拟70亿美元收购AI公司Decart

    据知情人士透露,亚马逊公司正在洽谈AI创业公司Decart,交易估值可能达到大约70亿美元。Decart总部位于美国旧金山,其软件可以让开发者更轻松地在不同AI芯片之间切换。随着各家公司竞相争夺更多算力,这项能力正变得越来越重要。知情人士表示,如果谈判不破裂,也没有其他竞购者出现,交易可能很快就会达成。根据私募市场数据公司PitchBook的数据,Decart公司已从红杉资本、Benchmark和Radical Ventures等投资者手中筹集超过4亿美元风险投资。今年5月,该公司的估值接近40亿美元。

  • 超微电脑合同工认罪 涉向中国非法转运英伟达芯片

    法庭文件显示,一名与超微电脑有关联的合同工已认罪,承认参与将搭载英伟达先进AI芯片的服务器非法转运至中国的计划。10月9日公布的法庭案件记录显示,协助转运的外部承包商孙廷伟(音译),已于周四在曼哈顿的美国联邦地区法院认罪。美国司法部今年三月起诉超微电脑共同创办人廖益贤、台湾区业务经理张瑞沧以及孙廷伟,指控三人合谋违反美国出口管制规定,将价值约25亿美元、采用美国AI技术的设备非法转运至中国大陆。起诉书称,这项计划始于2024年前后,三人涉嫌利用一家东南亚公司作为中转实体,以隐瞒最终客户位于中国的事实。