目 录CONTENT

文章目录

主币和代币区别

懿曲折扇情
2025-11-27 / 0 评论 / 1 点赞 / 5 阅读 / 5,081 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2025-11-27,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
广告 广告

主币与代币完全指南

在区块链世界中,主币(Native Coin)和代币(Token)是两个重要概念。本文档详细解释如何区分主币和代币,它们的作用,以及如何在区块链浏览器中识别它们。

目录

  1. 什么是主币和代币
  2. 主币与代币的区别
  3. 主币的作用
  4. 代币的作用
  5. 如何区分主币和代币
  6. 区块链浏览器中的识别
  7. 实际案例
  8. 常见问题

什么是主币和代币

主币(Native Coin)

主币 = 区块链的原生货币

  • 🔷 由区块链协议直接定义
  • 💰 用于支付Gas费/手续费
  • ⛏️ 通过挖矿或质押获得
  • 🏗️ 区块链的基础货币

例子:

以太坊(Ethereum)→ ETH(主币)
比特币(Bitcoin)→ BTC(主币)
币安智能链(BSC)→ BNB(主币)
波场(Tron)→ TRX(主币)

代币(Token)

代币 = 基于主链发行的数字资产

  • 📝 通过智能合约创建
  • 🔄 依赖主链运行
  • 💸 需要主币支付Gas费
  • 🎯 用于特定用途

例子:

ERC-20代币(基于以太坊):
- USDT(Tether)
- USDC(USD Coin)
- UNI(Uniswap)
- LINK(Chainlink)

BEP-20代币(基于BSC):
- CAKE(PancakeSwap)
- BUSD(Binance USD)

简单类比

主币 = 人民币(国家发行的法定货币)
代币 = 优惠券、积分、股票(基于人民币体系发行的凭证)

主币 = 高速公路(基础设施)
代币 = 在高速公路上行驶的车辆(依赖基础设施)

主币与代币的区别

对比表

特性 主币(Native Coin) 代币(Token)
发行方式 协议内置 智能合约发行
Gas费支付 ✅ 可以 ❌ 不可以(需要主币)
获取方式 挖矿、质押、购买 购买、空投、挖矿
技术实现 协议层实现 智能合约实现
依赖关系 独立存在 依赖主链
销毁机制 协议控制 合约控制
转账速度 协议决定 受主链影响

详细区别

1. 技术实现

主币:

主币在协议层实现,是区块链的核心部分

以太坊主币(ETH):
- 在以太坊协议中直接定义
- 账户余额存储在状态树中
- 转账是协议级操作

比特币主币(BTC):
- 在Bitcoin协议中定义
- 通过UTXO模型管理
- 是协议的基础单位

代币:

代币通过智能合约实现,运行在区块链之上

ERC-20代币示例:
contract MyToken {
    mapping(address => uint256) public balanceOf;
    
    function transfer(address to, uint256 amount) {
        balanceOf[msg.sender] -= amount;
        balanceOf[to] += amount;
    }
}

2. Gas费支付

主币:

✅ 可以直接支付Gas费
✅ 是Gas费的唯一支付方式(在某些链上)
✅ 转账本身消耗Gas费

例子:
发送1 ETH需要消耗约0.001 ETH作为Gas费

代币:

❌ 不能直接支付Gas费
✅ 转账代币需要消耗主币作为Gas费

例子:
发送100 USDT需要消耗约0.001 ETH作为Gas费

3. 账户模型

主币:

主币余额直接存储在账户中

以太坊账户:
{
    address: "0x1234...",
    balance: 1.5 ETH,  // 主币余额
    nonce: 10
}

代币:

代币余额存储在智能合约中

代币合约:
{
    contractAddress: "0x5678...",
    balances: {
        "0x1234...": 1000 USDT,  // 用户代币余额
        "0xabcd...": 500 USDT
    }
}

主币的作用

1. 支付交易手续费(Gas费)

核心作用:

任何链上操作都需要支付Gas费:
- 转账主币:消耗主币
- 转账代币:消耗主币
- 调用智能合约:消耗主币
- 部署合约:消耗主币

例子(以太坊):
操作                    Gas费(ETH)
转账ETH                  ~0.001 ETH
转账USDT                 ~0.001 ETH
调用Uniswap交换          ~0.01 ETH
部署智能合约             ~0.1 ETH

2. 网络安全(共识机制)

PoW(工作量证明):

矿工需要消耗计算资源挖矿
获得主币作为奖励
维护网络安全

比特币:
- 矿工挖矿获得BTC奖励
- 消耗电力维护网络
- 51%攻击成本高

PoS(权益证明):

验证者需要质押主币
获得主币作为奖励
维护网络安全

以太坊2.0:
- 验证者质押32 ETH
- 获得ETH奖励
- 作恶会被罚没质押

3. 价值存储

主币作为区块链的原生资产:
- 具有价值存储功能
- 可以作为交易媒介
- 具有投资价值

例子:
- BTC:数字黄金
- ETH:智能合约平台代币
- BNB:币安生态代币

4. 治理投票(部分链)

某些链的主币可以用于治理:

例子:
- BNB:币安链治理
- ATOM:Cosmos治理
- DOT:Polkadot治理

代币的作用

1. 稳定币

作用:价值稳定,用于交易和存储

USDT(Tether):
- 锚定美元(1 USDT ≈ 1 USD)
- 用于交易对
- 价值存储

USDC(USD Coin):
- 锚定美元
- 合规稳定币
- DeFi应用

DAI:
- 去中心化稳定币
- 超额抵押
- 算法调节

2. 功能代币(Utility Token)

作用:在特定平台或应用中使用

UNI(Uniswap):
- 去中心化交易所代币
- 治理投票
- 流动性挖矿奖励

LINK(Chainlink):
- 预言机网络代币
- 支付数据服务费用
- 节点质押

CAKE(PancakeSwap):
- BSC上的DEX代币
- 流动性挖矿
- 治理投票

3. 治理代币

作用:参与项目治理决策

功能:
- 提案投票
- 参数调整
- 资金分配
- 协议升级

例子:
- UNI:Uniswap治理
- COMP:Compound治理
- AAVE:Aave治理

4. NFT代币

作用:代表独特的数字资产

ERC-721(以太坊NFT):
- 每个代币都是唯一的
- 代表数字艺术品、收藏品
- 不可分割

例子:
- CryptoPunks
- Bored Ape Yacht Club
- 数字艺术品

5. 证券型代币(Security Token)

作用:代表传统资产的所有权

例子:
- 股票代币化
- 债券代币化
- 房地产代币化

如何区分主币和代币

方法1:查看合约地址

主币特征:

✅ 没有合约地址
✅ 直接存储在账户中
✅ 转账是协议级操作

例子:
ETH转账:
From: 0x1234...
To: 0x5678...
Value: 1 ETH
Contract: (无) ← 主币特征

代币特征:

✅ 有合约地址
✅ 存储在合约中
✅ 通过合约调用转账

例子:
USDT转账:
From: 0x1234...
To: 0x5678...
Token: USDT
Contract: 0xdAC17F958D2ee523a2206206994597C13D831ec7 ← 代币特征

方法2:查看交易类型

主币交易:

交易类型:普通转账(Transfer)
操作码:CALL(以太坊)
输入数据:通常为空或简单

例子(以太坊):
{
    "type": "transfer",
    "from": "0x1234...",
    "to": "0x5678...",
    "value": "1000000000000000000",  // 1 ETH (wei)
    "input": "0x"  // 空输入
}

代币交易:

交易类型:合约调用(Contract Call)
操作码:CALL to contract
输入数据:包含函数调用数据

例子(ERC-20转账):
{
    "type": "contract_call",
    "from": "0x1234...",
    "to": "0xdAC1...",  // USDT合约地址
    "value": "0",  // 不发送ETH
    "input": "0xa9059cbb0000000000000000000000005678...000000000000000000000000000000000000000000000000000de0b6b3a7640000"
    // 包含transfer函数调用
}

方法3:查看Gas费支付

主币:

✅ 转账本身消耗Gas费
✅ Gas费从主币余额扣除

例子:
发送1 ETH
消耗:0.001 ETH(Gas费)
实际到账:0.999 ETH

代币:

✅ 转账需要额外的主币支付Gas费
✅ 代币本身不支付Gas费

例子:
发送100 USDT
需要:0.001 ETH(Gas费,从ETH余额扣除)
实际到账:100 USDT

方法4:查看账户余额

主币余额:

直接显示在账户信息中

以太坊账户:
{
    "address": "0x1234...",
    "balance": "1.5 ETH",  // 主币余额
    "nonce": 10
}

代币余额:

需要查询合约

代币余额:
需要调用合约的balanceOf函数
或通过区块浏览器查看

例子:
查询USDT余额:
调用 0xdAC1... 合约的 balanceOf(0x1234...)
返回:1000 USDT

区块链浏览器中的识别

以太坊浏览器(Etherscan)

识别主币(ETH)

交易记录特征:

1. 查看交易详情页面

交易类型显示:
┌─────────────────────────────────────┐
│  Transaction                        │
│  Type: Transfer (ETH)               │  ← 主币标识
│  Status: Success                    │
│                                     │
│  From: 0x1234...                    │
│  To: 0x5678...                      │
│  Value: 1 ETH                       │  ← 主币金额
│  Transaction Fee: 0.001 ETH        │  ← 用主币支付
│                                     │
│  Contract: (无)                      │  ← 无合约地址
└─────────────────────────────────────┘

关键标识:

  • ✅ “Type: Transfer” 或 “ETH Transfer”
  • ✅ “Contract” 字段为空
  • ✅ “Value” 字段有ETH金额
  • ✅ “Transaction Fee” 用ETH支付

识别代币(ERC-20)

交易记录特征:

1. 查看交易详情页面

交易类型显示:
┌─────────────────────────────────────┐
│  Transaction                        │
│  Type: ERC-20 Token Transfer        │  ← 代币标识
│  Status: Success                    │
│                                     │
│  From: 0x1234...                    │
│  To: 0xdAC1... (USDT Contract)      │  ← 合约地址
│  Value: 0 ETH                        │  ← 不发送ETH
│  Transaction Fee: 0.001 ETH        │  ← 用ETH支付Gas
│                                     │
│  Token Transfer:                    │
│  • Token: USDT                      │
│  • Amount: 100 USDT                 │  ← 代币金额
│  • Contract: 0xdAC1...             │  ← 合约地址
└─────────────────────────────────────┘

关键标识:

  • ✅ “Type: ERC-20 Token Transfer”
  • ✅ “To” 字段是合约地址
  • ✅ “Value” 字段为 0 ETH
  • ✅ 有 “Token Transfer” 部分
  • ✅ 显示代币名称和金额

查看代币列表:

在账户页面:
┌─────────────────────────────────────┐
│  Address: 0x1234...                 │
│                                     │
│  Balance: 1.5 ETH                    │  ← 主币余额
│                                     │
│  Token Holdings:                    │
│  • USDT: 1,000                       │  ← 代币列表
│  • USDC: 500                        │
│  • UNI: 10                          │
│  • LINK: 100                        │
└─────────────────────────────────────┘

比特币浏览器(Blockchain.info

识别主币(BTC)

交易记录特征:

交易详情:
┌─────────────────────────────────────┐
│  Transaction                        │
│  Hash: abc123...                    │
│                                     │
│  Inputs:                            │
│  • From: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa │
│    Amount: 0.5 BTC                  │  ← BTC金额
│                                     │
│  Outputs:                           │
│  • To: 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2 │
│    Amount: 0.49 BTC                 │  ← BTC金额
│  • To: (Change)                     │
│    Amount: 0.009 BTC                │
│                                     │
│  Fee: 0.001 BTC                     │  ← 用BTC支付
└─────────────────────────────────────┘

关键标识:

  • ✅ 输入输出都是BTC
  • ✅ 手续费用BTC支付
  • ✅ 没有合约地址
  • ✅ UTXO模型

BSC浏览器(BscScan)

识别主币(BNB)

交易类型:
┌─────────────────────────────────────┐
│  Transaction                        │
│  Type: BNB Transfer                 │  ← 主币
│  Value: 1 BNB                       │
│  Transaction Fee: 0.001 BNB        │
│  Contract: (无)                      │
└─────────────────────────────────────┘

识别代币(BEP-20)

交易类型:
┌─────────────────────────────────────┐
│  Transaction                        │
│  Type: BEP-20 Token Transfer        │  ← 代币
│  Token: CAKE                        │
│  Amount: 100 CAKE                   │
│  Contract: 0x0E09...               │
│  Transaction Fee: 0.001 BNB        │  ← 用BNB支付
└─────────────────────────────────────┘

通用识别方法

方法1:查看交易类型标签

主币交易标签:
- "Transfer"
- "ETH Transfer"
- "BNB Transfer"
- "BTC Transaction"

代币交易标签:
- "Token Transfer"
- "ERC-20 Transfer"
- "BEP-20 Transfer"
- "Token Contract Call"

方法2:查看合约地址

主币:
Contract Address: (无)
或显示:Not a Contract

代币:
Contract Address: 0x...
点击可查看合约详情

方法3:查看输入数据(Input Data)

主币转账:
Input Data: 0x
或:0x(空)

代币转账:
Input Data: 0xa9059cbb...(函数调用数据)
包含:函数选择器 + 参数

方法4:查看事件日志(Event Logs)

主币转账:
Logs: (无)
或:只有基础日志

代币转账:
Logs: Transfer事件
包含:
- from: 发送地址
- to: 接收地址
- value: 代币数量

实际案例

案例1:以太坊主币转账

交易哈希: 0xabc123...

区块浏览器显示:

┌─────────────────────────────────────┐
│  Transaction Details                │
├─────────────────────────────────────┤
│  Status: Success                    │
│  Type: Transfer (ETH)               │  ← 主币
│                                     │
│  From: 0x742d35Cc6634C0532925a3b... │
│  To: 0x1234567890abcdef1234567890... │
│  Value: 1 ETH                       │  ← 主币金额
│  Transaction Fee: 0.001 ETH        │
│                                     │
│  Contract: (无)                      │  ← 无合约
│  Input Data: 0x                     │  ← 空输入
│  Logs: (无)                          │  ← 无事件
└─────────────────────────────────────┘

识别要点:

  • ✅ Type显示"Transfer (ETH)"
  • ✅ Contract字段为空
  • ✅ Input Data为空
  • ✅ 有Value金额(ETH)

案例2:ERC-20代币转账

交易哈希: 0xdef456...

区块浏览器显示:

┌─────────────────────────────────────┐
│  Transaction Details                │
├─────────────────────────────────────┤
│  Status: Success                    │
│  Type: ERC-20 Token Transfer        │  ← 代币
│                                     │
│  From: 0x742d35Cc6634C0532925a3b... │
│  To: 0xdAC17F958D2ee523a220620699... │  ← 合约地址
│  Value: 0 ETH                        │  ← 不发送ETH
│  Transaction Fee: 0.001 ETH        │  ← 用ETH支付Gas
│                                     │
│  Token Transfer:                    │
│  • Token: Tether USD (USDT)         │
│  • Amount: 1,000 USDT               │  ← 代币金额
│  • Contract: 0xdAC17F958D2ee523a... │
│                                     │
│  Input Data:                        │
│  0xa9059cbb0000000000000000000000... │  ← 函数调用
│                                     │
│  Event Logs:                        │
│  Transfer(                          │  ← Transfer事件
│    from: 0x742d35...,
│    to: 0x123456...,
│    value: 1000000000                │
│  )                                  │
└─────────────────────────────────────┘

识别要点:

  • ✅ Type显示"ERC-20 Token Transfer"
  • ✅ To字段是合约地址
  • ✅ Value为0 ETH
  • ✅ 有Token Transfer部分
  • ✅ Input Data包含函数调用
  • ✅ 有Transfer事件日志

案例3:混合交易(主币+代币)

场景: 同时发送ETH和USDT

交易包含两部分:

1. 主币转账:
   Value: 0.1 ETH
   To: 0x1234...

2. 代币转账:
   Token: USDT
   Amount: 100 USDT
   Contract: 0xdAC1...

区块浏览器显示:

┌─────────────────────────────────────┐
│  Transaction Details                │
├─────────────────────────────────────┤
│  Type: Contract Call                │
│                                     │
│  Value: 0.1 ETH                     │  ← 主币部分
│  To: 0x1234...                      │
│                                     │
│  Token Transfer:                    │
│  • USDT: 100                        │  ← 代币部分
│                                     │
│  Input Data: 0xa9059cbb...          │
└─────────────────────────────────────┘

案例4:智能合约调用

场景: 调用Uniswap交换代币

交易类型:Contract Call
目的:交换USDT为ETH

特征:
- To: Uniswap合约地址
- Value: 可能为0或包含ETH
- Input Data: 包含复杂的函数调用
- 多个Token Transfer事件

常见问题

Q1: 为什么代币转账需要主币?

A: 因为代币转账是通过调用智能合约实现的,而调用合约需要支付Gas费,Gas费只能用主币支付。

流程:
1. 用户调用代币合约的transfer函数
2. 合约执行转账逻辑
3. 消耗Gas费(用主币支付)
4. 代币余额在合约中更新

Q2: 如何查看我的代币余额?

方法1:区块浏览器

1. 访问区块浏览器(如Etherscan)
2. 输入你的地址
3. 查看"Token Holdings"部分
4. 显示所有代币及其余额

方法2:钱包应用

MetaMask等钱包会自动显示:
- 主币余额(ETH)
- 代币余额(USDT、USDC等)

方法3:调用合约

// 查询ERC-20代币余额
const contract = new ethers.Contract(
    tokenAddress,  // 代币合约地址
    abi,
    provider
);

const balance = await contract.balanceOf(userAddress);

Q3: 主币和代币可以互相转换吗?

A: 可以,但需要通过特定方式:

主币 → 代币:
- 通过DEX(去中心化交易所)购买
- 例如:在Uniswap用ETH购买USDT

代币 → 主币:
- 通过DEX卖出
- 例如:在Uniswap卖出USDT获得ETH

Q4: 如何区分不同标准的代币?

以太坊:

ERC-20: 同质化代币(可互换)
ERC-721: 非同质化代币(NFT,唯一)
ERC-1155: 多标准代币(可同质化也可非同质化)

BSC:

BEP-20: 同质化代币(类似ERC-20)
BEP-721: NFT代币

Q5: 主币可以销毁吗?

A: 可以,但方式不同:

主币销毁:
- 发送到销毁地址(如0x0000...)
- 协议层面的销毁(如EIP-1559燃烧ETH)
- 不可逆

代币销毁:
- 调用合约的burn函数
- 合约控制销毁逻辑
- 可设计为可逆或不可逆

Q6: 为什么有些代币显示为"Unknown Token"?

原因:

1. 代币未在区块浏览器注册
2. 代币信息不完整
3. 新发行的代币
4. 可能是诈骗代币

解决方法:
- 查看合约地址
- 验证合约代码
- 检查代币标准
- 谨慎操作

总结

核心区别

特征 主币 代币
合约地址
Gas费支付 ✅ 可以 ❌ 不可以
交易类型 Transfer Token Transfer
输入数据 函数调用
事件日志 无或基础 Transfer事件

识别方法总结

在区块浏览器中:

主币识别:
✓ Type: Transfer
✓ Contract: (无)
✓ Value: 有金额
✓ Input: 0x

代币识别:
✓ Type: Token Transfer
✓ Contract: 有地址
✓ Value: 0 ETH
✓ Token Transfer部分
✓ Transfer事件日志

最佳实践

✓ 理解主币和代币的区别
✓ 知道主币用于支付Gas费
✓ 在区块浏览器中正确识别
✓ 了解不同代币标准
✓ 谨慎处理未知代币

记住:主币是区块链的基础货币,代币是基于主链发行的数字资产。主币用于支付Gas费,代币需要主币才能转账! 💰

1

评论区