Ниже приведено руководство по запуску Ziggurat 3.0 Crawler для Zcash, а также связанных с ним программ Crunchy и P2P-Viz на Ubuntu 22.04 для сбора и визуализации информации о сети Zcash.
Видео по ссылке ниже показывает тот же самый процесс.
Crawler для Zcash находится внутри папки с именем 'zcash', поэтому перед клонированием crawler (репозиторий runziggurat/zcash) может быть удобно создать новую директорию.
Из директории /Home выполните следующие команды:
Code-highlight
mkdir runziggurat
cd runziggurat
git clone https://github.com/runziggurat/zcash.git
cd zcash
Или откройте readme по адресу
'/runziggurat/zcash/src/tools/crawler/README.md'
Эта страница содержит информацию о конкретных вариантах использования.
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 — это единственный обязательный аргумент, и для запуска в нём должен быть указан как минимум один адрес.
Команда 'cargo run --release --features crawler --bin crawler -- --help' является буквальной командой запуска и выведет показанное меню справки.
Выполните команду
Code-highlight
cargo run --release --features crawler --bin crawler -- --help
Это скомпилирует программу и убедится, что всё работает корректно.
Чтобы запустить Crawler, необходимо добавить к команде запуска флаг '--seed-addrs', содержащий как минимум один корректный IP-адрес узла Zcash. Для получения точного результата crawler следует дать поработать достаточное количество времени. Несколько примеров IP-адресов узлов можно найти на https://mainnet.zcashexplorer.app/nodes.
Чтобы получать информацию от Crawler во время его работы, необходимо добавить к команде запуска флаг '--rpc-addr'. Это не требуется только для самого запуска crawler, но иначе для вывода какой-либо информации вообще потребуется остановить crawler (ctrl+c или SIGKILL).
Crawler начнёт взаимодействовать с сетью (по умолчанию каждые 20 секунд) и собирать сетевые данные.
Информацию из Crawler можно вывести с помощью curl, отправляя запросы к узлу (для отображения этой информации требуется jq).
В этом примере RPC-адрес Crawler установлен на '127.0.0.1:54321'
Это отобразит текущие собранные данные '.protocol_version', содержащиеся в поле '.result'. Поле '.result' очень большое, поэтому полезно запрашивать отдельные его части. Другие полезные типы данных: '.num_known_nodes', '.num_good_nodes', '.user_agents' и т. д. См. раздел metrics здесь
Для запуска Crunchy и P2P-Viz необходимо перенаправить '.result' в файл .json.
Это создаст файл 'latest.json' в текущей директории. Этот файл 'latest.json' будет использоваться вместе с Crunchy.
На этом этапе Crawler можно остановить с помощью 'ctrl+c', если дополнительные данные больше не требуются. Crawler выведет в терминал отчёт с полезной информацией.
Crunchy
Crunchy требуется для агрегирования выходного json-файла для использования с P2P-Viz.
Чтобы собрать Crunchy, перейдите в вашу папку '/runziggurat'
Чтобы клонировать репозиторий Crunchy, выполните следующие команды
Code-highlight
git clone https://github.com/runziggurat/crunchy.git
cd crunchy
Скопируйте и вставьте файл 'latest.json' в папку 'crunchy/testdata/'.
Выберите 'Geolocation', а затем 'Choose state file'.
Во всплывающем окне проводника файлов выберите файл 'state.json'.
Карта мира в обозревателе узлов заполнится данными из файла. Подробности о параметрах и настройках использования см. в readme здесь.
СОВЕТЫ!
Вы можете запустить Crawler с ограничением по времени с помощью команды 'timeout', которая отправит определённую команду завершения через заданный промежуток времени. Выполните 'timeout --help' для получения дополнительной информации.
Следующая команда запустит crawler и автоматически остановит его через 50 минут.
Файл 'latest.json' можно сразу создавать и записывать в '/testdata', чтобы не копировать и не вставлять его вручную.
СОВЕТЫ!
Информацию об IP-адресах можно получить из выходных данных и затем использовать для повторной инициализации Crawler при запуске (--seed-addrs). Это сократит время, необходимое для выполнения полного crawl!