Блокчейн - это радикально новая вычислительная модель, в которой данные и приложения защищаются не централизованными посредниками, а децентрализованной сетью компьютеров. Благодаря своей безразрешительной природе блокчейн позволяет любому человеку подключиться к сети и начать независимую проверку целостности вычислений, что приводит к созданию системы сдержек и противовесов между пользователями и операторами сети. От создания новых цифровых валют с программной денежной политикой (например, Bitcoin) до выполнения программируемых приложений с минимальным доверием (например, Ethereum), блокчейн быстро входит в общественное сознание как новая форма цифровой инфраструктуры, часто называемая Web3. Однако, несмотря на то, что всеобъемлющее ценностное предложение блокчейн признается многими, нюансы, касающиеся лежащей в основе блокчейн модели доверия, часто понимаются неправильно. Эта статья поможет объяснить, чем модель доверия в блокчейн отличается от традиционных вычислений, рассмотрев роль самопроверяющихся полных узлов, в частности то, как они обеспечивают прозрачность и проверяемость производителей блоков (например, майнеров/валидаторов) и как снижение стоимости проверки лежит в основе масштабируемости блокчейн. Вычислительная модель, используемая большинством приложений сегодня, включает в себя модель клиент-сервер, в которой запросы отправляются на централизованный сервер базы данных. Участников традиционной вычислительной модели можно разделить на следующие группы: Клиенты: конечные пользователи, генерирующие запросы, часто с помощью персонального устройства, которые отправляются на централизованный сервер базы данных через Интернет по протоколу TCP/IP и ожидают ответа. Клиенты доверяют серверу баз данных в том, что он точно ответит на запрос. Серверы баз данных: удаленный компьютер, часто в виде централизованного облачного провайдера, который предоставляет информацию или доступ к определенным услугам. Внутренний сервер базы данных часто представляет собой набор компьютеров, которыми централизованно управляет традиционное учреждение. Часто называемая "Web2", вычислительная модель позволяет разработчикам быстро запускать и масштабировать приложения по требованию. Пользователи также получают беспрепятственный пользовательский опыт благодаря низкой задержке и высокой пропускной способности вычислений, обеспечиваемой центрами обработки данных. Хотя приложения, размещенные на централизованных базах данных, обеспечивают огромную ценность для миллиардов пользователей по всему миру, они имеют определенные ограничения. Прежде всего, у конечных пользователей нет возможности проверить, что вычисления, связанные с получением ответа на запрос, являются законными или что записи в базе данных не подвергались манипуляциям с течением времени. Такие приложения работают как "черный ящик", то есть пользователи должны полностью доверять тому, что сторонние посредники будут действовать в их интересах. Доверительные допущения, связанные с централизованно размещенными приложениями, могут негативно повлиять на пользователей, которые могут столкнуться с финансовой цензурой, отключением социальных сетей, утечкой личных данных, манипулятивными алгоритмами выбора контента, повреждением данных и их потерей, а также общим отсутствием подотчетности. Конечным результатом является разрушение доверия в обществе и увеличение стоимости экономической координации. Вместо того чтобы полагаться на добросовестность централизованных посредников, блокчейн обеспечивает минимизацию доверия и надежную нейтральность, используя: Криптографию для проверки подлинности данных/активов и подтверждения целостности транзакций; Децентрализованный консенсус для установления порядка транзакций и обеспечения соблюдения правил протокола; Финансовые стимулы для обеспечения неизменности реестра сети и ее непрерывной работы. Важно отметить, что блокчейн является открытой сетью - любой человек в мире может присоединиться к ней в качестве активного участника или пассивного слушателя. Это позволяет конечным пользователям самим убедиться в том, что любой результат, произведенный сетью, является действительным и что записи в реестре не были подделаны. Прозрачность блокчейн также снижает риски, связанные с непрозрачностью, устраняя информационную асимметрию и обеспечивая доступность информации о подверженности рискам для всех участников. Для обеспечения надлежащей работы блокчейна существуют различные (часто пересекающиеся) категории участников сети, каждая из которых играет важную роль. Производители блоков (ПБ): организации, ответственные за упорядочивание и упаковку транзакций в дискретные структуры данных, называемые блоками, которые затем предлагаются сети для проверки. Если два действительных блока произведены на одной и той же высоте блока, ПБ отвечают за определение того, какая версия цепочки является канонической (например, правило самой длинной цепочки). Для определения того, какой ПБ отвечает за генерацию следующего блока в цепочке блоков, используется алгоритм консенсуса, причем наиболее популярными моделями являются Proof of Work (майнеры) и Proof of Stake (валидаторы). Полные ноды: сердце сети блокчейн. Полные узлы загружают и самостоятельно проверяют каждый блок, предложенный ПБ. Если блок признан действительным (т.е. правила протокола были соблюдены), то блок добавляется в личную копию реестра полного узла и применяются изменения состояния. Любые недействительные блоки, не соответствующие правилам протокола, игнорируются и, соответственно, отбрасываются без каких-либо изменений состояния. Архивные ноды: сущности, которые хранят всю ту же информацию, что и полные узлы, но также вычисляют и хранят предыдущие состояния блокчейна. Архивные узлы полезны для запроса произвольных исторических данных, таких как баланс счета пользователя на определенную высоту блока в прошлом. Обратите внимание, что полный узел может быть преобразован в архивный узел в любое время без необходимости загрузки дополнительной информации из сети. Архивные узлы, как правило, имеют высокие требования к аппаратному обеспечению и обычно используются поставщиками услуг (например, эксплорерами блоков). Легкие клиенты: ограниченная форма полной ноды, где загружаются только заголовки (т.е. небольшие уникальные криптографические отпечатки) блоков. Легкие клиенты могут проверить, была ли транзакция включена в блок, но поскольку они не загружают и не выполняют все транзакции в блоках, они неявно доверяют тому, что большинство производителей блоков честны. Легкие клиенты, также известные как клиенты простой верификации платежей (SPV), были впервые описаны в оригинальном техническом документе Биткойна. Провайдеры RPC: полноценные ноды, которые облегчают доступ к блокчейну для чтения/записи, к которому подключаются другие участники сети. Узлы RPC (Remote Procedure Call) часто используются теми, кто не имеет или не может запустить свой собственный полный узел или легкий клиент, что значительно снижает трения при доступе к блокчейну. Любой пользователь, подключенный к RPC-провайдеру, неявно доверяет честности провайдера, поскольку никакой работы по самопроверке не проводится. Конечные пользователи: обычный пользователь, который хочет совершать транзакции в сети блокчейн. В эту категорию могут входить участники, которые запускают полный узел или легкий клиент, а также те, кто подключен к провайдеру RPC. Блокчейн существует для того, чтобы обслуживать конечных пользователей, иначе нет никакой другой причины для существования сети. Хотя каждый из этих участников сети играет ключевую роль в экосистемах блокчейн, полные узлы занимают центральное место в сети блокчейн, поскольку именно они отвечают за поддержание полных копий реестра сети. Другие участники сети, такие как производители блоков и легкие клиенты, подключаются к полным узлам, чтобы быть в курсе состояния сети. Результирующая топография сети показана ниже. Распространенное заблуждение о блокчейн заключается в том, что поскольку производители блоков отвечают за генерацию новых блоков, содержащих транзакции, то они должны в одностороннем порядке контролировать блокчейн. Другими словами, считается, что если большинство ПБ повреждены/сотрудничают (широко известная атака 51%), то сеть полностью скомпрометирована и все ценное может быть безвозвратно уничтожено. В действительности, ВР имеют ограниченный круг полномочий, в котором могут осуществляться только определенные виды вредоносной деятельности. Что могут сделать производители блоков: Цензурировать транзакции: отдельные ВР определяют, какие транзакции будут включены в создаваемые ими блоки, что позволяет им выборочно игнорировать определенные транзакции. Хотя сговорившиеся ПБ могут предотвратить включение транзакций в создаваемые ими блоки, для того чтобы транзакция была включена в действительный блок, должен быть только один честный ПБ. Переписать цепочку: если большинство ПБ вступают в сговор (например, атака 51%), то ранее созданные действительные блоки могут быть вытеснены из сети посредством процесса, называемого реорганизацией блока (reorg), где новая цепочка блоков становится канонической цепочкой. Обратите внимание, что в некоторых блокчейнах существует понятие "экономической законченности" через систему контрольных точек, при этом реорганизация блоков старше контрольной точки приводит к остановке цепи, что требует решения проблемы через общественный консенсус. Что не могут делать производители блокчейна: Изменять правила протокола: ПБ не могут произвольно изменять правила протокола, такие как добавление/удаление функциональных возможностей (например, опкодов), увеличение/уменьшение максимально допустимого размера блока или временного интервала блока, а также увеличение/уменьшение вознаграждения, выдаваемого за производство блоков; Красть средства пользователей: ПБ не могут тратить монеты/токены с адресов, для которых у них нет приватного ключа, так как криптографические подписи таких транзакций будут недействительны. Обратите внимание, что хотя перестройка цепи может привести к атакам двойной траты, это означает простое удаление транзакции из реестра цепи, которая была подписана владельцем закрытого ключа, а не фальсификацию подписи транзакции. Чтобы понять, почему возможности ПБ по своей сути ограничены, важно понять взаимосвязь между ПБ и самопроверяющимися полными узлами. В то время как ПБ обеспечивают актуальность блокчейна, предлагая новые блоки, они не определяют достоверность блоков от имени сети. Напротив, роль полных узлов, которые хранят личную копию записей в блокчейне, заключается в независимой проверке каждого блока и выполнении всех содержащихся в нем транзакций, чтобы определить, соблюдаются ли правила протокола. В результате создается система сдержек и противовесов, в которой полные узлы отчитываются перед ПБ, принимая только действительные блоки и игнорируя блоки, не соответствующие правилам протокола. Таким образом, ПБ экономически стимулируются производить только действительные блоки, поскольку в противном случае они будут тратить экономические ресурсы впустую, производя недействительные блоки и теряя вознаграждение за блок и комиссионные за транзакции, которые они могли бы заработать. Даже если другие ПБ создают действительные блоки поверх недействительного блока, все эти блоки будут проигнорированы полными узлами, в результате чего такие ПБ фактически вытесняют себя из сети. Полными узлами управляют ключевые экономические субъекты в экосистеме блокчейна, включая криптовалютные биржи, эмитенты стейблкоинов, оракулы, валидаторы второго уровня, RPC-провайдеры, провайдеры кошельков, крупные держатели криптоактивов и обычные пользователи. Благодаря самопроверке реестра блокчейна эти ключевые экономические субъекты не могут быть обмануты и принять недействительные блоки. Полноценным узлам также не нужно координировать/общаться друг с другом, чтобы определить, является ли блок действительным. Напротив, следуя правилам протокола при проверке блоков, все они придут к одному и тому же выводу относительно достоверности блока. Во многих блокчейнах правила протокола определяются сообществом вне цепи в процессе, известном как социальный консенсус. Обычно для этого используется формализованный процесс (например, Ethereum Improvement Proposals или EIPs), в ходе которого сообщество обсуждает достоинства любого изменения правил протокола на различных социальных каналах. После достижения грубого офф-чейн консенсуса разработчики ядра блокчейна пишут новую версию программного клиента блокчейна, который реализует эти изменения. После этого полные узлы и ПБ могут выбрать, запускать или нет это новое программное обеспечение для обновления сети через жесткий форк (изменение, не совместимое с обратными изменениями) или мягкий форк (изменение, совместимое с обратными изменениями). Если обновление с помощью жесткого форка вызывает споры, то в сети может произойти раскол цепи, когда создаются и поддерживаются по отдельности две разные версии блокчейна. Когда происходит раскол, каждый блокчейн будет иметь общую историю от генезисного блока до конкретной высоты блока, на которой произошел раскол. Это было видно на примере жесткого форка Bitcoin/Bitcoin Cash в 2017 году, когда возникли разногласия по поводу того, как масштабировать пропускную способность транзакций. Это также наблюдалось при жестком форке Ethereum/Ethereum Classic в 2016 году, когда возникли разногласия по поводу того, как справиться со взломом The DAO. В отличие от внецепочечного консенсуса, другие блокчейны предпочитают обновлять протокол с помощью ончейн управления: децентрализованная автономная организация (ДАО), управляемая держателями токенов, определяет изменения правил протокола. Любой из этих методов обновления протокола имеет свои уникальные преимущества и проблемы, и выбор метода зависит от потребностей сообщества. Если требования к аппаратному обеспечению для работы полного узла слишком высоки (например, требуется непотребительское оборудование), то меньше организаций смогут или захотят запустить полный узел, вместо этого полагаясь на централизованные решения для чтения/записи в блокчейн. Это может привести к тому, что сеть блокчейна станет более уязвимой для эксплуатации со стороны ПБ. Чтобы поддержать здоровую сеть полных узлов, многие блокчейны намеренно ограничивают пропускную способность транзакций в сети до уровня самого низкопрофильного компьютера, который сообщество желает использовать для самопроверки реестра. Низкие требования к аппаратному обеспечению не только помогают тем, кто хочет запустить полный узел во время обычных операций, но и облегчают процесс создания нового самопроверяющегося полного узла, если блокчейн подвергается активной атаке сговорившейся группы ПБ. Точные требования к аппаратному обеспечению, необходимому для полной синхронизации с сетью, варьируются от блокчейна к блокчейну, однако общей целью является среднее потребительское оборудование. Следующая логика описывает, как низкие требования к аппаратному обеспечению приводят к основному ценностному предложению блокчейн: Низкие требования к аппаратному обеспечению → низкая стоимость проверки блоков → больше организаций могут запускать полные узлы → более сильная устойчивость к атакам на ПБ → повышенная безопасность сети → превосходная достоверная нейтральность → более широкое внедрение. Хотя минимальные требования к аппаратному обеспечению, способному запустить полный узел, не определены в правилах протокола блокчейна (постоянно происходит улучшение эффективности аппаратного/программного обеспечения), правила пропускной способности транзакций блокчейна (обычно определяемые размером и частотой блоков) настроены на определенный диапазон спецификаций устройств. Хотя ориентация на среднее потребительское оборудование является распространенным подходом, некоторые блокчейны выбирают более мощное оборудование серверного класса в качестве минимальных аппаратных требований для проверки, чтобы увеличить пропускную способность транзакций. При этом признается, что, хотя меньшее количество субъектов может быть способно самостоятельно верифицировать реестр с помощью оборудования, установленного на собственном хостинге, достаточное количество ключевых экономических субъектов все же может иметь ресурсы, необходимые для запуска полноценного узла. Каждый человек в мире, запускающий свой собственный полный узел для самопроверки блокчейна, - это идеалистическая цель. Однако на практике время и ресурсы, необходимые для запуска полноценного узла, могут создать слишком большие трудности для многих конечных пользователей. По мере распространения блокчейн пользователи, привыкшие доверять централизованным поставщикам услуг, могут посчитать процесс создания полноценного узла слишком громоздким и предпочтут сразу начать взаимодействовать с приложениями на цепочке. В результате большинство конечных пользователей широко используемых сегодня блокчейнов не запускают свой собственный полноценный узел, а подключаются к RPC-провайдерам, которые неявно доверяют им передавать транзакции в сеть и информировать их о текущем состоянии блокчейна. Такие пользователи не могут воспользоваться всеми преимуществами самопроверки блокчейн, и безопасность сети не так сильна, как могла бы быть, однако это все равно на порядок лучше в плане минимизации доверия по сравнению с традиционными вычислительными моделями. Промежуточным решением этой проблемы может стать интеграция легких клиентов в блокчейн-кошельки. Хотя это было бы улучшением по сравнению с существующим положением дел, снизив доверие к RPC-провайдерам, легкие клиенты все равно неявно доверяют тому, что большинство ПБ производят действительные блоки и что все данные о транзакциях в блоке стали общедоступными. Для того чтобы легкие клиенты могли проверять работу ПБ без простой загрузки и выполнения всего блока (т.е. запуска полного узла), технические усовершенствования в реализации легких клиентов могут повысить их свойства минимизации доверия, что приводит к появлению того, что можно считать "легкими клиентами с минимизацией доверия". Эти технические усовершенствования могут включать в себя: Доказательства мошенничества: криптографическое доказательство, генерируемое полными узлами, которое может быть отправлено легким клиентам для доказательства того, что блок недействителен и нарушает правила протокола без необходимости повторного выполнения всего блока легким клиентом; Доказательства действительности: альтернатива доказательствам мошенничества, когда генерируется доказательство с нулевым уровнем разглашения, что позволяет производителям блоков напрямую доказывать легким клиентам, что блоки действительны и соответствуют правилам протокола; Выборка доступности данных (DAS): вероятностная техника выборки, которая проверяет, что все данные в блоке были доступны сети без необходимости загрузки всего блока легкими клиентами. По мере создания и успешного внедрения в производство дополнительных методов минимизации доверия, стоимость и трение при проверке работы производителей блоков без загрузки и выполнения целых блоков улучшаются, что приводит к созданию более безопасных сетей блокчейн. Примечательно, что методы создания минимизированных доверительных клиентов могут даже позволить создать более масштабируемые сети блокчейн. Масштабирование блокчейна обычно рассматривается как эквивалент увеличения пропускной способности транзакций. Однако более целостная интерпретация - это увеличение пропускной способности транзакций при сохранении низкой стоимости верификации. Благодаря свойствам легких клиентов, минимизирующих доверие, пропускную способность сети блокчейн можно увеличить (например, увеличивая размер блока и/или время интервала между блоками), сохраняя при этом низкие затраты на верификацию, необходимые для обеспечения прозрачности ПБ. Более того, решения второго уровня масштабирования, такие как роллапы, используют те же методы, что и минимизированные доверием легкие клиенты, используя криптографические доказательства для подтверждения действительности транзакций без необходимости для сети блокчейн выполнять каждую транзакцию. В этом случае блокчейн работает в качестве закрепленного доверительного минимизированного легкого клиента для роллапа второго уровня. В сочетании с пакетной обработкой транзакций и хранением данных о транзакциях на цепи для обеспечения доступности данных, пропускная способность транзакций может быть увеличена на несколько порядков при минимальных дополнительных расходах на проверку, возлагаемых на базовый блокчейн. Блокчейн - это высоконадежные, достоверно нейтральные и прозрачные реестры, которые предлагают новую парадигму вычислений. Благодаря системе сдержек и противовесов между производителями блоков и полными узлами, блокчейн может служить потребностям своего сообщества и развиваться со временем, оставаясь при этом устойчивым к манипуляциям. Несмотря на то, что для снижения затрат на проверку необходимо проделать еще большую работу, блокчейн в его нынешнем состоянии все еще предлагает на порядок больше возможностей для минимизации доверия по сравнению с традиционными моделями вычислений. Телеграм канал про web3 разработку, смарт-контракты и оракулы.