<<
>>

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

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

Сначала изучим несколько основных понятий, первое из которых — цифровая подпись.

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

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

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

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

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

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

Ученикам такая херня не нравится. Им нужна своя валюта, и так, чтобы с доски никто не мог ничего стереть.

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

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

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

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

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

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

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

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

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

<< | >>
Источник: Алексей Марков, Алексей Антонов. Криптвоюматика 2.0. 2018

Еще по теме 1.3. Как это работает:

  1. 2.3.3. Как это все работает?
  2. Урок 6. РАБОТАЙТЕ, ЧТОБЫ НАУЧИТЬСЯ ТОМУ, КАК НЕ РАБОТАТЬ НА ДЕНЬГИ
  3. Эрик Шмидт, Джонатан Розенберг, Алан Игл. Как работает Google, 2015
  4. Как работает логистика
  5. Как работают системы волатильности
  6. Как работать с консультантом?
  7. 5.2. Как работает поисковая машина
  8. Как работает кадровая служба
  9. Как работает рынок рабочей силы
  10. 4.2. Что такое FOREX и как здесь работать