Криптвоюматика 4.1. Стань сыном маминой подруги

Text
39
Reviews
Read preview
Mark as finished
How to read the book after purchase
Don't have time to read books?
Listen to sample
Криптвоюматика 4.1. Стань сыном маминой подруги
Криптвоюматика 2.0. Стань сыном маминой подруги
− 20%
Get 20% off on e-books and audio books
Buy the set for $ 10,72 $ 8,58
Криптвоюматика 2.0. Стань сыном маминой подруги
Audio
Криптвоюматика 2.0. Стань сыном маминой подруги
Audiobook
Is reading Максим Суслов
$ 5,80
Synchronized with text
Details
Font:Smaller АаLarger Aa

Глава 1
Теория: шо за блохчейн такой

1.1. Что нового и что особенного в этом вашем блокчейне

Про блокчейн вы узнали, конечно, благодаря биткоину – новой чудесной цифровой валюте, которая показала небывалый рост за прошедшие три года и сразу всем очень понадобилась. Первое, что нужно понять, – блокчейн может содержать не только записи о том, сколько у кого денег (например, биткоинов), а вообще любую информацию: списки, файлы, документы и даже программы.

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

Блокчейн справляется с этими задачами гораздо лучше, чем всё, придуманное человечеством ранее. Это открытый распределённый журнал, который записывает операции между участниками эффективно, проверяемо и без сбоев. При этом журнал этот может быть запрограммирован на нужные нам автоматические действия. Например, он может высылать 30 серебряников каждый раз, когда с какого-то адреса поступает полезная информация. Но начнём с более простых вещей.

Как мы понимаем, что курс рубля к доллару рухнул? Особенно, если телевизор талдычит об обратном? Вроде понятно: есть обменники, есть публичные курсы, которые всем видны. Или возьмём что-нибудь более интригующее: например, депутат обосрался на Красной площади. Если вокруг него было несколько тысяч человек, никакой телевизор не заставит их думать, что депутата там не было. Все это видели, а если и не поверили своим глазам – всегда могут друг у друга переспросить и удостовериться.

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

Технически это выглядит следующим образом. Вместо того, чтобы записывать всю информацию в одно место, которому все вынуждены доверять (например, в банк, чтобы понять, у кого сколько бабла), информация записывается в цепочку блоков, тот самый блок-чейн. Каждый блок содержит в себе кусочек предыдущего, поэтому какой-то старый блок нельзя взять и подменить – это сразу же станет известно, ведь цепочка, идущая дальше, просто перестанет подходить. Всё это хозяйство хранится не на одном, а на тысяче компьютеров одновременно, фактически у любого желающего. И любой желающий может получить к нему доступ. Когда происходят какие-то изменения (см. депутат обосрался), информация об этом записывается в новый блок и разлетается на каждый компьютер – «ноду», или узел сети. Таким образом наступает всеобщее благоденствие и непорочность. Правда, ценой избыточного хранения конского количества информации и такого же конского количества избыточных операций, но об этом позже.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

Осталось только понять, кто заполняет страницу на перемене, чтобы раздать всем остальным (просто для справки – у биткоина эта «перемена» каждые 10 минут). Для этого все решают задачку по нахождению «красивого» хэша с нулями впереди. Если вы ещё помните, что такое хэш, то станет ясно, что задача это не просто трудная, но и абсолютно бессмысленная (ведь для подтверждения подлинности не имеет значения, как именно выглядит подпись и красива ли она, а речь именно об этом). Решение требуется лишь для того, чтобы случайно определить победителя. Ведь если блок будет всё время оформлять кто-то один, он сможет, например, чьи-то сделки подло не учитывать.

Сложность задачи при этом настолько высока, что решается она только перебором всех вариантов и хэшированием каждого из них, а перебирают варианты участники одновременно. У кого-то компьютер помощней, ну у того и шансов побольше. Если участников становится слишком много и красивый хэш находится слишком быстро, то новая задачка выбирается потруднее (и наоборот); об этом все договорились заранее.

Заглянем немного глубже. Чтобы получить «красивый» хэш, ребята добавляют в заголовок каждого блока какое-то случайное число и только потом подсчитывают контрольную сумму. Число это называется nonce[14]. Из-за того, что хэширование выдаёт фактически случайную цифру из блока данных, изменив всего лишь одну цифру (или букву) в блоке, мы получим совершенно новый его хэш. Целью майнинга и является подбор этого (случайного) числа таким образом, чтобы хэш блока начинался с определённого количества нулей. Другими словами, хэш должен быть меньше нужного нам параметра target (цель), который и определяет сложность соревновательного процесса. Ведь чем меньше эта цель, тем меньше должно быть искомое число – и тем больше у него нулей впереди. Таким образом, сложность регулируется очень легко.

Все желающие решать эту задачу называются майнерами, а решение записывается на страницу вместе со всеми операциями. Это делается для того, чтобы в будущем какой-нибудь хитроумный китаец не пришёл и не сказал: «Ребята, вот на самом деле правильный журнал, у меня всё подсчитано», – тогда ему придётся предъявить решения всех подделанных задачек сразу, а это нереально. Хотя будем честны: если у него под контролем большинство компьютеров в сети – то возможно.

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

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

Разберём поподробнее.

8Например, вот такой – 1EkaseA9wJmPxFLaBtSfuqAPRaaHRLStZB
9http://news.mit.edu/2017/mit-debuts-secure-digital-diploma-using-bitcoin-blockchain-technology-1017
10http://www.healthcareitnews.com/news/next-big-thing- pharmacy-supply-chain-blockchain
11https://www.wired.com/story/everipedia-blockchain/
12http://www.niemanlab.org/2017/10/
13https://www.kaspersky.ru/blog/bitcoin-easy-explanation/12668/
14Nonce – Number, that can only be used once, число, которое нельзя называть. Ну то есть которое можно использовать только один раз.
You have finished the free preview. Would you like to read more?