Перейти к основному контенту

Блокчейн 101: наглядная демонстрация

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

Date published: 13 ноября 2016 г.

Наглядная демонстрация Андерса Браунворта о том, как работает технология блокчейн, включая подробный разбор хеширования SHA-256, блоков, майнинга, блокчейнов, распределенных реестров, токенов и многого другого.

Эта расшифровка является доступной копией оригинальной расшифровки видео (opens in a new tab), опубликованной Андерсом Браунвортом. Она была слегка отредактирована для удобства чтения.

Хеш SHA-256 (0:01)

Это демонстрация блокчейна. Мы сделаем это очень наглядно — мы сделаем это очень простым для понимания, шаг за шагом разобрав ключевые элементы того, что такое блокчейн.

Прежде чем мы начнем, нам нужно взглянуть на такую вещь, как хеш SHA-256. Хеш выглядит как набор случайных чисел, и по сути это цифровой отпечаток каких-либо данных. Так уж вышло, что это отпечаток всего, что я ввожу в это поле. Если я введу свое имя «Anders» в это поле, вы увидите, что хеш изменился. На самом деле, он менялся каждый раз, когда я вводил букву.

Итак, это хеш имени «anders», написанного строчными буквами — он начинается с 19ea. Если я удалю это и снова введу «anders», вы увидите, что он начинается с 19ea — абсолютно тот же самый хеш. В этом смысле это цифровой отпечаток данных. Какие бы данные здесь ни находились, каждый раз, когда вы вводите абсолютно те же самые данные, вы получаете абсолютно тот же самый хеш.

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

Блок (2:10)

Что я собираюсь сделать, так это расширить эту идею хеша до того, что мы назовем блоком. Блок точно такой же, как хеш, но раздел данных был разбит на три части: одна называется «блок» — просто число, это блок номер 1, «нонс», который является просто еще одним числом, и затем некоторые данные, как и раньше.

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

Что произойдет, если я изменю какую-либо часть этой информации? Допустим, я введу что-то здесь — хеш изменится, и какова вероятность, что он будет начинаться с четырех нулей? Довольно низкая. Я просто напишу «hi» — посмотрите, этот хеш не начинается с четырех нулей, а фон стал красным. Так что теперь вы знаете, что этот блок с этой информацией внутри не является действительным или подписанным блоком.

Вот тут-то и вступает в дело нонс. Нонс — это просто число, которое вы можете задать, чтобы попытаться найти значение, при котором хеш снова будет начинаться с четырех нулей. Я мог бы сидеть здесь весь день, вводя числа, но у меня есть эта маленькая кнопка «Mine» (Майнить). Когда я нажму ее, она переберет все числа от 1 и выше, чтобы попытаться найти то, при котором хеш начинается с четырех нулей. Этот процесс называется майнингом.

Он остановился на 59 396 — и именно это число дает хеш, который начинается с четырех нулей. Это удовлетворяет моему определению того, что такое подписанный блок.

Блокчейн (5:16)

Итак, можете ли вы сказать мне, что такое блокчейн? Вероятно, это просто цепь из таких блоков. Вот мой блокчейн — блок номер один имеет нонс, как и раньше, область данных, но затем у него есть это поле «previous» (предыдущий), которое представляет собой набор нулей. Двигаясь дальше, это блок два, блок три, блок четыре — в этом блокчейне пять блоков.

Поле «previous» для каждого блока — это хеш предшествующего ему блока. Вы можете видеть, что каждый блок указывает назад на тот, что был до него. У первого блока нет предыдущего, поэтому там просто набор нулей.

Что произойдет, если я изменю здесь какую-то информацию? Это изменит хеш этого блока и сделает его недействительным. Но что, если я изменю что-то в более раннем блоке? Это изменит его хеш, но этот хеш копируется в поле «previous» следующего блока, поэтому это ломает оба блока. Мы можем вернуться в прошлое так далеко, как захотим, и сломать этот блок, и это сломает все блоки после него. Все, что было до него, по-прежнему зеленое, но все, что после, становится красным.

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

Распределенный блокчейн (9:18)

Так как же мне узнать, был ли мой блокчейн перемайнен? Теперь у нас есть распределенный блокчейн. Он выглядит точно так же, как предыдущий блокчейн, но это Пир A. Если вы спуститесь сюда, вы увидите Пир B, и у него есть точная копия блокчейна. Также есть Пир C — и так может продолжаться до бесконечности. В интернете много пиров, и у всех есть полная копия блокчейна.

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

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

Блокчейны могут очень легко иметь 400 000 или 500 000 блоков. Вместо того чтобы проверять их все, вам на самом деле нужно только посмотреть на хеш самого последнего из них, и вы сможете увидеть, было ли что-то изменено в прошлом.

Токены (12:17)

Вот и все — в этом нет ничего сложного. Но это не очень полезно, потому что в области данных у нас нет ничего значимого. То, что нам действительно нужно, — это токен.

Теперь у меня есть эти токены — совершенно произвольно я называю их долларами. У нас есть 25 долларов от Дарси к Бингли, 4 доллара и 27 центов от Элизабет к Джейн — вы поняли идею. Происходят все эти транзакции, и я просто заменил данные этими транзакциями. Как и раньше, если мы спустимся вниз, то заметим, что у нас есть все эти другие копии того же самого блокчейна.

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

Одно я хотел бы отметить: мы не пишем «У Дарси есть 100 долларов, и он дает 25 Бингли». Мы запоминаем только движения денег, а не балансы банковских счетов. Это вызывает вопрос — а есть ли у Дарси 25 долларов?

Транзакция Coinbase (14:34)

В этой версии блокчейна у нас есть проблема: на самом деле мы не знаем, есть ли у Дарси 25 долларов. Поэтому давайте посмотрим на транзакцию Coinbase. Мы добавляем транзакцию Coinbase в наши блоки — она говорит, что мы собираемся создать 100 долларов из воздуха и отдать их Андерсу. В этом блоке нет других транзакций, потому что до этого ни у кого не было денег.

В следующем блоке еще 100 долларов появляются из ниоткуда и достаются Андерсу. Теперь у нас есть несколько транзакций — все они от Андерса, потому что на данный момент я единственный, у кого есть деньги. Я отправляю 10 своих долларов Софи. Есть ли у меня 10 долларов? Да — я смотрю назад и вижу, что транзакция Coinbase дала мне 100, так что у меня есть как минимум 10.

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

Если мы перенесемся вперед во времени, то увидим, что Джексон дает Алексе 2 доллара. А есть ли у Джексона 2 доллара на самом деле? Мы возвращаемся на один блок назад и видим, что Эмили получила 10 долларов от Андерса и отдала 10 Джексону. Значит, у Джексона действительно есть деньги. Мы можем вернуться назад и выяснить это — это одно из преимуществ наличия поля «previous».

Заключение (16:30)

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

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

Была ли эта страница полезной?