Криптовалюты совершили переворот в мире финансов и считается, что во многом это заслуга технологии блокчейн, которую напрямую ассоциируют с Биткойном. И, таким образом, сам блокчейн померк в свете славы собственного "потомка". В этой статье я постараюсь на пальцах объяснить одну из самых значимых компьютерных технологий и положить конец заблуждению, что блокчейн – это криптовалюта или финансовая база данных. Забегая вперед скажу, что вы вероятнее всего уже работаете с блокчейном, даже, если никогда не сталкивались с криптовалютами.
Для того чтобы понять почему блокчейн не равняется криптовалюте достаточно хотя бы того что блокчейн был изобретен и использовался раньше криптовалют. Но цель статьи в том чтобы дать понимание самой технологии, а для этого нужно выделить общие признаки для всех имеющихся валют: каждая неизменно включает в себя три элемента – это цепочка блоков (собственно блокчейн), цифровая подпись и CRDT. Рассмотрим их подробнее.
Я осознанно исключаю сетевую структуру (децентрализованная, федеративная) и способы майнинга, так как они отличаются от системы к системе.
Цепочка блоков
Блокчейн – это хронологическая база данных, т.е. такая база данных, в которой время когда была сделана запись неразрывно связано с самими данными. Что делает ее не коммутативной (a + b ≠ b + a). Пример:
Добавим в обычную реляционную БД с полями Name и City две записи:
Иван Иванов, Москва
Петр Петров, Санкт-Петербург
Теперь если мы удалим Ивана Иванова, а затем добавим его снова, то база данных до и база данных после будут одинаковы, другими словами база данных вернется в прежнее состояние. С блокчейном все не так, даже если мы удалим, а затем вновь добавим запись, то состояние не восстановится, не смотря на то что данные одни и те же. Если совсем просто, то текущее состояние блокчейна – это сумма всех предыдущих действий.
В первую очередь это нужно для того, чтобы защитить базу от записи "задним числом". Для этого используются функции, которые превращают любые данные в уникальное число фиксированной длинны (hash-функции). В виде псевдокода блокчейн можно выразить так:
block0 = hash(data0)
block1 = hash(data1 + block0)
block2 = hash(data2 + block1)
block3 = hash(data3 + block2)
...
Так мы получим четыре уникальных числа, которые раздадим независимым пользователям (чем больше тем лучше). Теперь, если мы изменим значения в data1, то значения block1, block2 и block3 изменятся, таким образом пользователи смогут сравнить свои значения blockN и понять что произошла подмена.
Цифровая подпись
Все операции в криптовалюте должны быть авторизованы и единственным способом авторизации является использование цифровой подписи – все участники системы могут удостовериться в подлинности данных, не используя при этом центральных серверов со скрытыми механизмами проверки. Проверка подлинности может происходить на вашей машине, по знакомому вам алгоритму.
CRDT
Не смог лаконично перевести этот термин на русский. CRDT или Conflict-Free replicated Data Types – это такие типы данных, которые не подвержены коллизиям при одновременном распределенном доступе, а самое главное – воспроизводимые. Другими словами из последовательности операций можно восстановить значение на любой момент времени.
Криптовалюты это ни что иное как бухгалтерские проводки, которые представляют из себя последовательность действий списаний и зачислений. Простейший пример того как это выглядит:
Время Операция
13:00 +7.5 # состояние счета 12.5
12:00 -5 # состояние счета 5
11:00 +10 # состояние счета 10
10:00 0 # состояние счета 0 (счет создан)
Зная текущее состояние 12.5 мы можем восстановить состояние счета на 12 часов отменив операцию зачисления +7.5, заменив ее вычитанием.
Так же это экономит время при распространении изменений: вы отправляете только саму дельту, а не всё значение целиком.
Заключение
Если взять блокчейн и CRDT, то мы получим хорошо знакомый всем git. Да, тот самый git, который совершил революцию в разработке ПО и который разработчики используют каждый день. Возможно вы также знаете, что с помощью гит, можно не только разрабатывать программы, но и вести блог, а поместив в него csv, получить базу данных, которая помнит все изменения и обладает функцией перемотки.
Исходя из вышесказанного напрашивается вывод: блокчейн используется для поддержания целостности данных. Таким образом совершенно не важно что вы поместите в блокчейн – все владельцы копии смогут удостовериться, что данные верны. Даже если в блокчейн пишете только вы, то сторонний наблюдатель всегда сможет удостовериться, что вы не поменяли что-то задним числом. Другими словами это механизм поддержания доверия к данным.
А вот доверие к данным необходимо в документообороте, системах голосования, для хранения акционерной информации, в медицине и нотариальном деле, и может использоваться для ведения дел в государственных учреждениях. Эта технология позволит придать цифрам юридическую силу и полностью отказаться от бумажных носителей и ручной подписи. Так что блокчейну еще есть где проявить себя и в ближайшие годы мы будем лишь наблюдать как он захватывает технологический мир.
Автор: rumkin