WEB3DEV

Cover image for MetaMask e Helios para uma Configuração de Cliente RPC Trustless (sem Necessidade Mínima de Confiança)
Fatima Lima
Fatima Lima

Posted on

MetaMask e Helios para uma Configuração de Cliente RPC Trustless (sem Necessidade Mínima de Confiança)

Image description

A segurança e a precisão dos dados são sempre um tópico importante, mesmo no ambiente Web3, pois são um dos principais fundamentos. Neste artigo, mostraremos como você pode usar a Chainstack e o novo cliente leve (light client) Helios para não precisar confiar em terceiros.

O que é Helios

O Helios é um cliente leve Ethereum sem necessidade mínima de confiança, escrito em Rust pela a16z. Um cliente leve pode participar da rede blockchain sem precisar executar um hardware potente, mas não participa do consenso e não pode ser um validador.

Um nó leve fará download apenas dos cabeçalhos de bloco que contêm um resumo do conteúdo do bloco e verificará aleatoriamente alguns deles e, em seguida, confiará nos nós completos (full nodes) para recuperar o restante dos dados. Essa é uma observação importante porque muitos usuários e DApps dependem do provedor de nós para recuperar dados da blockchain e confiam que recebem as informações legítimas.

Mas agora, você não precisa confiar em ninguém; você pode operar sem necessidade mínima de confiança com o Helios.

Como o Helios funciona

O Helios é um cliente leve muito eficiente; ele sincroniza em poucos segundos e não exige nenhum armazenamento do seu computador, pois usa um ponto de extremidade (endpoint) de nó RPC completo para recuperar os dados necessários e fornecer acesso à blockchain.

O cliente Helios implementa camadas de execução e consenso, como a maioria dos clientes Ethereum, mas as duas camadas trabalham em conjunto, de modo que você só precisa instalar e usar um software.

A camada de consenso

O cliente leve da camada de consenso está em conformidade com as especificações do cliente leve da Beacon Chain e tem acesso aos comitês de sincronização da Beacon Chain. O comitê de sincronização é um grupo de 512 validadores selecionados aleatoriamente a cada 256 epochs (épocas), o que equivale a cerca de 27 horas. Isso é útil porque um validador que faz parte do comitê de sincronização assinará cada cabeçalho de bloco da Beacon Chain. Assim, se um número suficiente de validadores assinar um cabeçalho de bloco específico, é provável que o bloco seja o correto.

Dessa forma, o Helios pode rastrear o topo da cadeia solicitando uma assinatura do comitê de sincronização de um ponto de extremidade RPC não confiável.

A camada de execução

O objetivo da camada de execução aqui é usar os cabeçalhos de bloco provenientes da Beacon Chain e usá-los junto com uma camada de execução RPC não confiável para fornecer dados verificados. Este é um bom momento para mencionar que a Ethereum armazena todo o seu estado na forma de uma árvore Merkle-Patricia (MPT) gigante. Em poucas palavras, uma MPT nos dá uma maneira de verificar deterministicamente a autenticidade de pequenos pedaços de dados.

Uma árvore Merkle Patricia funciona de tal forma que, se sua raiz for publicamente conhecida e de confiança, a autenticidade de qualquer par chave-valor do banco de dados poderá ser verificada chamando uma "prova de Merkle". Isso nos permite autenticar pequenas quantidades de dados de cada vez, o que teoricamente poderia ser reproduzido para autenticar pedaços muito maiores de dados por meio de repetição e randomização.

O Helios usa uma raiz de estado autenticada da camada de consenso. Comparando-o com a camada de execução RPC não confiável, o Helios pode verificar os dados localmente.

Então, por que você usaria o Helios? Em teoria, um provedor de nós mal-intencionado poderia enviar-lhe os dados errados, comprometendo suas transações e sua experiência; observe que não há registro de tais ações por parte dos provedores de nós, mas isso é possível.

O uso do Helios como proxy entre você e o provedor de nós pode garantir que você esteja recebendo dados precisos.

Observe que o software do Helios ainda é experimental, e você deve ter cuidado ao usá-lo como seu principal método de comunicação com a blockchain ou para grandes transações, conforme mencionado no repositório do github do Helios.

Use a Chainstack com o Helios

Então, agora é hora da parte prática: mostraremos como você pode usar o Helios com um nó Chainstack e implementá-lo na MetaMask para usar somente dados verificados em suas transações.

Instale o Helios:

Faça download do instalador do Helios.


curl https://raw.githubusercontent.com/a16z/helios/master/heliosup/install | bash
Enter fullscreen mode Exit fullscreen mode

A seguir, execute o instalador.

heliosup
Enter fullscreen mode Exit fullscreen mode

Quando o processo for concluído, o Helios será instalado e você poderá verificar isso executando o comando -h.

helios -h
Enter fullscreen mode Exit fullscreen mode

Esse comando exibirá as opções disponíveis, como usá-las e como criar variáveis de ambiente.

cli 

USAGE:

    helios [OPTIONS]

OPTIONS:

    -c, --consensus-rpc <CONSENSUS_RPC>    [env: CONSENSUS_RPC=]

    -d, --data-dir <DATA_DIR>              [env: DATA_DIR=]

    -e, --execution-rpc <EXECUTION_RPC>    [env: EXECUTION_RPC=]

    -h, --help                             Print help information

    -n, --network <NETWORK>                [default: mainnet]

    -p, --rpc-port <RPC_PORT>              [env: RPC_PORT=]

    -w, --checkpoint <CHECKPOINT>          [env: CHECKPOINT=]
Enter fullscreen mode Exit fullscreen mode

Configure seu nó Chainstack

Agora que temos o Helios instalado, precisamos de um nó Ethereum da Chainstack para executá-lo. Você pode implantar um gratuitamente no plano de desenvolvedor.

Siga estas etapas simples.

  1. Inscreva-se com a Chainstack.
  2. Implante um nó.
  3. Visualize o acesso ao nó e cadastre-se com as credenciais da Chainstack.

Quando você tiver acesso ao Execution client HTTPS endpoint (ponto de extremidade HTTPS do cliente de execução) e ao Consensus client HTTPS endpoint (ponto de extremidade HTTPS do cliente de consenso) da Chainstack, estará pronto para iniciar o cliente Helios e configurá-lo na MetaMask.

Inicie o cliente leve Helios

Você pode iniciar o cliente Helios com o seguinte comando:

helios --execution-rpc EXECUTION_CLIENT_HTTPS_URL --consensus-rpc CONSENSUS_CLIENT_HTTPS_URL
Enter fullscreen mode Exit fullscreen mode

Isso iniciará o cliente Helios e disponibilizará seu ponto de extremidade RPC em http://127.0.0.1:8545.

Image description

Figura 1:Início do cliente Helios com o ponto de extremidade RPC da Chainstack

 
O painel mostra onde o servidor RPC está sendo executado, o status e a estimativa de confiança entre as informações exibidas.

O campo “confidence” (confiança) mostra uma medida da porcentagem do comitê de sincronização que assinou o cabeçalho do bloco. Qualquer coisa abaixo de 66% é rejeitada, pois apenas um validador precisaria assinar o cabeçalho, o que é relativamente simples de falsificar. Acima de 66%, isso se torna exponencialmente mais complicado, portanto, essa é uma boa medida.

Observe que, nesse momento, o Helios requer o uso de RPCs de execução e de consenso. Você pode iniciá-lo apenas com o sinalizador --execution-rpc; isso usará um cliente de consenso padrão fornecido pelo Helios.

helios --execution-rpc EXECUTION_CLIENT_HTTPS_URL
Enter fullscreen mode Exit fullscreen mode

Observe que você também pode executar o Helios na Goerli; basta usar um nó Goerli da Chainstack e adicionar o sinalizador de rede --networkno final do comando.

helios --execution-rpc EXECUTION_CLIENT_HTTPS_URL --consensus-rpc CONSENSUS_CLIENT_HTTPS_URL --network goerli
Enter fullscreen mode Exit fullscreen mode

Use o Helios com a MetaMask

Neste ponto, seu cliente leve Helios está em execução e pronto para interagir com a rede Ethereum, graças ao ponto de extremidade RPC da Chainstack. Agora podemos implementá-lo na MetaMask para garantir que os dados que usamos para enviar transações sejam verificados.

Neste exemplo, configurei uma rede Goerli.

Clique na aba Networks (redes) na MetaMask e clique em Add network (Adicione uma rede) e depois em Add a network manually (Adicione uma rede manualmente).

Image description

Figura 2: Adicionando uma rede na MetaMask

 
Preencha os parâmetros:
  • Network name (pode ser o nome que quiser): Goerli Helios Chainstack
  • New RPC URL (Novo URL RPC): http://127.0.0.1:8545
  • Chain ID (ID da Cadeia): 5 para a Goerli e 1 para a mainnet
  • Currency symbol (Símbolo da Moeda): ETH
  • URL do Explorador de Blocos(Opcional): o URL do Etherscan ou deixe-o em branco

Image description

Figura 3: Detalhes para acrescentar uma rede à MetaMask

 
Depois de salvar a nova rede, você poderá alternar para ela na MetaMask e usar seu ponto de extremidade seguro.

Image description

Figura 4: MetaMask executado com o novo ponto de extremidade RPC

 

Não apenas MetaMask

A MetaMask é, de longe, a extensão de carteira mais comum, mas há outras opções disponíveis que você pode usar com a Chainstack. Portanto, agora vamos ver como podemos usar a Chainstack e o Helios com outras extensões de carteira.

Carteira Trust

A Trust é outra carteira popular de conta de propriedade externa (EOA) e você pode baixá-la no site da Trust Wallet. Como a MetaMask, a carteira Trust permite aos usuários configurar redes usando pontos de extremidade RPC personalizados. Assim, você pode usá-la facilmente com a Chainstack e o Helios.

Siga estas etapas para adicionar uma nova rede personalizada à sua carteira Trust.

  • Vá até Settings (Configurações)
  • Clique na aba Network (Rede)
  • Clique em Add custom network (Adicione uma rede customizada)

Image description

Figura 5: Carteira Trust - adicionar rede personalizada

 

A página com os detalhes da rede será aberta. Os campos a serem preenchidos são os mesmos da MetaMask, portanto, vamos configurar o RPC Helios na carteira Trust.

  • Network name (pode ser o nome que quiser): Goerli Helios Chainstack
  • New RPC URL (Novo URL RPC): http://127.0.0.1:8545
  • Chain ID (ID da Cadeia): 5 para a Goerli e 1 para a mainnet
  • Currency symbol (Símbolo da Moeda): ETH
  • Block explorer URL (Opcional): o URL do Etherscan ou deixe-o em branco

Agora você está preparado e pronto para usar a Chainstack e o Helios com a carteira Trust. O Site de suporte da carteira Trust informa que não mantém nenhuma informação pessoal, portanto, essa extensão pode ser uma boa opção se você estiver preocupado com a privacidade.

Frame

Frame é uma carteira Ethereum orientada à privacidade; Ela é executada como um aplicativo de desktop disponível no macOS, Linux e Windows e se conecta à extensão do navegador, permitindo que você interaja com DApps. Em sua maior parte, a Frame funciona como qualquer outra carteira EOA. Ainda assim, ela inclui recursos extras valiosos, como contas só de leitura e a capacidade de ser injetada como um emulador MetaMask.

Image description

Figura 6: Casos de uso da Frame

 
As contas somente de leitura permitem essencialmente que você defina as permissões dos DApps. Por exemplo, você pode configurar uma conta que pode interagir com um DApp, mas não pode assinar transações, aumentando a segurança.

A extensão Frame pode ser injetada em seu navegador "como a MetaMask". Isso significa que ela pode emular a MetaMask, permitindo que você interaja com qualquer Dapp, mas com a segurança e as funções extras da carteira Frame.

Image description

Figura 7: UI de extensão Frame

 

A carteira Frame oferece muitas ferramentas para proteger e personalizar sua experiência Web3, incluindo a possibilidade de ativar/desativar redes e configurar pontos de extremidade RPC primários e secundários.

Para usar a Frame com o Helios e a Chainstack, basta configurar uma rede personalizada em seu aplicativo Frame para desktop.

Depois de configurar sua conta, clique no ícone Chains e clique em ADD CHAIN. Os campos a serem preenchidos são os mesmos, mas com a possibilidade adicional de acrescentar um ponto de extremidade RPC secundário para redundância e selecionar o tipo de cadeia.

No exemplo a seguir, configurei a rede de teste Goerli na Frame, usando o Helios como ponto de extremidade primário e um ponto de extremidade Chainstack como um secundário.

Image description

Figura 8: Adicionando uma nova cadeia à Frame

 
Observe que a Frame ainda está na versão beta, portanto, pode ser difícil usá-la em algumas situações.

Conclusão

Softwares como o Helios têm um excelente potencial para melhorar a segurança e a experiência geral da Web3, pois podem ser integrados diretamente em DApps e carteiras graças ao suporte do Rust para WebAssembly. Isso permite que os desenvolvedores incorporem o Helios em aplicativos JavaScript.

Você já explorou o que pode conseguir com a Chainstack? Comece hoje gratuitamente.

Esse artigo foi escrito por Davide Zambiasi e traduzido por Fátima Lima. O original pode ser lido aqui.

Top comments (0)