以太坊原理图讲解发币,从底层架构到代币发行全流程解析

博主:neragonerago 2026-10-05 11:12:27 4

以太坊(Ethereum)是全球最流行的智能合约平台,“发币”本质上就是在以太坊上部署一个符合特定标准的智能合约,本文通过原理图的方式,从架构、账户模型、交易流程到代币合约的部署,系统讲解以太坊发币的技术原理。

⚠️ 合规提示:本文仅作技术科普,代币发行在多数国家和地区受严格监管(在中国大陆,ICO及虚拟货币相关业务活动属于非法金融活动),学习技术原理合法合规,但实际发行代币须遵守当地法律法规。


以太坊整体架构原理图

┌──────────────────────────────────────────────┐
│              应用层(用户交互)                │
│      DApp  /  钱包(MetaMask)  /  DeFi        │
├──────────────────────────────────────────────┤
│              合约层(核心逻辑)                │
│   EVM(以太坊虚拟机) + 智能合约(ERC-20)     │
├──────────────────────────────────────────────┤
│              数据层(账本存储)                │
│   区块链  /  状态树(MPT)  /  交易树 / 收据树   │
├──────────────────────────────────────────────┤
│              网络层(节点通信)                │
│        P2P网络  /  节点广播  /  共识机制       │
└──────────────────────────────────────────────┘

各层职责:

  • 应用层:用户通过钱包与链上合约交互的入口
  • 合约层:发币的代码就运行在这一层的 EVM 中
  • 数据层:记录谁持有多少代币(状态数据)
  • 网络层:保证所有节点数据一致

账户模型原理图

以太坊有两类账户,这是理解发币的基础:

        以太坊账户
        ┌──┴──┐
        │     │
   EOA账户  合约账户
  (外部账户)(合约账户)
        │     │
   私钥控制  代码控制
        │     │
   可以发起  不能主动发起
   交易      交易,只能被调用
对比项 EOA 外部账户 合约账户
创建方式 生成私钥/助记词 部署合约
控制者 私钥持有者 合约代码逻辑
是否有代码 无 有(字节码)
主动发起交易 ✅ 可以 ❌ 只能被动响应

关键点:你发的“币”,本质上就是一个合约账户,它的代码规定了代币的名称、总量和转账规则。


一笔转账交易的完整流程图

 用户A转账给用户B
      │
      ▼
 ① 钱包构造交易 ──→ ② 私钥签名
      │
      ▼
 ③ 广播至P2P网络
      │
      ▼
 ④ 节点验证(签名/Gas/余额)
      │
      ▼
 ⑤ EVM执行合约代码
      │
      ▼
 ⑥ 扣除Gas费,更新状态
      │
      ▼
 ⑦ 打包进区块,全网同步
      │
      ▼
 ⑧ 交易确认(B账本余额+B)

Gas 机制图解

Gas费 = Gas Limit(用量上限) × Gas Price(单价)
  ┌────────────────────────────┐
  │ 简单转账:      21,000 Gas │
  │ ERC-20转账:   ~50,000 Gas │
  │ 部署代币合约:1,000,000+ Gas│
  └────────────────────────────┘

Gas 是防止恶意代码死循环的资源计费机制,操作越复杂,消耗越多。


ERC-20 标准:发币的技术规范

ERC-20 是以太坊代币的统一接口标准,所有钱包和交易所都默认支持,核心函数如下:

┌─────────────────────────────────────────┐
│              ERC-20 标准接口              │
├─────────────────────────────────────────┤
│ name()          代币名称    如 "MyToken" │
│ symbol()        代币符号    如 "MTK"     │
│ decimals()      小数位数    通常为 18     │
│ totalSupply()   发行总量                 │
│ balanceOf()     查询余额                 │
│ transfer()      直接转账                 │
│ approve()       授权额度                 │
│ transferFrom()  授权转账                 │
└─────────────────────────────────────────┘

代币转账原理图(合约内部状态变化)

转账前状态(存储在合约的状态变量中):
  balances[0xAAA...] = 1000
  balances[0xBBB...] = 0
执行 transfer(0xBBB..., 100) 后:
  balances[0xAAA...] = 900   ← 减少
  balances[0xBBB...] = 100   ← 增加
  ┌──────────────┐
  │  代币合约     │
  │ (合约账户)    │── 记录所有余额映射
  │ balances映射表│
  └──────────────┘

核心认知:代币转账并没有真的“转移”什么东西,只是修改了合约内部的一张余额映射表(mapping),而这个表全网节点共同记录、无法

The End

发布于:2026-10-05,除非注明,否则均为区块链社区- 欧亿APP下载原创文章,转载请注明出处。