Как блоки добавляются в блокчейн, простое объяснение
Хотя блокчейн часто является синонимом криптовалюты , эта технология имеет широкий спектр применений в различных отраслях. В наши дни вы можете обнаружить, что блокчейны используются для хранения данных об активах, начиная от покупок недвижимости и заканчивая управлением цепочками поставок в таких секторах, как здравоохранение и образование.
Во всех случаях использования блокчейн функционирует как общая неизменяемая цифровая запись всех транзакций, называемая блоками.
Вот как блоки добавляются в блокчейн.
Что такое блокчейн?
Блокчейн, также известный как технология распределенного реестра (DLT), представляет собой децентрализованную запись транзакций, которая постоянно проверяется и обновляется. Практически любой актив можно отследить с помощью сети блокчейнов, хотя эта технология широко связана с такими криптовалютами, как биткойн (BTC) и эфир (ETH), каждая из которых имеет свою собственную связанную сеть блокчейнов.
В прошлом транзакции отслеживались и хранились финансовыми учреждениями, а проверка этой информации часто занимала много времени и ограничивалась определенными привилегированными сторонами.
Технология блокчейн делает ведение записей прозрачным и позволяет делиться ими по сетям. Ни одна сторона не может изменить транзакцию после того, как она была добавлена в реестр, а автоматизированные инструменты, называемые смарт-контрактами , могут выполнять транзакции, не требуя посредника, такого как банк. Кроме того, не существует единой основной копии блокчейна; вместо этого информация перепроверяется (подтверждается ) другими компьютерами (узлами) в сети.
Короче говоря, технология блокчейна может повысить безопасность, повысить доверие и ускорить транзакции внутри сети.
Как работает блокчейн?
Грубо говоря, двумя основными компонентами блокчейнов являются блоки информации и бесконечная виртуальная цепочка , которая соединяет и отслеживает эту информацию.
Вот несколько дополнительных ключевых терминов для понимания:
- Блок — набор данных, содержащий временную метку и другую зашифрованную информацию о недавних транзакциях, которые должны быть проверены сетью перед добавлением в цепочку.
- Узлы — компьютеры в сети, на которых хранятся полные копии всех транзакций, что делает их практически невозможными.
- Хэш – буквенно-цифровая строка, которая подтверждает транзакции в блокчейне и служит цифровым следом.
- Майнинг – процесс проверки и добавления блоков в реестр блокчейна, а также добавления монет криптовалюты в обращение с использованием механизма консенсуса PoW.
- Nonce – сокращение от «номер, используемый только один раз»; зашифрованное число, которое майнеры должны решить, чтобы проверить новый блок в блокчейне перед его закрытием
- Распределенный реестр – база данных, которая используется совместно и синхронизируется между членами децентрализованной сети.
- Награда за блок — механизм стимулирования, получаемый майнерами и используемый для поощрения участия в сети.
Существует несколько давних технологий , которые вместе обеспечивают работу блокчейна. Криптография означает защиту информации путем ее преобразования так, чтобы ее мог обработать только предполагаемый получатель. Блокчейн использует два типа криптографических ключей — открытый ключ и закрытый ключ — для создания безопасной цифровой идентификации. Распределенная сеть затем используется для проверки транзакций и обеспечения безопасности сети. Весь процесс регулируется уникальным набором правил, называемым протоколом.
Как блоки добавляются в блокчейн?
Существуют различные механизмы консенсуса, используемые для проверки транзакций и добавления новых блоков в блокчейн. В криптовалюте наиболее распространенными методами являются доказательство работы и доказательство доли.
Биткойн был представленСатоши Накамото в 2008 году под названием «Биткойн: одноранговая электронная денежная система» и стал первым крупным применением технологии блокчейна. Он использует метод консенсуса «доказательство работы» для создания новых блоков и ввода в обращение новых биткойнов. Этот метод проверяет транзакции посредством майнинга, а пользователи, проверяющие транзакции, называются майнерами.
Поскольку центрального органа нет, транзакции управляются, а новые монеты выпускаются коллективно в сети.
Вот пример того, как будет происходить транзакция биткойнов:
Допустим, пользователь А хочет отправить 1 биткойн (BTC) пользователю Б.
Когда пользователь А инициирует транзакцию, информация об отправителе и получателе упаковывается, отмечается в блоке и отправляется в очередь, называемую мемпулом (сокращение от пула памяти), где она будет ожидать проверки и добавления в блокчейн.
Майнеры, успешно обнаружившие блоки, будут выполнять пакеты транзакций и проверять подлинность всей информации, включая цифровые подписи, сообщения и открытые ключи.
Как только информация проверена, блок транслируется всем узлам сети, которые должны проверить и согласиться с тем, что блок действителен, прежде чем добавлять его в официальную цепочку. Среднее время, необходимое для подтверждения транзакции биткойнов, составляет около 10 минут.
Когда процесс будет завершен, пользователь Б получит 1 BTC, отправленный ему пользователем А, все узлы в сети согласятся на транзакцию с использованием выбранной модели консенсуса, а майнер биткойнов получит вознаграждение за проверку успешной транзакции. . Новые блоки информации об этой транзакции теперь связаны друг с другом как часть бесконечной и общедоступной цепочки.
Будущее использование блокчейна
Сегодня существуют тысячи криптовалют, которые работают в десятках сетей блокчейнов, хотя технология блокчейна имеет практическое применение, выходящее за рамки криптовалютных транзакций. Сети блокчейна, такие как Ethereum и Bitcoin , продолжают модернизировать свои сети, интегрируя новые способы стать более эффективными, энергосберегающими и дешевыми, чем когда-либо прежде.
Если Вы дочитали до этого момента, то для Вас бонус: БЕСПЛАТНАЯ МЕТОДИЧКА ПО NFT 2023. Для этого переходим сюда
С любовью, Ваш телеграмм канал «NFT БРИХАZПАТИ».
Как работает блокчейн?
Блокчейн – это особый вид базы данных, в которую данные можно только вносить, а не удалять или изменять. Транзакции внутри так называемых блоков (состоящих из информации о транзакциях и других метаданных) периодически добавляются в блокчейн.
Такая структура называется цепочкой, потому что метаданные каждого блока включают в себя часть информации из предыдущего и связывают блоки между собой. В частности, туда входит хеш предыдущего блока, который работает как уникальный цифровой отпечаток.
Вероятность того, что два фрагмента данных дадут вам одинаковый результат хеш-функции, невероятно мала. То есть, если кто-то попытается изменить старый блок, его хеш также изменится, а значит, и хеш следующего блока тоже будет другим, и так далее. Следовательно, понять, был ли изменен блок, очень просто, ведь изменены будут и все следующие за ним блоки.
Хеш каждого блока используется в следующем блоке. Это формирует так называемую цепочку из блоков или блокчейн Binance Academy
Важно отметить необходимость полной загрузки блокчейна на накопитель участника. Помните, мы говорили о том, что любой желающий может осуществлять валидацию (проверку) транзакций и подписей с помощью криптографии с открытым ключом? Когда нода получает блок, она выполняет ряд проверок; если что-то является недопустимым, блок отклоняется.
Когда нода получает валидный блок, она копирует его и распространяет этот блок на другие ноды. Они, в свою очередь, делают то же самое, пока блок не распространится по всей сети. Такой же процесс выполняется и для неподтвержденных транзакций, то есть тех, которые были объявлены, но еще не добавились в блокчейн.
Как блоки добавляются в блокчейн?
Поскольку система держится на взаимосвязанных между собой блоках, целостность всей блокчейн-сети подрывается в случае записи хотя бы одной ложной информации. В то же время в такой распределенной системе отсутствует администратор или руководитель, который бы поддерживал работу системного регистра или главной бухгалтерской книги системы. В связи с этим возникает вопрос: что выступает в качестве гаранта честной работы всех участники сети?
Сатоши предложил систему Proof of Work (Доказательство выполнения работы), которая дала возможность любому пользователю выдвигать блок на добавление в блокчейн. Чтобы выдвинуть блок, пользователи должны предоставить вычислительные мощности для решения задач, установленных протоколом.
Proof of Work – это проверенная схема достижения консенсуса среди пользователей, но далеко не единственная. Альтернативы, такие как Proof of Stake, продолжают тестироваться, однако они пока не достигли уровня реализации в их истинной форме (несмотря на то, что гибридные механизмы консенсуса существуют уже довольно долго).
Как работает майнинг криптовалюты?
Процесс майнинга Binance Academy
Выше изображен процесс под названием майнинг. Если майнер найдет решение задачи, построенный им блок расширит цепочку. В результате он получит вознаграждение в родной валюте блокчейна.
Задачи, которые майнеры должны решать, требуют постоянного хеширования данных для получения числа ниже определенного значения. Хеширование с помощью односторонней функции означает, что, имея выходные данные, угадать входные данные практически невозможно. И наоборот: при наличии входных данных проверить выходные данные уже очень легко. Таким образом, любой пользователь может проверить, что майнер создал «правильный» блок и отклонить невалидные блоки. В последнем случае майнер не получит вознаграждения и впустую потратит свои ресурсы.
В результате вырисовывается такая концепция игры, при которой попытка обмана обходится очень дорого, а честность поощряется. Ни у одного злоумышленника не хватит ресурсов, чтобы бесконечно атаковать сильную сеть. Таким образом, пользователи с ресурсами могут получать доход путем честного участия в процессе.
Могут ли криптовалюты масштабироваться?
Вероятно, вы скажете, что распределенные сети не очень продуктивны. К сожалению, криптовалюты могут быть безопасными и устойчивыми к цензуре лишь в том случае, если все ноды регулярно синхронизируют копию блокчейн-сети. И чем ниже требования к синхронной активности участников, тем проще процесс присоединения новых участников.
Таким образом, блокчейн, ориентированный на добавление маленьких блоков каждые десять минут, предпочтительнее, чем тот, который добавляет один огромный блок каждые пять минут. Вариант с большим блоком предполагает ноды с наличием высокопроизводительных компьютеров, чтобы поддерживать регулярную синхронизацию и подталкивать маломощные устройства к отключению. Подобный подход в итоге приводит к большей централизации, поскольку конкуренция в сети становится всё меньше.
Но с маленькими блоками мы не можем достичь большого количества транзакций в секунду (TPS). Кроме того, в загруженные периоды добавление блоков в блокчейн займет больше времени. Это неудобно, если вы хотите произвести быструю оплату, но ради децентрализации приходится идти на компромиссы.
Мы называем эту проблему дилеммой масштабируемости. Хорошо масштабируемая система может легко адаптироваться к повышенной нагрузке. Блокчейны же масштабируются плохо. Как мы уже объясняли, увеличение пропускной способности за счет блоков большего размера подрывает всю цель распределенной сети.
Чтобы увеличить TPS без ущерба децентрализации, применяется подход офчейн-масштабирования. Он включает широкий спектр решений (централизованных и децентрализованных), которые позволяют совершать транзакции без регистрации в блокчейне.
Кто принимает решения по программному обеспечению криптовалюты?
Криптовалютные сети работают в формате добровольного согласия (opt-in). Никто не заставит вас запускать программное обеспечение против вашей воли. Хороший протокол отличается полностью открытым исходным кодом, который пользователи могут проверить и убедиться в честности и безопасности системы.
Как правило, криптовалюты позволяют любому желающему принять участие в их разработке. Новые функции или изменения в коде проверяются сообществом разработчиков до согласования и дальнейшей публикации. Оттуда пользователи могут сами просмотреть код и решить, запускать его или нет.
Некоторые обновления будут иметь обратную совместимость, что даст возможность обновленным нодам взаимодействовать со старыми. В случае с обновлениями без обратной совместимости старые ноды будут отключены от сети, если не обновятся. Чтобы узнать больше, ознакомьтесь с информацией о хардфорках и софтфорках.
Блокчейн для самых маленьких [part.1]

Блокчейн— как секс в старших классах. Все говорят о нем по углам, единицы понимают, а занимается им только препод. Статьи о децентрализованных пиринговых системах делятся на два типа: это либо талмуд с формулами и сложными объяснениями, которые я ни разу не смог дочитать даже до половины первой половины, либо статьи и видосы на тыртюбе, как майнить сто триллионов миллиардов BitCoin в наносекунду, скупая все видеокарты Nvidia в мире.

Это введение для тех, кто хочет наконец-то разобраться в блокчейне простым языком, без криптографии, протоколов, не сильно вникая в хэш-функции, зато с примерами из реальной жизни.
Технология, которая, по-видимому, окажет наибольшее влияние на развитие в различных областях экономики в ближайшие 10 лет, уже существует! И это не BigData, не соцсети, не робототехника и даже не Machine Learning. Это технология, лежащая в основе криптовалют, цепочка блоков транзакций- блокчейн. Сейчас именно блокчейн является инструментом для создания нового поколением интернета, и он несет огромный потенциал для любого бизнеса.
Скорее всего вы будете удивлены, узнав, что :
- Блокчейн != биткоин.
- Можно ли применить распределенный реестр в огороде у бабушки?
- Как одна технология переворачивает всю устоявшуюся индустрию бизнеса и экономики?
Так, теперь давайте определимся, что мы узнаем в part.1 :
- Как работает эта технология? Проблема централизации на Олегах
- Как работает магическая машина или же хэш-функция
- Что такое майнинг
- Алгоритм защиты от модификаций печатных номеров
- Настолько ли идеален блокчейн? Уязвимости идеальной системы
Как это работает?
Блок 1: Проблема централизации на Олегах

Сначала определимся, какую проблему решает технология?
Давайте представим, что у вас есть лучший друг Олег, который путешествует по всему миру. Он звонит вам в Сызрань с просьбой перекинуть немного мани, т.к. кэш Олега куда-то исчез. Вы, как порядочный друг, соглашаетесь помочь Олегу и идете в банк. Там вы сообщаете, что вам надо перевести N-ую сумму на счет Олега.

Банкир проверяет ваш текущий баланс на предмет наличия этой суммы и переводит деньги на счет Олега. Вы с чувством выполненного долга звоните Олежке и сообщаете, что лавэ перечислены.
И так, что сейчас произошло? Давайте рассмотрим ситуацию более детально.
Вы и Олег доверили банку управлять вашими деньгами. Не было никакой физической пересылки. Нужно всего лишь было изменить реестр, который не контролируешь ни ты, ни Олег. И это проблема существующих систем. Для установления доверия между людьми мы зависим от третьей стороны, которой может выступать банк. Мы зависимы от посредника для установления доверия друг с другом.
Блок 2: Какую угрозу несет централизация?
Такие системы подвержены взломам, и случай такого системного сбоя может привести к потери средств и личной информации пользователей этой системы, и это уже происходило не раз. Если приводить реальный пример из истории, то на ум сразу приходит развал СССР в 1991 и потери 40-ка млн вкладов пользователей банков.

Централизованная / Децентрализованная системы
Блок 3: Какая система позволит решить эти проблемы?
Существует ли система, которая будет содержать реестр между юзерами этой системы, исключая посредников? Да, существует. И наверное, как вы уже догадались, это решение — блокчейн. Для существования P2P систем нужно достаточное количество пользователей желающих не зависить от третей стороны. И такое минимальное количество юзеров: 3 человека — для учета и содержания реестра.
Как это работает?
Блок 1: Давайте рассмотрим принцип работы на примере
Возьмем 10 людей, которые решили отказаться от банков и других систем третей стороны.

По общему согласию каждый из 10-и постоянно имеет все подробности счетов других участников, но без знаний их личности
Шаг 1: Пустая папка
Каждый из 10 участников будет иметь пустую папку, которая будет заполняться страницами. Эта коллекция страниц формирует реестр транзакций.
Шаг 2: Транзакции
Каждый сидит с пустым листом и ручкой в руке и готов записать любую транзакцию, которая произойдет внутри этой системы.


Для создания транзакции, номер 2 сообщает всем: « Я, номер #2 пересылаю #5 10$». Каждый из участников системы проверяет, имеет ли #2 достаточный баланс для произведения данной транзакции. В случае, если баланс номера #2 позволяет это сделать, то каждый делает запись у себя на странице. Это происходит до того момента, пока на странице не закончится место для записи новых транзакций
Предположим, что страница имеет вместимость 10 транзакций. Т.к. все заполняют одну и ту же информацию, место на страницах у всех кончится одновременно.
И вот настало время, всем отправить заполненную страницу в папку и создать новую страницу для ведения учета транзакций. И так повторять начиная с шага №2.
Шаг 4: Хранение страниц

Перед тем, как отправить страницу в папку на хранение, мы должны ее согласовать со всеми, идентифицируя ее уникальной печатью. Ставя такую печать на страницу, мы можем быть уверенны, что эту страницу никто не сможет изменить, отправляя ее в папку. Если все доверяют печати, значит и все доверяют содержимому страницы. И этот процесс самый затруднительный.
В терминологии блокчейна этот процесс называется «майнинг», но для простоты понимания на примере, обозначим его как процесс запечатывания.
Ранее посредник давал нам обещание, что написанное в реестре никогда не будет изменено. В распределенной и децентрализованной системе печать предоставляет доверие. Перед тем как понять, как мы будем продолжать это процесс дальше, нам надо ознакомиться с тем, как работает одна магическая машина.
Магия Хэш-фунцкий
Давайте представим, что у нас есть машина, которая защищена от внешнего воздействия. Если мы отправим коробку с неким содержимым на вход, то на выходе получим коробку с другим содержимым на выходе. Эта магическая машина называется хэш-функция.

Предположим, мы отправили на вход цифру 4, на выходе мы получим «cbaja». Как эта функция конвертировала цифру 4 в «cbaja»? Никто не знает. Более того, этот процесс необратимый. По конечному результату нельзя сказать, что было подано на вход. Но каждый раз, когда вы будете загружать цифру 4, на выходе вы будете всегда получать один и тот же результат.

Давайте рассмотрим другой случай. Что надо будет подать на вход это машине, что бы получить результат «c56c0ah»? Есть только один способ это узнать — перебрать все возможные значения, пока не получим данный результат.

Будем оптимистичны, и допустим через несколько тысяч попыток мы нашли это значение. В реальных условиях найти его экстремально сложно.
Основываясь на полученной информации, давайте сформулируем главные свойства этой машины.
- Невероятная сложность нахождения input по output (входящего значения по полученному результату)
- И простота проверки правильности входящего значения
Давайте запомним свойства этой машины или хэш-функции
Как использовать хэш-функцию для создания печатей?

Представим, что на вход мы подаем два значения. Первое значение «KEK», второе —рандомное значение, которое мы добавим к значению из первой коробки и направим на вход хэш-функции, а на выходе получим «Validol». Сможете ли вы угадать, какое значение содержится в второй коробке? Ситуация напоминает ранее рассматриваемый случай. Единственный способ вычислить это число — подбор всех чисел подряд.

Опять будем оптимистичны, и через сколько то тысяч попыток мы нашли значение второй коробки. Это значение было «LOL». Когда бы добавим «LOL» к значению «KEK» на выходе машины мы получим требуемое значение «Validol».
Т.е. значение «LOL» будет являться печатью к значению «KEK».

Мы создали страницу с значением «KEK». Что бы пропечатать эту страницу, т.е. защитить эту страницу от правок, мы ставим на ней печать с значением «LOL»
В терминологии блокчейна печатный номер это POW(Proof-of-Work). Он означает, что это значение есть доказательство проделанной работы для вычисления этого значения.
Если кто то из нашей группы захочет проверить было ли изменено содержимое страницы с транзакциями, все что ему требуется, это загрузить эту страницу и печатный номер этой страницы в магическую машину. Если на выходе будет требуемое значение, то содержимое страницы с транзакциями не изменено, но если output не соответствует требуемому результату, то эту страницу можно выкидывать, т.к. ее содержимое было изменено и ее больше нельзя использовать.
После определения печатного числа, на страницу ставится печать. Если кто нибудь когда нибудь попробует изменить страницы с транзакциями, то печатный номер позволит каждому проверить целостность информации на странице.
Теперь, когда мы знаем, как ставится печать на страницы, мы можем вернутся к тому моменту, когда у нас закончилось место на странице.
Майнинг
После того, как у всех закончилось место на странице, участники системы соревнуются между собой в вычислении печатного номера к странице, для того что бы ее вложить в папку. Как только первый участник вычислил этот номер, он уведомляет всех оставшихся. Все остальные в свою очередь проверяют правильность обнаруженного числа. Печатный номер, с которым соглашается большинство и будет являться подлинной печатью.
Тут перед нами встает логичный вопрос: почему же тогда каждый тратит ресурсы на вычисление, когда не знает, что кто то другой объявит его. Почему бы просто ждать объявления номера? Тут как раз таки в ход вступает стимулирование. Каждый, кто является частью системы блокчейна имеет возможность получать награду за проделанную работу. Первый, кто вычислит печатный номер будет награжден за потраченные ресурсы в виде вычислительной мощности и электроэнергии.
Допустим, один из участников сети, первым вычислил номер, за что будет награжден виртуальной валютой, за которую соревнуется каждый из участников сети, которая по большому счету берется из не откуда. То есть его счет увеличился на n-сумму виртуальной валюты без уменьшения баланса других участников. Награды способствуют продолжения работы сети.
А теперь давайте переведем нашу аналогию в реальные примеры. Страницы это блоки, а папка это цепочка страниц. Следовательно все это превращается в цепочку блоков — блокчейн.
Еще одно «НО»
Представим, что у нас уже есть 5 страниц с печатями в папке. Что если я вернусь назад к второй странице и изменю ее содержимое в свою пользу? Печатный номер позволит каждому определить несогласованность транзакций. Опять же, что если я подготовлюсь и заранее вычислю новый печатный номер для измененных транзакций и поставлю печать со своим выселенным номером на нем. Для предотвращения этой проблемы есть особенность в алгоритме вычисления печатного номера. Это есть защита от модификаций печатных номеров.
Вспомним пример с коробками. На деле мы подаем не две, а три коробки на вход магической машине. Одна содержит страницу с транзакциями, вторая печатный номер, который следует вычислить, а третья будет содержать печатный номер от предыдущей страницы.

С этим алгоритмом, мы будем уверены в том, что каждая страница зависит от предыдущей. Если кто то захочет изменить содержимое старой страницы, то ему необходимо будет изменить содержимое и печатный номер всех последующих страниц, что бы сохранить цепь согласованной.
Что произойдет, если из одной честной страницы, обманщик создаст новую нечестную цепь. На деле, он не сможет бороться в вычислительной мощи с другими 9ю честными участниками сети, и его цепочка никогда не сможет обогнать честную цепь, а истинной является та цепь, которая имеет наибольшую длину.

Атака 51%
Все системы имеют бэкдоры, и блокчейн не исключение. Самая известная уязвимость блокчейна это атака именуемая «Атака 51%».
Если пытаться объяснить ее простым языком, то рассматривая защиту от модификаций печатных номеров, которая приводилась выше, можно задать вопрос: А если у одного нечестного юзера вычислительная мощь будет больше, чем у остальных 9ых, то он сможет через n-ое время создать цепочку блоков начиная с 1-ого листа, которая сможет обогнать главную истинную цепь блоков.
Да, такая уязвимость есть. Сама идеология блокчейна подразумевает, что большинство участников сети не намерены «играть» не честно.
Для упрощения абстракции проблемы приведенной выше, скажем, что у каждого участника цепи вычислительные мощи одинаковые. Соответственно, когда 6/10 участников блокчейн системы сговорятся и захотят обмануть оставшихся 4ех юзеров, то через n-ое время они установят новую истинную цепочку блоков. Отсюда и идет название этой уязвимости. Как только количество нечестных юзеров станет 50%+, то блокчейн системе грозит опасность быть «обманутой».
Надо понимать, что в реальности сделать это практически нереально. Как говорится, время лучший показатель, и за все 11 лет существования BitCoin он ни разу не был «обманут» и не выводился из строя, при том, что на эту систему проводились атаки.
Так же, существует ещё пара теоретических уязвимостей блокчейна, с которыми вы сможете ознакомиться самостоятельно. Ссылка для ознакомления: Что угрожает блокчейн-сетям
Материала и мыслей, которые хочется донести очень много, и если все изложить в одну статью, будет скучно читать и может смешаться в кашу.
Принцип работы блокчейна: кто создает блоки

Когда в сделке нет посредников, любой участник может обмануть другого. В блокчейне проблема решается с помощью строгих математических алгоритмов, по которым создаются блоки.
В материале расскажем, кто создает и проверяет блоки в блокчейне. Вы узнаете как алгоритмы консенсуса обеспечивают безопасность этого процесса.
- P2P: где используются одноранговые сети
- Шифрование в блокчейне: на пальцах
- Блокчейн — цепочка блоков транзакций. Разбираем определение по словам
- Шифрование в блокчейне: зачем нужна цифровая подпись
- Принцип работы блокчейна: кто создает блоки
- Для каких целей и задач подходит блокчейн
Вспоминаем основные понятия
- Одноранговая сеть — сеть, в которой узлы взаимодействуют между собой без посредника.
- Блокчейн — разновидность одноранговых сетей, цепочка блоков транзакций.
- Блок — специальная структура для записи транзакций.
- Транзакция — запись об изменении состояния активов.
Недоверие в блокчейне
Так как в блокчейне нет сервера, добавлять и проверять информацию приходится самим пользователям. При этом каждый участник может преследовать свои личные интересы в ущерб безопасности блокчейна. Отсюда возникает проблема недоверия участников друг к другу. Чтобы ее решить, используются математические алгоритмы, о которых дальше пойдет речь.
Представьте, что на вашем кошельке есть активы, а другой пользователь блокчейна считает, что их нет. Без постороннего вмешательства сложно решить, кто из двоих прав. Необходимо выбрать среди пользователей тех, кто будут проверять транзакции и добавлять только правильные. Таких пользователей называют майнерами.
Майнеры — участники блокчейна, которые занимаются созданием новых блоков и проверкой транзакций.

Для организации правильной работы майнеров необходимо договориться, кто ими будет и как они будут выполнять свою работу. Это непростая задача, ведь нужно придумать такие правила, соблюдать которые майнерам будет выгоднее, чем нарушать. Это классический пример задачи из теории игр: как выбрать стратегию, которая будет одинаково выигрышной для участников с разными интересами.
Такая задача была сформулирована и решена математиками еще в прошлом веке. Сейчас это решение обеспечивает безопасность как в блокчейне, так и в других сложных технологиях. Чтобы понять, как майнерам удается не нарушать интересы друг друга, рассмотрим эту задачу подробнее.
Задача византийских генералов
В научной статье 1982 года была сформулирована логическая дилемма. Она иллюстрирует проблему коммуникации узлов одноранговой сети, которые договариваются о следующем шаге. В качестве аналогии была использована Византия — древнее феодальное государство со множеством независимых армий. Отсюда и взялось название — Задача Византийских Генералов.
Действие происходит во время осады города византийской армией. Ночью легионы с разных сторон окружили город. Генералы каждого легиона ждут приказа главнокомандующего. Варианты приказа: «атаковать» или «отступать».

Первая сложность задачи — империя находится в упадке. Любой из генералов и даже главнокомандующий могут быть предателями Византии, заинтересованными в поражении. Генералам надо это учитывать, чтобы не допустить неблагоприятного исхода. Всего возможно три исхода сражения:
Благоприятный исход. Если все генералы атакуют — Византия уничтожит противника.

Промежуточный исход. Если все генералы отступят — Византия сохранит свою армию.

Неблагоприятный исход. Если некоторые генералы атакуют, а некоторые отступят — противник со временем по частям уничтожит всю армию Византии.

Если каждый генерал будет действовать на свое усмотрение, то вероятность благоприятного исхода весьма низка. Поэтому генералы нуждаются в обмене информацией между собой, чтобы прийти к единому решению.

Вторая сложность в задаче — отсутствие надежного канала коммуникации между генералами. Даже если среди генералов не окажется предателей, информация может оказаться ложной. Например, курьер задержится или попадет в плен. Такая ситуация собьет с толку других генералов и будет принято неверное решение. В таких условиях нужно выработать единую стратегию действий, которая будет выигрышной для всех генералов.

Математики доказали, что получить решение в данной задаче всегда возможно, если верных генералов больше двух третей от общего числа. В разных системах задача может быть решена по-разному.
Византийская отказоустойчивость — способность сети продолжать работать, даже если некоторые из узлов отказали или действуют злонамеренно. Другими словами, это свойство сети, в которой решена Задача Византийских Генералов.
Византийская отказоустойчивость бывает необходима в системах двигателей самолетов, на атомных электростанциях и практически в любой системе, действия которой зависят от результатов работы большого количества датчиков. Даже SpaceX рассматривает ее как потенциальное требование к своим системам.
Если данную задачу применить к контексту блокчейна, то генералы представляют собой майнеров. Они должны договориться и признать транзакцию действительной, чтобы она попала в блокчейн. Данный процесс называется достижением консенсуса.

Например, майнеры видят, что один пользователь хочет отправить биткоины другому. Первый майнер считает, что такая транзакция должна быть одобрена. Второй подозревает, что данную операцию производит злоумышленник. Третий отключился от сети и не проверил транзакцию. Принять единое решение и значит прийти к консенсусу.
Так как у Задачи Византийских Генералов несколько решений, то разные блокчейны добиваются византийской отказоустойчивости с помощью разных алгоритмов консенсуса. Рассмотрим подробнее наиболее распространенные.
Алгоритмы консенсуса
Блокчейн работает на основе распределенной сети. Нет единого центра, который управляет этой сетью. Для организации безопасной работы блокчейна необходимо договориться, кто будет майнером и как он будет создавать блоки. Майнеры работают по строго определенным правилам, которые называются алгоритмом консенсуса.
Алгоритм консенсуса — метод, который описывает как выбирается майнер в блокчейне и по каким правилам он создает блоки.
Чтобы лучше понять, для чего нужен консенсус в системе блокчейн, представим жильцов многоквартирного дома. Блокчейн им необходим, чтобы взаимодействовать друг с другом и принимать решения о развитии дома: собирать деньги на капитальный ремонт, выбирать обслуживающую организацию или назначать дежурства. Есть три способа договориться — три разных алгоритма консенсуса. Каждый из них основывается на некой математической модели.
Proof of Work (PoW) — алгоритм доказательства работы. Майнером может стать любой жилец дома. Чтобы создавать новые блоки, он должен будет использовать свой компьютер для решения сложных криптографических задач.
Алгоритм будет считать верной версией блокчейна ту, в которой больше всего блоков. А больше всего блоков будет в той версии, на создание которой жильцы потратили больше всего компьютерных мощностей. Получается очень демократичный метод: если 51% майнеров считают, что транзакции в блоки правильные, так и будет. Поэтому блокчейн почти невозможно взломать.

Proof of Stake (PoS) — алгоритм доказательства доли владения. Майнерами становятся те, у кого больше всего активов в блокчейне. У нас это будут жильцы с самыми большими квартирами. А в блокчейне Эфириума, например, это будут пользователи, у которых на счету больше всего криптовалюты ETH. При таком алгоритме затраты на электроэнергию минимальны, так как создание блоков в блокчейне больше не требует решения сложных криптографических задач. Чем больше твоя доля в блокчейне, тем чаще ты будешь создавать новые блоки.
Верной версией блокчейна, как и в Proof of Work, будет считаться та, в которой больше всего блоков. Но Proof of Stake нельзя назвать демократичным. Больше всего блоков создадут не большинство жильцов, а самые богатые жильцы. Однако, это еще более безопасно. Если майнерам принадлежит большая часть дома, то действовать злонамеренно им будет невыгодно.

Proof of Authority (PoA) — алгоритм доказательства личности. Может быть так, что жильцы собрались и решили, что создавать блоки будет одна квартира. Данный алгоритм распространен в частных, закрытых блокчейнах. Например, он хорошо подходит для управления многоквартирным домом из нашего примера.
Избранный майнер сам выбирает истинную версию блокчейна. Он должен будет идентифицировать себя, чтобы все жильцы верили ему. Если в какой-то момент жильцы перестанут быть согласными с решениями майнера, они смогут назначить другого. Новый майнер начнет строить свою цепочку блоков, а старый блокчейн останется существовать отдельно. Такой процесс в блокчейне называется хардфорком.

Алгоритмов консенсуса очень много. Постоянно изобретаются новые, но эти три наиболее известные, проверенные временем и часто применяемые.
Заключение
В любых одноранговых сетях возникает недоверие между участниками. В блокчейне данную проблему решают майнеры. Это те пользователи, которые проверяют транзакции и добавляют в новые блоки только правильные.
В статье 1982 года была описана Задача Византийских Генералов. В ней впервые был описан алгоритм того, как сеть может продолжать работать, даже если некоторые из узлов отказали или действуют злонамеренно.
В блокчейне используют три разновидности алгоритмов консенсуса:
- Proof of Work (PoW) — алгоритм доказательства работы.
- Proof of Stake (PoS) — алгоритм доказательства доли владения.
- Proof of Authority (PoA) — алгоритм доказательства личности.