WEB3DEV

Cover image for Proton técnico, como fazer? #2
Jhonattan Farias
Jhonattan Farias

Posted on • Atualizado em

Proton técnico, como fazer? #2

No artigo anterior “Proton técnico, como fazer?” Você aprendeu como construir um nó Proton e sincronizá-lo com a Public Proton Testnet. Você deve ter notado que a sincronização com uma blockchain que está sendo executada por milhões de blocos pode levar algum tempo. Felizmente, a sincronização pode ser acelerada usando um snapshot válido existente do banco de dados da blockchain.

Nesta segunda edição, mostraremos como fazer uso de snapshots e como criá-los você mesmo.

Como usar snapshots da Proton.
Um snapshot válido pode ser usado para sincronizar um processo de nodeos da Proton até um bloco desejado na inicialização usando um arquivo de snapshot para recriar um banco de dados válido do estado da blockchain.

Isso alivia a necessidade de construir o banco de dados de estado um bloco por vez a partir do bloco #1, o que leva tempo para alcançar o bloco principal da blockchain, que pode estar na casa dos milhões ou mais.

Explicação
O banco de dados de estado da blockchain shared_memory.bin, necessário para execução do nodeos, é um arquivo mapeado em memória que contém o estado associado a cada bloco, incluindo dados do contrato inteligente, detalhes de conta e transações deferidas.

No entanto, há uma ressalva. Dependendo da função que você exige do seu nó, por exemplo, executando-o como um nó-semente P2P ou um nó de API totalmente funcional, você também precisará do blocks.log completo associado ao bloco nº 1 para poder fornecer um serviço de nó “completo”.

Também deve ser mencionado que o banco de dados que armazena históricos de estado, bem como a funcionalidade de histórico V1 agora depreciada, não é preservada em um snapshot e exigirá uma reprodução completa.

É possível executar nodeos sem nenhum blocks.log existente com um arquivo de snapshot atual, mas esse nó não seria considerado "completo" e normalmente seria usado apenas para consultar informações da blockchain atual e ações de push.

Idealmente, os snapshots devem ser usados ​​com um blocks.log associado contendo um número de bloco principal mais alto. Para resumir o que foi dito acima, bloco mais baixo no snapshot. bloco mais alto em blocks.log quando você inicia o nodeos.

Cenário Comum
O uso mais comum para um snapshot é a recuperação de um nó interrompido incorretamente por: Falha de energia, falta de memória, processo encerrado etc.

O nodeos precisa ser encerrado normalmente, caso contrário, o banco de dados de estado pode estar corrompido, mostrando este erro desagradável:

“Alerta de leitura suja do banco de dados definido (provavelmente devido ao desligamento não limpo): reexecução necessária”

Localizando um snapshot
Antes de tudo, você precisa obter um arquivo snapshot válido de uma fonte confiável. Existem alguns serviços de snapshot da Proton sendo fornecidos pelos produtores de blocos da Proton, incluindo o EOSphere, no entanto, nem todos fornecem snapshots da Testnet, então você pode ter que procurar um pouco

Aqui estão alguns que usamos:

EOSphere | snapshots.eosphere.io

CryptoLions | backup.cryptolions.io

EOS Sw/éden | snapshots.eossweden.org

EOSUSA | http://snapshots.eosusa.news/snapshots/

EOS Amsterdã | https://snapshots.eosamsterdam.net/

CryptoBloks | https://bp.cryptobloks.io/supported-chains/proton-blockchain.html

Saltant | https://snapshots.saltant.io/ (Atualmente um backup completo em vez de um snapshot)

Uso
Usando a compilação nodeos de exemplo no “Proton Técnico, Como fazer?” anterior, todos os arquivos relevantes estão localizados em ~/protondata.

Baixe e descompacte o arquivo snapshot desejado:

> sudo apt install zstdcd
> cd ~/protondata/snapshots
> wget http://snapshots.eosphere.io/snapshots/proton/snapshot.bin.zst
> unzstd snapshot.bin.zst
Enter fullscreen mode Exit fullscreen mode

Exclua o banco de dados de estado existente (se houver) e os blocos reversíveis:

> rm -r ~/protondata/state
> rm -r ~/protondata/blocks/reversible
Enter fullscreen mode Exit fullscreen mode

Inicie o nodeos a partir do snapshot baixado (observando que o genesis.json não está especificado)

> nodeos --data-dir ~/protondata --config-dir ~/protondata --snapshot ~/protondata/snapshots/snapshot.bin
Enter fullscreen mode Exit fullscreen mode

O nodeos agora começará a partir de um snapshot e tentará sincronizar com a blockchain ativa do bloco principal capturado no arquivo snapshot usado. O blocks.log também será continuado a partir do número do bloco do snapshot, por isso é importante garantir um bloco mais baixo no snapshot e um bloco mais alto em blocks.log para evitar lacunas.

Gerando snapshots
A maneira mais segura de usar snapshots é criar e usar os seus próprios. Fornecer também um serviço de hospedagem de arquivos de snapshots para o restante do ecossistema Proton é uma excelente maneira de agregar valor como produtor de blocos Proton.

Para gerar um snapshot nodeos, é necessário configurar um plugin de API Producer. Adicione o seguinte ao final do seu
config.ini e reinicie o nodeos.

plugin = eosio::producer_api_plugin

Aviso: Expor o producer_api_plugin publicamente é um risco de segurança e pode ser explorado, o nó usado para criar um snapshot não deve ser consultável publicamente.

Gere um snapshot localmente usando a seguinte sintaxe, o arquivo snapshot será salvo por padrão na pasta de snapshots:

curl -X POST [http://127.0.0.1:8888/v1/producer/create_snapshot](http://127.0.0.1:8888/v1/producer/create_snapshot)

Na próxima edição do “Proton técnico, como fazer”, examinaremos como consultar o nó Proton da Testnet, como fortalecer a segurança e como se registrar como produtor de blocos da testnet

Certifique-se de fazer qualquer pergunta no EOSphere Telegram

O EOSphere é um produtor de blocos nas blockchains Mainnet e Testnet da Proton, bem como em muitas outras Blockchains baseadas em EOSIO.

Se você achar nosso trabalho útil, vote em nós na Proton Mainnet: eosphere

Conecte-se com EOSphere através destes canais:

TELEGRAM | MEDIUM | YOUTUBE | FACEBOOK | TWITTER | INSTAGRAM

Este artigo foi escrito por (Ross Dold) e traduzido por Jhonattan Farias, você pode encontrar o artigo original aqui.

Oldest comments (0)