Мы перевели одно из самых простых и доступных руководств для понимания принципов устройства блокчейна на примере из реальной жизни.
Сидхартх Малхотра, оригинал на Hackernoon.
Сегодня все говорят о биткоине – от вашего парикмахера до друзей, которые работают на фондовом рынке. Не волнуйтесь, в этой статье мы не будем, как сотни других статей, говорить о том, как заработать деньги с помощью биткоина. Напротив, я попробую помочь вам понять технологию, лежащую в основе функционирования биткоина, а также то, насколько полезной будет сама концепция блокчейна в ближайшие десятилетия.
Исторический экскурс
31 октября 2008 года анонимное лицо или группа людей под псевдонимом Сатоши Накамото опубликовали техническое описание (white paper), в котором представили новаторский подход к отправке денег напрямую от отправителя к получателю, минуя любых финансовых посредников. Документ также дает название этой концепции – «биткоин». Поскольку биткоин использует некоторые из основополагающих концепций криптографии, этот новый способ обмена деньгами был классифицирован как криптовалюта. Единственным объектом применения биткоина были финансовые операции, но ученые и исследователи осознали, что лежащая в его основе технология может быть полезна в создании других безопасных и надежных приложений, способных революционно изменить то, как эти системы функционируют сейчас.
Эта основополагающая технология была названа «блокчейном». Много технических словечек? Давайте упростим!
Что такое блокчейн? Пример из реальной жизни
Давайте представим, что вы живете в городе, где есть большая стоянка на 200 автомобилей (предположим, что это одноэтажная стоянка). У этой стоянки есть основные ворота, которые закрыты всегда, кроме тех моментов, когда машина въезжает или выезжает. А теперь давайте проанализируем эту стоянку в несколько другом ракурсе:
- Цена: поскольку какая-то частная компания построила эту стоянку непосредственно с целью сдачи парковочных мест в аренду и несет все расходы, связанные с ее обслуживанием, стоимость аренды места на стоянке будет высокой.
- Безопасность: Если грабители получат доступ к основным воротам, они легко смогут добраться до вашей машины (снять колеса, слить топливо, сломать тормоза – все, что угодно!)
- Ограниченное количество мест: Скажем, количество автомобилей в городе выросло с 200 до 300 – мест на парковке будет недостаточно, и какой-то другой частной компании придется построить новую автостоянку.
- Доверие: Вы доверяете компании-владельцу стоянки, а она отвечает за ее безопасность и надежность.
- Централизация: поскольку все машины находятся на одной территории, можно считать эту стоянку централизованной.
А сейчас давайте поменяем текущий сценарий. Представим, что в вашем городе есть 200 домов и в каждом из них есть гараж на два места. Но чтобы упростить объяснение, мы предположим, что в каждом доме есть только одна машина (все автомобили с нашей большой стоянки выше). Таким образом, в гараже каждого дома есть одно свободное место из двух доступных.
Дальше представим, что жители города решили сдавать свободные места в своих гаражах в аренду тем, кому нужно парковочное место. Эта модель распределения парковочных мест в городе решает проблему размещения дополнительных 200 или более автомобилей (когда люди переезжают в наш город или уезжают из него) без необходимости строительства еще одной, более вместительной парковки. Как и в предыдущем сценарии, давайте проанализируем следующие факторы:
- Цена: Поскольку изначально люди не строили в своих домах гараж исключительно с целью сдачи парковочных мест в аренду, а стоимость обслуживания невелика, стоимость аренды таких дополнительных мест в гараже будет ниже, чем на большой централизованной стоянке.
- Безопасность: каждая машина заперта в отдельном гараже, поэтому грабителям придется взломать все гаражи, чтобы получить доступ ко всем машинам, что гарантирует более высокую безопасность (безопасность в блокчейне немного отличается, но для простоты давайте сейчас будем учитывать ее в таком виде).
- Ограниченное количество мест: По мере увеличения количества домов и с учетом того, что в каждом новом доме будет вакантное место в гараже, количество свободных парковочных мест в городе будет продолжать расти, что, в свою очередь, будет увеличивать сеть арендодателей и арендаторов.
- Не требующий доверия механизм: поскольку данные распределенные парковочные места не контролируются никаким централизованным органом, мы предполагаем, что все владельцы гаражей, сдающие их в аренду, договорятся об определенных правилах аренды.
- Децентрализованность: как указано в предыдущем абзаце, парковочные места распределены по всему городу, поэтому их можно считать децентрализованной стоянкой.
Приведенная выше аналогия дает базу для понимания фактической технологической инфраструктуры блокчейна.
От модели парковки к технической модели
Модель парковки дает базовое описание блокчейна на примере из реальной жизни. Давайте теперь сопоставим элементы парковки из нашего примера и фактическую техническую модель:
- Большая автостоянка – это централизованная система, аналогичная AWS, Google Cloud и т.д. (эти облачные платформы также являются распределенными на некотором уровне, но для простоты мы будем рассматривать их как единую структуру).
- Автомобили – это данные и приложения.
- Распределенный паркинг – это децентрализованная система, блокчейн.
Подождите, мы кое-что упускаем.
Все децентрализованные системы – это не блокчейн! Да, блокчейн – это конкретный тип децентрализованной системы с уникальными характеристиками. Какими? Давайте поговорим о них.
Блокчейн состоит из блоков
Снова обратимся к нашему примеру с распределенным паркингом и внесем в него небольшое изменение. Давайте предположим, что замок в каждом конкретном гараже создается в момент, когда машина стоит внутри гаража (мы предполагаем, что одна и та же машина использует один и тот же гараж каждый день). Также предположим, что мы пронумеровали все распределенные гаражи в последовательном порядке. Ключ от замка к гаражу №50 основан на ключе от замка к гаражу №49, а также на характеристиках (таких как цвет, масса, номер двигателя и т.д.) машины, которая стоит в гараже №50, и весь этот процесс начинается с гаража №1 и продолжается до гаража №200 и далее.
Ключ от каждого гаража зависит от характеристик автомобиля в этом гараже и ключа предыдущего гаража в списке.
Поэтому, если грабитель попытается взломать гараж №49 и изменить какие-либо характеристики автомобиля, скажем, цвет или регистрационный номер, характеристики машины из гаража №49 изменятся, и, следовательно, будет создан новый ключ от этого гаража, а поскольку ключ от гаража №50 зависит от ключа к гаражу №49, то изменится и ключ от гаража №50, и так далее для всех последующих гаражей.
А теперь давайте сделаем последнее предположение о том, что вычисление ключа требует большого количества ресурсов, поэтому, если нам придется пересчитывать ключ для конкретного гаража каждый раз, когда грабитель изменит какую-либо из характеристик автомобиля в этом гараже, то пересчитать заново все ключи для всех гаражей будет практически невозможно.
Что происходит при изменении пары замок-ключ?
Надеюсь, вы помните, что мы говорили: все владельцы гаражей придерживаются каких-то правил? Одно из таких правил – валидация (проверка действительности) гаража. Гараж будет действительным, если ключ от гаража совпадает с его замком. В случае каких-либо изменений в паре ключ-замок, пары ключ-замок для всех последующих гаражей в списке станут недействительными, поскольку каждая последующая такая пара зависит от предыдущей. (Процесс валидации одной пары ключ-замок для конкретного гаража происходит очень быстро в отличие от процесса генерации ключа).
Такая зависимость одной пары от предыдущей приводит к созданию цепи из гаражей, а говоря техническим языком, эти гаражи представляют собой блоки в такой цепи – отсюда и название «блокчейн» (цепь из блоков).
Блоки в блокчейне связаны со следующими за ними блоками при помощи хеша – ровно так же, как пары ключ-замок в нашем примере с гаражом. Как и в случае с гаражом, если данные в одном блоке изменяются, возникает необходимость нового вычисления хеша для всех последующих блоков, а поскольку расчет хеша является очень ресурсозатратной операцией, то сделать это будет почти невозможно, и таким образом сеть исключает появление невалидированного блока. Осуществление вычислений хеша называется «майнингом», мы обсудим его более подробно в следующей статье из этой серии.
Как блоки ликвидируют последствия изменений?
Все компьютеры в блокчейн-сети хранят копию всего блокчейна, поэтому при изменении одного блока или всей цепочки на одном или нескольких компьютерах вся сеть будет пытаться сравнить такие изменения с собственными копиями всей цепи.
Если большинство нодов (компьютеров) в сети поймут, что измененная цепь является недействительной, то она будет заменена на действительную цепь, сохранившуюся на других нодах. Это делает блокчейн-сети уязвимыми перед так называемой «атакой 51%». Проще говоря, если более 50% нодов в сети являются вредоносными (или хранят измененную цепочку), то это угрожает всей сети.
P.S. Фуф! Информации для усвоения действительно много. Это первая часть полного руководства для начинающих, где рассказывается об основах блокчейна. Надеюсь, статья подготовила вас к ведению плодотворных дискуссий с друзьями на тему блокчейна. В следующей статье этой серии мы поговорим об эфириуме, смарт-контрактах и майнинге.