CELO Auto-Custódia
Acesso à conta e detalhes de recompensa para titular de autocustodia do CELO na Celo Mainnet
Pré-requisitos
Este guia pressupõe:
Você é auto-custodiante (você possui a chave privada do seu endereço) e que forneceu esse endereço diretamente ao cLabs. Se você está usando um provedor de custódia (Ancoragem, Coinbase, CoinList, ou outros), entre em contato com eles para obter direções.
Seu endereço é o beneficiário de um contrato ReleaseGold, que libera programaticamente CELO para um beneficiário ao longo de um período de tempo.
Você foi informado por cLabs que a instância
ReleaseGold
correspondente ao seu endereço foi implantada.Você tem a sua chave privada segurada em um dispositivo Ledger Nano S ou Ledger Nano X, e você tem um segundo dispositivo disponível para gerenciar uma chave de votação. Se você tiver apenas um Ledger disponível, veja abaixo.
Aviso: Chaves de autocustódia associam riscos financeiros e de segurança. Perda ou roubo de chaves pode resultar em perda irrecuperável de fundos. Este guia também requer conhecimento técnico. Você deve estar confortável usando uma Interface de Linha de Comando (CLI) e entender os conceitos básicos de como as contas de rede de criptografia funcionam.
Suporte
Se você tiver alguma dúvida ou precisa de ajuda com estas instruções, entre em contato com cLabs ou pergunte no canal #celo-holders
no servidor do Discord do Celo. Lembre-se que o Discord é um canal público: nunca divulgue frases de recuperação (também conhecidas como chaves de backup, ou mnemônicos), chaves privadas, logs, ou informações pessoais.
Por favor, consulte o Ledger Troubleshooting para obter problemas usando Ledgers com o Celo CLI.
Esboços
Neste guia, você irá:
- Instalar o Celo CLI (e opcionalmente, um nó local para se conectar à rede)
- Acesse a conta
ReleaseGold
associada ao seu endereço usando seu Ledger existente - Autorize uma chave de votação, que você vai guardar em um novo Ledger
- Bloqueie parte do gold em sua conta
ReleaseGold
- Use esse ouro bloqueado para votar nos Grupos de validação para operar a rede Proof of Stake da Celo (e, ao fazer isso, esteja pronto para receber recompensas de época de 6% quando a comunidade permitir em uma futura proposta de governança)
Preparando Ledgers
Você vai precisar:
O seu Beneficiário Ledger: One Ledger Nano S ou X configurado com sua chave beneficiária (usado para produzir o endereço fornecido cLabs). Depois de concluir este guia, ele se tornará uma "carteira fria" que você pode manter offline a maioria do tempo.
Seu Vote Signer Ledger: Um Ledger Nano S ou X configurado com uma nova chave não utilizada. Isto se tornará uma "carteira quente" que você pode usar sempre que quiser participar de eleições de validador ou propostas de governança.
Como um primeiro passo, siga estas instruções para ambos Ledgers instalar o aplicativo Ledger Celo obter e verificar os endereços associados, e (recomendado) executa uma transação de teste na rede de teste de Alfajores.
A versão mais recente do aplicativo Celo Ledger é 1.1.8. Se você já estiver usando um Ledger com uma versão anterior instalada, por favor atualize.
O restante deste guia presume que você está usando o primeiro endereço disponível em cada Ledger. Você pode adicionar os sinalizadores descritos em nestas instruções para os comandos abaixo para usar endereços diferentes.
Usando um único Ledger
Se você só tiver um único Ledger, e se sentir confortável em perder a vantagem de segurança de manter a chave beneficiária offline ao votar, você pode configurar um segundo endereço no mesmo Ledger que sua chave de voto.
Primeiro, leia estas instruções cuidadosamente. Então, onde você vê instruções para conectar o seu Vote Signer Ledger, para cada linha de comando contendo --useLedger
também adiciona --ledgerCustomAddresses "[1]"
. Em caso de dúvida, peça ajuda.
Implantação
Se você ainda não o fez, abra uma janela do terminal e instale o Celo CLI:
npm install -g @celo/celocli
Se você já instalou anteriormente a CLI, certifique-se de que você esteja usando a versão 0.0.47 ou mais recente:
celocli --version
Caso contrário, faça o upgrade executando o mesmo comando que o acima.
Agora você precisará apontar o Celo CLI para um nó que é sincronizado com a rede Mainnet. Existem duas opções:
Nó Local Celo Blockchain: você pode executar um nó completo em sua máquina local que irá se comunicar com outros nós e verificar criptograficamente todos os dados que receberá. Uma vez que esta abordagem não exige que você confie na rede, ela é a mais segura.
Para fazer isso, siga o tutorial para executar um nó completo (e certifique-se de passar
--usb
).Em seguida, execute:
celocli config:set --node http://localhost:8545
Nó operado por cLabs: como alternativa ao uso do seu próprio nó, você pode usar um serviço de nó de transação existente. Forno, operado por cLabs, é um exemplo. Embora esta abordagem não exija que você faça deploy de um nó localmente, requer que você confie nos nós remotos do Forno (da mesma maneira que você confiaria em um serviço da web centralizado). Um invasor pode ser capaz de manipular os dados retornados a você a partir do serviço, no qual o CLI pode confiar para concluir operações.
Para usar o Forno, execute este comando:
celocli config:set --node https://forno.celo.org
Localize e verifique o seu endereço de contrato ReleaseGold
Primeiro, copie o endereço do beneficiário na área de transferência e defina-o em uma variável de ambiente:
export CELO_BENEFICIARY_ADDRESS=<Beneficiary>
Em seguida, você irá encontrar o endereço do contrato ReleaseGold
implantado para o seu endereço beneficiário. O contrato ReleaseGold
tem seu próprio endereço e é separado do endereço do beneficiário mas há certos aspectos que só podem ser controlados pelo beneficiário. Para obter mais detalhes, consulte a Página de ReleaseGold.
Abra a lista de todas as implantações do ReleaseGold e localize o seu endereço (use Editar>Localizar no seu navegador, e então cole o endereço beneficiário). Copie o valor correspondente ao lado de ContractAddress
na sua área de transferência.
Se você não consegue localizar seu endereço nestes mapeamentos, por favor contacte o cLabs.
Se você tiver mais de um endereço de beneficiário, deverá seguir este guia e concluir as etapas de cada um separadamente.
Registre o valor do ContractAddress
em uma variável de ambiente:
export CELO_RG_ADDRESS=<ContractAddress>
Você deve encontrar a sua conta beneficiária com um saldo muito pequeno de CELO para pagar as taxas de transação (os valores são mostrados em wei, então por exemplo, 1 CELO = 100000000000000):
celocli account:balance $CELO_BENEFICIARY_ADDRESS
Em seguida, verifique os detalhes do seu contrato ReleaseGold
:
celocli releasegold:show --contract $CELO_RG_ADDRESS
Verifique a configuração, saldo e detalhes do beneficiário. Você pode encontrar uma explicação destes parâmetros na página ReleaseGold.
Se algum desses dados parece estar incorreto, entre em contato com o cLabs e não prossiga com o restante deste guia.
Se a configuração mostrar canVote: true
, seu contrato permite que você participe na eleição de Grupos de Validadores para o protocolo Prova de Implantação de Celo, e potencialmente ganhe recompensas de época por isso. Por favor, continue seguindo o restante deste guia (ou você pode voltar e continuar a qualquer momento).
Caso contrário, está tudo pronto. Você não precisa tomar nenhuma ação mais neste momento.
Authorize Vote Signer Keys
Para permitir que você mantenha seu Beneficiário Ledger offline no dia-a-dia é recomendável usar uma conta separada Authorized Vote Signer Account que votará em nome do beneficiário.
Um assinante de voto pode ser outro dispositivo Ledger ou um Módulo de Segurança de Hardware em Nuvem (HSM). Explore este guia para aprender mais sobre instalação e integração de celocli em nuvem HSM.
Trata-se de um processo em duas etapas. Primeiro, você cria uma "prova de posse" que mostra que o titular da chave beneficiária também possui a chave de assinatura do voto. Em seguida, você usará isso quando o beneficiário assinar uma transação que autorize a chave de voto. Isto prova à rede de Celo que uma única entidade mantém as duas chaves.
Conecte seu Vote Signer Ledger agora, desbloqueie-o e abra o aplicativo Celo.
Primeiro obtenha seu endereço de assinante de voto:
# Usando o Vote Signer Ledger
celocli account:list --useLedger
Seu endereço está listado em Ledger Addresses
. Crie uma variável de ambiente para seu endereço de assinante do voto.
export CELO_VOTE_SIGNER_ADDRESS=<YOUR-VOTE-SIGNER-ADDRESS>
Em seguida, crie o comprovante de posse:
# Using the Vote Signer Ledger
celocli account:proof-of-possession --signer $CELO_VOTE_SIGNER_ADDRESS --account $CELO_RG_ADDRESS --useLedger
O aplicativo Ledger Celo
irá pedir que você confirme a transação. Alterne para a direita no dispositivo até ver Sign Message
na tela. Pressione os dois botões ao mesmo tempo para confirmar.
Observe a assinatura produzida pelo comando proof-of-possession
e crie uma variável de ambiente para ela.
export CELO_VOTE_SIGNER_SIGNATURE=<YOUR-VOTE-SIGNER-SIGNATURE>
Agora mude os ledgers.
Conecte seu Beneficiário Ledger agora, desbloqueie-o e abra o aplicativo Celo.
Em seguida, registre o contrato ReleaseGold
como uma conta "Locked Gold":
# Using the Beneficiary Ledger
celocli releasegold:create-account --contract $CELO_RG_ADDRESS --useLedger
Você precisará pressionar o Ledger várias vezes para revisar os detalhes das transações, então quando o dispositivo disser "Aceitar e enviar" pressione os dois botões juntos.
Verificar que o endereço do contrato ReleaseGold
está associado a uma conta Locked Gold registrada:
celocli account:show $CELO_RG_ADDRESS
Agora, usando a prova de posse que você gerou acima, como conta Locked Gold você irá autorizar a chave de assinatura de voto para votar em nome do Conta Locked Gold:
# 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 se seu assinante foi autorizado corretamente:
celocli account:show $CELO_RG_ADDRESS
O vote
endereço sob autorizadoSigners
deve corresponder a $CELO_VOTE_SIGNER_ADDRESS
.
O contrato ReleaseGold
foi financiado com um CELO adicional que ele envia para a conta do signatário do primeiro voto a ser autorizada. Isso permite que a conta do signatário de votação cubra as tarifas das transações. Você pode confirmar o seguinte:
celocli account:balance $CELO_VOTE_SIGNER_ADDRESS
Aviso: Se você autorizar um segundo assinante de voto, ele não será automaticamente financiado pelo contrato ReleaseGold
. Você precisará transferir uma fração de 1 CELO do seu endereço beneficiário para ele, a fim de cobrir as taxas de transação ao usá-lo.
Lock CELO
Para votar em Grupos de Validadores e em propostas de governança, você precisará bloquear o CELO. Para manter a rede segura, certifique-se de que cada unidade de CELO só possa ser usada para votar uma vez.
Especifique a quantidade de CÉLO que você deseja bloquear (não inclua os itens < >
). Todas as quantidades são dadas como wei, ou seja, unidades de 10^-18 CELO. Por exemplo, 1 CELO = 10000000000000000.
Certifique-se de deixar pelo menos 1 CELO desbloqueado para pagar as taxas de transação.
# Using the Beneficiary Ledger
celocli releasegold:locked-gold --contract $CELO_RG_ADDRESS --action lock --useLedger --value <CELO-GOLD-AMOUNT>
Verifique se seu CELO foi bloqueado com sucesso.
celocli lockedgold:show $CELO_RG_ADDRESS
Votar em um grupo de validadores
Semelhante a staking ou delegação em outros protocolos de criptomoedas, Proof of Stake, os detentores do CELO podem bloquear CELO e votar em Grupos do Validador na rede Coco. Ao fazê-lo, não só contribuem para a saúde e segurança da rede, como também pode ganhar recompensas de período.
Para mais detalhes, confira o Votação para a página de Validadores, que contém pano de fundo útil sobre como funciona a votação das eleições validadoras e mais orientações sobre como selecionar um grupo validador para votar. Por enquanto, tudo o que você precisa saber é que:
- no Celo, os titulares do CELO votam nos Grupos Validadores, não nos Validadores diretamente
- você só ganha recompensas de época se o Grupo de Validador que você votou receber pelo menos 1 Validador eleito
Tendo isso em mente, você precisará encontrar um Grupo de Validador para votar e copiar seu endereço. Você pode encontrar essas informações no conjunto de exploradores da comunidade como o explorador de validador cLabs e o painelthecelo
do Laboratório do Bi23 Labs.
Você também pode ver grupos de validador registrados através do Celo CLI. Isto irá exibir uma lista de grupos de validadores, o número de votos que receberam, o número de votos adicionais que eles podem receber e se eles são elegíveis ou não para eleger os validadores:
celocli election:list
Depois de encontrar um ou mais grupos de validador que você gostaria de votar, crie uma variável de ambiente para o endereço de Grupo (não inclua as chaves < >
):
export CELO_VALIDATOR_GROUP_ADDRESS=<VALIDATOR-GROUP-ADDRESS-TO-VOTE-FOR>
Para cada voto você precisará selecionar a quantidade de CELO bloqueado, com o qual deseja votar. Você pode consultar seu saldo novamente se precisar:
celocli account:balance $CELO_RG_ADDRESS
Todos os montantes do CELO devem ser expressos em Wei: isso significa 1 CELO = 1000000000000. Não inclua as chaves < >
na linha abaixo.
Para votar, você usará a sua chave de assinatura de voto, que está votando em nome de sua conta de Locked Gold.
Conecte seu Vote Signer Ledger agora, desbloqueie-o e abra o aplicativo Celo.
# Using the Vote Signer Ledger
celocli election:vote --from $CELO_VOTE_SIGNER_ADDRESS --for $CELO_VALIDATOR_GROUP_ADDRESS --useLedger --value <CELO-GOLD-AMOUNT>
Verifique se seus votos foram expressos com sucesso. Como sua conta Vote Signer vota em nome da conta Celo Locked Gold, você deseja verificar o status das eleições para essa conta:
celocli election:show $CELO_RG_ADDRESS --voter
Seus votos CELO bloqueados devem ser exibidos ao lado de pending
em votes
.
No próximo dia: Ative seu voto
Seu voto se aplicará a partir da próxima Eleição do Validador, realizada uma vez por dia e continuará a se aplicar em cada eleição subsequente até que você a mude.
Depois de essa eleição ter ocorrido, terá de activar o seu voto. Isso permitirá que você receba recompensas de época se estiver nessa eleição (ou em qualquer outra, até alterar sua votação) O Grupo do Validador no qual você votou eleita pelo menos um Validador. As recompensas serão adicionadas aos seus votos para esse grupo e serão compostas automaticamente.
Os comprimentos de Epoch no Mainnet estão definidos como o número de blocos produzidos em um dia. Como resultado, é possível que os votos precisem de ser ativados até 24 horas depois de serem expressos.
Verifique se seus votos foram expressos em um período anterior:
celocli election:show $CELO_RG_ADDRESS --voter
Seu voto deve ser exibido ao lado de pending
em votes
.
Conecte seu Vote Signer Ledger agora, desbloqueie-o e abra o aplicativo Celo.
Agora ative seus 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
Se você executar election:show
novamente, seu voto deve ser exibido ao lado de active
com votes
.
Parabéns! Tudo pronto.
No final do período após a ativação dos seus votos, você pode receber recompensas de eleitores (se pelo menos um Validador do Grupo de Validador no qual você votou foi escolhido).
Você pode ver recompensas usando:
celocli rewards:show --voter $CELO_RG_ADDRESS
Ou procurando pelo seu endereço ReleaseGold
no Block Explorer e clicando na guia "Celo Info".
Próximos Passos
Agora você está pronto para participar da rede Celo!
Talvez você queira ler mais sobre escolher um Grupo de Validador para votar e como recompensas de eleitor são calculadas. Você pode votar em até dez grupos diferentes a partir de uma única conta.
Agora que você bloqueou o CELO, você pode usá-lo para participar de uma votação a favor ou contra as propostas de Governança. Você pode fazer isso sem afetar qualquer votação que você tenha feito para grupos de validadores.
Você também pode ler mais sobre como os mecanismos de Prova de Participação e Governança da Celo funcionam.
Revogando votos
A qualquer momento, você pode revogar os votos expressos para um Grupo de Validadores. Por exemplo, um Grupo pode estar tendo um desempenho ruim e afetando suas recompensas, e você pode preferir votar em outro Grupo.
Quando você revogar seus votos você vai parar de receber recompensas de eleitor.
Especifique a quantidade de CÉLO que você deseja revogar (não inclua os selos < >
). Todos os montantes do CELO devem ser expressos em 18 casas decimais. Por exemplo, 1 CELO = 10000000000000000.
Conecte seu Vote Signer Ledger agora, desbloqueie-o e abra o aplicativo Celo.
Revogar votos para o grupo:
# Using the Vote Signer Ledger
celocli election:revoke --from $CELO_VOTE_SIGNER_ADDRESS --for $CELO_VALIDATOR_GROUP_ADDRESS --value <CELO-GOLD-AMOUNT> --useLedger
Você pode reutilizar imediatamente este CELO bloqueado para votar em outro grupo.
Desbloqueando e Retirando
Em algum ponto, os termos do seu contrato ReleaseGold
permitirão retirar fundos e transferi-los para o seu endereço beneficiário.
Na verdade, há várias etapas para este processo:
- Primeiro, revogue todos os votos pendentes conforme acima (incluindo propostas de governança)
- Desbloqueie o Locked Gold sem votação, iniciando um período de desbloqueio de 72 horas
- Depois que o período de desbloqueio de três dias estiver completo, retire o CELO para o contrato
ReleaseGold
- Assumindo que os requisitos de distribuição sejam atendidos, retire o CELO para o endereço beneficiário
Verificar o estado atual dos votos pendentes:
celocli election:show $CELO_RG_ADDRESS --voter
Você pode ver o saldo do CELO:
celocli account:balance $CELO_RG_ADDRESS
Conecte seu Beneficiário Ledger agora, desbloqueie-o e abra o aplicativo Celo.
Supondo que você tenha Locked Gold sem voto, você pode iniciar o processo para desbloquear:
# Using the Beneficiary Ledger
celocli releasegold:locked-gold --contract $CELO_RG_ADDRESS --action unlock --useLedger --value <CELO-GOLD-AMOUNT>
Depois que o período de desbloqueio de 72 horas tiver passado, retire o CELO de volta para o contrato ReleaseGold
:
# Using the Beneficiary Ledger
celocli releasegold:locked-gold --contract $CELO_RG_ADDRESS --action withdraw --useLedger --value <CELO-GOLD-AMOUNT>
Finalmente, solicite que o contrato ReleaseGold
transfira a quantidade para o seu endereço beneficiário:
# Using the Beneficiary Ledger
celocli releasegold:withdraw --contract $CELO_RG_ADDRESS --useLedger --value <CELO-GOLD-AMOUNT>
Para votar com qualquer CELO em sua conta de beneficiário, você deverá registrá-la como Locked Gold Acccount, autorizar uma nova chave de assinatura de voto para ela e, em seguida, bloquear a CELO.