Skip to content

Addresses

libID deploys every contract through a factory with CREATE3. An address depends only on the contract’s name and the factory, and each environment has its own factory. So a contract has one address on every production network and another on every testnet. Within an environment these addresses never change: contract updates are upgrades at the same address.

ContractProductionTestnet
IdentityRegistry0xbefd300aff7d4a67fb381afe8b3596793d3e9a830x25f29c8c765db2f27d1e2b23987a7b0655c7d640
HandleEscrow0x17a244e23ef1f12071298a1862194fea3d00bbf70x57355e1d1bcf61fec9b2e5cad60dcccdddc4d8e5
CeremonyProofVerifier0x36e6d6cf465cb9f0615ceb0fc37ef30927dac66e0xa795b14a2e09daf273bc6971058b0462c7d6be42
NotaryService0x2feee7c87bec78853afc223135735d4786e751770xa773ec5e7500d1c87827ab1b899bbd992c1b5931
GitHub platform verifier0xdd7d34f2302bc2ccac36bdcec5fdafe0ca91f8880xb5fdf35eedf7c849f3d1e41675d8b8a41487e248
X platform verifier0x61d79debf1b7e512ae8b305ba76c6f82f46091420x9f655c2fe778260d90f3202d97da0a46510aa3d0
Google platform verifier0x727f4a1c9040a94ca27f74667c70d1c2951a0b5a0x5cfb807545e0e2ce4d7dac7d97ab0583e3fbe1c6
GoogleJwtRoots0x1f3d9b49efde0c12ed2ffeab67165ebe0c97517a0x8a14a5dda7662f88a5448b9b8b2ca9f1d5742904
LibidFactory0xb7432c991be3167689d5e80c9e2bf1ff5cccd2e00x9dbf2b5f96cb31a48cca4e25d2c8348be414ebc8

Production is Ethereum mainnet. The testnets are Sepolia and Eden testnet. The same address on two networks does not mean the same version. Check each network’s page for what it runs.

The local chain is an environment of its own, deployed by anvil’s first account, so its contracts land at other addresses again. Its guide lists them.

These addresses come from chain-configurations, where libid-deploy plan --print-addresses generates them. If this page and that repository disagree, trust the repository.

Most apps only need IdentityRegistry. Your code talks to the others only if it builds proofs itself.