Proof of Humanity 2.0 Integration Guide

Introduction

Welcome to the Proof of Humanity v2 (PoHv2) integration documentation. This guide will walk you through the process of integrating the PoHv2 smart contracts into your DApp project. We've designed our platform to make interacting with the multichain curated list of humans seamless and secure.

Key Features

  • A sybil resistant protocol (non-duplicate and bot-proof) registry of humans.

  • Prevents duplicate accounts, ensuring each entry represents a distinct individual.

  • Trusted list of humans curated by a decentralized community.

  • Consultable human identities registered through a unique wallet account, enhancing transparency and trustworthiness.

  • Airdrop feasibility, enabling seamless token distribution to verified human identities.

  • Ensures that accounts reached through the airdrop correspond to different humans, preventing token accumulation in a single identity.

  • Operates across multiple blockchain networks, allowing for widespread adoption and flexibility.

  • PoHv2 is currently deployed in Ethereum and Gnosis.

  • PoHv2 is an open-source project developed and maintained by Kleros.

  • The Kleros Justice Protocol is a (multichain) on-chain dispute resolution platform. It is integrated to PoHv2 and constitutes the ultimate resource utilized to verify and maintain the curated list of human identities registered in PoHv2.

Smart Contract Interactions

Main contracts

Ethereum

Gnosis

Basic interactions

On-chain verification:

  • For verifying if an account is registered in PoHv2, it is necessary to call the isHuman(address) function on the crossChain contract deployed on the target chain.

  • For verifying if the target chain is the home chain of a registered account, it is necessary to call the isHuman(address) function on the main PoHv2 contract deployed on the target chain.

In general, you just want to verify that an account is verified (so call the crossChain contract).

However if your application is deployed on multiple chains and you don't want to allow an user to be registered with the same humanity on both chains (for example if you are streaming a UBI to the user, you may want to be sure he can only claim it on one chain), you should call the PoHv2 contract to verify it is his home chain. You must also have a way to notify your app that the user does not have a home chain application anymore (as users can move their home chain to another chain, for example in the case of streaming a UBI, you can allow anyone to call a function to terminate the user stream if he is not registered on PoHv2 of this specific chain anymore).

Last updated