Chain | Testnet | Role | Identity Availability |
---|---|---|---|
World Chain | Bridged | ~5 Minutes after Ethereum | |
Sepolia | Canonical | ~60 minutes after verification | |
Optimism Sepolia | Bridged | ~5 Minutes after Ethereum | |
Polygon | Bridged | ~40 Minutes after Ethereum | |
Base Sepolia | Bridged | ~5 Minutes after Ethereum Sepolia |
WorldIdIdentityManager
OpStateBridge
/PolygonStateBridge
OpWorldId
/PolygonWorldId
WorldIdRouter
groupId
argument. This contract is proxied, so you will not need to update your code if the underlying contracts are upgraded.
groupId
must be 1
.verifyProof
method of the World ID Router is used to verify proofs on-chain.
Parameter | Type | Required | Description |
---|---|---|---|
root | uint256 | The World ID root to verify against. | |
groupId | uint256 | Determines which Credential Type to verify against. As only Orb
credentials are supported on-chain, this must be 1 . | |
signalHash | uint256 | The keccak256 hash of the signal to verify. | |
nullifierHash | uint256 | The root of the merkle tree to verify against. This is obtained from the
IDKit widget as a hex string nullifier_hash , and must be
converted to a uint256 before passing it to the
verifyProof method. | |
externalNullifierHash | uint256 | The keccak256 hash of the externalNullifier to
verify. The externalNullifier is computed from the
app_id and action . | |
proof | uint256[8] | The zero-knowledge proof to verify. This is obtained from the IDKit
widget as a hex string proof , and must be converted to a
uint256[8] before passing it to the
verifyProof method. |
verifyProof
function. To make your contract sybil-resistant, you’ll need to do the following:
nullifierHash
of each user that has successfully verified a proof.nullifierHash
is not already in the list of used nullifierHash
es.