World ID 智能合约全景指南:从以太坊到 Layer2,30 分钟掌握全流程

·

关键词:World ID 智能合约、身份管理器、状态桥、Orb 凭证、零知识证明、抗 Sybil、World ID Router、Merkle 树验证

World ID 是一套建立在零知识证明(ZKP)技术之上的链上身份协议,由一组可组合的智能合约构成,覆盖以太坊主网、Optimism、Polygon 与 Base 测试网等多链环境。了解这些合约的组合方式、调用方法与安全注意事项,对开发者(尤其是构建抗 Sybil 攻击dApp 的开发者)至关重要。

本文将用「组件地图 + 交互流程 + 代码示例 + 问答答疑」的形式,一次性把 World ID 合约讲透。


1. 合约总览:四张底牌看清全局结构

身份根最终性World ID 合约类型Merkle 根到达时间
Ethereum 主网原生身份管理器约 60 分钟
Optimism桥接Bridged World ID约 5 分钟
Polygon桥接Bridged World ID约 40 分钟
Base(测试网)桥接Bridged World ID约 5 分钟

World ID 的核心合约共 4 类,按角色区分:

  1. WorldIdIdentityManager(以太坊专署身份管理器)
  2. StateBridge(OpStateBridge / PolygonStateBridge)
  3. Bridged World ID(OpWorldId / PolygonWorldId)
  4. WorldIdRouter(开发者唯一需要直接交互的聚合路由器)

2. Identity Manager:根生于以太坊的首脑

开发者日常不会直接调用 WorldIdIdentityManager,除非你是在自建 sequencer。

3. State Bridge:把证明的「信任根」传向 Layer2

每一个 Layer2 都会各自拥有:

  1. State Bridge 周期性地向 Bridged World ID「广播」最新 Merkle 根。
  2. Layer1 → Layer2 延迟主要由官方 relayer 与 L2 出块速度决定:Optimism≈5分钟,Polygon≈40分钟。

👉 想了解如何无许可部署自定义链的 State Bridge?点击这里解锁跨链扩展路线。


4. Bridged World ID:Layer2 证明验证的执行场

Bridged 合约在功能上与主网合约几乎镜像:


5. World ID Router:开发者唯一直接对话的合约

“一句话总结:把它当成惟一被关心的合约地址即可。”

verifyProof 公开函数 6 元组参数一次讲清

字段名类型说明
rootuint256当前验证的 Merkle 根
groupIduint256只能是 1(Orb)
signalHashuint256keccak256(用户信号) 结果
nullifierHashuint256证明一次性标识符的哈希
externalNullifierHashuint256keccak256(app_id + action)
proofuint256[8]来自 IDKit 的零知识证明体

示例调用(Hardhat):

// 伪代码演示
WorldIdRouter(worldIdRouter).verifyProof(
    root,
    1,
    keccak256("welcome-chat"),
    nullifierHash,
    keccak256(abi.encodePacked(appId, action)),
    proof
);

6. 实战:抗 Sybil 认证的 3 行核心代码

零知识只提供「匿名唯一性」,要让协议 真正抗 Sybil 还需要额外步骤:

  1. 记录每一次验证通过后的 nullifierHash
  2. 下次验证前先查重,保证同一地址/身份只能执行一次。

极简示例:

contract SimpleSybilResistant {
    mapping(uint256 => bool) public usedNullifier;

    function claimReward(
        uint256 root,
        uint256 nullifierHash,
        uint256[8] calldata proof
    ) external {
        require(!usedNullifier[nullifierHash], "Already claimed");
        worldIdRouter.verifyProof(root, 1, signalHash, nullifierHash, externalNullifierHash, proof);
        usedNullifier[nullifierHash] = true;
        // 发放奖励...
    }
}

👉 想知道如何把这套逻辑快速集成到前端?一键查看完整示例模版。


7. 常见问答(FAQ)

Q1:如何把 World ID 接入自己主网的 dApp?
A:

  1. npm 安装 @worldcoin/idkit
  2. 用 IDKit 组件获取 rootproofnullifierHash
  3. 在合约调用 WorldIdRouter.verifyProof(...)
  4. 按上述 nullifier 记重即可。

Q2:State Bridge 能否经典形式再推送到自己私有区块链?
A:可。你只需要:

Q3:World ID Router 升级会自动影响正在运行的 dApp 吗?
A:不会。Router 经 UUPS 或 Proxy Pattern 部署,升级逻辑后的地址不变,业务端无需变地址。

Q4:Orb 凭证何时会允许更多 groupId?
A:官方计划 2025 Q4 开放 Phone / Orb Mixed Mode;对开发者来说只需等待 Router 更新即可。

Q5:Base 仅测试网,主网上线时间表?
A:目前官方未公布 Base 主网集成时间,可按需在 Sepolia 与 Optimism Sepolia 先验证。


8. 结语:链上身份,从单点钥匙到分布式信任根

World ID 把「物理独特性」转化为「可验证的匿名唯一性」,同时将最重的 身份管理器 留在最安全的以太坊主网, 验证与交互 下沉到速度快、费用低的 Layer2。开发者只需对着 WorldIdRouter 打一行 verifyProof,就完成了跨链、零知识、抗 Sybil 的闭环。

只用 5 分钟部署 World ID,你将拥有最具竞争力的链上身份基础设施。现在就开始动手吧!