В предыдущей статье мы представили PoA Как добавить узел синхронизации под Cliqueконсенсус. В этой статье объясняется, как использовать Новый узел валидатора добавлен в соответствии с консенсусом PoA Clique。
Консенсус кликиЭто из ЭфириумаПодтверждение полномочий (PoA)консенсус Реализация механизма,В основном используется в сценариях частной цепочки или тестовой цепочки.。существовать Clique По общему мнению, узел валидатора (Sealer Nodes) играет ключевую роль и отвечает за генерацию блоков и обслуживание цепочки.
1. Определение узла валидатора
Узел валидатора является основным узлом в рамках консенсуса Clique и отвечает за следующие задачи:
- Предложить новый блок:Валидаторы работают по очереди(Round Robin)Предложить новый блок。
- Знаковый блок:валидаторсуществоватьсгенерированный блоксередина Прикрепите свою собственную цифровую подпись,Докажите легитимность блока.
- Поддерживать безопасность сети:Валидатор — единственный узел, который может производить блоки.,Предотвращает вредоносный майнинг неверификаторами.
2. Характеристики узлов валидаторов
- фиксированный список:Идентичность узла валидатора настраивается статически.,Первоначально определяется блоком генезиса (genesis.json).
- Динамическая регулировка:Узлы валидатора можно добавлять или удалять путем голосования во время выполнения.。
- четкая идентичность:Узел верификатора использует свой собственный адрес учетной записи в качестве идентификатора.。
- Нет необходимости в высокой вычислительной мощности:в отличие от PoW консенсус,Консенсус клики не требует сложных расчетов,Следовательно, узлы валидатора имеют более низкие требования к оборудованию.
3. Обязанности нод-валидаторов
- По очереди выходите из блоков
- Ноды валидатора по порядку По очереди выходите из блоков。
- Если настала очередь валидатора и он не сгенерировал блок вовремя (например, не в сети), работу возьмет на себя следующий валидатор.
- Соблюдайте время блокировки
- Интервал блокировки обычно представляет собой фиксированное время.(
period
,по умолчанию 15 секунд), определенный в файле генезиса. - Каждый узел валидатора может производить блоки только в течение своего периода времени.
- Знаковый блок
- Каждый блок должен быть подписан узлом-валидатором, а информация о его подписи хранится в заголовке блока.
- Подпись валидатора доказывает, что блок был сгенерирован легитимным узлом.
- Предотвратить вредоносное поведение
- Валидатор не может генерировать несколько блоков последовательно (если другие валидаторы не находятся в автономном режиме).
- Консенсус клики силой Время Охлаждение не позволяет валидатору часто создавать блоки.
- Участвовать в управлении валидаторами:Узлы валидаторов могут добавлять или удалять других валидаторов с помощью механизма голосования.。
4. Управление верификаторами
Консенсус Clique поддерживает динамическое управление узлами валидатора:
- Добавить валидаторов:Существующие валидаторы могут предложить добавить новые узлы валидатора.,Превосходить 50% После того, как валидаторы проголосуют за, новый узел станет валидатором: clique.propose("0xNewValidatorAddress", true)
- Удалить валидатор:Существующие валидаторы могут предложить удалить валидатора.,Превосходить 50% После того, как валидаторы проголосуют за, целевой узел будет удален: clique.propose("0xValidatorAddressToRemove", false)
- Список валидаторов:Следующая команда отображает текущий список узлов валидатора.:clique.getSigners()
- Проверьте текущий статус блокировки:Запустите следующую команду, чтобы просмотреть активность производства блоков текущего узла.:clique.status()
5. Механизм генерации блоков узла валидатора.
Механизм генерации блоков консенсуса Clique следующий:
- В порядке По очереди выходите из блоков:Каждый валидатор генерирует блоки в заданном порядке.,Порядок определяется в файле генезиса или определяется списком валидаторов.
- Время охлаждения:
- После того как валидатор сгенерировал блок, он должен дождаться, пока другие валидаторы сгенерируют блок, прежде чем он сможет сгенерировать блок снова.
- Если блок создается принудительно, другие узлы отклонят его.
- механизм отказоустойчивости:Если валидатор не в сети,Другие валидаторы возьмут на себя производство блоков,Сеть по-прежнему работает нормально.
6. Настройки нод-валидаторов
Определите валидатор в файле генезиса:существовать Конфигурация блока Genesis(genesis.json
)середина,может пройти extraData
Поле определяет исходный валидатор.
Пример:
"extraData": "0x0000000000000000000000000000000000000000000000000000000000000000<validators_addresses_in_hex>0000000000000000000000000000000000000000000000000000000000000000"
<validators_addresses_in_hex>
представляет собой объединение адресов валидаторов, каждый адрес 20 байт.
Начинайте майнинг при запуске узла:Узлы валидатора должны использовать --mine
Начало параметра Geth:
$ geth --datadir /path/to/data --networkid 1234 --mine --miner.etherbase "0xYourValidatorAddress" --unlock "0xYourValidatorAddress" --password password.txt
Проверьте, происходит ли майнинг:Проверьте правильность узла, выполнив следующую командусуществовать Горное дело:
возвращаться true
Указывает, что узел пытается сгенерировать блок.