Ir al contenido principal

AutoCustodia CELO

Acceso a la cuenta y detalles de recompensa para el titular de CELO con autocustodia en Celo Mainnet


Prerequisitos

Esta guía supone que:

  • Usted se autocustodia (tiene la clave privada de su dirección) y ha proporcionado esa dirección directamente a cLabs. Si estás usando un proveedor de custodia (Anclaje, Coinbase, Lista de Monedas, u otras), por favor contacte con ellos para obtener direcciones.

  • Su dirección es el beneficiario de un contrato de ReleaseGold, que libera CELO programáticamente a un beneficiario durante un período de tiempo.

  • cLabs le ha informado que se ha implementado la instancia ReleaseGold correspondiente a su dirección.

  • Tiene su clave privada guardada en un dispositivo Ledger Nano S o Ledger Nano X y tiene un segundo dispositivo disponible para administrar una clave de votación. Si solo tienes un solo Ledger disponible, consulta debajo.

:::precaución

Advertencia: Las claves de autocustodia tienen asociados riesgos financieros y de seguridad. La pérdida o robo de claves puede resultar en una pérdida irrecuperable de fondos. Esta guía también requiere conocimientos técnicos. Debe sentirse cómodo con el uso de una interfaz de línea de comandos (CLI) y comprender los conceptos básicos de cómo funcionan las cuentas de red criptográficas.

:::

Soporte

Si tiene alguna pregunta o necesita ayuda con estas instrucciones, comuníquese con cLabs o pregunte en el canal #celo-holders en el Servidor Discord de Celo. Recuerda que Discord es un canal público: nunca divulgues frases de recuperación (también conocidas como claves de respaldo o mnemotécnicos), claves privadas, resultados de registro no santificados o información personal.

Consulte la Resolución de problemas de Ledger para obtener información sobre problemas al usar Ledger con Celo CLI.

Resumen general

En esta guía, verás:

  • Instalar Celo CLI (y opcionalmente, un nodo local para conectarse a la red)
  • Acceda a la cuenta de ReleaseGold asociada a su dirección usando su Ledger existente
  • Autorizar una clave de votación, la cual mantendrá un nuevo y segundo Ledger
  • Bloquea parte del Oro en tu cuenta de ReleaseGold
  • Use ese Oro Bloqueado para votar por los grupos de validación para operar la red Proof of Stake de Celo (y al hacerlo, prepárese para recibir recompensas de época del 6% cuando la comunidad habilite en una próxima propuesta de gobernanza)

Preparando Ledgers

Necesitarás:

  • Tu Ledger Beneficiario: Un Ledger Nano S o X configurado con tu clave de beneficiario (usado para producir la dirección que proporcionaste cLabs). Una vez que hayas completado esta guía, esto se convertirá en una "cartera fría" que puedes mantener fuera de línea la mayor parte del tiempo.

  • Su Ledger de firmantes de votos: un Ledger Nano S o X configurado con una clave nueva sin usar. Esto se convertirá en un "monedero caliente" que puedes usar cuando quieras participar en las elecciones de validadores o propuestas de gobernanza.

Como primer paso, sigue estas instrucciones para que ambos Ledgers instalen la aplicación Ledger Celo, obtener y verificar las direcciones asociadas, y (recomendado) ejecutar una transacción de prueba en la red de pruebas de Alfajores.

información

La última versión de la aplicación Celo Ledger es la 1.1.8. Si ya está utilizando un Ledger con una versión anterior instalada, por favor actualice.

El resto de esta guía asume que está utilizando la primera dirección disponible en cada Ledger. Puede agregar las banderas descritas en estas instrucciones a los comandos a continuación para usar diferentes direcciones.

Utilizando un solo Ledger

Si sólo tiene un Ledger, y se siente cómodo perdiendo la ventaja de seguridad de mantener la clave del beneficiario fuera de línea al votar, puede configurar una segunda dirección en el mismo Ledger que su clave de votación.

Primero, lee estas instrucciones cuidadosamente. Luego, dondequiera que vea las instrucciones para conectar su Ledger de firmas de voto, para cada línea de comandos que contiene --useLedger también añade --ledgerCustomAddresses "[1]". En caso de duda, pida ayuda.

Despliegue

Si aún no lo has hecho, abre una ventana de terminal e instala el Celo CLI:

 npm install -g @celo/celocli

Si ha instalado previamente la CLI, asegúrese de que está utilizando la versión 0.0.47 o posterior:

celocli --version

Y si no, actualice ejecutando el mismo comando anterior.

Ahora tendrá que apuntar Celo CLI a un nodo sincronizado con la red Mainnet. Aquí hay dos opciones:

  • Nodo local de Celo Blockchain: Puedes ejecutar un nodo completo en tu máquina local que se comunicará con otros nodos y verificará criptográficamente todos los datos que reciba. Como este enfoque no requiere que confíes en la red, es el más seguro.

    Para hacer esto, sigue el tutorial para ejecutar un nodo completo (y asegúrate de pasar --usb).

    Luego ejecute:

    celocli config:set --node http://localhost:8545
  • Nodo operado por cLabs: Como alternativa al uso de su propio nodo, puede utilizar un servicio de nodo de transacción existente. Forno, operado por cLabs, es un ejemplo. Aunque este enfoque no requiere que despliegue un nodo localmente, requiere que confíe en cLabs y en los nodos remotos de Forno (del mismo modo que confiaría en un servicio web centralizado). Un atacante puede ser capaz de manipular los datos devueltos a usted desde el servicio, en el que el CLI puede confiar para completar las operaciones.

    Para usar Forno, ejecuta este comando:

    celocli config:set --node https://forno.celo.org

Localice y verifique su dirección de contrato ReleaseGold

Primero, copie la dirección del beneficiario en el portapapeles, y establézcala en una variable de entorno:

export CELO_BENEFICIARY_ADDRESS=<Beneficiary>

A continuación, encontrará la dirección del contrato ReleaseGold desplegado para su dirección de beneficiario. El contrato ReleaseGold tiene su propia dirección y es independiente de la dirección del beneficiario pero hay ciertos aspectos del mismo que sólo pueden ser controlados por el beneficiario. Para obtener más detalles, consulte la página Entendiendo ReleaseGold.

Abra la lista de todos los despliegues de ReleaseGold y localice su dirección (utilice Editar>Buscar en su navegador, luego pegue la dirección del beneficiario). Copie el valor coincidente junto a ContractAddress en su portapapeles.

Si no puede localizar su dirección en estos mapeos, póngase en contacto con cLabs.

Si tiene más de una dirección de beneficiario, querrá pasar por esta guía y completar los pasos para cada una por separado.

Grabe el valor de ContractAddress en una variable de entorno:

export CELO_RG_ADDRESS=<ContractAddress>

Debería encontrar que su cuenta de beneficiario ya tiene un saldo de CELO muy pequeño para pagar las tasas de transacción (los valores se muestran en wei, así que, por ejemplo, 1 CELO = 1000000000000000000):

celocli account:balance $CELO_BENEFICIARY_ADDRESS

A continuación, compruebe los detalles de su contrato de ReleaseGold:

celocli releasegold:show --contract $CELO_RG_ADDRESS

Verifique la configuración, el saldo y los detalles del beneficiario. Puede encontrar una explicación de estos parámetros en la página ReleaseGold.

Si alguno de estos detalles parece ser incorrecto, póngase en contacto con cLabs y no proceda con el resto de esta guía.

Si la configuración muestra canVote: true, tu contrato te permite participar en la elección de grupos de validadores para el protocolo Proof of Stake de Celo, y potencialmente ganar recompensas de epoch por hacerlo. Por favor continúe siguiendo el resto de esta guía (o puede volver y continuar en cualquier momento).

De lo contrario, ya está todo listo. No es necesario tomar ninguna acción en este momento.

Autorizar claves de firmantes de voto

Para permitirle mantener su Ledger de Beneficiario fuera de línea día a día, se recomienda utilizar una Cuenta de Firmador de Voto Autorizada separada que votará en nombre del beneficiario.

información

Un votante puede ser otro dispositivo Ledger o un Hardware Security Module (HSM). Explora esta guía para obtener más información sobre la configuración HSM en la nube y la integración con celocli.

Se trata de un proceso de dos pasos. Primero, se crea una "prueba de posesión" que muestra que el titular de la clave del beneficiario también tiene la clave de firmante de voto. Luego lo usará cuando el beneficiario firme una transacción autorizando la clave de firmante de voto. Esto demuestra a la red Celo que una sola entidad posee ambas claves.

información

Conecta tu Ledger Firmante del Voto ahora, desbloquéalo y abre la aplicación de Celo.

Primero obtenga su dirección de firmante de voto:

# Using the Vote Signer Ledger
celocli account:list --useLedger

Tu dirección está listada en Direcciones de Ledger. Crear una variable de entorno para su dirección de firmante de voto.

export CELO_VOTE_SIGNER_ADDRESS=<YOUR-VOTE-SIGNER-ADDRESS>

Luego cree la prueba de posesión:

# Using the Vote Signer Ledger
celocli account:proof-of-possession --signer $CELO_VOTE_SIGNER_ADDRESS --account $CELO_RG_ADDRESS --useLedger

La aplicación Ledger Celo te pedirá que confirmes la transacción. Desplázate hacia la derecha en el dispositivo hasta que veas Firma Mensaje en la pantalla. Pulse ambos botones al mismo tiempo para confirmar.

Toma nota de la firma producida por el comando proof-of-possession y crea una variable de entorno para ella.

export CELO_VOTE_SIGNER_SIGNATURE=<YOUR-VOTE-SIGNER-SIGNATURE>

Ahora cambia los Ledgers.

información

Conecta tu Ledger de Beneficiario ahora, desbloquéalo y abre la aplicación de Celo.

A continuación, registre el contrato ReleaseGold como una cuenta "Locked Gold":

# Using the Beneficiary Ledger
celocli releasegold:create-account --contract $CELO_RG_ADDRESS --useLedger

Tendrá que pulsar a la derecha en el Ledger varias veces para revisar los detalles de las transacciones y, a continuación, cuando el dispositivo diga "Aceptar y enviar", pulse los dos botones a la vez.

Compruebe que la dirección del contrato ReleaseGold está asociada con una cuenta Locked Gold registrada:

celocli account:show $CELO_RG_ADDRESS

Ahora, utilizando la prueba de posesión que generó anteriormente, como cuenta de la Gold Account Bloqueada, autorizará a la clave de firma de votos a votar en nombre de la Gold Account Bloqueada:

# Using the Beneficiary Ledger
celocli releasegold:authorize --contract $CELO_RG_ADDRESS --role=vote --signer $CELO_VOTE_SIGNER_ADDRESS --signature $CELO_VOTE_SIGNER_SIGNATURE --useLedger

Finalmente, verifique que su firmante fue autorizado correctamente:

celocli account:show $CELO_RG_ADDRESS

La dirección del voto bajo authorizedSigners debe coincidir con $CELO_VOTE_SIGNER_ADDRESS.

El contrato ReleaseGold se financió con 1 CELO adicional que envía a la primera cuenta firmante de votos que se autoriza. Esto permite que la cuenta del firmante del voto cubra las comisiones de las transacciones. Puedes confirmarlo:

celocli account:balance $CELO_VOTE_SIGNER_ADDRESS

:::precaución

Alerta: Si autorizas un segundo firmante de votos, no será financiado automáticamente por el contrato ReleaseGold. Necesitarás transferir una fracción de 1 CELO desde tu dirección de beneficiario a ella para cubrir las comisiones de transacción al usarlo.

:::

Bloquear CELO

Para votar por los grupos de validadores y sobre las propuestas de gobernanza deberá bloquear la CELO. Esto es para mantener la seguridad de la red asegurando que cada unidad de CELO sólo pueda ser utilizada para votar una vez.

Especifique la cantidad de CELO que desea bloquear (no incluya las < > llaves). Todos los montos son dados como wei, es decir, unidades de 10^-18 CELO. Por ejemplo, 1 CELO = 1000000000000000000.

:::precaución

Asegúrese de dejar al menos 1 CELO desbloqueado para pagar las comisiones de transacción.

:::

# Using the Beneficiary Ledger
celocli releasegold:locked-gold --contract $CELO_RG_ADDRESS --action lock --useLedger --value <CELO-GOLD-AMOUNT>

Compruebe que su CELO ha sido bloqueado correctamente.

celocli lockedgold:show $CELO_RG_ADDRESS

Votar por un grupo de validadores

De forma similar al Staking o la delegación en otros protocolos de criptomoneda Proof of Stake, los titulares de CELO pueden bloquear CELO y votar por los Grupos Validadores en la red Celo. Al hacerlo, no sólo contribuyes a la salud y la seguridad de la red, sino que también puedes ganar recompensas de epoc.

Para obtener más detalles, consulte la página Votar por los validadores, que contiene información útil sobre el funcionamiento de las elecciones de validadores, así como más orientación sobre cómo seleccionar un grupo de validadores para votar. Por ahora, todo lo que necesitas saber es que:

  • en Celo, los titulares del CELO votan directamente por los grupos de validadores, no por los validadores
  • sólo ganas recompensas de epoch si el grupo de validadores que votaste obtiene al menos 1 validador elegido

Teniendo esto en cuenta, tendrás que encontrar un Grupo de Validadores por el que votar y copiar su dirección. Puede encontrar esta información en los exploradores de validadores comunitarios tales como el cLabs Validator explorer y Bi23 Labs thecelo dashboard.

También puede ver grupos de validadores registrados a través de Celo CLI. Esto mostrará una lista de Grupos de Validadores, el número de votos que han recibido, el número de votos adicionales que pueden recibir, y si son o no elegibles para elegir Validadores:

celocli election:list

Una vez que hayas encontrado uno o más Grupos de Validadores por los cuales te gustaría votar, crear una variable de entorno para su dirección de Grupo (no incluir las < > llaves):

export CELO_VALIDATOR_GROUP_ADDRESS=<VALIDATOR-GROUP-ADDRESS-TO-VOTE-FOR>

Para cada voto tendrás que seleccionar la cantidad de CELO bloqueado con la que deseas votar. Puedes volver a consultar tu saldo si lo necesitas:

celocli account:balance $CELO_RG_ADDRESS

Todas las cantidades de CELO deben expresarse en wei: es decir, 1 CELO = 1000000000000000000. No incluya las llaves < > en la siguiente línea.

Para votar, usarás tu clave de firmante de votos, que es votar en nombre de tu cuenta Locked Gold.

información

Conecta tu Ledger Firmante del Voto ahora, desbloquéalo y abre la aplicación de Celo.

# Using the Vote Signer Ledger
celocli election:vote --from $CELO_VOTE_SIGNER_ADDRESS --for $CELO_VALIDATOR_GROUP_ADDRESS --useLedger --value <CELO-GOLD-AMOUNT>

Compruebe que sus votos se han emitido correctamente. Puesto que tu cuenta de firmante de voto vota en nombre de la cuenta de Celo Locked Gold, quieres comprobar el estado de la elección de esa cuenta:

celocli election:show $CELO_RG_ADDRESS --voter

Tus votos bloqueados de CELO deberían mostrarse junto a pending con menos votes.

Al día siguiente: Activa tu voto

Tu voto se aplicará a partir de la próxima Elección de Validador, que se celebrará una vez al día y seguirá aplicándose en cada elección posterior hasta que lo cambie.

Después de que se hayan celebrado esas elecciones, tendrá que activar su voto. Esto te permitirá recibir recompensas de época si en esa elección (o en cualquier otra posterior, hasta que cambies tu voto) el Grupo de Validadores por el que votaste eligió al menos un Validador. Las recompensas se añadirán a tus votos para ese Grupo y se acumularán automáticamente.

información

Las longitudes de Epoch en Mainnet se definen como el número de bloques producidos en un día. Como resultado, las votaciones pueden necesitar activarse hasta 24 horas después de que se emitan.

Comprueba que tus votos hayan sido emitidos en un epoch anterior:

celocli election:show $CELO_RG_ADDRESS --voter

Tu voto debería mostrarse junto a pending debajo de votes.

información

Conecta tu Ledger Firmante del Voto ahora, desbloquéalo y abre la aplicación de Celo.

Ahora activa tus votos:

# Using the Vote Signer Ledger
# You must do this in an epoch after the one you voted in: this may take up to 24h
celocli election:activate --from $CELO_VOTE_SIGNER_ADDRESS --useLedger

Si ejecutas election:show de nuevo, tu voto debería mostrarse junto a active bajo votes.

¡Felicidades! Ya estás listo.

Al final de la época siguiente a la activación de tu voto, puedes recibir recompensas de votante (si al menos un Validador del Grupo de Validadores por el que has votado ha sido elegido).

Puedes ver recompensas usando:

celocli rewards:show --voter $CELO_RG_ADDRESS

O buscando su dirección ReleaseGold en el Block Explorer y haciendo clic en la pestaña "Celo Info".

Siguientes pasos

Ya estás preparado para participar en la red Celo!

Puede que quieras leer más sobre elegir un Grupo Validador para votar, y cómo se calculan las recompensas de los votantes. Puedes votar hasta diez Grupos diferentes desde una sola cuenta.

Ahora que has bloqueado CELO, puedes utilizarlo para participar en la votación a favor o en contra de propuestas de gobernanza. Puedes hacer esto sin que afecte a ningún voto que hayas hecho para los Grupos de Validación.

También puedes leer más sobre el funcionamiento de los mecanismos de Proof of Stake y la Gobernanza on-chain de Celo.

Revocando votos

En cualquier momento puedes revocar los votos emitidos por un Grupo de Validadores. Por ejemplo, un Grupo puede tener un mal rendimiento y afectar sus recompensas, y usted puede preferir votar a otro Grupo.

información

Cuando revoques tus votos dejarás de recibir las recompensas de los votantes.

Especifique la cantidad de CELO que desea revocar (no incluya las llaves < >). Todos los importes CELO deben expresarse con 18 decimales. Por ejemplo, 1 CELO = 1000000000000000000.

información

Conecta ahora tu Ledger de firmas de votos, desbloquéalo y abre la aplicación Celo.

Revocar votos para el Grupo:

# Using the Vote Signer Ledger
celocli election:revoke --from $CELO_VOTE_SIGNER_ADDRESS --for $CELO_VALIDATOR_GROUP_ADDRESS --value <CELO-GOLD-AMOUNT> --useLedger

Puedes reutilizar inmediatamente este CELO bloqueado para votar a otro Grupo.

Desbloqueando y retirando

En algún momento, las condiciones de su contrato ReleaseGold le permitirán retirar fondos y transferirlos a su dirección beneficiaria.

En realidad hay varios pasos para este proceso:

  1. En primer lugar, revocar todos los votos pendientes según lo indicado anteriormente (incluso para las propuestas de gobernanza)
  2. Desbloquear el Locked Gold sin derecho a voto, iniciando un periodo de desbloqueo de 72 horas
  3. Una vez finalizado el periodo de desbloqueo de tres días, retira el CELO de nuevo al contrato de ReleaseGold
  4. Suponiendo que se cumplan los requisitos de adquisición y distribución, retire la CELO a la dirección del beneficiario

Compruebe el estado actual de los votos pendientes:

celocli election:show $CELO_RG_ADDRESS --voter

Puedes ver el saldo del CELO bloqueado:

celocli account:balance $CELO_RG_ADDRESS
información

Conecta tu Ledger de Beneficiario ahora, desbloquéalo y abre la aplicación de Celo.

Asumiendo que tienes LockedGold sin voto, puedes iniciar el proceso para desbloquear:

# Using the Beneficiary Ledger
celocli releasegold:locked-gold --contract $CELO_RG_ADDRESS --action unlock --useLedger --value <CELO-GOLD-AMOUNT>

Después de que haya pasado el periodo de desbloqueo de 72 horas, retire el CELO de vuelta al contrato ReleaseGold:

# Using the Beneficiary Ledger
celocli releasegold:locked-gold --contract $CELO_RG_ADDRESS --action withdraw --useLedger --value <CELO-GOLD-AMOUNT>

Finalmente, solicite que el contrato ReleaseGold transfiera una cantidad a su dirección de beneficiario:

# Using the Beneficiary Ledger
celocli releasegold:withdraw --contract $CELO_RG_ADDRESS --useLedger --value <CELO-GOLD-AMOUNT>

Para votar con cualquier CELO en su cuenta de beneficiario, querrá registrarlo como una cuenta Locked Gold, autorizar una nueva clave para firmar votos, luego bloquear CELO.