
Как клиентская архитектура применяется к децентрализации и безопасности в криптографии
3 апреля 2023 г.Всякий раз, когда темы безопасности & децентрализации вокруг блокчейна, обсуждение, как правило, разделяется на два лагеря: crypto">механизмы консенсуса или оборудование.
Конечно, они оба действительны & важные моменты, которые необходимо решить, однако есть еще один вектор, который скрыт от посторонних глаз.
Это клиент узла.
Что такое клиент?
В контексте блокчейна/DLT клиент — это часть программного обеспечения, которое соединяет узел с сетью & позволяет своему пользователю читать/записывать информацию в/из блокчейна. Таким образом, майнеру потребуется установить программный клиент на свое аппаратное устройство, чтобы присоединиться к & участвовать в сети.
Блокчейн = сервер
Узел = оборудование с клиентом
Клиент = программное обеспечение
Клиенты обеспечивают основные сетевые функциональные возможности, включая среду выполнения для обработки транзакций, хранения данных транзакций, сетевых инструментов P2P и API для прямого взаимодействия с сетью.
Каждый блокчейн должен иметь собственное клиентское программное обеспечение, которое соответствует правилам протокола/консенсуса этой конкретной цепочки. Клиенты Ethereum не работают в Bitcoin & биткойн-клиент не работает на Solana.
Каждый клиент будет различаться в зависимости от языка, на котором он написан в & собственные уникальные операционные спецификации (некоторые могут быть ориентированы на оптимизацию памяти, а другие — на оптимизацию производительности за счет согласованной модульности для запуска сайдчейна).
Типы клиентов
Вообще говоря, клиенты классифицируются по типу приложения узла. Как правило, существует четыре (3 + 1) типа клиентов узлов для блокчейна; полные узлы, архивные узлы, облегченные узлы и усилители; узлы майнера.
Полные узлы/клиенты:
Наиболее распространенный тип узла в сети, который способствует сетевой безопасности/консенсусу & хранит самое последнее состояние цепочки. Они выступают в качестве основных носителей информации, которые проверяют блоки, проверяют транзакции и т.д. передавать данные другим узлам. Эти типы узлов не стимулируют работу, но служат средством прямого подключения к цепочке.
Архивные узлы/клиенты:
Самые требовательные к памяти из всех типов узлов архивные узлы хранят всю историю блокчейна. Для запуска архивного узла требуется огромное количество места для хранения; поэтому они редко, если вообще когда-либо, управляются отдельными лицами. Как только цепочка достигает определенного этапа, требуются фермы серверов или кластеры машин корпоративного уровня. Эти узлы предназначены для обеспечения надежной сетевой безопасности и защиты. сервисы с большим объемом данных, такие как обозреватели или онлайн-аналитика данных.
Узлы/клиенты Lite:
Эта версия клиентов, которую иногда также называют узлом SPV (упрощенная проверка платежей), содержит лишь небольшую часть состояния & хранить только данные, относящиеся к определенному набору информации. Узлы Lite подключаются к полному узлу, чтобы получить доступ к данным в цепочке. Хорошим примером облегченной ноды является кошелек. Кошелькам требуется только информация, относящаяся к определенной учетной записи & не иметь желания/необходимости участвовать в сетевых операциях. Это клиенты для большинства основных пользовательских приложений.
Узлы/клиенты майнера (+1):
Причина, по которой это +1, заключается в том, что этот вариант клиента узла не применяется ко всем цепочкам блоков; его нет в стейкинговых сетях & применимо только к цепям POW. Как следует из названия, майнерские узлы имеют единственную функцию — майнинг. Эти типы клиентов эволюционировали, чтобы стать подходящими для одноцелевого оборудования, такого как ASIC в биткойнах. Иногда эта функция связана с операциями полного узла, но в большинстве случаев это будет отдельная функция.
Дилемма одного клиента & Общие опасения
Всякий раз, когда в сети блокчейна есть только один клиент, это обоюдоострый меч, который может служить проблемой безопасности. Конечно, у любой истории всегда есть несколько сторон, но основная истина заключается в том, что только с одной реализацией клиентского протокола одна ошибка или уязвимость в этой реализации может поставить под угрозу всю сеть.
<цитата>Вопрос. Что происходит всякий раз, когда в клиенте обнаруживается ошибка?
сторона 1: тогда вся сеть находится под угрозой.
сторона 2: если все усилия разработчиков направлены на достижение одной цели, то риск возникновения ошибок с самого начала ниже.
<цитата>Вопрос. Что произойдет, если/когда хакер обнаружит уязвимость в клиенте?
сторона 1: Затем вся сеть & его участники находятся в группе риска.
сторона 2: без комментариев…
<цитата>Вопрос. Что, если клиент спроектирован таким образом, что он не позволяет новым разработчикам присоединиться к & требуется строгий набор специально обученных разработчиков?
сторона 1: это создает узкое место, которое душит инновации.
сторона 2: затем создаются более качественные разработчики специального назначения.
MCA — многоклиентная архитектура
Под многоклиентской архитектурой понимается принцип разработки программного обеспечения, при котором существует несколько независимых реализаций клиента для данного протокола блокчейна.
Существует четыре основные причины, по которым МКА улучшает общее состояние здоровья. благополучие сети блокчейн:
- Отказоустойчивость:
Снижается риск того, что одна ошибка или уязвимость повлияют на всю сеть. В качестве примера возьмем сеть с 1000 узлов и 4 клиентами. В случае неисправности одного клиента & выведет из строя 25% всех сетевых узлов, сеть сможет работать бесперебойно. Если бы был только один поврежденный клиент, вся сеть остановилась бы.
2. Устойчивость к атакам:
При наличии нескольких независимых реализаций злоумышленнику потребуется обнаруживать и использовать уязвимости в нескольких реализациях, чтобы оказать существенное влияние на сеть. Увеличенная площадь поверхности необработанного кода & индивидуальная сложность, через которую хакеру/злоумышленнику придется пройти, чтобы взломать сеть, резко возрастает с каждым новым клиентом.
3. Децентрализация:
MCA уменьшает облачность любого отдельного клиента, доминирующего в сети, поскольку несколько клиентов должны соблюдать консенсус протокола, чтобы согласовать состояние блокчейна, прежде чем можно будет добавить какие-либо новые транзакции.
4. Открытость и прозрачность:
Мультиклиентская архитектура способствует открытости и прозрачности, позволяя любому внести свой вклад в разработку клиентской реализации. Это сводит к минимуму зависимость & нужно доверять одной команде, чтобы производить честные продукты. Вместо этого это усилило конкуренцию между командами разработчиков за стимулирование внедрения. Кроме того, несколько сторон, работающих над разработкой протокола блокчейна, могут, в свою очередь, помочь предотвратить развитие скрытых уязвимостей или бэкдоров. (если только они не коррумпированы и не вступают в сговор против общественности)
Текущее состояние MCA в Crypto
Подавляющее большинство проектов имеют только одну клиентскую версию & редко упоминайте о введении каких-либо новых (ведь все развивающиеся клиенты требуют финансирования).
Однако несколько ориентированных на технологии проектов OG, таких как Ethereum, Polkadot & (недавно в разработке) Солана, серьезно отнеслись к этому вопросу & возглавляют внедрение MCA.
Следует отдать должное Ethereum за то, что он всегда имел самый разнообразный набор клиентского программного обеспечения. На момент написания этой статьи существует 4 основные активные реализации:
— Geth (~70,1% всех клиентов) Самая надежный клиент протокола, который позволяет пользователям гибко запускать любую версию узла. Реализация Ethereum на языке программирования GO.
— Nethermind (~13,6% всех клиентов) Реализовано на языке программирования .NET Nethermind — это клиент выполнения протокола, оптимизирующий операции для полных узлов.
— Erigon (~10,8% всех клиентов) A ответвление клиента Geth (также на языке программирования GO), ориентированное на максимальное повышение эффективности хранения для узлов архива.
— Besu (~5,5% всех клиентов) < em>Корпоративный клиент на языке JAVA. Создано & Открытый исходный код фонда Hyperledger, Besu обеспечивает расширенную модульность, позволяющую заменить механизмы консенсуса на частные реализации.
В конце концов, идеального решения не существует.
Я лично очень поддерживаю разнообразный набор клиентов, но прекрасно понимаю, что даже при наличии большего количества клиентов не гарантируется, что они привлекут достаточно внимания, чтобы вытеснить старые, оригинальные клиенты, которые уже проверены в бою.
Спасибо, что прочитали;
Надеюсь, это поможет вам в вашем путешествии по блокчейну
До встречи на той стороне 🥂
Также опубликовано здесь .
Оригинал