July 8, 2022

Как запустить карданоноду

Это руководство покажет вам, как работать 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 здесь:

Основная сеть / Производство

Сетевая магия :764824073

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

Тестовая сеть/ песочница

Сетевая магия :1097911063

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.org

Обозреватель тестовой сети

https://explorer.cardano-testnet.iohkdev.io

Прокрутите вниз до раздела « Последние блоки », и вы сможете найти последний сетевой совет.

ВАЖНО

Прежде чем совершать какие-либо транзакции, убедитесь, что вы полностью синхронизированы с сетью блокчейн.

Поздравляем, теперь вы готовы исследовать мир Cardano ! 🎉🎉🎉