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


Для того чтобы понять почему блокчейн не равняется криптовалюте достаточно хотя бы того что блокчейн был изобретен и использовался раньше криптовалют. Но цель статьи в том чтобы дать понимание самой технологии, а для этого нужно выделить общие признаки для всех имеющихся валют: каждая неизменно включает в себя три элемента – это цепочка блоков (собственно блокчейн), цифровая подпись и 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, получить базу данных, которая помнит все изменения и обладает функцией перемотки.


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


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

Поделиться с друзьями
-->

Комментарии (12)


  1. stigory
    21.10.2016 03:19
    +4

    Наконец-то вдумчивый вывод о природе блокчейна. Вместо тонн маркетингового бреда, хайпа и откровенного вранья.


  1. orcy
    21.10.2016 07:05
    +2

    Ошибка в заголовке, должно быть Блокчейн < Криптовалюта, т.к. Криптовалюта = Блокчейн + Proof of work/stake + Decentralisation. Можете не благодарить :)


    1. Gorthauer87
      21.10.2016 09:44

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


      1. orcy
        21.10.2016 10:21

        Когда не нужна децентрализация — много раз.


        1. Gorthauer87
          21.10.2016 11:10

          Ну так всякие webmoney не то, чтобы прямо таки крипто, это просто цифровые валюты, которым сто лет в обед.


      1. vikarti
        21.10.2016 22:23

        что значит — криптовалюта?
        eCash (разработанный Дэвидом Чаумом, на основе слепой подписи) и те частично — кто его копировали (например — Яндекс.Деньги, еще времен когда они даже не мечтали о веб-версии а было именно приложение, в том числе — способное работать оффлайн/через e-mail), и поддерживающие при желании анонимность платежей (но банк-эмитент/проверяющий все равно нужен) — криптовалюта?
        Сатоши Накомото собственно сделал следующий после Дэвида Чаума шаг — убрал «банк» как централизованное звено.


  1. jabr
    21.10.2016 07:09
    +2

    Ждем 1C: Блокчейн


    1. MAXHO
      21.10.2016 07:51

      1C: Блокчейн — c аппаратной электронной подписью, выдаваемой и обслуживаемой только дилерскими центрами
      Сбербанк: Блокчейн — то же самое, но только по предъявлению паспорта
      Почта: Блокчейн — то же самое что и блокчейнСбер только с живой очередью…


  1. Gorthauer87
    21.10.2016 09:45

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


    1. Greendq
      22.10.2016 23:06

      Аналогия чуть-чуть не верна, так как git хоть и распределённая база, всё же подразумевает один сервер, откуда сливаются копии новичками. У криптовалют обычно хоть и есть бутстрап-ноды, но в дальнейшем обновление изменений обращения к начальным нодам не требуют. Но если не вдаваться в ньюансы — то где-то так можно считать. за что вас минуснули — непонятно.


      1. AcidLynx
        25.10.2016 13:04

        git не подразумевает один сервер. вот бутстрап-сервер-нода, да.
        Поэтому по-умолчанию он называется origin. А в работе можно использовать столько серверов, сколько надо.
        Так что сравнение, в общем, верное.


  1. AcidLynx
    25.10.2016 13:05
    +1

    Дошел до этого познания сам.
    Написал статью. А оказалось, что вы уже на 5 дней раньше это сделали :)
    Но за статью спасибо. Можно теперь не самому пояснять, а давать ссылку.