Helios é um cliente leve multichain confiável, eficiente e portátil escrito em Rust.
Helios converte um endpoint RPC centralizado não confiável em um RPC local seguro e não manipulável para seus usuários. Ele sincroniza em segundos, não requer armazenamento e é leve o suficiente para ser executado em dispositivos móveis.
Helios tem um tamanho binário pequeno e é compilado em WebAssembly. Isso o torna um alvo perfeito para incorporar diretamente em carteiras e dapps.
Primeiro instale heliosup
, instalador do Helios:
curl https://raw.githubusercontent.com/a16z/helios/master/heliosup/install | bash
Para instalar o Helios, execute heliosup
.
Para executar o Helios no Ethereum, execute o comando abaixo, substituindo $ETH_RPC_URL
por um URL de provedor RPC como Alchemy:
helios ethereum --execution-rpc $ETH_RPC_URL
$ETH_RPC_URL
deve ser um provedor de API de execução Ethereum compatível que forneça o endpoint eth_getProof
. Infura atualmente não suporta isso. Recomendamos o uso de Alquimia.
O Helios agora executará um servidor RPC local em http://127.0.0.1:8545
.
Helios também fornece documentação de seus métodos RPC suportados no arquivo rpc.md.
Para executar o Helios em uma cadeia OP Stack, execute o comando abaixo, substituindo $ETH_RPC_URL
por um URL de provedor RPC, como Alchemy e $NETWORK
por uma rede OP Stack compatível:
helios opstack --network $NETWORK --execution-rpc $ETH_RPC_URL
Os valores de rede atualmente suportados são op-mainnet
e base
, com mais em breve.
--consensus-rpc
ou -c
pode ser usado para definir um endpoint rpc da camada de consenso personalizado. Este deve ser um nó de consenso que suporte a API beaconchain do cliente leve. Recomendamos o uso do Nimbus para isso. Se nenhum RPC de consenso for fornecido, o padrão é https://www.lightclientdata.org
, que é executado por nós.
--checkpoint
ou -w
pode ser usado para definir um ponto de verificação de subjetividade fraca personalizado. Deve ser igual ao primeiro hash do bloco de beacon de uma época. Pontos de verificação de subjetividade fracos são a raiz da confiança no sistema. Se for definido com um valor malicioso, um invasor pode fazer com que o cliente sincronize com a cadeia errada. O Helios define inicialmente um valor padrão e, em seguida, armazena em cache o bloco finalizado mais recente que viu para uso posterior.
--network
ou -n
define a rede para sincronização. As opções válidas atuais são mainnet
, sepolia
e holesky
, no entanto, os usuários podem adicionar redes personalizadas em seus arquivos de configuração.
--rpc-port
ou -p
define a porta na qual o RPC local deve ser executado. O valor padrão é 8545
.
--rpc-bind-ip
ou -b
define o ip que se liga ao servidor JSON-RPC. Por padrão, o Helios usará 127.0.0.1
. Use 0.0.0.0
para permitir acesso remoto.
--data-dir
ou -d
define o diretório que o Helios deve usar para armazenar pontos de verificação de subjetividade fraca em cache. Cada rede armazena apenas o ponto de verificação mais recente, que tem apenas 32 bytes.
--fallback
ou -f
define o URL substituto do ponto de verificação (uma string). Isso só é usado se o ponto de verificação fornecido pelo sinalizador --checkpoint
estiver muito desatualizado para o Helios usar para sincronizar. Se nada for fornecido e o sinalizador --load-external-fallback
não estiver definido, o Helios apresentará erro. Por exemplo, você pode especificar o substituto assim: helios --fallback "https://sync-mainnet.beaconcha.in"
(ou usando uma abreviação como: helios -f "https://sync-mainnet.beaconcha.in"
)
--load-external-fallback
ou -l
habilita fallback de ponto de verificação de subjetividade fraca (nenhum valor necessário). Por exemplo, digamos que você definiu um valor de ponto de verificação muito desatualizado e o Helios não consegue sincronizar com ele. Se esse sinalizador for definido, o Helios consultará todas as APIs de rede na lista mantida pela comunidade em ethpandaops/checkpoint-sync-health-checks para obter seus slots mais recentes. A lista de slots é filtrada para APIs íntegras e o ponto de verificação mais frequente ocorrido na época mais recente será retornado. Nota: esta é uma lista mantida pela comunidade e, portanto, nenhuma garantia de segurança é fornecida. Use isso como último recurso se o seu ponto de verificação passado para --checkpoint
falhar. Isso não é recomendado, pois pontos de verificação maliciosos podem ser retornados das APIs listadas, mesmo que sejam considerados íntegros . Isso pode ser executado assim: helios --load-external-fallback
(ou helios -l
com a abreviatura).
--strict-checkpoint-age
ou -s
permite a verificação rigorosa da idade do ponto de verificação. Se o ponto de verificação tiver mais de duas semanas e este sinalizador estiver ativado, o Helios apresentará um erro. Sem esse sinalizador, o Helios exibirá um aviso ao usuário e continuará. Se o ponto de verificação tiver mais de duas semanas, existem ataques teóricos que podem fazer com que Helios e clientes over light sincronizem incorretamente. Esses ataques são complexos e caros, então o Helios desativa isso por padrão.
--help
ou -h
imprime a mensagem de ajuda.
Todas as opções de configuração podem ser definidas por rede em ~/.helios/helios.toml
. Aqui está um exemplo de arquivo de configuração:
[mainnet]consensus_rpc = "https://ethereum.operationsolarstorm.org"execution_rpc = "https://eth-mainnet.g.alchemy.com/v2/XXXXX"ponto de verificação = "0x85e6151a246e8fdba36db27a0c7678a575346272fe978c9281e13a8b26cdfa68"[op-mainnet]consensus_rpc = "https://op-mainnet.operationsolarstorm.org"execution_rpc = "https://opt-mainnet.g.alchemy.com/v2/XXXXX"[base]consensus_rpc = "https://base.operationsolarstorm.org"execution_rpc = "https://base-mainnet.g.alchemy. com/v2/XXXXX"
Uma análise abrangente das opções de configuração está disponível no arquivo config.md.
Exemplos de execução do Helios como uma biblioteca Rust podem ser vistos no diretório de exemplos.
Um ponto de verificação é um hash de bloco da camada de consenso da Beacon Chain em vez de um hash de bloco da camada de execução. Um exemplo de hash de bloco da camada de execução para Holesky é mostrado em https://holesky.etherscan.io/blocks
Os pontos de verificação podem ser obtidos nos seguintes links:
Rede principal Ethereum https://beaconcha.in
Holesky Testnet https://holesky.beaconcha.in
É recomendado usar um hash de bloco como ponto de verificação com menos de duas semanas; no entanto, você pode usar pontos de verificação mais antigos e ainda funcionará, mas fornecerá um aviso. Usar um ponto de verificação com menos de duas semanas evita alguns ataques que são muito difíceis de realizar.
Por exemplo, para obter um ponto de verificação recente para Holesky Testnet, acesse https://holesky.beaconcha.in/ e obtenha o hash do primeiro bloco em qualquer época finalizada. No momento em que este artigo foi escrito, o hash do primeiro bloco na época 78425 é o slot 2509600 mais antigo que tem uma raiz de bloco de 0x60409a013161b33c8c68c6183c7753e779ec6c24be2f3c50c6036c30e13b34a6 e é o valor de ponto de verificação mais recente a ser usado.
Este último ponto de verificação pode ser fornecido como uma opção CLI adicional na linha de comando para executar um nó Helios Light Client no Ethereum Holesky Testnet:
helios etéreo --rede holesky --consensus-rpc http://testing.holesky.beacon-api.nimbus.team --execution-rpc https://ethereum-holesky.g.allthatnode.com --ponto de verificação 0x60409a013161b33c8c68c6183c7753e779ec6c24be2f3c50c6036c30e13b34a6
Por exemplo, para obter um ponto de verificação recente para Ethereum Mainnet, acesse https://beaconcha.in e obtenha o hash do primeiro bloco em qualquer época finalizada. No momento em que este artigo foi escrito, o hash do primeiro bloco na época 222705 é o slot mais antigo 7126560 que tem uma raiz de bloco de 0xe1912ca8ca3b45dac497cae7825bab055b0f60285533721b046e8fefb5b076f2 e é o valor de ponto de verificação mais recente a ser usado.
Este último ponto de verificação pode ser fornecido como uma opção CLI adicional na linha de comando para executar um nó Helios Light Client na Ethereum Mainnet:
helios etéreo --rede rede principal --consensus-rpc https://www.lightclientdata.org --execution-rpc https://ethereum-mainnet.g.allthatnode.com --ponto de verificação 0xe1912ca8ca3b45dac497cae7825bab055b0f60285533721b046e8fefb5b076f2
Se desejar usar um arquivo de configuração em vez de argumentos CLI, você deverá substituir os pontos de verificação de exemplo no arquivo de configuração pelos pontos de verificação mais recentes obtidos acima.
Para garantir que o Helios funcione conforme o esperado, temos um conjunto de testes abrangente que você pode executar. Antes de executar os testes, crie um arquivo .env
na raiz do diretório do projeto. Você pode copiar o conteúdo do arquivo .env.example
e preencher seus próprios segredos.
cp .env.exemplo .env
Para executar todos os testes, use o seguinte comando:
teste de carga-tudo
Para executar testes para um pacote individual, use este comando, substituindo pelo pacote que deseja testar:
teste de carga -p <nome do pacote>
Todas as contribuições para Helios são bem-vindas. Antes de abrir um PR, envie um problema detalhando o bug ou recurso. Ao abrir um PR, certifique-se de que sua contribuição seja construída, tenha sido associada a cargo fmt
e contenha testes quando aplicável.
Se você está tendo problemas com o Helios ou está pensando em contribuir, sinta-se à vontade para participar do nosso telegrama aqui.
Este código está sendo fornecido como está. Nenhuma garantia, representação ou garantia está sendo feita, expressa ou implícita, quanto à segurança ou correção do código. Não foi auditado e, como tal, não pode haver garantia de que funcionará conforme pretendido, e os utilizadores podem sofrer atrasos, falhas, erros, omissões ou perda de informações transmitidas. Nada neste repo deve ser interpretado como aconselhamento de investimento ou aconselhamento jurídico para quaisquer factos ou circunstâncias particulares e não se destina a substituir um aconselhamento competente. É altamente recomendável que você entre em contato com um advogado respeitável em sua jurisdição para quaisquer dúvidas ou preocupações a respeito. a16z não se responsabiliza por qualquer uso do acima exposto, e os usuários devem proceder com cautela e usar por sua própria conta e risco. Consulte a16z.com/disclosures para obter mais informações.