从零开始,以太坊开发代币完整教程

时间: 2026-03-06 23:12 阅读数: 1人阅读

以太坊作为全球领先的智能合约平台,不仅支持去中心化应用(DApps)的构建,也为创建自定义代币提供了极大的便利,无论是社区币、治理代币,还是实用型代币,你都可以通过以太坊区块链发行自己的代币,本文将带你从零开始,一步步完成一个简单的以太坊代币开发,并涵盖测试、部署等关键环节。

准备工作:开发环境搭建

在开始之前,你需要准备以下工具和环境:

  1. Node.js 和 npm:JavaScript 运行时环境和包管理器,建议 LTS 版本,从 Node.js 官网 下载并安装。
  2. 代码编辑器:如 Visual Studio Code (VS Code),并安装 Solidity 插件,用于语法高亮和智能提示。
  3. 以太坊钱包:如 MetaMask,用于与以太坊网络交互、管理私钥和测试代币,从 MetaMask 官网 安装浏览器插件。
  4. 测试网 ETH:在以太坊测试网络上进行开发和测试,你需要免费的测试 ETH,可以从 Faucet 网站如 Alchemy Sepolia Faucet 或 Goerli Faucet (请确认当前活跃的测试网及水龙头) 获取。
  5. Remix IDE:一个基于浏览器的 Solidity 智能合约开发、测试和部署环境,非常适合初学者,访问 Remix IDE 即可使用,无需安装。

选择代币标准:ERC-20

以太坊上有多种代币标准,其中最常用的是 ERC-20,它定义了一组通用的接口(函数和事件),确保代币在不同钱包和交易所之间的兼容性和互操作性,ERC-20 代币必须实现以下核心功能:

  • name():代币名称 (e.g., "My Awesome Token")
  • symbol():代币符号 (e.g., "MAT")
  • decimals():代币小数位数 (e.g., 18)
  • totalSupply():代币总供应量
  • balanceOf(address owner):查询指定地址的代币余额
  • transfer(address to, uint256 amount):转移代币到指定地址
  • transferFrom(address from, address to, uint256 amount):从指定地址转移代币(需要授权)
  • approve(address spender, uint256 amount):授权某个地址可以花费你的代币
  • allowance(address owner, address spender):查询某个地址被授权的代币数量

ERC-20 标准还推荐实现 TransferApproval 事件。

使用 Remix IDE 编写第一个 ERC-20 代币合约

Remix IDE 提供了强大的模板功能,可以快速生成 ERC-20 合约。

  1. 打开 Remix IDE:在浏览器中访问 remix.ethereum.org

  2. 创建新文件:在左侧 "File Explorers" 标签页中,点击 "Create New File",命名为 MyToken.sol

  3. 选择 Solidity 编译器版本:在左侧 "Solidity Compiler" 标签页中,确保编译器版本是 8.0 或更高(推荐使用较新的稳定版本,如 8.19)。

  4. 使用合约模板

    • 在 "File Explorers" 中找到 MyToken.sol,点击文件名旁边的下拉箭头。
    • 选择 "Create New File" -> "Contract" -> "ERC20"。
    • Remix 会自动生成一个 ERC-20 合约模板。
  5. 修改合约参数

    • 你会看到类似下面的代码(简化后):
    // SPDX-License-Identifier: MIT
    pragma s
    随机配图
    olidity ^0.8.19; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; contract MyToken is ERC20 { constructor(string memory name, string memory symbol) ERC20(name, symbol) { _mint(msg.sender, 1000 * 10**decimals()); } }
    • 解释

      • SPDX-License-Identifier:许可证标识符。
      • pragma solidity ^0.8.19;:指定 Solidity 编译器版本。
      • import "@openzeppelin/contracts/token/ERC20/ERC20.sol";:导入 OpenZeppelin 提供的、经过审计的 ERC-20 合约实现,这是推荐做法,避免重复造轮子并提高安全性。
      • contract MyToken is ERC20:声明 MyToken 合约继承自 ERC20
      • constructor(string memory name, string memory symbol) ERC20(name, symbol):构造函数,在合约部署时调用,用于设置代币名称 (name) 和符号 (symbol),并调用父类 ERC20 的构造函数。
      • _mint(msg.sender, 1000 * 10**decimals());:在部署时向合约部署者 (msg.sender) mint(铸造)1000 个代币。10**decimals() 是为了考虑小数位数(默认 18,所以实际是 1000 * 10^18)。
    • 自定义:你可以修改 constructor 中的 namesymbol,以及初始铸造的代币数量。

      constructor() ERC20("My Awesome Token", "MAT") {
          _mint(msg.sender, 1000000 * 10**18); // 初始供应量 1,000,000 代币
      }
  6. 编译合约

    • 切换到 "Solidity Compiler" 标签页。
    • 确保编译器版本正确。
    • 点击蓝色 "Compile MyToken.sol" 按钮,如果成功,右侧会显示一个绿色的对勾。

部署合约到测试网

  1. 连接测试网

    • 切换到 "Deploy & Run Transactions" 标签页。
    • 在 "ENVIRONMENT" 下拉菜单中,选择 "Injected Provider - MetaMask",Remix 会尝试连接到你浏览器中已安装并登录的 MetaMask 插件。
    • MetaMask 会弹出一个窗口,询问你是否允许 Remix 连接,点击 "Connect"。
    • 确认 MetaMask 钱包网络是否为你想要的测试网(如 Sepolia 或 Goerli),如果不是,请切换到正确的测试网。
  2. 部署合约

    • 在 "CONTRACT" 下拉菜单中,选择你刚刚编译的 MyToken 合约。
    • 在 "DEPLOY" 按钮下方,你可以看到构造函数的参数,如果你在合约中硬编码了 namesymbol,这里可能为空或显示默认值,如果没有硬编码,你需要在这里输入,例如输入 "My Test Token" 和 "MTT"。
    • 确保 "ACCOUNT" 显示的是你的测试网账户,并且该账户有足够的测试 ETH。
    • 点击橙色 "Deploy" 按钮。
  3. 确认交易

    • MetaMask 会弹出交易确认窗口,显示部署合约所需的 gas 费用。
    • 确认交易详情无误后,点击 "Confirm"。
    • 等待几秒钟,交易被打包到区块后,Remix 的 "Deployed Contracts" 区域会显示你部署的合约实例,包括合约地址。

验证代币

  1. 在 MetaMask 中添加代币

    • 打开 MetaMask 钱包,点击主账户下方的 "Import tokens" 或 "添加代币"。
    • 在 "Token Contract Address" 输入框中,粘贴你刚刚部署的合约地址。
    • MetaMask 通常会自动填充代币名称、符号和小数位数(如果合约正确实现了这些函数)。
    • 点击 "Next" -> "Add Custom Token" 或 "添加自定义代币",你应该能在 MetaMask 中看到你的代币余额了(初始铸造的数量)。
  2. 使用 Etherscan 验证

    • 复制合约地址,前往对应的以太坊测试网 Etherscan(如 Sepolia EtherscanGoerli Etherscan)。
    • 在搜索框中粘贴合约地址,进入合约页面。
    • 你可以查看合约代码(如果你在 Remix 中选择了 "Flatten" 或通过其他方式验证了源代码)、代币信息、交易记录等。

**六、 进