В этой статье мы расскажем о том, что такое блокчейн (blockchain), как он появился и зачем он нужен. Главная особенность этой статьи состоит в том, что мы постараемся избегать формулировок вроде «реплицированная распределенная база данных» или «распределенный реестр блокчейн», объясняя все простыми словами и используя простые примеры.
Знакомство с технологией блокчейн
Итак, что же такое блокчейн? Прежде всего – это технология. Причем, такая технология, которая вполне может изменить привычный для нас окружающий мир. Она базируется на трех «китах»: анонимности, децентрализованности и криптографии. Ее почти невозможно взломать (об этом ниже) и, начавшись, по сути, с появления биткоина, она постепенно входит во многие сферы нашей жизни и изменяет их.
Кто-то называет блокчейн самой крупной аферой XXI века, а кто-то, наоборот – считает появление и начало использования технологии блокчейн самым выдающимся событием последних 15 лет. Дочитав эту статью до конца, вы сможете составить собственное мнение и, возможно, станете с большим интересом и пониманием читать новости о криптовалюте.
Блокчейн – принцип работы. Часть 1
В Сети есть десятки удачных примеров, объясняющих принцип работы блокчейн. Поэтому мы не станем изобретать велосипед, а воспользуемся одним из них.
Итак, представьте, что у вас есть несколько друзей, у которых периодически возникают проблемы с деньгами. И как только такие проблемы возникают – они просят вас одолжить им немного денег. Ваши друзья честные, но немного забывчивые, и поэтому не всегда возвращают долг вовремя или полностью.
Самое забавное, что и вы уже не помните, кто и сколько у вас одолжил, и кто и сколько вернул. Очевидно, что самый простой и логичный способ взять ситуацию под контроль – начать вести список.
Единственный недостаток такого подхода в том, что такой список может попасть в руки должнику, а он – может не устоять перед искушением, внести в него изменения. Например, аннулировать свой долг. Напомним, что цель данной статьи не в том, чтобы более внимательно подходить к процессу выбора друзей, а в том, чтобы объяснить принцип работы блокчейна.
Поэтому примем на веру, что список таки попал в руки одного из должников, и он легким движением руки внес в него правки. Чем это чревато? Разумеется, потерей некоторой денежной суммы, а это нас категорически не устраивает, и мы решаем с этим бороться. Но как?
Давайте немного отвлечемся от темы и поговорим о том, что такое хеширование, хеш, а также затронем алгоритм SHA-256. Не пропускайте этот раздел. Без него вы не получите ответ на вопрос что такое блокчейн.
Что такое хеширование
Выше мы упоминали о том, что блокчейн базируется на трех «китах»: анонимности, децентрализации и криптографии. Как вам кажется, какой из этих китов наиболее важен?
Большинство людей считают, что для блокчейна, прежде всего, важны анонимность и децентрализация. Да, разумеется, они важны, но в основе блокчейн-технологии лежит именно криптография. Без нее не только существование, но и само появление блокчейна было бы попросту невозможным.
Важно! Криптография – это наука о методах сокрытия, обеспечения целостности, шифрования и проверки подлинности данных. Изначально применялась именно для создания шифрованных сообщений с использованием симметричного ключа. С начала 70 годов прошлого века в криптографии стала активно использоваться математика, и появилось ее новое направление – криптография с открытым ключом. Именно этот вид криптографии активно используется в настоящее время, например, для создания цифровых подписей и т. д.
Технология блокчейн активно использует криптографическую функцию – хеширование и результат ее работы – хеш. Объясним на простом примере, как это работает.
Вы наверняка сталкивались с сервисами, которые из сколь угодно длинного адреса делают короткую ссылку. Например, перейдя по адресу https://vk.com/cc вы можете превратить громоздкое https://nettopro.ru/bitkoin/21-mln-bitkoinov-chto-ehto-takoe-prostym-yazykom/ в изящное https://vk.cc/c8ZquW.
Каким-то волшебным образом 77 символов превратились в 20. Что это? Магия? Нет, настоящая магия впереди. Хеширование работает по очень похожему (правда, только внешне) принципу. На входе функция получает последовательность символов любой длины, а на выходе выдает строку, длина которой строго 64 символа.
Попробуем получить хеш слова «биткоин».
Как видите, короткое слово «биткоин» превратилось в непонятное 9CE83EAB9A4E54C278D3E0FEFBF1C39ABD6EBC46887584A6DCBD5558CEB1B9AC.
Увеличим размер текста и посмотрим, что получится:
Длинный и такой понятный текст из Википедии превратился в компактную строку, длина которой все те же 64 символа:
BC388248A6AD5AAEB084788042E1220B87B2438A2AA92171560CD31B14938DC1
Важно! Обратите внимание, что мы рассматриваем работу хеширования на примере алгоритма SHA-256, который используется в биткоине и других криптовалютах. Если бы мы использовали, например, функцию MD5, то длина хеша была бы существенно меньше – всего 32 символа. А, как вы уже, наверное, догадались, чем короче хеш, тем ниже его криптоустойчивость.
Таким образом, мы видим, что для функции хеширования неважно, какой длины текст вы в нее передаете – хоть целую книгу, но на выходе всегда будет строка длиной 64 символа. Кстати, здесь кроется важная особенность самого понятия хеш. Хеш – это не зашифрованные данные, как многие ошибочно думают. Это именно результат работы функции для конкретной последовательности символов.
Еще одна особенность хеша – его необратимость. Это похоже на мясо, пропущенное через мясорубку. На выходе вы получаете фарш, который при всем желании не сможете превратить обратно в целый кусок.
И, наконец, хеширование – это детерминированная функция. Это означает, что если вы подаете ей на вход одно и то же значение, скажем, 10 тыс. раз, на выходе вы всегда получите одинаковый хеш. Кстати, если вы думаете, что, например, добавив точку или изменив одну букву в слове, вы получите хеш, который будет отличаться всего на один знак, вы ошибаетесь. Хеш изменится практически полностью.
А теперь – главный вопрос: зачем мы так долго объясняли, что такое хеш и как он связан с работой блокчейна? Он выступает в роли своеобразной цифровой подписи, гарантируя, что ни один символ в записи не был изменен с момента ее создания. Любые манипуляции с содержимым, для которого был рассчитан хеш, моментально станут видны, поскольку само значение хеша изменится.
Да, пока все равно звучит не очень понятно, но, терпение, скоро все встанет на свои места.
Блокчейн – принцип работы. Часть 2
Вернемся к нашему примеру с должниками. Теперь каждую запись мы хешируем. Например, Антон занял у нас 1 тыс. рублей. Раньше мы бы записали просто:
Антон, взял 1000 рублей 5 мая.
Теперь же мы не только сделаем запись, но и сгенерируем для нее хеш и сохраним его в надежное место, скажем, на флешку.
Теперь, предположим, Антон хочет схитрить и изменяет нашу запись на свою:
Антон, вернул 1000 рублей 5 мая.
Раньше такое вполне могло пройти незамеченным для нас, но теперь мы снова генерируем хеш и смотрим, совпадает ли он с предыдущим вариантом.
В этот момент становится очевидным, что значение «816B6333D6864364AE2668AF19BA1C433553751A50D4C3A948312D31BAE10AF7» похоже на значение «000A3F5E43A81E1F060B93B2B59B484BB245A935039BCC2CCA8D25C911A9B769» только длиной, что однозначно указывает на то, что исходный текст был изменен.
Система работает, но остается уязвимой – ведь хитрый Антон может получить доступ и к флешке. А, получив доступ, он перезапишет не только текст о своем долге, но и его хеш. Что же делать?
Во-первых, прекрасной идеей будет хранить хеши на нескольких флешках, спрятанных в разных местах и регулярно синхронизировать записи на них. А во-вторых, мы создадим хеш классическим способом только для первой записи, а для второй и последующих, будем использовать формулу «запись + хеш предыдущей записи». В этом случае изменение любого символа в любой строке неизбежно приведет к изменению всех хешей строк, идущих следом за измененной строкой.
Номер транзакцииОписание блокчейн транзакцииХеш1Дал в долг Коле 100 рублей8F2D36200C311741F36026B7565867386FA23A525E9974F59167FB90C9D4FCB82Дал в долг Наташе 200 рублей+8F2D36200C311741F36026B7565867386FA23A525E9974F59167FB90C9D4FCB8AA257F4D4467A6AFB1CD74E434D789F44A0EC9C406A2E683223CDAA3538346793Дал в долг Антону 500 рублей+AA257F4D4467A6AFB1CD74E434D789F44A0EC9C406A2E683223CDAA3538346791DF2A5101A7EFA7736819F98B78BB653976B515B461DD584E94B4CCCC9C68737
Безопасность нашего списка существенно возросла, ведь теперь, Антону как минимум придется сначала найти все флешки. А если он сможет? Кто помешает Антону изменить запись, а потом пересчитать затронутые хеши?
Время. Нужно сделать так, чтобы на изменение одной записи уходило не пара минут, а, например, сутки. В этом случае, чтобы списать свой долг, Антону потребуется 24 часа, а Николаю придется потратить в три раза больше времени.
Отлично, мы поняли, что нужно делать, но каким образом мы сможем так усложнить задачу, где взять столько флешек, и как все-таки работает система блокчейн?
Как работает блокчейн
Мы не случайно потратили так много времени на примеры, описанные выше. Теперь вы полностью готовы к тому, чтобы понять, как работает блокчейн.
Сам по себе блокчейн – очень похож на список, который мы составляли ранее. Вместо должников, в нем записана последовательность блоков, идущих по порядку один за другим. При этом каждый последующий блок связан с хешем предыдущего блока, а сам список хранится в виде базы данных не на флешке, а на множестве не связанных друг с другом компьютерах и иных устройствах. Сам блок устроен предельно просто:
- Nonce или number only used once – число, использование в блокчейне которого допускается только один раз и которое соответствует определенным критериям (об это ниже). Именно это число ищут майнеры, чтобы добавить новый блок в цепочку (и об этом тоже ниже).
- Служебная информация – может быть любой и зависит от задач, решаемых конкретным блокчейном.
- Список транзакций, которые еще не были добавлены ни в один из блоков. Причем под словом «транзакции» подразумевается не, скажем, долг Антона или денежный перевод, а механизм обработки информации.
- И, наконец, в каждом блоке (кроме первого – родительского блока) содержится хеш предыдущего блока и хеш активного блока. Как и в примере с Антоном, хеш активного блока рассчитывается при помощи формулы: «содержимое блока+хеш предыдущего блока».
Каждый блок постепенно заполняется данными о транзакциях, затем на основании этих данных и хеша предыдущего блока рассчитывается хеш активного блока, после чего этот блок добавляется в общий список. Вот и все. Именно так работает большинство блокчейн-платформ.
На этом можно было бы закончить нашу статью, но, неужели вам неинтересно узнать, например, что же это за число nonce? Кто же такие майнеры? Кто проверяет правильность блоков? Что такое «Атака 51» и сколько стоит взломать блокчейн?
Что такое число nonce
Именно число nonce – сможет остановить Антона и заставит его тратить кучу времени на изменение каждой записи. Каким образом?
Современные компьютеры способны производить сложнейшие расчеты буквально за несколько секунд. Вычислить хеш и добавить его в блок – с этим справится даже мобильный телефон. Поэтому, чтобы увеличить время расчета хеша, создатель (или создатели) блокчейна добавили в него интересное условие.
Новый блок может быть добавлен в общий список только после того, как майнер найдет число nonce, хеш которого отвечает определенным критериям.
Описание процедуры добавления блока
Любая транзакция, сделанная участником блокчейн-сети, добавляется в рабочий список не сразу. Сначала она попадает в общий пул транзакций или mempool. Это своеобразная площадка, где хранятся новые блокчейн транзакции.
Оттуда их забирают майнеры, формируют из них новые блоки и пытаются добавить эти блоки в общий список. Именно в этот момент в дело вступает число nonce. Майнеры перебирают всевозможные варианты этого числа, добавляя его в заголовок блока. Добавили, посчитали хеш, добавили, посчитали хеш, добавили, посчитали хеш. И так до тех пор, пока полученный хеш не окажется меньше значения target.
Важно! Каждая блокчейн-сеть имеет параметр Difficulty, который определяет, насколько сложно будет добавить новый блок. Например, для сети Биткоин среднее время добавления одного блока равно 10 минутам, а каждые 2016 блоков параметр Difficulty корректируется, делая добавление еще более сложным.
Значение target – это число, которое начинается с определенного количества нулей. Их количество задается для каждой конкретной блокчейн-сети, а процесс поиска этого числа называется майнинг, а люди, занимающиеся майнингом, называются майнерами. Например, для того чтобы добавить новый блок в сеть Биткоин, нужно получить хеш, который начинается с 19 нулей.
После того как искомое число найдено, майнер отправляет новый блок в общий список и получает за это вознаграждение. Например, в сети Биткоин награда за добавленный блок составляет 6,25 BTC – примерно 250 тыс. долларов.
Атака 51
Большие деньги всегда привлекают людей, которые любят немного схитрить. Блокчейн – не исключение. Допустим, вы спрашиваете Антона, когда он вернет долг, а Антон говорит вам, что он уже все вернул вчера в офисе. Вы начинаете сомневаться – может быть, вы просто забыли?
Но ваши друзья, которые присутствуют при разговоре, в один голос говорят, что Антон вчера ничего не возвращал, да и вообще его не было в офисе больше недели. Антон посрамлен, краснеет и обещает сегодня же все отдать.
Но как развивалась бы эта ситуация, если бы ваши друзья подтвердили слова Антона? Скорее всего, вы поверили бы им. Но на самом деле Антон ничего не возвращал, просто подговорил всех.
Примерно так работает знаменитая Атака 51, которую с завидным постоянством используют нехорошие люди, чтобы украсть немного (а иногда и много) криптовалюты. Для этого майнеры объединяются в группы, чтобы их суммарная вычислительная мощность превысила мощность остальных участников сети, то есть стала больше, чем 51% общей мощности сети.
Таким образом, они получают возможность исключать «лишние» блоки из списка и добавлять свои «правильные» блоки. Благодаря этому, они могут совершать покупки, не расходуя собственные средства, поскольку в «правильных» блоках уже не будет записей об этих транзакциях.
Electroneum, Monacoin, Verge, Litecoin Cash, ZenCash и многие другие сети были успешно атакованы злоумышленниками. Например, атака на Bitcoin Gold принесла хакерам примерно 18 млн долларов.
Сейчас проведение таких атак возможно только в новых сетях, где количество участников невелико. Кроме того, появляются различные системы защиты, например, Komodo dPoW или PirlGuard.
Сколько стоит взломать блокчейн
Есть интересный сайт https://www.crypto51.app/, на котором можно узнать стоимость проведения Атаки 51 на ту или иную сеть.
Как видите, для того, чтобы попытаться взять на час под свой контроль Биткоин, вам потребуется 1,694,007 долларов. Правда, не забывайте о том, что все подобные попытки мониторятся и моментально пресекаются.
Сферы применения технологии блокчейн
Блокчейн с успехом применяется в финансовой сфере, в сфере защиты авторского права, помогает проводить операции на сырьевом рынке и заключать смарт-контракты. Несколько лет с его помощью пытаются взять под контроль оборот драгоценных камней и в особенности бриллиантов.
Также блокчейн применяют для цифровой идентификации, электронного голосования, управления компаниями и организациями и во многих других областях.
Вопросы и ответы
- Как вывести деньги с блокчейн?
Вывод средств зависит от того, какую систему вы используете. Большинство из них позволяют после оплаты комиссии вывести деньги на карту. - Где хранятся данные блокчейн?
Данные блокчена хранятся в виде базы данных на компьютерах всех участников конкретной сети. - Как используется блокчейн в России?
В России с 2017 года регулярно предпринимаются попытки использования цифровой технологии блокчейн. Например, не так давно с ее помощью было проведено электронное голосование для выбора депутатов Государственной Думы. - Какие самые популярные блокчейны?
На сегодняшний день к ним относятся ETHEREUM, IOTA, CHAINALYSIS и другие системы.
Заключение
Блокчейн – это список, в котором в хронологическом порядке хранятся блоки с данными о проведенных транзакциях. Каждый новый блок неразрывно связан с предыдущими, за счет использования криптографии.
Хеширование содержимого каждого блока исключает возможность его изменения задним числом. Процесс хеширования и добавления новых блоков искусственно затруднен поиском числа nonce. Поиск этого числа называется майнингом, а люди, которые это число ищут, называются майнерами.
Отличительными особенностями чертами блокчейна являются его анонимность, децентрализованность и высокая степень защищенности.
Оригинал статьи здесь.