[PoHv2] Proof of Humanity v2

Hello everyone. Let’s make this the general thread for Proof of Humanity v2.

Here is the most up-to-date link with the overview: POV V2

Adding remaining details later. Something missing or unclear, feedback, drop it here.

Here are the contracts if you want to check them.
Here is the thread for interface suggestions and testing.

5 Likes

One thing that didn’t get much discussion on is my suggestion to add bad vouches counter to v2.

2 Likes

Hello. Thanks André and team, this really Is huge.

I took the liberty of translating the article to spanish. Will post it below.

Really really really needs editing. I translated it on my own and I dont know anything about dev.

Thanks all

Proof of Humanity V2

La nueva versión de Proof of Humanity trae dos nuevas características principales: Soulbound IDs y expansión multi-chain. En este documento exploramos estás características en profundidad, empezando con un breve resumen de los cambios Co no parados a la v1, para después de eso entrar en detalles más técnicos.

SOULBOUND IDs
En la primera versión de Proof of Humanity, cada registro de un humanx registradx se correspondia con la billetera que usaba. Si perdía el acceso a esa billetera, tenía que registrarse con otra (perdiendo la reputación construida y los bienes conectados a la vieja billetera).

En Proof of Humanity v2, a cada humanx le corresponderá una única ID. Asignandosele esa identidad soulbound (literalmente se traduce como “ligada al alma”), un humanx que pierda su billetera podrá hacer referencia a su ID cuando se registre de nuevo, recuperando así lo que había construido hasta entonces.

Como cada Soulbound ID corresponde a un humano y a su billetera, podemos usar los términos “humanidad” e “ID de humanidad” para referirnos al concepto Soulbound específico del protocolo Proof of Humanity.

Una persona se registra en Proof of Humanity y recibe una identidad nunca antes reclamada, la cual pasa a referenciarse en su ID de humanidad.

Una humanidad puede tener un dueño (es decir, ser reclamada) o no. Su duración (similar al concepto de la duración del registro en la v1), una vez expirado el registro en PoH, vuelve a un estado de no reclamada.

1 humanx → 1 billetera ↔️ 1 humanidad

Se entiende que si pierdes tu billetera, puedes solicitar la remoción de la billetera y registrarte con una nueva, referenciándote con tu ID de humanidad. Entonces, puedes tener tus registros de reputación y tus bienes conectados a tu ID de humanidad, siendo de esta forma recuperables. No sería inteligente que alguien comprara la ID de otro, ya que el humanx que la posee podrá recuperarla fácilmente.

humanx pierde acceso a su billetera

poseedor.humanidad == billetera pedida
esHumanx(billetera pérdida) == verdad

humanx solicita remoción de billetera perdida

poseedor.humanidad == none
esHumanx(billetera pérdida) == falso

humanx se registra con una nueva billetera

poseedor.humanidad == nueva billetera
esHumanx(nueva billetera) == verdad

esto permite que avancen los casos de uso robustos como los soulbound tokens, billeteras soulbound, mecanismos de recuperación sociales, experimentos de gobernanza y más.

Expansión Multi-chain

Además de mainnet, Proof of Humanity v2 también se desplegará en la Gnosis chain. Será posible usar puentes para comunicarse entre las chains con distintos fines como actualizar el estado del registro de humanidad, transferir la humanidad o cambiar la home chain. Es posible que una humanidad esté en múltiples chains al mismo tiempo.

Habrá dos contratos inteligentes importantes (todos ellos delegados en todas las chains que están respaldadas):

ProfOfHumanity

Tiene una funcionalidad similar al contrato principal de PoH v1 (y además, funcionalidad soulbound).
Una humanidad reclamada en este contrato en una chain XYZ específica tiene como home chain la chain XYZ.
Una humanidad debe tener una única home chain, por lo que una vez que una humanidad se reclamó en la chain XYZ, será motivo de challenge que se reclame la misma en otra chain.
Sí será posible cambiar de home chain a través de CrossChainProofOfHumanity (o haciendo que esa humanidad sea removida, o cuando expire su duración en la home chain).
Este es el contrato en el que el humanx correspondiente a una humanidad puede vouchear a otrxs, reclamar de nuevo su humanidad, pedir remociones y enviar actualizaciones de estado de humanidad a cualquier otra chain.
Llamar esHumanx en este contrato de una billetera específica debe devolver verdad como máximo en una chain (la home chain). En este ejemplo la home chain es Gnosis:

en mainnet

esHumanx(billetera) == falso

en Gnosis chain

es Humanx(billetera) == verdad
CrossChainProofOfHumanity

Maneja la lógica de actualizar el estado de humanidad de la home chain a cualquier otra chain.
Guarda los estados de humanidad recibidos (si en alguna instancia recibe una actualización de estado de humanidad, se asume que esa chain en la que está desplegada no es la home chain de esa humanidad)
En caso de transferencia, remueve o añade manualmente la humanidad al contrato de Proof of Humanity según el caso.
Por lo cual, una humanidad con Gnosis chain como home chain puede actualizar su estado a mainnet devolviendo el siguiente resultado cuando solicite esHumanx en este contrato

en mainnet

esHumanx(billetera) == verdadero

en Gnosis chain

esHumanx(billetera) == verdadero

Habiendo construido esta infraestructura, expandirse hacia otras chains en el futuro será mucho más fácil (tan simple como desplegar el contrato, ajustar el arbitrator y el puente).
De todas maneras, debemos tener en cuenta que la legitimidad de Proof of Humanity dependerá de todas las chains en las que se despliegue, y que se trata de lógicas complejas, así que es recomendado expandir con precaución :slight_smile:

1 Like