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.
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.
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.
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.
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.
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.
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
.
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.
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.
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:
- En primer lugar, revocar todos los votos pendientes según lo indicado anteriormente (incluso para las propuestas de gobernanza)
- Desbloquear el Locked Gold sin derecho a voto, iniciando un periodo de desbloqueo de 72 horas
- Una vez finalizado el periodo de desbloqueo de tres días, retira el CELO de nuevo al contrato de
ReleaseGold
- 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
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.