Нода

Нода (от лат. nodus — узел) — это любой компьютер, подключённый к блокчейн-сети, а также узел сети, в котором сообщения могут быть созданы, получены или переданы.

Ноды децентрализованной сети контактируют друг с другом с помощью P2P-протоколов для обмена информацией о блоках и транзакциях. Нода, в зависимости от её типа, хранит только часть или все данные блокчейна.

Определение узла (ноды) может сильно варьироваться в зависимости от используемого контекста. Когда речь идёт о компьютерных сетях, узлы могут выполнять различные цели, действуя либо как точка перераспределения, либо как конечная точка связи. Обычно узел состоит из физического сетевого устройства, но есть определённые случаи, когда используются виртуальные узлы.

«Лёгкая» нода

Облегчённая нода — это любой компьютер со специальным ПО, подключённый к сети блокчейн. Такие ноды хранят не все данные блокчейна, а только заголовки блоков для подтверждения подлинности транзакций, которые они содержат. Облегчённые ноды зависят от полных нод и могут быть введены в заблуждение, подтверждая транзакции, противоречащие алгоритму консенсуса.

Что такое мастернода?

Мастернода, или валидатор, — это специально настроенная полная нода (то есть любой компьютер, подключённый к сети блокчейн 24/7 и полностью синхронизированный с ней). Полные ноды хранят все данные блокчейна, начиная с генезис-блока.

Мастернода получает вознаграждение за обслуживание сети. Для запуска мастерноды необходимо сделать депозит монетами сети. Содержание мастерноды можно расценивать как пассивный майнинг, поскольку их владельцы разделяют прибыль от генерации и валидации блоков.

Мастернода (валидатор) DecimalChain

Каждая мастернода сети Decimal хранит полную копию блокчейна: все транзакции, блоки, начиная с генезис-блока, и сообщения. Данная копия называется репликой. Она идентична репликам на каждой из остальных мастернод.

На мастерноде развёрнуты дополнительные сервисы и службы, которые необходимы для установления соединения с другими мастернодами по протоколу Gossip.

Каждая мастернода работает в строгих условиях наказания/поощрения. Вознаграждение полагается за корректную и надёжную работу. Сумма вознаграждения пропорциональна совокупному стейку каждой мастерноды в общей сумме стейков. Чем больше стейк валидатора, тем большую часть вознаграждений за блок получит данный валидатор (мастернода).

Запуск мастерноды в DecimalChain

Единственная разница между обычным узлом и мастернодой (валидатором) заключается в том, что он участвует в производстве и проверке/подписании блоков. Технически оба этих узла работают почти одинаково. Например, каждый узел всегда имеет свой собственный идентификатор (node_id) и пару закрытых/открытых ключей формата ed25519, используемых для подписи блоков, в случае если узел становится мастернодой.

Требования к Мастерноде:

  • git;
  • golang 1.14+;
  • shell tools curl and jq;
  • building tools;
  • key-value storage library LevelDB.

Чтобы установить инструменты сборки (включая make) и LevelDB, используйте следующие команды

#RHEL 8 / CentOS 8:
sudo dnf groupinstall «Development Tools»
sudo dnf install leveldb leveldb-devel snappy

#Ubuntu:
sudo apt-get install build-essential
sudo apt-get install libsnappy-dev libleveldb-dev

#macOS:
brew install coreutils
brew install leveldb snappy

Установка
Для работы с нодой нужны decd- и deccli-программы. Сначала установите компилятор Go и утилиту Make, а затем скомпилируйте decd и deccli.

Чтобы скомпилировать узел:

Клонируйте исходный код узла:
Проведите decd- и deccli-сборку и установку:

make all

Убедитесь, что decd и deccli доступны:

decd version
deccli version

Настройка

Необходимо инициализировать узел, создав папку $HOME/.decimal с помощью команды:

decd init YOUR_NODE_NAME –network mainnet|testnet|devnet
YOUR_NODE_NAME - имя узла, например `my-great-node;
mainnet | testnet | devnet — выберите один из них для соответствующей сети.

Выполните команду:

cat $HOME/.decimal/daemon/config/priv_validator_key.json | jq –raw-output '.pub_key.value'

Эта команда отобразит открытый ключ ed25519, закодированный в base64. Это публичный ключ ноды, который понадобится позже для регистрации валидатора (в Public key-поле), — вы должны его сохранить.

Запуск

Запустите узел и дождитесь завершения синхронизации:

decd start

Пока узел синхронизируется, вам необходимо подготовить учётную запись с монетами для ставки и регистрации валидатора.
После того как узел был синхронизирован и находится в актуальном состоянии, необходимо зарегистрировать подготовленный узел в качестве валидатора и назначить начальную ставку. Вам необходимо сформировать и отправить Declare candidate-транзакцию через консоль из учётной записи, на которой планируете управлять валидатором в блокчейне. На этой странице https://console.decimalchain.com/masternode вы должны заполнить информацию об узле и отправить транзакцию. На этой же странице можно активировать и деактивировать валидатор.

Чтобы узнать Public key в системе с узлом, вы должны выполнить следующую команду (Public key будет отображаться в терминале):

cat $HOME/.decimal/daemon/config/priv_validator_key.json | jq –raw-output '.pub_key.value'