本文面向开发者、研究员及资深爱好者,完整梳理二次方分片第一阶段的协议细节、经济机制与客户端实现思路,并给出可直接落地的 FAQ 与实战建议。
什么是二次方分片
核心关键词:分片(Sharding)、以太坊扩容、验证器管理合约(VMC)、Collation、无状态客户端、Gas 限制、访问列表
分片是一种“横向拆分”思路:把单一区块链拆成多条并行链(子分片),每条链独立打包交易后汇总回主链,从而在节点性能不变的情况下线性提升整体容量。
- 在第一阶段,以太坊主链维持 PoW 共识,新增 100 条分片链承载交易。
- 每条分片链拥有独立的状态空间与验证器,但所有验证器信息统一锁定在主链的 验证器管理合约 VMC 中。
- 最终,主链区块仅记录各分片的 Collation header(校验头),而不存储完整交易明细,大幅减少主链膨胀。
通过桥梁式结构,整体交易容纳能力从 O(c) 提升到 O(c²),理论上放大 100 倍。
👉 一文看懂为何开发者急需掌控分片技术,错过或将面临高额重构成本
协议概览与阶段划分
- 第一阶段:单方向敲定——主链仅汇总分片头,不强制回滚;初步交付 100× 吞吐量。
- 第二阶段:双向锚定(two-way pegging),允许资产跨分片自由进出。
- 第三阶段:Collation header 上链方式优化(Uncle 形式或数组形式),做软分叉。
- 第四阶段:紧耦合 & 数据可用性证明——如果区块指向无效 Collation,则区块本身作废,为以太坊 2.0 完全 PoS 基石。
本文聚焦 第一阶段。
关键数据结构
| 主链 | 分片链 |
|---|---|
| Block | Collation |
| BlockHeader | CollationHeader |
| Miner/Proposer | Collator |
1. CollationHeader 字段
- shard_id:目标分片编号 0–99
- expected_period_number:希望被打包的周期号
- period_start_prevhash:上一周期末区块哈希
- parent_hash:父 Collation 哈希
- transaction_root:本 Collation 包含的交易 Trie 根
- coinbase:collator 收益地址
- state_root:执行后状态根
- receipt_root:收据 Trie 根
- number:Collation 编号(递增)2. 常量速查
SHARD_COUNT: 100COLLATION_GASLIMIT: 10,000,000 gasCOLLATOR_REWARD: 0.001 ETHPERIOD_LENGTH: 5 区块 ≈ 75 秒LOOKAHEAD_PERIODS: 4,给予验证器 20 区块提前通知
验证器管理合约(VMC)职责
质押/解押
deposit()将 ETH 锁仓获得验证器 id;质押越大,出块概率越高。withdraw(index)解锁并退还押金。
随机抽签
get_eligible_proposer(shard_id, period)依质押权重伪随机选 collator,实现“一人签一日”,避免单点作恶。
Collation 头验证与存储
add_header(...)校验合规后写入链上状态,触发CollationAdded日志。
Collation 生成流程(CREATE_COLLATION)
步骤拆解:
- GUESS_HEAD:下载并验证“最长有效分片链”,缓存写集(见证节点)。
- 交易池排序:按 gasPrice 降序排列,剔除超限交易。
- UPDATE_WITNESS:利用缓存 + 用户提供的见证快速补齐状态 Merkle 分支。
- 状态转换:逐一执行交易 → 更新 state_root → 把奖励写进 collator 账户。
- 发布:组装
(header, txs, witness)广播至分片网络并由 VMC 上链认定。
整个过程仅需 O(c) 资源即可在轻量级节点完成,充分体现分片对硬件的友好。
无状态客户端原理
传统区块链节点需维护 GB 级状态;而分片场景下要求 验证器数分钟内完成出块,不可能每个都存储全状态。
解决思路:
- 验证器仅保存 state root,运行“无状态执行”。
- 交易发送者在交易外附带 witness(Merkle proof),证明账户前状态并披露写入路径。
- 节点可在 不保存大状态 的前提下,完成校验与状态根更新。
访问列表机制将 “不可预见的状态访问” 提前揭示,防止恶意交易耗尽 gas。
# 简化版状态转换函数
apply_block(state_obj, witness, block)
-> (new_state_obj, reads, writes)交易格式升级(支持分片)
新交易 RLP 结构与校验流程:
[
chain_id, // 主网为 1
shard_id, // 指定目标分片
target, // 接收账户
data, // calldata
start_gas,
gasprice,
access_list, // 显性声明可访问的地址与存储前缀
code // 合约创建时 initcode
]- 无效阈值:失败交易若消耗 ≤ 200k gas,直接视为无效;否则正常扣费。
- 费用结算:剩余 gas 直接退还给用户,奖励统一在区块完成时添加至 coinbase,避免交易级 coinbase 污染。
数据树重构:二进制双阶 Trie
为了降低见证大小、加速同步:
- 旧方案:多层 Patricia Trie;新方案:单一层二进制 Trie,键值按
sha3(addr) ++ slot组合。 - 目标:减少 3–4 倍带宽,提升手机或物联网设备运行全节点可行性。
阶段里程碑与风险提醒
| 阶段 | 功能 | 主网兼容性 | 风险提示 |
|---|---|---|---|
| 1 | 单方向汇总 | 无需硬分叉 | 网络延迟可导致分叉概率↑ |
| 2 | 双向跨分片转账 | 软分叉 | 跨片通信需完备证明 |
| 3 | header 上链方式优化 | 软分叉 | 需矿工配合 |
| 4 | 数据可用性 + 紧密耦合 | 硬分叉 | 若 Collation 无效,主链区块无效,需社会共识 |
开发者可基于阶段粒度灰度集成,降低后期代码回滚风险。
常见问题解答(FAQ)
Q1:普通用户需要为分片升级钱包吗?
A:不需要。钱包仅需识别新交易格式(chain_id + shard_id)即可,背后由节点自动路由到对应分片。
Q2:家用电脑能否成为验证器?
A:家用电脑在第一阶段 可以 质押 ≥ 32 ETH 成为验证器。但受网络抖动影响,建议使用轻节点 + 可靠网络;亦可委托质押服务商降低失联惩罚。
Q3:为何设置 4 周期 Lookahead?
A:给予验证器 提前 4×5=20 区块 ≈ 5 分钟 预加载状态与网络同步时间,降低孤块率。
Q4:Collation header 丢失会导致资产丢失吗?
A:不会。数据可用性方案(第二阶段后)要求 Collation body 被网络冗余存储;同时主链仅记录 header,truth source 仍在全网。
Q5:访问列表太大会不会超限?
A:访问列表大小计入 gas 消耗,用户需自付。协议禁止触碰未声明存储,避免粉尘攻击。
Q6:未来会否扩大至 1000 分片?
A:二次方模型已具备理论可扩展性,但实际 TPS 还受网络/IO 上限约束。社区倾向先验证 100 分片稳定性后再渐进增加。
至此,你已掌握从零部署一个兼容第一阶段的分片原型所需的全部细节。随着以太坊 2.0 路线图逐步落地,二次方分片将不仅是扩容利器,更是下一代链上应用创新的基础设施。