1. Предыстория
Добавление узлов синхронизации (полных узлов) имеет большое значение для сетей блокчейнов, особенно для частных цепочек, основанных на механизме консенсуса клики PoA (Proof of Authority). Вот основные причины для добавления узлов синхронизации и их преимущества:
- Улучшение децентрализации сети и отказоустойчивости
- распределить нагрузку:Узлы синхронизации совместно распределяют данные и выполняют запросы.изнагрузка,Уменьшите нагрузку на узлы валидаторов.
- Повышение отказоустойчивости:Если некоторые узлы валидатора или существующие узлы синхронизации неожиданно отключаются от сети.,Другие узлы синхронизации могут продолжать предоставлять пользователям возможность доступа к данным цепочки.,Повысьте надежность сети.
- Обеспечить избыточное резервное копирование данных цепочки
- Узлы синхронизации хранят полные данные блокчейна, что обеспечивает избыточность данных для всей сети. Синхронные узлы могут служить резервным источником, если некоторые узлы потеряют данные или выйдут из строя.
- существоватьчастное выступление,В некоторых бизнес-сценариях может потребоваться получение исторических транзакций или статуса счета в любое время.,Узлы синхронизации обеспечивают выполнение этих требований.
- Поддержка эффективного доступа к данным в цепочке
- Узлы синхронизации обычно используются в качестве поставщиков данных (например, для запроса остатков на счетах, записей транзакций и т. д.). Путем добавления узлов синхронизации,Он может поддерживать больше запросов клиентов, не влияя на производительность узла валидатора.
- Для таких приложений, как DApps), узлы синхронизации можно использовать как RPC(Remote Procedure Call) серверная поддержка службы для обработки запросов данных пользователей в цепочке.
- Улучшение масштабируемости сети
- По мере расширения использования частных цепочек, большему количеству пользователей и приложений может потребоваться доступ к данным в цепочке.
- Добавление узлов синхронизации может облегчить проблему нехватки ресурсов одного узла.,Тем самым улучшая возможности сети Расширять,Поддержка большего количества одновременных запросов и трансляции данных.
- Обеспечить независимый доступ к данным в цепочке
- Некоторые организации или пользователи могут захотеть получить независимый доступ к данным блокчейна.,Вместо того, чтобы полагаться на сторонние узлы. Эти узлы могут дополнительно запускать свои собственные узлы синхронизации.
- существуют определенные нормативные или чувствительные к конфиденциальности среды,Запуск независимых узлов синхронизации обеспечивает прозрачность и целостность доступа к данным.
- Уменьшите нагрузку на узлы валидаторов:узел валидатораиз Основная задача — генерация блоков и проверка транзакций.。Узлы синхронизации могутк Помощь с другими некритическими задачами,Например, широковещательная передача данных, транзакционная связь и т. д.,Убедитесь, что узлы валидации сосредоточены на основной работе по достижению консенсуса.
- Повышение безопасности
- В частной цепочке PoA добавление узлов синхронизации может затруднить злоумышленнику полный контроль над сетью.
- Если злонамеренный узел попытается захватить сеть, большее количество синхронизированных узлов означает, что для одновременного управления достаточным количеством узлов потребуется больше ресурсов.
- Поддержка автономной разработки и анализа
- Узлы синхронизации могут использоваться разработчиками в качестве инструментов для тестирования смарт-контрактов или анализа данных в цепочке.
- Синхронизировать узел через локальный,Разработчики могут быстро получить доступ к данным в цепочке,Нет необходимости полагаться на удаленные узлы.
2. Как добавить новый шаг
2.1 Предварительные условия
- Уже работает частная сеть PoA Clique
- сетевое окружение:Обеспечить существующую сетьиз Документ создания(
genesis.json
)、Доступны такие конфигурации, как идентификатор сети и порт. - Совершенно новый узел для синхронизации данных
2.2 Получение существующей сетевой информации
к geth,Например:
# Получить идентификатор сети
> admin.nodeInfo.protocols.eth.network
12345
# Получить валидатор кодирующий сайт
> admin.nodeInfo.enode
"enode://<public_key>@<ip>:<port>"
2.3 Настройка новых узлов
к geth,Например:
# Создать новый из аккаунта
$ geth account new --datadir /path/to/new/datadir
INFO [11-19|01:41:20.353] Maximum peer count ETH=50 total=50
INFO [11-19|01:41:20.354] Smartcard socket not found, disabling err="stat /run/pcscd/pcscd.comm: no such file or directory"
Your new account is locked with a password. Please give a password. Do not forget this password.
Password:
Repeat password:
Your new key was generated
Public address of the key: 0xe23C2c6e7f785e74EB7AAeF96455B78C53adb2E3
Path of the secret key file: /root/.ethereum/keystore/UTC--2024-11-19T01-41-27.442932800Z--e23c2c6e7f785e74eb7aaef96455b78c53adb2e3
- You can share your public address with anyone. Others need it to interact with you.
- You must NEVER share the secret key with anyone! The key controls access to your funds!
- You must BACKUP your key file! Without the key, it's impossible to access account funds!
- You must REMEMBER your password! Without the password, it's impossible to decrypt the key!
2.4 Запуск нового узла
# Начать новый узел
$ geth --datadir /path/to/new/datadir --networkid 12345 --http --http.addr "0.0.0.0" --http.port 8545 --http.api "eth,net,web3,admin" --http.corsdomain "*" --unlock 0xe23c2c6e7f785e74eb7aaef96455b78c53adb2e3 --password /path/to/new/datadir/password.txt --allow-insecure-unlock --syncmode full --bootnodes "enode://<public_key>@<ip>:<port>"
3. Расширение
существовать Геты (Go-Ethereum)середина,--bootnodes
Параметры используются для указания загрузочных узлов (Bootnodes) в сети. Основная функция загрузочного узла — помочь вновь добавленным узлам обнаруживать другие узлы и подключаться к ним для быстрого подключения к сети. Ниже приводится подробное описание:
3.1 Что такое загрузочный узел?
Bootnode — это специальный узел в сети блокчейн, его основная функция — выступать в качестве точки входа в сеть. Новый узел получает список известных других узлов через Bootnode для установления однорангового соединения с сетью.
- Bootnode Обычно запускается специальный сервис для записи и предоставления данных других узлов.
enode
адрес. - Он не обязательно хранит данные блокчейна и не требует участия в проверке или производстве блоков.
3.2 --bootnodes
Роль параметров
--bootnodes
Параметры используются, чтобы сообщить Geth Список загрузочных узлов, к которым необходимо подключиться при запуске узла. Целью этих загрузочных узлов является:
- Предоставить другие узлы
enode
информация. - Помогите новым узлам присоединиться к сети блокчейн.
3.3 Формат параметров
--bootnodes
Формат разделяется запятыми enode
Список адресов:
--bootnodes enode://<public_key1>@<ip1>:<port1>,enode://<public_key2>@<ip2>:<port2>
Важные описания полей:
public_key
:Bootnode Открытый ключ используется для уникальной идентификации узла.ip
:Bootnode из IP адрес или доменное имя.port
:Bootnode Используйте порт прослушивания (обычно 30303
)。
3.4 Сценарии использования
Частная сеть/тестовая сеть:
существовать PoA Или в других средах частной сети Bootnode. Часто используется для направления новых узлов для быстрого обнаружения других одноранговых узлов. При развертывании частной цепочки вам необходимо:
- Установите одну или несколько стабильных операций Bootnode。
- поместите это Bootnode изадрес настроен на другие узлы.
Публичная сеть
существовать Публичная В сети чиновник или сообщество предоставит набор публичных из Загрузочный узел (например. Ethereum Основная сеть Загрузочный узел). Новым узлам необходимо указать только эти Bootnode адрес для подключения к сети.
3.5 Меры предосторожности
- Надежность загрузочного узла:Bootnode Это должен быть узел высокой доступности, обычно развернутый в общедоступной сети. IP Или на стабильном сервере.
- Несколько загрузочных узлов:Рекомендуемая конфигурация Несколько загрузочных узлов адрес, чтобы предотвратить влияние простоя одного узла на присоединение новых узлов.
static-nodes.json
замена:Если сеть небольшая и узлы стабильны,Вы также можете пройти static-nodes.json
Файл напрямую настраивает фиксированные одноранговые узлы без зависимостей. Bootnode。- Не требуется долгосрочное соединение:Только узелсуществовать Запрос при запуске Bootnode Одноранговый узел обнаружен по адресу к. После установления соединения загрузочный узел. В этом больше нет необходимости из.