WEB3DEV

Cover image for Como participar da Geração de Provas de Estado Algorand (registrar chaves de prova de Estado)
Lorenzo Battistela
Lorenzo Battistela

Posted on

Como participar da Geração de Provas de Estado Algorand (registrar chaves de prova de Estado)

Este artigo foi escrito por Noah Grossman, publicado no Portal do Desenvolvedor Algorand, e traduzido por Lorenzo Battistela.

Visão Geral

Você quer participar do protocolo puro de consenso Proof of Stake da Algorand? Você entrará em uma comunidade de pessoas que executam nós que possuem um papel crucial no avanço e segurança da blockchain. Para informações sobre como configurar um nó de participação, comece aqui (nota: é altamente recomendado a familiaridade com a linha de comando do computador).

Como parte da nossa atualização de Março de 2022 (v3.4.2), lançamos um novo conjunto de chaves Falcon, que serão usadas para gerar Provas de Estado Algorand (ASPs), uma cadeia de certificados Post-Quantum atestando o estado da blockchain Algorand. Desde a atualização, a participação de pessoas que executam nós vai gerar e registrar essas chaves Falcon junto com as chaves de participação usadas durante o consenso. Isso marca nosso primeiro grande passo para o lançamento de ASPs.

Adicionamos um novo campo na Transação de Registro de Chave usada para trazer as contas online para o consenso. O campo é um array de bytes de tamanho 64 com o nome do msgpack ‘sprfkey’, que representa a raiz merkle das chaves Falcon que serão usadas para gerar ASPs. É efetivamente uma “digital” que pode ser usada para verificar se uma assinatura da chave Falcon veio da sua conta. Uma implementação de referência de criação de uma transação válida usando o SDK Algorand Go em GoLang pode ser encontrada aqui. Começando a atualização mais recente, todas as transações de registro de chave exigem uma chave de Prova de Estado.

Na geração de chaves, lembre-se de especificar uma rodada válida de participação que tenha ocorrido recentemente depois de completar o registro. Por razões de segurança, recomendamos usar um tamanho de período de 3,000,000 rodadas (~ 5 meses), com um comprimento máximo de 16,777,215 rodadas (2^24 - 1). Note que esse processo deve levar alguns minutos para ser executado e é proporcional ao comprimento do período, já que gerar novas chaves Falcon é computacionalmente intensivo.

Siga os passos abaixo para aprender a trazer suas contas online para participar do consenso, e em um futuro próximo, geração ASP.

Tabela de Conteúdos

Participar no consenso exige que você gere e registre um conjunto de chaves que serão usadas para votar em propostas de bloco e gerar Provas de Estado Algorand. Existem várias maneiras de fazer isso. Continue lendo para selecionar o melhor método para o seu caso.

Nota: recomendamos usar um método de assinatura cold wallet para qualquer conta na MainNet, visto que é mais seguro. Assinaturas hot wallet exigem que você armazene suas chaves privadas em um nó online, e só são recomendadas para contas com stake baixo ou para redes de teste.

Para melhorar o método de cold wallet, introduzimos um novo comando algokey que gera uma transação de registro não assinada diretamente do CLI. Você não precisa mais (mas é bem vindo a) construir sua própria aplicação de registro de chaves pelo nosso SDK para usar o processo offline.

  1. Cold Wallet Signing: Generate and Register Your Keys Offline
  2. Hot Wallet Signing: Renew Your Keys
  3. Hot Wallet Signing: Generate and Register Your Keys

1. Assinando com Cold Wallet: Gerando e registrando suas chaves Offline

Gerar chaves e assinar transações keyReg offline. Esse processo é composto de 3 passos:

  • Gerar um novo conjunto de chaves
  • Criar e assinar uma transação de registro de chave
  • Registrar as novas chaves na rede

Essa seção será útil para pessoas que querem assinar de maneira segura as transações keyReg sem armazenar as chaves privadas em um nó online.

A) Gerando chaves de participação Offline

Rode o comando algokey part generate para gerar um novo conjunto de chaves de participação, armazenados em um arquivo autônomo. Você pode instalar essas chaves em qualquer nó que você queira para fazer o host da conta pretendida. Especifique a conta, o primeiro e último rodada devem ser válidos, e um arquivo temporário de chaves para armazenar novas chaves. Aqui está um exemplo:

algokey part generate --first 16532750 --last 19532750 --keyfile testKeyFile --parent MWAPNXBDFFD2V5KWXAHWKBO7FO4JN36VR4CIBDKDDE7WAUAGZIXM3QPJW4

// output
Por favor aguarde enquanto as chaves são geradas. Isso pode levar alguns minutos.

Enter fullscreen mode Exit fullscreen mode

Depois de alguns minutos, você deve ver uma mensagem de sucesso mostrando informações sobre as recém geradas chaves:

Participation key generation successful 
Parent address: MWAPNXBDFFD2V5KWXAHWKBO7FO4JN36VR4CIBDKDDE7WAUAGZIXM3QPJW4 VRF public key: 1V2BE2lbFvS937H7pJebN0zxkqe1Nrv+aVHDTPbYRlw= Voting public key: 87iBW46PP4BpTDz6+IEGvxY6JqEaOtV0g+VWcJqoqtc= State proof key: f0CYOA4yXovNBFMFX+1I/tYVBaAl7VN6e0Ki5yZA3H6jGqsU/LYHNaBkMQ/rN4M4F3UmNcpaTmbVbq+GgDsrhQ==
First round: 16532750 
Last round: 19532750 
Key dilution: 1732 
First batch: 9545 First offset: 0
Enter fullscreen mode Exit fullscreen mode

B) Criar e assinar a transação de registro de chave com chaves offline

  1. Crie a keyRegistrationTxn com o método de sua escolha

Novo! Via algokey part keyreg

algokey part keyreg --network betanet --firstvalid 16532750 --keyfile testKeyFile -o keyRegTxnFile

Transação de registro de chave escrita no arquivo 'keyRegTxnFile'.
Enter fullscreen mode Exit fullscreen mode

Ou, via o SDK Algorand de sua escolha. Para mais informações, siga essas instruções.

  1. Assine a keyRegistrationTxn com um método de sua escolha.

Para uma opção de CLI leve, você pode usar algokey sign

algokey sign -t keyRegTxnFile -o signedKeyRegTxn -m "[enter your account's 25 word private key delimited by spaces]"
Enter fullscreen mode Exit fullscreen mode
  1. Registre sua conta online

i. Instale as chaves no nó usando goal account installpartkey Nota: você pode querer mover o arquivo de chave e a transação assinada keyReg para o diretório do nó, se não estiver lá ainda.

goal account installpartkey --partkey testKeyFile --delete-input -d your-data-directory

// Chave de participação instalada com sucesso.
Enter fullscreen mode Exit fullscreen mode

ii. (Opcional) Verifique a participação de sucesso na geração de chaves: rode goal account listpartkeys para ver todas as chaves de participação no diretório específico de dados do nó. Já que ainda não registramos as novas chaves com a rede via uma keyRegistrationTxn, elas estarão marcadas como Registered = no. Você pode ver mais informações sobre chaves de participação com goal account partkeyinfo.

goal account listpartkeys -d your-data-directory

// 
Registered Account ParticipationID Last Used First Round Last Round no MWAP...PJW4 NUCDODS6... N/A 16532750 19532750 yes MWBI...RENA TQLCNH5G... N/A 16434781 19434757 Yes GFJG...K6JQ FNR5WJHQ... N/A 16435404 19435404
Enter fullscreen mode Exit fullscreen mode

iii. Envie a transação assinada de registro de chave para a rede, checando que as chaves foram instaladas com sucesso no nó e que as chaves e a transação são válidas para o rodada atual. Se você quiser usar ferramentas CLI, você pode observar transações assinadas com goal clerk rawsend.

goal clerk rawsend -f signedKeyRegTxn -d your-data-directory

//
ID Bruto da transação K6XVVB45VAZVTJL2OKAUJFTCOAJML7ERZKASOJYYV5GL4QIHNKHA transação encontrada K6XVVB45VAZVTJL2OKAUJFTCOAJML7ERZKASOJYYV5GL4QIHNKHA ainda pendente como rodada 16532751 da transação K6XVVB45VAZVTJL2OKAUJFTCOAJML7ERZKASOJYYV5GL4QIHNKHA committed na rodada 16532753
Enter fullscreen mode Exit fullscreen mode

iv. Feito! Verifique o status da sua conta com goal account listpartkeys.

Nota: as novas chaves não serão usadas no consenso por pelo menos 320 rodadas depois do registro.

2. Assinando com Hot Wallet: Renovando suas chaves em um nó Algorand

Use o seguinte método para renovar chaves de estado e participação expiradas em um nó que possui suas chaves privadas.

A. Gerando e registrando chaves em um passo

Renove as chaves de participação e de estado de uma conta usando goal account renewpartkey , especificando o último rodada válido da conta e das chaves.

goal account renewpartkey -a PEV3ODSO64CQJIZYW7VQ62XG6FRL7Z5DSBSTTLLIUGV4IOLYDR435L4WHY --rodadaLastValid 3004300 -d your-data-directory

//
Por favor aguarde enquanto as chaves são geradas. Isso pode levar alguns minutos.
Enter fullscreen mode Exit fullscreen mode

Depois de alguns minutos, você deve ver uma série de mensagens de sucesso indicando que a chave foi gerada e a transação keyreg correspondente foi assinada e enviada para a rede.

Geração de chave de participação completa com sucesso. Id de transação para mudança de estado: O6OHEUILWGKK57GAAHAONT4E4D4B4IUXHHKOOGPMOEOEVPFBY3LQ Transação O6OHEUILWGKK57GAAHAONT4E4D4B4IUXHHKOOGPMOEOEVPFBY3LQ ainda pendente como rodada 4385 Transação O6OHEUILWGKK57GAAHAONT4E4D4B4IUXHHKOOGPMOEOEVPFBY3LQ ainda pendente como rodada 4386 Transação O6OHEUILWGKK57GAAHAONT4E4D4B4IUXHHKOOGPMOEOEVPFBY3LQ enviada na rodada 4387
Enter fullscreen mode Exit fullscreen mode

Feito! Verifique o status da sua conta com goal account listpartkeys. Nota: as novas chaves não serão usadas no consenso por pelo menos 320 rodada depois do registro.

goal account listpartkeys -d your-data-directory
//
Registered Account ParticipationID Last Used First rodada Last rodada no PEV3...4WHY ZPD4UDTZ... 4463 0 50000 yes 3R6L...KGV4 XTVEXVB4... 4463 1000 3001000 yes PEV3...4WHY DM7EXQKY... N/A 4349 3004300
Enter fullscreen mode Exit fullscreen mode

3. Assinando com Hot Wallet: Gerando e Registrando suas chaves em um nó Algorand

Gerando chaves e assinando transações keyReg no nó que vai hospedar a conta online. Esse método separa a geração de chaves do registro - as chaves recém geradas serão gravadas em um arquivo que você instalará no nó, e depois registrar com a rede.

A. Gerando e Instalando chaves no nó

Rode o comando goal account addpartkey no nó para gerar um novo conjunto de chaves. Especifique a conta, o primeiro e último rodada que essas chaves devem ser válidas.

goal account addpartkey --rodadaFirstValid 1000 --rodadaLastValid 3001000 -a OVFPQUAKNPH6AYDR45MTKJBJD3OSMETOEYQX3A5QBHCQOMSTU6OR6PRGBE -d your-data-directory

//
Por favor aguarde enquanto as chaves são geradas. Isso pode levar alguns minutos.
Enter fullscreen mode Exit fullscreen mode

Depois de alguns minutos, você deve ver uma mensagem de sucesso dizendo:

Chave de participação gerada com sucesso
Enter fullscreen mode Exit fullscreen mode

(Opcional) Verifique a participação de sucesso na geração de chaves: rode goal account listpartkeys para ver todas as chaves de participação no diretório específico de dados do nó. Já que ainda não registramos as novas chaves com a rede via uma keyRegistrationTxn, elas estarão marcadas como Registered = no. Você pode ver mais informações sobre chaves de participação com goal account partkeyinfo.

goal account listpartkeys -d your-data-directory

Registered Account ParticipationID Last Used First Round Last round no OVFP...RGBE XTVEXVB4... N/A 1000 3001000
Enter fullscreen mode Exit fullscreen mode

B) Registrando suas chaves com a rede

Rode goal account changeonlinestatus para registrar as novas chaves para a rede e marcar a conta como online.

goal account changeonlinestatus -a OVFPQUAKNPH6AYDR45MTKJBJD3OSMETOEYQX3A5QBHCQOMSTU6OR6PRGBE -d your-data-directory
Enter fullscreen mode Exit fullscreen mode

Você deve ver uma série de mensagens de sucesso indicando o sucesso do registro. A keyRegistrationTx será gerada, assinada pela chave privada da conta, enviada para a rede e escrita na blockchain.

Id da transação para mudança de status: RHD45L4TEINQZYWQ57K7EHUP7YREE5PZKCRH2NJCWN3NG5RMFEUQ Transação RHD45L4TEINQZYWQ57K7EHUP7YREE5PZKCRH2NJCWN3NG5RMFEUQ ainda pendente como rodada 4986 Transação RHD45L4TEINQZYWQ57K7EHUP7YREE5PZKCRH2NJCWN3NG5RMFEUQ ainda pendente como rodada 4987 Transação RHD45L4TEINQZYWQ57K7EHUP7YREE5PZKCRH2NJCWN3NG5RMFEUQ enviada na rodada 4988
Enter fullscreen mode Exit fullscreen mode

Feito! Verifique que o status online da conta com goal account listpartkeys . Nota: as novas chaves não serão usadas no consenso por pelo menos 320 rodadas depois do registro.

Top comments (0)