Skip to main content

Documentation Index

Fetch the complete documentation index at: https://kleros-mintlify-changelog-2026-05-12-1778458371.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Introduction

Proof of Humanity (PoH) V2 is a Sybil-resistant registry of unique human identities. Each verified human receives a soulbound humanity ID (humanityId) that persists across wallet changes. PoH V2 uses Kleros Court for dispute resolution when profiles are challenged. Unlike V1 where each registration was bound to a specific wallet address, V2 decouples identity from address. One human maps to one humanity ID, which maps to one wallet address at any time. If a user loses wallet access, they can remove the lost address and re-register with a new one using the same humanityId.

Smart Contracts

Core interfaces, data structures, and contract addresses

Integration Guide

Integrate PoH identity verification into your application

Contract Addresses

ContractAddress
ProofOfHumanity0xA7Fd7A97bF12E112B2263957e115e0c46cE6A38C
CrossChainProofOfHumanityDeployed per foreign chain
PoH V2 operates on Gnosis Chain as the home chain. Cross-chain state is synchronized to other chains through bridge contracts. V1 registrations remain accessible through a Fork Module.

Architecture

PoH V2 consists of three layers:
1

Identity Registry

Core contract managing humanity IDs, registration claims, vouching, and challenge periods. Each humanity ID is a bytes20 value that uniquely identifies a verified human.
2

Cross-Chain Synchronization

Bridge contracts propagate humanity state across chains, enabling isHuman() checks on any supported network.
3

Dispute Resolution

Challenged registrations create disputes in Kleros Court. Jurors evaluate video evidence and vouching validity according to the registration policy.

Identity Model

1 human → 1 humanityId (bytes20) → 1 wallet address

// Wallet recovery flow:
humanity.owner == lostAddress      // Lost access
humanity.owner == address(0)       // Removal requested
humanity.owner == newAddress       // Re-registered with new wallet
V1 users have a humanityId equal to their original registration address (bytes20(address)). V2 users receive a new unique humanityId at registration.

Registration Lifecycle


Key Features

Humanity IDs persist across wallet changes. Applications that store data by humanityId rather than address preserve user reputation and assets even when the underlying wallet changes.
The isHuman() function is available on multiple chains through CrossChainProofOfHumanity contracts. Synchronization uses bridge infrastructure to propagate registration state.
A Fork Module allows V1 registrations to be recognized by V2. The isHuman() call automatically checks both V2 native registrations and V1 legacy registrations.
New registrants need a vouch from an existing verified human. The keeper bot processes vouches and reward withdrawals automatically, reducing manual intervention.

Resources

GitHub Repository

Smart contracts source code

Live Application

Production PoH interface

Discord

Developer support