A seguir está um guia sobre como executar o Crawler Ziggurat 3.0 para o Zcash, bem como os programas associados Crunchy e P2P-Viz no Ubuntu 22.04 para coletar e visualizar informações da rede do Zcash.
O vídeo vinculado abaixo segue o mesmo processo.
O Crawler do Zcash fica dentro de uma pasta chamada 'zcash', então pode ser aconselhável criar um novo diretório antes de clonar o crawler (repositório runziggurat/zcash).
A partir do diretório /Home, execute os seguintes comandos:
Code-highlight
mkdir runziggurat
cd runziggurat
git clone https://github.com/runziggurat/zcash.git
cd zcash
Ou abra o readme em
'/runziggurat/zcash/src/tools/crawler/README.md'
Esta página contém informações sobre o uso específico.
Code-highlight
$ cargo run --release --features crawler --bin crawler -- --help
OPTIONS:
-c, --crawl-interval <CRAWL_INTERVAL>
The main crawling loop interval in seconds [default: 5]
-h, --help
Print help information
-r, --rpc-addr <RPC_ADDR>
If present, start an RPC server at the specified address
-s, --seed-addrs <SEED_ADDRS>...
A list of initial standalone IP addresses and/or DNS servers to connect to
-n, --node-listening-port <NODE_LISTENING_PORT>
Default port used for connecting to the nodes [default: 8233]
-V, --version
Print version information
--seed-addrs \ --dns-seed são os únicos argumentos obrigatórios e exigem pelo menos um endereço especificado para funcionar.
O comando 'cargo run --release --features crawler --bin crawler -- --help' é o comando literal de execução e imprimirá o menu de ajuda mostrado.
Execute o comando
Code-highlight
cargo run --release --features crawler --bin crawler -- --help
Isso irá compilar o programa e garantir que tudo esteja funcionando corretamente.
Para executar o Crawler, é necessário adicionar uma flag '--seed-addrs' ao comando de inicialização, contendo pelo menos um endereço IP válido de nó do Zcash. O crawler deve poder rodar por um período razoável de tempo para obter um resultado preciso. Alguns exemplos de endereços IP de nós podem ser encontrados em https://mainnet.zcashexplorer.app/nodes.
Para obter informações do Crawler enquanto ele estiver sendo executado, é necessário adicionar a flag '--rpc-addr' ao comando de inicialização. Isso não é necessário apenas para executar o crawler em si, mas caso contrário será preciso parar o crawler (ctrl+c ou SIGKILL) para exibir qualquer informação.
O crawler começará a se comunicar com a rede (por padrão a cada 20 segundos) e a coletar dados da rede.
As informações do Crawler podem ser exibidas usando curl para consultar o nó (isso requer jq para exibir essas informações).
O endereço RPC do Crawler neste exemplo está definido como '127.0.0.1:54321'
Isso exibirá os dados atuais coletados de '.protocol_version' contidos no campo '.result'. O campo '.result' é muito grande, então é útil chamar partes específicas dele em vez disso. Outros tipos de dados úteis são '.num_known_nodes', '.num_good_nodes', '.user_agents' etc. Veja a seção de métricas Aqui
Para executar o Crunchy e o P2P-Viz, é necessário direcionar o '.result' para um arquivo .json.
Isso criará um arquivo 'latest.json' no diretório atual. Esse arquivo 'latest.json' será usado com o Crunchy.
Neste ponto, o Crawler pode ser interrompido com 'ctrl+c' se não forem necessários mais dados. O Crawler exibirá um relatório no terminal com informações úteis.
Crunchy
O Crunchy é necessário para agregar o arquivo json de saída para uso com o P2P-Viz.
Para compilar o Crunchy, navegue até sua pasta '/runziggurat'
Para clonar o repositório do Crunchy, execute os seguintes comandos
Code-highlight
git clone https://github.com/runziggurat/crunchy.git
cd crunchy
Copie e cole o arquivo 'latest.json' na pasta 'crunchy/testdata/'.
Selecione 'Geolocation' e depois selecione 'Choose state file'.
Na janela pop-up do explorador de arquivos, selecione o arquivo 'state.json'.
O mapa-múndi do explorador de nós será preenchido com os dados do arquivo. Veja o readme Aqui para mais detalhes sobre opções de uso e configurações.
DICAS!
Você pode definir o Crawler para uma varredura temporizada simplesmente com o comando 'timeout', que emitirá um comando de encerramento específico após um período definido. Execute 'timeout --help' para mais informações.
O comando a seguir iniciará e também interromperá automaticamente o crawler após 50 min.
O 'latest.json' pode ser chamado e gravado em '/testdata' para que você não precise copiá-lo e colá-lo manualmente.
DICAS!
As informações de endereço IP podem ser coletadas da saída e depois usadas como seeds do Crawler na inicialização (--seed-addrs). Isso reduzirá o tempo necessário para realizar uma varredura completa!