代币 ERC-20
封面图
•
2025-10-24
•
区块链、加密货币
167
0
0
0
ERC-20 是以太坊(Ethereum)区块链上的一种**代币标准**,全称为 **Ethereum Request for Comment 20**。它是以太坊上最广泛使用的代币协议之一,定义了一套规则和接口,使得开发者可以创建兼容的代币。 --- ## 📌 什么是 ERC-20 代币? ERC-20 是一种**智能合约规范**,用于在以太坊网络上创建可互操作的代币。它规定了以下核心功能: | 函数/属性 | 说明 | |-----------|------| | `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 很重要? 1. **兼容性**:所有遵循 ERC-20 标准的代币可以在任何支持该标准的钱包、交易所或 DApp 中使用。 2. **标准化**:开发者只需实现这些函数,就能确保代币可以被其他系统识别和处理。 3. **广泛应用**:几乎所有的以太坊代币(如 USDT、DAI、UNI 等)都是基于 ERC-20 的。 --- ## 💡 示例:ERC-20 代币代码片段 ```solidity pragma solidity ^0.8.0; contract MyToken { string public name = "MyToken"; string public symbol = "MTK"; uint8 public decimals = 18; uint256 public totalSupply = 1000000 * 10 ** uint256(decimals); mapping(address => uint256) public balanceOf; mapping(address => mapping(address => uint256)) public allowance; event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); constructor() { balanceOf[msg.sender] = totalSupply; emit Transfer(address(0), msg.sender, totalSupply); } function transfer(address _to, uint256 _value) public returns (bool success) { require(balanceOf[msg.sender] >= _value); balanceOf[msg.sender] -= _value; balanceOf[_to] += _value; emit Transfer(msg.sender, _to, _value); return true; } function approve(address _spender, uint256 _value) public returns (bool success) { allowance[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) { require(_value <= balanceOf[_from]); require(_value <= allowance[_from][msg.sender]); balanceOf[_from] -= _value; balanceOf[_to] += _value; allowance[_from][msg.sender] -= _value; emit Transfer(_from, _to, _value); return true; } } ``` --- ## 🧠 常见问题 ### Q: ERC-20 和 ETH 有什么区别? - **ETH** 是以太坊的原生代币,用于支付 Gas 费用。 - **ERC-20 代币** 是运行在以太坊上的“自定义代币”,不能直接用于支付 Gas。 ### Q: 如何部署一个 ERC-20 代币? - 使用 Solidity 编写符合 ERC-20 标准的智能合约。 - 部署到以太坊主网或测试网(如 Ropsten、Rinkeby)。 - 可以通过 Etherscan 查看代币信息。 ### Q: 有哪些著名的 ERC-20 代币? - **USDT**(Tether) - **DAI** - **UNI**(Uniswap) - **LINK**(Chainlink) - **BAT**(Basic Attention Token) --- ## 📘 更多信息 - [ERC-20 官方文档](https://ethereum.org/developers/tutorials/erc20-token-smart-contracts/) - [Etherscan - ERC-20 代币列表](https://etherscan.io/tokens) - [Solidity 文档](https://docs.soliditylang.org/en/v0.8.17/) --- 如果你有具体的 ERC-20 代币问题(比如如何创建、部署、查看等),欢迎继续提问!
上一篇:
你会是别人生命中的第几个人
下一篇:
50种珍惜生命的态度你占几条
标题录入,一次不能超过6条
返回顶部
留言
留言
评论