Как запустить карданоноду
Это руководство покажет вам, как работать cardano-node
и cardano-cli
в вашей системе, а также несколько простых примеров того, как вы можете взаимодействовать с блокчейном Cardano .
ПРИМЕЧАНИЕ
В этом руководстве предполагается, что вы установили его cardano-node
в cardano-cli
свою систему. Если нет, вы можете обратиться к руководству по установке Cardano-node , чтобы узнать, как это сделать.
ВАЖНО
Это руководство не затрагивает тему создания блоков cardano-node
или стейк- пула Cardano . Для получения дополнительной информации по этой теме посетите раздел «Работа с пулом ставок ».
Файлы конфигурации
На cardano-node
момент написания этой статьи для запуска приложения требуется как минимум четыре файла конфигурации.
- Основная конфигурация : содержит общие настройки узла, такие как ведение журнала и управление версиями . Это также указывает на файл Byron Genesis и Shelly Genesis .
- Byron Genesis : он содержит начальные параметры протокола и дает инструкции
cardano-node
о том, как запустить эру Байрона в блокчейне Cardano . - Shelly Genesis : он содержит начальные параметры протокола и дает инструкции о том
cardano-node
, как запустить Shelly Era блокчейна Cardano . - Alonzo Genesis : он содержит начальные параметры протокола и дает инструкции
cardano-node
о том, как запустить эру Алонзо блокчейна Cardano . - Топология : содержит список одноранговых узлов сети (
IP Address
иPort
других узлов, работающих в сети блокчейна ), к которым будет подключаться ваш узел.
ВАЖНО
В настоящее время cardano-node
топология устанавливается вручную сообществом сетевых операторов в блокчейне Cardano . Но автоматизированная система p2p (одноранговая) находится в разработке. Для получения дополнительной информации посетите раздел Повышение децентрализации сети с помощью P2P .
Для получения дополнительной информации об эпохах и обновлениях блокчейна Cardano посетите дорожную карту Cardano .
Вы можете скачать текущие файлы конфигурации сети блокчейна Cardano здесь:
Основная сеть / Производство
curl -O -J https://hydra.iohk.io/build/7370192/download/1/mainnet-config.jsoncurl -O -J https://hydra.iohk.io/build/7370192/download/1/mainnet-byron-genesis.jsoncurl -O -J https://hydra.iohk.io/build/7370192/download/1/mainnet-shelley-genesis.jsoncurl -O -J https://hydra.iohk.io/build/7370192/download/1/mainnet-alonzo-genesis.jsoncurl -O -J https://hydra.iohk.io/build/7370192/download/1/mainnet-topology.json
Тестовая сеть/ песочница
curl -O -J https://hydra.iohk.io/build/7654130/download/1/testnet-topology.jsoncurl -O -J https://hydra.iohk.io/build/7654130/download/1/testnet-shelley-genesis.jsoncurl -O -J https://hydra.iohk.io/build/7654130/download/1/testnet-config.jsoncurl -O -J https://hydra.iohk.io/build/7654130/download/1/testnet-byron-genesis.jsoncurl -O -J https://hydra.iohk.io/build/7654130/download/1/testnet-alonzo-genesis.json
ПРИМЕЧАНИЕ
Каждая сеть имеет config
файл, genesis
файл(ы), topology
файл и уникальный идентификатор, который называется Network Magic .
Этот раздел будет обновлен, когда новые сети Cardano появятся в сети с соответствующими файлами конфигурации и Network Magic .
Вы можете спросить, в чем разница между mainnet
и testnet
почему существуют две сети? Проще говоря, Cardano — это блокчейн с открытым исходным кодом, и любой может развернуть сеть на основе программных компонентов Cardano . Сеть mainnet
была первой, созданной в начале эры Байрона в 2017 году. И все участники сети согласились, что именно в этом и заключается вся реальная ценность Cardano .
Тестирование функций и возможностей сети может быть дорогостоящим и требовать реальной ценности. Таким образом , Input-Output Global развернула версию сети для песочницы или тестовой сети. Вместо использования реальных ada
токенов для транзакций вы используете tAda
или Test ADA . В качестве альтернативы вы можете развернуть свою собственную сеть Cardano , но это выходит за рамки данного руководства.
Запуск узла
Для запуска cardano-node
введите что-то вроде этого в терминал:
cardano-node run \ --topology path/to/mainnet-topology.json \ --database-path path/to/db \ --socket-path path/to/db/node.socket \ --host-addr x.x.x.x \ --port 3001 \ --config path/to/mainnet-config.json
Чтобы получить полный список доступных опций, используйтеcardano-node run --help
Usage: cardano-node run [--topology FILEPATH] [--database-path FILEPATH] [--socket-path FILEPATH] [--byron-delegation-certificate FILEPATH] [--byron-signing-key FILEPATH] [--shelley-kes-key FILEPATH] [--shelley-vrf-key FILEPATH] [--shelley-operational-certificate FILEPATH] [--bulk-credentials-file FILEPATH] [--host-addr IPV4] [--host-ipv6-addr IPV6] [--port PORT] [--config NODE-CONFIGURATION] [--validate-db] Run the node.Available options: --topology FILEPATH The path to a file describing the topology. --database-path FILEPATH Directory where the state is stored. --socket-path FILEPATH Path to a cardano-node socket --byron-delegation-certificate FILEPATH Path to the delegation certificate. --byron-signing-key FILEPATH Path to the Byron signing key. --shelley-kes-key FILEPATH Path to the KES signing key. --shelley-vrf-key FILEPATH Path to the VRF signing key. --shelley-operational-certificate FILEPATH Path to the delegation certificate. --bulk-credentials-file FILEPATH Path to the bulk pool credentials file. --host-addr IPV4 An optional ipv4 address --host-ipv6-addr IPV6 An optional ipv6 address --port PORT The port number --config NODE-CONFIGURATION Configuration file for the cardano-node --validate-db Validate all on-disk database files --shutdown-ipc FD Shut down the process when this inherited FD reaches EOF --shutdown-on-slot-synced SLOT Shut down the process after ChainDB is synced up to the specified slot -h,--help Show this help text
параметры карданоноды
ПРИМЕЧАНИЕ
В этом разделе мы будем использовать путь $HOME/cardano
для хранения всех cardano-node
связанных файлов в качестве примера, и, пожалуйста, замените его каталогом, который вы выбрали для хранения файлов.
Мы сосредоточимся на шести ключевых параметрах командной строки для запуска узла:
--topology
: для этого требуется путь к topology.json
файлу, который вы загрузили, как указано выше .
Например, если вы скачалиtopology.json
файл по пути$HOME/cardano/topology.json
, то аргумент будет примерно таким:--topology $HOME/cardano/topology.json
--database-path
: Здесь предполагается путь к каталогу, в котором мы будем хранить фактические данные блокчейна, такие как блоки , транзакции , метаданные и другие типы данных, которые люди хранят в блокчейне Cardano . Мы исследуем, как мы можем запрашивать такие данные в разделе cardano-db-sync. @TODO: ссылка на раздел cardano-db-sync.
Например, если мы решим, что все файлы, необходимые для ,cardano-node
будут находиться в пути$HOME/cardano/
. Затем мы могли бы создать каталог базы данных, подобный этому,mkdir -p $HOME/cardano/db
.
Тогда структура каталогов будет примерно такой:$HOME/cardano/├── db├── testnet-alonzo-genesis.json├── testnet-byron-genesis.json├── testnet-config.json├── testnet-shelley-genesis.json└── testnet-topology.json1 directory, 4 files
Как вы могли заметить,testnet
в этом примере мы планируем запустить узел и загрузили файлы конфигурации в$HOME/cardano/
каталог.
Мы также видим, что мы успешно создалиdb
каталог внутри$HOME/cardano/
.
Аргумент будет выглядеть примерно так:--database-path $HOME/cardano/db
Загрузите и переместите файлы конфигурации в каталог Cardano, как показано выше, чтобы продолжить следовать этому руководству.
--socket-path
: Ожидается путь к unix socket
или named pipe
путь, который cardano-node
будет использоваться для IPC (межпроцессного взаимодействия) .
Онcardano-node
использует IPC (Inter-Process-Communication) для связи с другими компонентами Cardanocardano-cli
, такими как ,cardano-wallet
иcardano-db-sync
.
В Linux и MacOS используется то, что называется сокетами unix и именованными каналами в Windows . Вот пример--socket-path
аргумента для Linux :--socket-path $HOME/cardano/db/node.socket
Как видите, аргумент указывает на файл, поскольку сокеты unix представлены в виде файлов (как и все остальное в Linux ). В этом случае мы помещаем файл сокета вdb
каталог, который мы только что создали. В Windows аргумент--socket-path
будет выглядеть примерно так:--socket-path "\\\\.\\pipe\\cardano-node-testnet"
Как вы могли заметить, это больше похоже на сетьURI
или сеть,Path
чем на файл. Это важное различие, о котором вы должны знать в зависимости от вашей операционной системы. Вы можете заменить строкуcardano-node-testnet
в аргументе на что угодно. Этот пример пути используется в кошельке Daedalus Testnet для Windows .
--host-addr
: Ожидается IP Address
машина, которая cardano-node
будет работать. Другие узлы будут использовать этот адрес в своем topology.json
файле для подключения к вашему узлу, если вы планируете запустить его как relay
узел.
Вот пример--host-addr
аргумента:--host-addr 192.168.0.1
В этом случае мы ожидаем, что узлы в вашей локальной сети (локальной сети) будут подключаться через192.168.0.1
, при условии, чтоIP Address
компьютерcardano-node
работает; замените его своим настоящимIP Address
. Если вы не ожидаете или не нуждаетесь в подключении внешних узлов к вашему узлу, вы можете использовать петлевой адрес127.0.0.1
. Если у вас есть несколько сетевых интерфейсов и вы не знаете, что использовать, вы можете просто использовать0.0.0.0
для приема соединений с любого сетевого интерфейса.
--port
: В сочетании с IP Address
, мы также установим, port
что вы cardano-node
будете использовать для прослушивания любого входящего соединения.
Вот пример--port
аргумента:--port 1337
Вы можете выбрать любоеport
число, которое вам нравится, но рекомендуется использоватьport
числа1024
и выше. Дополнительные сведения см. в разделе Зарегистрированный порт .
--config
: здесь предполагается путь к основному файлу конфигурации, который мы скачали ранее.
Вот пример--config
аргумента:--config $HOME/cardano/testnet-config.json
Пожалуйста, убедитесь, что файлыalonzo-genesis.json
,byron-genesis.json
иshelley-genesis.json
находятся в том же каталоге , что и файлыconfig.json
.
Вот реалистичный пример для запуска cardano-node
:
cardano-node run \--config $HOME/cardano/testnet-config.json \--database-path $HOME/cardano/db/ \--socket-path $HOME/cardano/db/node.socket \--host-addr 127.0.0.1 \--port 1337 \--topology $HOME/cardano/testnet-topology.json
Если у вас все настроено правильно, вы должны увидеть что-то вроде этого:
Listening on http://127.0.0.1:12798[cardano.node.networkMagic:Notice:5] [2021-05-20 12:17:10.02 UTC] NetworkMagic 1097911063[cardano.node.basicInfo.protocol:Notice:5] [2021-05-20 12:17:10.02 UTC] Byron; Shelley[cardano.node.basicInfo.version:Notice:5] [2021-05-20 12:17:10.02 UTC] 1.XX.X[cardano.node.basicInfo.commit:Notice:5] [2021-05-20 12:17:10.02 UTC] 9a7331cce5e8bc0ea9c6bfa1c28773f4c5a7000f[cardano.node.basicInfo.nodeStartTime:Notice:5] [2021-05-20 12:17:10.02 UTC] 2021-05-20 12:17:10.024924 UTC[cardano.node.basicInfo.systemStartTime:Notice:5] [2021-05-20 12:17:10.02 UTC] 2019-07-24 20:20:16 UTC[cardano.node.basicInfo.slotLengthByron:Notice:5] [2021-05-20 12:17:10.02 UTC] 20s[cardano.node.basicInfo.epochLengthByron:Notice:5] [2021-05-20 12:17:10.02 UTC] 21600[cardano.node.basicInfo.slotLengthShelley:Notice:5] [2021-05-20 12:17:10.02 UTC] 1s[cardano.node.basicInfo.epochLengthShelley:Notice:5] [2021-05-20 12:17:10.02 UTC] 432000[cardano.node.basicInfo.slotsPerKESPeriodShelley:Notice:5] [2021-05-20 12:17:10.02 UTC] 129600[cardano.node.basicInfo.slotLengthAllegra:Notice:5] [2021-05-20 12:17:10.02 UTC] 1s[cardano.node.basicInfo.epochLengthAllegra:Notice:5] [2021-05-20 12:17:10.02 UTC] 432000[cardano.node.basicInfo.slotsPerKESPeriodAllegra:Notice:5] [2021-05-20 12:17:10.02 UTC] 129600[cardano.node.basicInfo.slotLengthMary:Notice:5] [2021-05-20 12:17:10.02 UTC] 1s[cardano.node.basicInfo.epochLengthMary:Notice:5] [2021-05-20 12:17:10.02 UTC] 432000[cardano.node.basicInfo.slotsPerKESPeriodMary:Notice:5] [2021-05-20 12:17:10.02 UTC] 129600[cardano.node.addresses:Notice:5] [2021-05-20 12:17:10.05 UTC] [SocketInfo 0.0.0.0:9999,SocketInfo [::]:9999][cardano.node.diffusion-mode:Notice:5] [2021-05-20 12:17:10.05 UTC] InitiatorAndResponderDiffusionMode[cardano.node.dns-producers:Notice:5] [2021-05-20 12:17:10.05 UTC] [DnsSubscriptionTarget {dstDomain = "relays-new.cardano-testnet.iohkdev.io", dstPort = 3001, dstValency = 2}][cardano.node.ip-producers:Notice:5] [2021-05-20 12:17:10.05 UTC] IPSubscriptionTarget {ispIps = [], ispValency = 0}[cardano.node.ChainDB:Info:5] [2021-05-20 12:17:10.06 UTC] Opened imm db with immutable tip at genesis (origin) and chunk 0[cardano.node.ChainDB:Info:5] [2021-05-20 12:17:10.06 UTC] Opened vol db[cardano.node.ChainDB:Info:5] [2021-05-20 12:17:10.06 UTC] Replaying ledger from genesis[cardano.node.ChainDB:Info:5] [2021-05-20 12:17:10.07 UTC] Opened lgr db[cardano.node.ChainDB:Info:5] [2021-05-20 12:17:10.07 UTC] Opened db with immutable tip at genesis (origin) and tip genesis (origin)[cardano.node.ChainDB:Notice:33] [2021-05-20 12:17:10.08 UTC] Chain extended, new tip: 1e64e74bd7ac76d6806480a28017deb0aedd356fb61844ec95c429ae2f30c7c3 at slot 0
Синхронизация блокчейна с нуля может занять некоторое время. Пожалуйста, будьте терпеливы. Если вы хотите остановить синхронизацию, вы можете сделать это, нажав CTRL
+ C
в терминале. Повторный запуск cardano-node run
команды с правильными параметрами возобновит синхронизацию блокчейна.
Запрос блокчейна Cardano
Теперь, когда у нас есть cardano-node
запуск и синхронизация, мы можем проверить это, запросив данные подсказки блокчейна; это текущая точка синхронизации вашего локального узла. Для этого мы используем cardano-cli
приложение командной строки.
Но прежде чем мы сможем это сделать, cardano-cli
другие программные компоненты Cardano должны знать, где находится файл сокета узла. Мы сохранили его по пути $HOME/cardano/db/node.socket
в предыдущем примере. Компоненты читают переменную среды оболочки CARDANO_NODE_SOCKET_PATH
, чтобы найти это.
Поэтому мы установим это в $HOME/.bashrc
или $HOME/.zshrc
, в зависимости от того, какое приложение оболочки вы используете. В Windows вы можете следовать этому руководству: Как установить переменную среды в Windows .
Добавьте эту строку в конец вашего профиля оболочки ( MacOS и Linux ):
export CARDANO_NODE_SOCKET_PATH="$HOME/cardano/db/node.socket"
После сохранения перезагрузите оболочку/терминал, чтобы изменения вступили в силу.
Наконец, теперь мы можем протестировать запрос кончика блокчейна нашего cardano-node
:
- Во- первых, запустите
cardano-node
в отдельном терминале, чтобы он начал синхронизацию (если это еще не сделано). - Откройте другой терминал и выполните следующую команду
cardano-cli query tip --testnet-magic 1097911063
.Вы должны увидеть что-то вроде этого:{ "blockNo": 2598870, "headerHash": "e5be38153db4dc639134969e6449f37e105e0c5228f828f76a885968b4423aaf", "slotNo": 27149964}
ПРИМЕЧАНИЕ
Мы включаем --testnet-magic <NetworkMagic>
параметр for cardano-cli query tip
, потому что мы используем testnet
узел. Если вы намерены сделать запрос mainnet
вместо этого, используйте этот --mainnet
параметр и убедитесь, что ваш узел подключен к mainnet
сети.
То, что вы видите здесь, — это локальные данные наконечника вашего узла. Этот случай означает, что вы синхронизированы с blockNo: 2598870
и slotNo: 27149964
.
Чтобы узнать, полностью ли вы синхронизированы, вы можете проверить Cardano Blockchain Explorer соответствующей сети:
Обозреватель основной сети
Обозреватель тестовой сети
https://explorer.cardano-testnet.iohkdev.io
Прокрутите вниз до раздела « Последние блоки », и вы сможете найти последний сетевой совет.
ВАЖНО
Прежде чем совершать какие-либо транзакции, убедитесь, что вы полностью синхронизированы с сетью блокчейн.