Вики ZooBC
Работа узла

Работа узла

Узел ZooBC — это программа ZooBC, работающая на компьютере. Он хранит копию цепочки, проверяет каждый блок и каждую транзакцию по тем же правилам, что и любой другой узел, и предоставляет публичный HTTP API. Запустить узел может любой, и даже узел, который только следит за цепочкой, уже позволяет владельцу проверять всё, никому не доверяя. Создание блоков — отдельный шаг: узел делает это, только когда занимает место в реестре узлов.

Что работает на узле

Узел — это один процесс, запускаемый командой zoobc-node --start node.conf, с одной базой данных SQLite. Он слушает три порта:

ПортНазначение
8001одноранговая сеть
8080HTTP API, который также отдаёт [[web-walletвеб-кошелёк]]
8545RPC-адаптер в стиле Ethereum, которым пользуется [[metamaskMetaMask]], по умолчанию только на собственной машине узла (loopback)

Узел никогда не строит генезис-блок. Блок 0 уже должен быть в его базе данных, и хеш этого блока — идентичность цепочки (см. Генезис-блок). Если узел обнаруживает, что застрял на ветви, с которой не может уйти («застрявший» узел), он отбрасывает свою цепочку и восстанавливается из снимков, закреплённых в spine-цепочке, потому что настройка auto_resync по умолчанию включена. Релиз может также поставлять пин релиза — известный spine-блок, с которым должна совпадать собственная spine-цепочка узла. Новые версии приходят через программу обновления, которая работает рядом с узлом и которой управляет владелец (релизы и обновления).

От включения до создания блоков

  1. Оператор создаёт два ключа: ключ узла для машины и ключ владельца в кошельке (ключи узла).
  2. Владелец отправляет регистрацию, которая блокирует стейк и несёт доказательство того, что два ключа связаны друг с другом (регистрация узла).
  3. Узел ждёт в публичной очереди, упорядоченной по стейку, умноженному на время ожидания (очередь).
  4. Таймер допуска впускает узлы по одному, в медленном темпе, который задаёт протокол (темп допуска).
  5. После допуска узел участвует в жеребьёвке на создание блоков (жеребьёвка), ретранслирует блоки и транзакции назначенным ему пирам (квитанции и топология сети) и, после короткого периода созревания, получает долю вознаграждений (зрелость и доходы).

Каждая цепочка начинается с 11 генезис-мест, принадлежащих ZooBC Foundation. Все остальные входят через очередь, и никто не выбирает, кого впустить. Ни одно место не выдаётся вручную, и ни одно нельзя выиграть вычислительной мощностью, как в Proof of Work.

Как остаться в реестре

Место удерживается выполнением работы. Зарегистрированный узел, пропустивший ход, на который был выбран, по любой причине становится отсутствующим до тех пор, пока не создаст свой следующий собственный блок. Пока он отсутствует, он ничего не зарабатывает, а его оценка участия падает на 5 пунктов (из 100) за единицу оценки, которая в сети меньше чем из 2 880 узлов равна 12 часам. Квитанции, которые он подписывает, и пинги не прекращают это состояние; его прекращает только собственный следующий блок.

На четвёртом пропущенном ходе подряд узел к тому же приостанавливается: он выходит из жеребьёвки производителей, но сохраняет место. Когда он снова в сети, его программа отправляет пинг — небольшую транзакцию без комиссии, которую может отправить только приостановленный узел, — и он возвращается в жеребьёвку на испытательный срок. Если оценка достигает нуля, узел исключается. Подробности — в статье пропущенные ходы, приостановка и исключение; все способы, которыми может закончиться место, — в статье выход из реестра, а все числа — в статье параметры узла в mainnet.

См. также

Статьи по этой теме