Explicit account management
HIP: XX
title: Explicit account management
author: -
status: Draft
created: 2022-08-08
English version below.
Resumen simplificado
Construir un side-contract a PoH que permita identificar el nivel de registro, en especial, la implementación de un nivel 2 de registro donde se declare el manejo de cuentas. Ajustar la policy para que permita la implementación del nivel de registro “2” para reglamentar el challenge de cuentas con actividad relacionada pero no declarada.
Resumen
Esta HIP tiene tres frentes:
- Smart Contract. La construcción de un nuevo contrato inteligente bajo la misma gobernanza que el actual contrato de Proof of Humanity. El mismo identificará on-chain el “nivel de un registro” de PoH, en especial, el nivel de registro “2”, donde se admita la declaración del manejo de cuentas, con un máximo de 10 cuentas manejadas en total (configurable). Una cuenta manejada, no podrá manejar otras cuentas.
- UX/UI. (Opción 1) La integración de dicho contrato con los frontend’s actuales. (Opción 2) El diseño de un pequeño frontend nuevo que facilite la UX para dichas declaraciones. (Opción 3) Sin UI.
- Legal. La adaptación de la policy para permitir el challenge de cualquier actividad sospechosa de ser un sybil que no esté declarada en el nuevo contrato. Dicha actividad puede ser: la transferencia de UBIs, la votación en simultáneo, (otros ejemplos?)
Motivacion
Actualmente, muchos humanos se registra en proof of humanity por la integración con UBI. A su vez, los humanos que conocen UBI empiezan a pensar en registrar a conocidos o familiares, con el impulso de que todos puedan recibir la emisión del token. Para conseguir eso, lo más sencillo es conocer las claves (y, por lo tanto, controlar las cuentas) de dichos allegados. Esto implica que, de alguna manera, atrás de un address no hay exactamente un sólo humano.
El objetivo de POH es tener un registro resistente a los sybils, no está creado exclusivamente para la distribución del UBI. No hay que perder de vista la necesidad de otras dapps (como Lens, Gitcoin, etc) de asegurarse de que haya un sólo humano detrás de una address, lo que en el corto/mediano plazo será cada vez más valioso en el ecosistema de ethereum.
Frente a este aparente conflicto de intereses, esta propuesta busca construir un puente. La idea es que el registro de Proof of Humanity sea transparente en cuanto a las cuentas que son manejadas y que, en segunda instancia, sea el integrador interesado en el registro el que decida si quiere admitir dichas cuentas o no, o darles otro tratamiento especial.
Adelanto de implementación
- Smart Contract: Se introduce un nuevo SC “NivelDeRegistro”, el mismo responderá el nivel de registro de una cuenta dada:
- 0 Para cuentas que no están registradas.
- 1 para las cuentas registradas con propio control de la cuenta. Toda cuenta registrada hasta la fecha de implementación del contrato se asumirá de nivel 1.
- 2 para las cuentas registradas y manejadas por otro.
Esta HIP en especial, implica la creación de un segundo SC con la implementación del nivel 2. Se escribirá un mapping donde la key será la cuenta controlada y el value la cuenta controladora. A su vez, se registrará la cantidad de cuentas que controla una misma address. Se harán las validaciones de que el controlador esté registrado en poh. Al momento de realizar una declaración, se deberá escribir al contrato NivelDeRegistro indicando a qué nivel se quiere aplicar.
-
En cuanto al momento de la declaración, hay dos posibilidades:
- Realizarlo una vez registrada la cuenta.
- Pros:
- Simplifica onboarding.
- Se puede declarar sólo en caso de realizarse alguna operación que vincule cuentas.
- Podrá escribir en el contrato sólo un perfil registrado.
- Contras:
- En caso de perfiles controlados maliciosamente, la declaración la va a ejecutar 100% el controlador. El controlado no es consciente.
- Cualquier challenge sería por Removal Request, y el challenger debe poner el depósito.
- Pros:
- Realizarlo antes del registro
- Pros:
- El manejado deberá declararlo en su video.
- Es más fácil para un challenger checkear en período de registración, sin poner depósito.
- Contras:
- Dificulta onboarding, agrega una tx onchain más.
- En caso de fallar el registro, nadie limpiará el nuevo sc.
- Pros:
- Realizarlo una vez registrada la cuenta.
-
UX/UI: Si pensamos en que la declaración se haga una vez registrada la cuenta, la UI podría ser un NTH y que la transacción se haga directamente vía etherscan. En caso contrario, lo mejor sería incluír en la pantalla de perfil de un usuario registrado algún apartado para ejecutar dicha transacción. La última opción es armar un frontend que escale para la declaración de N niveles (más costoso en tiempo).
English version
Simplified summary
Build a POH side-contract that helps to identify a registration level. In particular, build the implementation of a level 2 registry where a human can declare account management. Also, adjust the policy to allow the challenge of accounts with related but undeclared activity in the level 2 registry.
Abstract
This HIP has three aspects:
- Smart Contract. Building a new smart contract under the same governance as the current Proof of Humanity contract. It will identify the level of a PoH registry, in particular, a level 2 where account management declaration is supported with a maximum of 10¿? managed accounts in total (a parameter). A managed account will not be able to manage other accounts.
- UX/UI. (Option 1) The integration of such a contract with current frontend’s. (Option 2) The design of a minimal new frontend to facilitate the UX for such statements. (Option 3) No UI.
- Legal. Policy adjustment to allow the challenge of any suspected sybil activity that is not declared in the new contract. Such activity could be: the transfer of UBIs, simultaneous voting, (other examples?)
Motivation
Currently, many humans are registering in proof of humanity because of the integration with UBI. In turn, humans who know UBI start to think about registering friends or relatives, with the impulse that everyone can receive the token drippin. To achieve that, the simplest thing to do is to know the passwords (and therefore control the accounts) of those close ones. This implies that, somehow, behind an address there is not exactly a single human.
The goal of POH is to have a sybil-resistant registry. It was not created exclusively for UBI distribution. One should not lose sight of the need for other dapps (such as Lens, Gitcoin, etc) to ensure that there is only one human behind an address, which in the short/medium term will be increasingly valuable in the ethereum ecosystem.
This proposal seeks to build a bridge between this conflict of interest. The idea is that the Proof of Humanity registry would be transparent about the accounts that are managed and that, in the second instance, it would be up to the integrator interested in the registry to decide whether or not to admit such accounts, or to give them other special treatment.
Specification (idea)
- Smart Contract: A new SC “RegistrationLevel” is introduced, which will return the registration level of a given account:
- 0 for accounts that are not registered.
- 1 for registered accounts with total control. Any account registered up to the date of contract implementation will be assumed to be level 1.
- 2 for accounts registered and managed by another.
This particular HIP implies the creation of a second SC with the implementation of level 2. A mapping with the “controlled account” as a key and the “controller account” as the value. At the same time, the number of accounts controlled by the same address will be recorded. Validations will be made to ensure that the controller is registered in poh. At the moment of making a declaration, you will have to write to the contract RegisterLevel indicating to which level you want to apply it.
-
As for the declaration moment, there are two possibilities:
- Declare it once the account is registered.
- Pros:
- Simplifies onboarding.
- It can be declared just before of a transaction linking accounts.
- Only a registered address will be able to write in the contract.
- Cons:
- In case of maliciously controlled profiles, the declaration will be executed 100% by the controller. The controlled is not aware.
- Any challenge would be by Removal Request, and the challenger must pay the deposit.
- Pros:
- Declare it before registration.
- Pros:
- The handler will have to declare it in his video.
- It is easier for a challenger to check in registration period, without paying deposit.
- Cons:
- Makes onboarding difficult, adds one more tx onchain.
- In case of registration failure, no one will clean the new sc.
- Pros:
- Declare it once the account is registered.
-
UX/UI: (Option 1) It would be best to include in “my profile page” a section to execute the transaction. (Option 2) Build a frontend that scales for the declaration of N levels (more time consuming) (Option 3) If we think that the declaration is made once the account is registered, the UI could be a NTH and the transaction can be made directly via etherscan