Введение в блокчейн: узлы (часть 2)
5 минут
НовичокБлокчейн-узлы
Традиционные сетевые службы работают по модели клиент-сервер. Чтобы получить доступ к общему ресурсу, вы (клиент) подключаетесь к серверу и запрашиваете официальную версию файла. Это упрощает синхронизацию (поскольку сервер знает самую последнюю версию), но очень централизованно. Это может быть проблематично, поскольку требует доверия к серверу, а сервер уязвим для атак типа «отказ в обслуживании» (DoS).
Блокчейн разработан как полностью децентрализованная система. Каждый узел в сети блокчейна имеет возможность хранить копию распределенного реестра, а официальная версия общего реестра обновляется с помощью механизмов консенсуса блокчейна (подробно описанных в четвертом разделе этой серии).
Что делают узлы?
Узлы являются жизненно важной частью экосистемы блокчейна, потому что именно они делают все. В децентрализованной одноранговой системе каждый действует как комбинированный клиент и сервер. Обязанности узлов зависят от протокола, а не от программного обеспечения и они многочисленны.
Протокол, а не программное обеспечение
Как и многие другие интернет-приложения, блокчейн - это протокол, а не конкретная часть программного обеспечения. Вместо того, чтобы обязать всех запускать один и тот же исполняемый файл для использования службы (например, Skype), единственным требованием является то, чтобы узлы взаимодействовали на основе правил службы.
Примером может служить HTTP, протокол, который определяет, как работают веб-сайты. Структура и порядок пакетов в сети определяются протоколом, но никого не волнует, какое программное обеспечение вы используете. В результате существует несколько разных веб-серверов (Apache, IIS и т. д.) и множество различных веб-браузеров (Chrome, Firefox, Safari и т. д.). Эти серверы и браузеры согласились следовать протоколу, поэтому они могут без проблем взаимодействовать друг с другом.
Некоторые блокчейны реализованы с использованием другого программного обеспечения, в то время как другие имеют только одно. При выборе программного обеспечения блокчейна для запуска всегда полезно провести перекрестное сравнение вариантов.
Общие задачи узла
Целью узла является внедрение и эксплуатация блокчейна. Каждый узел имеет возможность хранить полную копию распределенного реестра и обновлять его на основе консенсуса сети в целом. В результате узлы могут участвовать в различных действиях, включая обработку транзакций, создание блоков и управление реестром.
Обработка транзакции
Одной из наиболее распространенных задач узлов является обработка транзакций. Любой, кто подключен к сети блокчейна через узел, будет отправлять свои транзакции на узел для добавления в распределенный реестр. Узел отвечает за отправку этих транзакций в остальную часть сети, а также за пересылку любых транзакций, которые он получает от других узлов, своим одноранговым узлам в сети.
Создание блока
Блокчейн обновляется путем добавления новых блоков в существующую цепочку. Эти блоки содержат данные, хранящиеся в распределенном реестре, и кто-то должен собрать эту информацию в блок и распространить ее по остальной сети. Поскольку в блокчейне нет централизованного сервера, значит, и за это отвечают узлы. Используя алгоритм консенсуса блокчейна, узел выбирается в качестве следующего создателя блока. Они выполняют задачи по созданию следующего блока и запуску его распространения (и получают вознаграждение за свои усилия).
Управление бухгалтерской книгой
Наконец, узлы несут ответственность за правильное хранение и доступность распределенного реестра. Каждый узел может хранить полную копию распределенного реестра. Поскольку не все пользователи сети блокчейна являются узлами (т. е. некоторые люди просто используют биткойны для выполнения транзакций или инвестиций), эти узлы могут время от времени просить отправить копию определенных частей блокчейна пользователю, чтобы убедиться, что транзакция попал в распределенный реестр.
Типы узлов блокчейна
Различия ролей в сети блокчейн не так просты, как узел и не-узел. В некоторых случаях возможны разные типы узлов. Например, Hyperledger допускает огромное количество специализации ролей, позволяя узлам выполнять только ту часть работы, для которой они больше всего подходят.
Одним из наиболее распространенных различий между узлами в блокчейне являются полные и облегченные узлы. Как следует из их названия, полные узлы выполняют все рабочие роли, связанные с тем, чтобы быть узлом. Эти ребята хранят полную копию леджера и участвуют в консенсусе и создании блоков. Сеть блокчейн нуждается в определенной критической массе полных узлов, чтобы поддерживать свою безопасность и децентрализацию.
Облегченные узлы предназначены для того, чтобы выполнять и проверять транзакции было легче, не делая всего, что делает полный узел. В предыдущем посте этой серии мы говорили о том, как заголовки блоков «связываются» друг с другом с помощью хеш-значений. Поскольку эти заголовки суммируют все транзакции, содержащиеся в блоке, их достаточно для проверки целостности блокчейна. Узлы Lite загружают заголовки и запрашивают фактические данные транзакции только в том случае, если они хотят убедиться, что определенная транзакция была включена в блок. Это снижает требования к хранилищу и связи для облегченных узлов за счет небольшой децентрализации.
Безопасность узлов блокчейна
Узлы являются целями большинства атак на блокчейн-сети. В то время как другие атаки могут быть более узнаваемыми (например, атаки 51%), многие злоумышленники обнаружили, что более выгодно нацеливаться на отдельных пользователей. Некоторыми угрозами на уровне узла являются неправильные настройки безопасности, фишинг и вредоносное ПО.
Уязвимости, связанные с неправильной настройкой безопасности, возникают, когда пользователи изменяют настройки своего программного обеспечения блокчейна, не понимая возможных последствий. Одним из примеров является настройка обычного клиента Ethereum, которая позволяет внешним приложениям взаимодействовать с программным обеспечением кошелька через удаленный вызов процедур (RPC). Злоумышленники, просканировавшие порт 8545, смогли подключиться к программному обеспечению и украсть 20 миллионов долларов в эфире.
Фишинговые атаки также чрезвычайно распространены среди пользователей блокчейна. Кошелек Electrum особенно известен тем, что является объектом фишинговых атак: более 1 миллиона долларов в биткойнах было украдено всего одним злоумышленником за считанные часы.
Наконец, вредоносное ПО может использоваться на узлах блокчейна для самых разных целей. Многие из атак, описанных в остальных статьях этой серии, могут быть выполнены с использованием вредоносных программ, нацеленных на программное обеспечение блокчейна на узле.
Защита вашего узла
Если вы запускаете узел в блокчейне, его безопасность полностью находится под вашим контролем. Принятие соответствующих мер для его защиты, таких как установка антивирусного программного обеспечения, его правильная настройка и осведомленность о фишинговых мошенничествах, могут иметь огромное значение для вашей безопасности и безопасности сети блокчейн. Децентрализация сети блокчейна затрудняет защиту от определенных атак на сетевом уровне, но каждый безопасный узел способствует работоспособности и безопасности сети.
Читать часть 3: Блокчейн-сеть