Криптвоюматика 2.0 — страница 3 из 19

Если говорить еще более формально, принципы работы такие:

1) Блокчейн — это распределённая база данных. Правила доступа, хранения и добавления новой информации в блокчейн устанавливаются участниками и полностью открыты.

2) Все, что происходит в децентрализованном блокчейне, происходит между его участниками и непосредственно друг с другом.

3) Степень раскрытия личности участника устанавливается правилами сети. В 95% блокчейнов (например, в блокчейне биткоина) у вас есть только адрес[7], без имени и фамилии. Можно этот адрес раскрыть соседям, а можно никому не показывать. Все сделки проходят между этими адресами.

4) Вернуть и исправить ничего нельзя. Как только операция записана в базу, удалить её невозможно — все уже о ней узнали и запомнили. Записи связаны друг с другом, рассортированы хронологически и постоянно видны всем. Блоки соединены в цепочку и для изменения любого из них требуется изменить вообще всё, а это не по силам даже Эрнсту или Чурову.

Получается, что блокчейн — это, прежде всего, новый формат доверия, для которого не нужны посредники и авторитеты.

1.2. Зачем оно вообще надо

Итак, блокчейн — это криптографически защищённый распределённый реестр. Он оберегает нас от того, чтоб кто–то незаметно не продублировал свою запись о наличии чего–либо, при этом не надо доверять никакому специальному регулятору — все и так верят всем. Поэтому и записать в блокчейн можно всё, что вообще можно записать списком. Логичное приложение — регистрировать собственность на землю, наличие диплома[8] или рецепта[9] на лекарство. Некоторые из этих идей — гениальные (без шуток). Удобно же зарегистрировать сделку по квартире не за 10 дней, а за 10 минут; вроде как в Грузии оно уже так и работает. Или в аптеке проверить наличие у человека рецепта, ткнув в базу, — при этом человек точно знает, что никакой регулятор не сможет у него этот рецепт отобрать и бумажку с ним он не потеряет. А фармацевт точно знает, что рецепт не поддельный — он видит, кто его выдал. Работодатель может автоматически проверить резюме на наличие какого–то сертификата или диплома, и будет уверен, что они настоящие.

Или представьте, что вы покупаете песню непосредственно у её создателя. Посредников нет, комиссия минимальна, он сразу получает ваши деньги, а вы автоматически получаете права на неё. Все всегда могут проверить, что такой–то адрес у такого–то музыканта эту песню купил и может её слушать. Или смотреть фильм. Или читать книгу. Не нужен никакой Михалков со своим РАО, чудо–то какое! Все и так без него знают, что кому принадлежит и сколько кому причитается. Более того, не только сколько причитается, а оно уже и перечислено и уплочено, и все довольны — композитор, автор текста, продюсер. Кроме издателей, которые стали не нужны.

Правительства и регуляторы могут снять с себя функции регистрации и проверки чего бы то ни было. При этом уровень анонимности можно менять по консенсусу сторон. Все сделки проходят очень быстро и нет никакой системы Visa или MasterCard: марокканец покупает фильм у бразильца напрямую, минуя таможню и банки! И отобрать его тоже никто не может. Просто сказка.

Внезапно для удостоверения документов не требуется нотариус, да и вообще какие–либо государственные учреждения. Голосовать можно на дому, и всегда можно проверить, кому достался твой голос — он зачислится “на счёт” твоему кандидату, и директор какой–то дагестанской школы не сможет спиздить голос простого пастуха после подсчёта.

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

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

Можно и ещё хитрее: если вы своему ребёнку обещали подарить миллион на свадьбу, это можно записать в смарт–контракт с доступом к вашему счёту. Как только контракт видит, что у сына зарегистрирован брак, он переводит ему деньги напрямую, а вы сами, может быть, уже даже и померли, не дождавшись этого счастливого момента (речь о переводе денег, конечно). Для этого не нужен банкир, загс, нотариус и завещание. Не нужно ничего ждать или проверять. Всё сработает само.

Хотя некоторые идеи криптоноваторов — абсолютно бредовые (без шуток). Нужен ли блокчейн, чтобы завести какую–то новую энциклопедию[10] на блокчейне или читать платные новости, которые — ничего себе! — нельзя исправить задним числом[11]? Вы часто перечитываете прошлогодние новости? Из–за бешеного притока инвестиций в эту отрасль люди пробуют совершенно невменяемые идеи на предмет сбора бабла с инвесторов.

А у инвестора логика простая: биткоин растёт, может и ещё что–то вырастет? Это совершенно нормальный процесс. Технология молодая и скоро все поймут, для чего она подходит хорошо, а для чего нет. Кому–то, правда, это понимание встанет в копеечку.

1.3. Как это работает

Мы изучили херову тучу объяснений того, как работает блокчейн. Проблемы две: либо эксперт держит читателей за идиотов и объясняет это так примитивно, что суть процесса остаётся за кадром, либо текст рассчитан на айтишника с деревьями Меркла и подписями Шнорра, и простой человек его уже не воспринимает. Самое лучшее объяснение встретилось нам в блоге Лаборатории Касперского[12]. Его мы и взяли за основу, но постарались сделать ещё понятней.

Сначала изучим несколько основных понятий, первое из которых — цифровая подпись. Зачем нужна обычная подпись? Она удостоверяет того, кто подписал документ. Цифровая в этом плане даже лучше — она делает то же самое, только её нельзя (точнее, невероятно трудно) подделать. То есть автор документа определяется однозначно, и подписать его мог только он. При этом один человек (или фирма) может сгенерировать несколько вполне законных пар имя–подпись — для разных целей.

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

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

Простейший пример такой антиподделочной проверки находится в бланке ОСАГО об аварии. Там внизу нужно отметить, сколько квадратиков заполнены галочками (типа “я выезжал со стоянки”, “я стоял на светофоре”). Это чтоб кто–то после получения подписанной копии не натыкал новых, нужных ему вариантов происшествия. Но криптографическая проверка или, иначе говоря, “хэш”, гораздо круче. В нашем (примитивном) варианте при перестановке букв в сообщении контрольная сумма не изменится. А в правильно сделанном хэше при малейшем изменении сразу понятно: это не оригинал. При этом сам “хэш” занимает одну строчку даже для очень больших файлов или документов[13].

У хэша есть одно очевидное свойство: он односторонний. То есть по хэшу невозможно подобрать изначальное сообщение (только перебором всех вариантов — так и работает майнинг; но об этом позже). Да, у некоторых типов хэшей была такая проблема, что у разных сообщений мог получиться одинаковый хэш, но сейчас это либо уже решено, либо не играет особой роли. Главное — вы поняли, что эта функция работает только в одну сторону.

Теперь к самому блокчейну. Как использовать подписи и хэши? Представим себе одноклассников, которые хотят завести виртуальную валюту. Они ведут запись на школьной доске: сколько у кого было монет и кто кому сколько отправил, ставят подписи для подтверждения сделок, и все эту доску видят. Потом приходит учитель и говорит: “Вы тут совсем распоясались, поди уже и клей друг другу толкаете втихаря”. Стирает все записи мокрой тряпкой и насаждает веру в светлое будущее.

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

Как понять, хватает ли у Васи денег на передачу Маше? Надо перечитать весь журнал, и станет понятно: вот 10 монет Вася получил от Пети на прошлой неделе, а 40 ему вчера перечислил Олег. После этого сделок не было, поэтому вписываем в журнал новую строчку: “забрать 50 монет у Васи и добавить 50 монет Маше”, заверяем васиной подписью и дописываем хэш. Да, проверять всё — это долго, но у каждого же есть компьютер! Он сразу поймёт, если подпись не та или история неправильная. Испорченную сделку он в журнал записывать не станет, а просто выкинет как фальшивую.

Совокупность сделок на одной странице назовём блоком, допишем в конец хэш всего блока, чтоб не проверять страницу заново (а сверить только хэш) и начнём новую страницу–блок. Цепочка таких блоков — это и есть блокчейн.