Что такое блок в блокчейне

Что такое блок в блокчейне?

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

Вначале, для того чтобы лучше понять, что такое блок в блокчейне, давайте посмотрим на дословный перевод этого слова. Слово «blockchain» состоит из двух разных слов: «block», которое переводится на русский как «блок», и «chain», дословный перевод которого означает «цепочка». Лишь по одному этому переводу можно сделать вывод, что блок – это базовая составляющая блокчейна. А все блоки, созданные ранее и создаваемые прямо сейчас, формируют цепочку блоков.

Именно в этом и заключается главная фишка блокчейна. Все блоки связаны между собой и в каждый следующий блок записывается информация о предыдущем блоке. То есть, например, в блоке №1000 хранится информация о блоке №999, и так до самого первого блока. Это делает любую попытку изменить информацию в каком-либо блоке невозможной, так как для этого нужно изменить информацию во всех последующих блоках.

Если говорить простыми словами, то блок – это то же самое, что и станица в учётной книге. Но только он нематериален и более защищён. В нём можно записать любую информацию, которую нельзя подделать или украсть.

Как создаётся блок и из чего он состоит?

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

Рассмотрев, как формируется блок в блокчейне, нужно узнать и то, из чего он состоит. А состоит он из множества составляющих. Мы рассмотрим не все из них, так как структура блоков в блокчейн очень сложная. И не все её составляющие являются важными для того, чтобы понять, что такое блок.

Итак, блок состоит из множества данных, которые записываются в виде набора символов. Начинается каждый блок с «заголовка», в котором записывается информация как о текущем, так и о предыдущем блоке. Помимо этого в блок вносится информация о каждой транзакции, записываемой в блоке.

Транзакции в блоке записываются по такой системе:

Когда всё это выполнено и проверено, что данные достоверны, работа над блоком завершается, майнер получает свою награду и начинает работать над следующим блоком.

Мнение из сети:

Блоки – это прекрасная особенность блокчейна. Спасибо Сатоши Никамото за то, что он додумался обеднять транзакции в блок. Это сэкономило нам майнерам много ресурсов. А представьте, если бы каждая транзакция проходила отдельно. Это было бы ужасом для всех майнеров…

Источник

Что нам стоит блокчейн построить?

Вся история человечества — это непрерывное избавление от цепей и создание новых, еще более крепких. (Анонимный автор)

Анализируя многочисленные blockchain проекты (Bitshares, Hyperledger, Exonum, Ethereum, Bitcoin и др.), я понимаю, что с технической точки зрения все они построены по одним принципам. Блокчейны напоминают дома, у которых при всем разнообразии конструкций, декора и назначений имеются фундамент, стены, крыша, окна, двери, которые связаны друг с другом определенными способами. И если понять основные принципы проектирования зданий, знать свойства применяемых материалов, то можно определить целевое назначение конкретного дома. В настоящее время с блокчейном возникла ситуация, что все про него слышали, но мало кто понимает архитектуру и принципы работы. Поэтому возникает непонимание для чего и как имеет смысл использовать технологии блокчейна.

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

Итак, давайте вспомним какие проблемы изначально решил блокчейн.

Уверен, что многие скажут про распределенную, децентрализованную, публичную и неизменяемую базу данных. Но зачем это все было нужно?

Я предпочитаю начинать изучение любой технологии с чтения стандартов, так как именно на них основываются все статьи и книги по исследуемой теме. Но стандарты блокчейна в настоящее время отсутствуют, в ISO созданы только комитеты для их разработки. На текущий момент в каждом публичном блокчейн проекте имеется свой документ White paper, который по сути является техническим заданием. Первый общеизвестный блокчейн проект — это сеть Bitcoin. Идем на официальный сайт сети и смотрим с чего все начиналось.

Задача блокчейна

Итак, задача, которую решил блокчейн в сети пионере Bitcoin — это совершение доверительной передачи собственности на цифровые активы (assets) в недоверительной среде без посредников. Например, в сети Bitcoin цифровой актив — это цифровые монеты bitcoin. И все технические решения Bitcoin и других блокчейнов сводятся к решению этой задачи.

Проблемы, которые решает блокчейн

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

Допустим, в условной AnonymousWorldMoney стоят сервера с базами данных, и хорошо, если их будет несколько в разных дата-центрах. Когда отправитель переводит деньги, регистрируется транзакция, которая реплицируется на все сервера, и деньги доходят до получателя.

Что такое блок в блокчейне. Смотреть фото Что такое блок в блокчейне. Смотреть картинку Что такое блок в блокчейне. Картинка про Что такое блок в блокчейне. Фото Что такое блок в блокчейне

В идеальном мире такая схема прекрасно работает, в нашем же возникают следующие проблемы:

Как блокчейн решает эти проблемы

Архитектура блокчейна

Составные части блокчейна

Каждый участник может запустить свою ноду с полной копией блокчейна (full node). Полные ноды, которые могут записывать транзакции в блокчейн, называются узлами консенсуса (witness) или майнерами (miner). Полные ноды, которые только проверяют правильность транзакций называются узлами аудита (audit). Легкие клиенты (light clients) не хранят полных копий блокчейна, а взаимодействуют с сетью, используя полные ноды.
Большинство пользователей для совершения транзакций используют именно легких клиентов или web кошельки. Все ноды связаны друг с другом. При таком наборе элементов архитектура сети становится более устойчивой:

Что такое блок в блокчейне. Смотреть фото Что такое блок в блокчейне. Смотреть картинку Что такое блок в блокчейне. Картинка про Что такое блок в блокчейне. Фото Что такое блок в блокчейне

Жизненный цикл транзакции

Посмотрим на жизненный цикл транзакции и разберем его по частям:

Что такое блок в блокчейне. Смотреть фото Что такое блок в блокчейне. Смотреть картинку Что такое блок в блокчейне. Картинка про Что такое блок в блокчейне. Фото Что такое блок в блокчейне

Технологии блокчейна

Остановимся подробнее на технических решениях и их связях друг с другом.

Идентификация

Каждая блокчейн транзакция должна быть подписана цифровой подписью. Поэтому для совершения транзакции каждый участник должен иметь пару ключей: private / public. Иногда пару ключей называют кошелек (wallet), т.к. ключи однозначно связаны с уникальным цифровым адресом и балансом участника. В реальности ключи и адреса — это просто строки цифр в разных системах счисления. Примеры ключей и адреса кошелька:

Для создания цифровой подписи в блокчейнах используется алгоритм, основанный на эллиптических кривых: Elliptic Curve Digital Signature Algorithm (ECDSA). Для его работы приватный ключ (256 битное число), обычно, берется случайно. Число вариантов ключей составляет 2 в степени 256, поэтому можно говорить о практической невозможности совпадения значений приватных ключей.

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

Есть масса статей с подробностями по криптографии, используемой в блокчейне, например: Bitcoin in a nutshell — Cryptography

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

Что такое блок в блокчейне. Смотреть фото Что такое блок в блокчейне. Смотреть картинку Что такое блок в блокчейне. Картинка про Что такое блок в блокчейне. Фото Что такое блок в блокчейне

или можно использовать более надежные способы, как пример, выбивать значение приватного ключа на жетонах:

Что такое блок в блокчейне. Смотреть фото Что такое блок в блокчейне. Смотреть картинку Что такое блок в блокчейне. Картинка про Что такое блок в блокчейне. Фото Что такое блок в блокчейне

Транзакции

Подробнее про структуру транзакции можно посмотреть в статье Bitcoin in a nutshell — Transaction. Нам же важно понимать, что каждая транзакция имеет по крайней мере следующие данные:

Далее транзакция подписывается приватным ключом и рассылается (см. подробности по работе протокола Bitcoin in a nutshell-Protocol) всем нодам в блокчейне, которые проверяют транзакции на валидность. Алгоритм проверки транзакции нетривиален и включает два десятка шагов.

Блоки транзакций

Проверив валидность транзакций, ноды формируют из них блоки. Помимо транзакций в блок записывается хеш предыдущего блока, число (счетчик Nonce), и происходит вычисление хеша текущего блока по алгоритму SHA-256. Хеш должен обладать установленным условиям сложности. Например, в сети Bitcoin сложность хеша автоматически меняется раз в 2 недели в зависимости от мощности сети так, чтобы блок генерировался примерно раз в 10 минут. Сложность определятся следующим условием: найденный хеш должен быть меньше заранее заданного числа. Если данное условие не выполняется, то к Nonce прибавляется 1, и работа по вычислению хеша повторяется. Для подбора хеша используется поле Nonce, т.к. это единственные данные в блоке, которые можно изменить, остальные должны оставаться неизменными. Правильный хеш должен иметь определенное число нулей в начале, например, один из реальных хешей:

После успешного нахождения хеша блок и сам найденный хеш записываются в блокчейн следующим блоком. Подробнее по структуру блоков можно посмотреть в статье Bitcoin in a nutshell-Blockchain, а ниже приведу упрощенную схему:

Что такое блок в блокчейне. Смотреть фото Что такое блок в блокчейне. Смотреть картинку Что такое блок в блокчейне. Картинка про Что такое блок в блокчейне. Фото Что такое блок в блокчейне

Блокчейн начинается с блока, у которого еще нет хеша предыдущего блока. Такой блок в блокчейне один и имеет собственное название Genesis block. У остальных блоков одинаковая структура и отличаются они только числом транзакций. Реальные транзакции и блоки создающиеся в настоящее время в Bitcoin или Ethereum можно смотреть в Block Explorer.

Размер блоков в Bitcoin ограничен 1Мб и при минимальном объеме информации в транзакции около 200 байт, максимально в блоке может быть около 6000 транзакций. Отсюда, кстати, и следует производительность Bitcoin, над которой все смеются: блок генерируется примерно раз в 10 мин * 60 сек = 600 сек, что и дает формальную производительность около 10 TPS. Хотя на самом деле — это не производительность, а сознательно реализованный алгоритм работы. В Ethereum для конкуренции просто сделали время генерации блока 15 сек. и производительность формально взлетела. Поэтому в блокчейнах, использующих PoW в качестве консенсуса вообще бессмысленно сравнивать производительность, т.к. она напрямую зависит от сложности вычисления кеша, которую можно назначить любую.

Форки

А что происходит, если, например, несколько узлов нашли хеши удовлетворяющие условиям сложности, но разные по значению (иными словами, пришли к разным консенсусам) и записали блоки в блокчейн? Давайте посмотрим, как блокчейн защищается от данной ситуации. В этом случае происходит, так называемый, форк (‘вилка’), и блокчейн имеет две версии цепочки:

Что такое блок в блокчейне. Смотреть фото Что такое блок в блокчейне. Смотреть картинку Что такое блок в блокчейне. Картинка про Что такое блок в блокчейне. Фото Что такое блок в блокчейне

Что происходит далее? Далее часть сети начинает работать над блоком N+2 от одной цепочки, а часть от другой:

Что такое блок в блокчейне. Смотреть фото Что такое блок в блокчейне. Смотреть картинку Что такое блок в блокчейне. Картинка про Что такое блок в блокчейне. Фото Что такое блок в блокчейне

Какой-то из этих блоков будет найден раньше и отправлен в блокчейн и тогда по правилам блокчейн должен будет переключиться на более длинную цепочку и отменить все транзакции из альтернативного блока:

Что такое блок в блокчейне. Смотреть фото Что такое блок в блокчейне. Смотреть картинку Что такое блок в блокчейне. Картинка про Что такое блок в блокчейне. Фото Что такое блок в блокчейне

При этом, может сложиться ситуация, когда транзакция участника находилась только в одном из блоков форка, который и был отменен. Поэтому, чтобы быть уверенным, что нужная транзакция записалась в блокчейн, есть общая рекомендация — прежде чем доверять транзакции надо подождать пока следующие несколько блоков не будут добавлены в блокчейн. Рекомендации, сколько блоков ждать для разных блокчейнов различаются. Например, для сети Bitcoin минимум — это 2 блока, максимум 6.

Такая же картина с форком блоков будет наблюдаться и при, так называемой, атаке 51% — это когда группа майнеров будет пытаться вырастить альтернативную цепочку блоков, добиваясь отмены цепочки cо своими мошенническими транзакциями. Хотя в настоящее время, вместо мошенничества, выгоднее тратить свои мощности на честный майнинг.

Консенсус

Для записи блока в блокчейн сеть должна прийти к консенсусу. Давайте вспомним, задачу достижения консенсуса в компьютерных сетях связи. Проблема формулируется, как задача византийских генералов BFT (Byzantine fault tolerance). Опуская живописное описание проблем византийской армии, задачу можно сформулировать так: как узлам сети прийти к общему результату, если часть узлов сети могут сознательно их искажать. Существующие алгоритмы решения задачи BFT показывают, что сеть может функционировать правильно, если мошенников меньше 1/3. Почему в сети Bitcoin не был применен консенсус BFT? Зачем нужно было использовать PoW? Есть несколько причин:

Консенсус PoS основан на выборе узла, который может записать блок с транзакциями в блокчейн в зависимости от количества средств на счету, вернее, не на счету, а в залоге, Т.е. чем у тебя больше средств в залоге, тем с большей вероятностью сеть выберет твой узел для записи блока. Залог не возвратится, если блок окажется невалидным. Таким образом реализована защита от мошенничества. Есть следующие вариации PoS:

Надежность и модели развертывания блокчейнов

Устойчивость Public или другое название Permissionless blockchain достигается тем, что каждый может подключиться и просмотреть информацию или даже подключить свой узел, а доверие строится на консенсусе PoW.

Private или Private Permissioned blockchain. В этих блокчейнах только определенная группа участников (организаций или людей) имеет доступ к информации. Такие блокчейны строят организации с целью увеличения общей выгоды или эффективности. Их надежность обеспечивается общими целями участников и алгоритмами консенсуса PoS и BFT.

Существуют Consortium или Public Permissioned blockchain. Это такие блокчейны, к которым каждый может подключиться для просмотра, но добавлять информацию или подключить свой узел участник может только с разрешения других участников. Такие блокчейны строят организации с целью повышения доверия со стороны заказчиков или потребителей продукции или общества в целом. Здесь надежность также достигается присутствием доверия между участниками и теми же алгоритмами консенсуса PoS и BFT.

Smart Contracts

В блокчейны, реализованные после Bitcoin, в той или степени добавлена возможность выполнения смарт-контрактов. По сути смарт-контракт — это транзакция, в которой помещен программный код для выполнения. Смарт-контракты в сети Ethereum выполняются в EVM (Ethereum Virtual Machine). Для начала выполнения смарт-контракта его надо явно запустить другой транзакцией, или должно выполниться предусловия для выполнения. Результаты выполнения смарт-контракта также запишутся в блокчейн. Получение данных извне блокчейна возможно, но крайне ограничено.

Какую бизнес логику можно реализовать с помощью смарт-контракта? На самом деле не так уж много, например проверка условий по данным из блокчейна, изменение собственников цифровых активов в зависимости от этих условий, запись данных в постоянное хранилище внутри блокчейна. Реализуется логика на специальном языке высокого уровня Solidity.

Классическим примером функциональности, которую реализуют с использованием смарт-контрактов — это выпуск токенов для проведения ICO. Например, мной был реализован смарт-контракт на выпуск скромных 500 000 000 AlexToken. По ссылке в Etherscan находится

Больше подробностей про смарт-контракты можно узнать в статье: Что такое смарт-контракты в Ethereum.

Заключение

Мы перечислили технологии на которых построены современные блокчейны и как они связаны друг с другом. Теперь давайте сформулируем, какие задачи можно решить с помощью блокчейна, а решения каких будет, в лучшем случае, неэффективно. Итак, использование блокчейна не обязательно, если:

Источник

Блокчейн как структура данных

Сегодня мы хотели бы обозначить новую тему для обсуждения, кратко рассмотрев блокчейн с точки зрения computer science — как одну из структур данных. В последнее время блокчейн все активнее применяется за пределами криптовалютного сегмента, и эта тенденция, безусловно, заслуживает внимания. Давайте об этом поговорим!

Технологию блокчейна можно объяснить по-разному. До недавнего времени блокчейн рассматривался преимущественно с точки зрения криптовалют. Биткойн – первая ассоциация с блокчейном, возникающая у многих из нас. Но хранение криптовалютных транзакций – лишь один из многих вариантов использования блокчейна. В этой статье мы отступим от такой точки зрения и рассмотрим блокчейн в более общем контексте computer science.

Блокчейн – это структура данных

Структура данных – это способ хранения и организации данных, а также управления ими. Структура данных позволяет обращаться к этим данным, добавлять их, изменять и искать данные, содержащиеся в этой структуре. В числе наиболее распространенных и базовых структур данных – массивы и связные списки.

Массив

Массив включает некоторое количество перечислимых элементов. Это могут быть числа, буквы, слова или даже целые файлы. Благодаря индексам, можно обращаться к каждому отдельному элементу в массиве. Таким образом, если вы хотите изменить запись в массиве и знаете, где она находится, то можете мгновенно к ней обратиться.

Что такое блок в блокчейне. Смотреть фото Что такое блок в блокчейне. Смотреть картинку Что такое блок в блокчейне. Картинка про Что такое блок в блокчейне. Фото Что такое блок в блокчейне

Одномерный массив с шестью элементами

Связные списки

Узлы – это элементы с данными, входящие в связный список. В узле находится как минимум один объект данных и указатель на следующий элемент. Функция указателя – сообщить компьютеру, где находится следующий элемент данного списка.

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

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

Что такое блок в блокчейне. Смотреть фото Что такое блок в блокчейне. Смотреть картинку Что такое блок в блокчейне. Картинка про Что такое блок в блокчейне. Фото Что такое блок в блокчейне

Связный список с тремя узлами

Блокчейн

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

Что такое блок в блокчейне. Смотреть фото Что такое блок в блокчейне. Смотреть картинку Что такое блок в блокчейне. Картинка про Что такое блок в блокчейне. Фото Что такое блок в блокчейне

Ключевое отличие между блокчейном и связным списком заключается в том, что каждая ссылка в блокчейне криптографически защищена. Возможно, вы слышали применительно к блокчейну термин «append only» — «только для добавления». Он означает, что вносить новые данные в блокчейн можно, лишь достраивая цепочку спереди. Валидность защищенных связей постоянно проверяется. Если бы можно было вставить в середину блокчейна вредоносный блок, например, между блоками 1 и 3 на схеме ниже, то можно было бы поставить ссылку на предшествующий ему блок 1, но не на следующий за ним блок 3.

Что такое блок в блокчейне. Смотреть фото Что такое блок в блокчейне. Смотреть картинку Что такое блок в блокчейне. Картинка про Что такое блок в блокчейне. Фото Что такое блок в блокчейне

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

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

Притом, что удалить или изменить данные в блокчейне невозможно, легко добавить данные в новый блок, прикрепляемый к цепочке. Например, к криптовалютному блокчейну можно добавить новую транзакцию. Транзакцию легко проверить, поскольку все предыдущие транзакции, записанные в сети, неизменяемы. Когда с адреса Y требуется потратить сумму X, на балансе этого адреса должна быть сумма не менее X.

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

Заключение

Блокчейн – это метод хранения данных, применимый в computer science. Элементы блокчейна – его блоки – криптографически связаны друг с другом. Невозможно изменить данные после того, как они были записаны в блок. В этом и заключается ценность блокчейна. Это неизменяемый реестр, в котором можно безопасно хранить данные, работая в недоверенной среде.

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

Блокчейн не гарантирует истину, а предохраняет как истину, так и ложь от внесения изменений.

Таким образом, содержащиеся в блокчейне данные всегда можно спокойно проанализировать и чувствовать себя увереннее, занимаясь раскрытием лжи. Если обычный компьютер можно сравнить с вычислительной грифельной доской, то блокчейн – с вычислительным янтарем — @NickSzabo4

Источник

Блокчейн для самых маленьких [part.1]

Что такое блок в блокчейне. Смотреть фото Что такое блок в блокчейне. Смотреть картинку Что такое блок в блокчейне. Картинка про Что такое блок в блокчейне. Фото Что такое блок в блокчейне

Дымков Аркадий Андреевич

Программист / системный и бизнес аналитик

Что такое блок в блокчейне. Смотреть фото Что такое блок в блокчейне. Смотреть картинку Что такое блок в блокчейне. Картинка про Что такое блок в блокчейне. Фото Что такое блок в блокчейне

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

Технология, которая, по-видимому, окажет наибольшее влияние на развитие в различных областях экономики в ближайшие 10 лет, уже существует! И это не BigData, не соцсети, не робототехника и даже не Machine Learning. Это технология, лежащая в основе криптовалют, цепочка блоков транзакций- блокчейн. Сейчас именно блокчейн является инструментом для создания нового поколением интернета, и он несет огромный потенциал для любого бизнеса.

Скорее всего вы будете удивлены, узнав, что :

Можно ли применить распределенный реестр в огороде у бабушки?

Как одна технология переворачивает всю устоявшуюся индустрию бизнеса и экономики?

Так, теперь давайте определимся, что мы узнаем в part.1 :

Как работает эта технология? Проблема централизации на Олегах

Как работает магическая машина или же хэш-функция

Алгоритм защиты от модификаций печатных номеров

Настолько ли идеален блокчейн? Уязвимости идеальной системы

Как это работает?

Блок 1: Проблема централизации на Олегах

Сначала определимся, какую проблему решает технология?

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

Что такое блок в блокчейне. Смотреть фото Что такое блок в блокчейне. Смотреть картинку Что такое блок в блокчейне. Картинка про Что такое блок в блокчейне. Фото Что такое блок в блокчейне

Банкир проверяет ваш текущий баланс на предмет наличия этой суммы и переводит деньги на счет Олега. Вы с чувством выполненного долга звоните Олежке и сообщаете, что лавэ перечислены.

И так, что сейчас произошло? Давайте рассмотрим ситуацию более детально.

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

Блок 2: Какую угрозу несет централизация?

Такие системы подвержены взломам, и случай такого системного сбоя может привести к потери средств и личной информации пользователей этой системы, и это уже происходило не раз. Если приводить реальный пример из истории, то на ум сразу приходит развал СССР в 1991 и потери 40-ка млн вкладов пользователей банков.

Что такое блок в блокчейне. Смотреть фото Что такое блок в блокчейне. Смотреть картинку Что такое блок в блокчейне. Картинка про Что такое блок в блокчейне. Фото Что такое блок в блокчейне

Централизованная / Децентрализованная системы

Блок 3: Какая система позволит решить эти проблемы?

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

Как это работает?

Блок 1: Давайте рассмотрим принцип работы на примере

Возьмем 10 людей, которые решили отказаться от банков и других систем третей стороны.

Что такое блок в блокчейне. Смотреть фото Что такое блок в блокчейне. Смотреть картинку Что такое блок в блокчейне. Картинка про Что такое блок в блокчейне. Фото Что такое блок в блокчейне

По общему согласию каждый из 10-и постоянно имеет все подробности счетов других участников, но без знаний их личности

Шаг 1: Пустая папка

Каждый из 10 участников будет иметь пустую папку, которая будет заполняться страницами. Эта коллекция страниц формирует реестр транзакций.

Шаг 2: Транзакции

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

Что такое блок в блокчейне. Смотреть фото Что такое блок в блокчейне. Смотреть картинку Что такое блок в блокчейне. Картинка про Что такое блок в блокчейне. Фото Что такое блок в блокчейне#2 send 10$ to #5 Что такое блок в блокчейне. Смотреть фото Что такое блок в блокчейне. Смотреть картинку Что такое блок в блокчейне. Картинка про Что такое блок в блокчейне. Фото Что такое блок в блокчейнеTransaction’s registration page

Для создания транзакции, номер 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 он ни разу не был «обманут» и не выводился из строя, при том, что на эту систему проводились атаки.

Так же, существует ещё пара теоретических уязвимостей блокчейна, с которыми вы сможете ознакомиться самостоятельно. Ссылка для ознакомления: Что угрожает блокчейн-сетям

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *