Глава 1 Блокчейн. Курс молодого бойца

История блокчейна

Книга
Блокчейн. Исчерпывающее руководство

Mastering Blockchain

Фундаментальное техническое руководство, которое признано одним из самых авторитетных и полных учебников по технологии распределенного реестра в мире.

Что мы должны узнать

Биткойн не изобрели с нуля — его собрали из идей, которые копились тридцать лет. Новой была сама сборка: она впервые решила двойную трату без доверенного центра.

Общий таймлайн: 1976 → 2009

1976–1979

Ключи и хеши

  • 1976Диффи и Хеллман: обмен ключами
  • 1978Шифрование с открытым ключом (RSA)
  • 1978Лэмпорт: порядок событий, репликация автоматов
  • 1979Дерево Меркла
1980–1983

Сеть и доверие

  • 1980Меркл: протоколы для открытого ключа
  • 1982Чаум: слепая подпись
  • 1982Задача византийских генералов
  • 1980-еTCP/IP
1985

Эллиптические кривые

  • 1985Коблиц и Миллер: криптография на эллиптических кривых
1991–1993

Цепочка меток времени

  • 1991Хабер и Сторнетта: цепочка меток времени
  • 1992Дворк и Наор: первое доказательство работы
  • 1993Метки времени + деревья Меркла
1995–1998

Электронная наличность

  • 1995DigiCash Чаума в банках
  • 1998Сабо: Bit Gold
  • 1998Вей Дай: b-money
1999–2001

Одноранговые сети

  • 1999Napster
  • 1999TIMESEC: служба меток времени
  • 2000Gnutella: сеть без центра
  • 2001BitTorrent и DHT
2002–2005

Доказательство работы

  • 2002Бэк: Hashcash
  • 2004Финни: многоразовое PoW
  • 2005Аспнес и др.: PoW против атаки Сивиллы
2008–2009

Биткойн

  • 2008Статья Сатоши Накамото
  • 2009Генезис-блок: биткойн запущен
КриптографияМетки времени и PoWЦифровые деньгиСети и консенсус
1976Криптография1 из 24

Диффи — Хеллман

Общий секрет по открытому каналу

статья 1976 года
Идея

Договориться о секретном ключе с незнакомцем, даже если весь разговор кто-то подслушивает.

Что это

Протокол обмена ключами. Двое обмениваются открытыми числами и получают общий секрет, который нельзя вычислить со стороны.

Кто придумал

Уитфилд Диффи и Мартин Хеллман, Стэнфорд. Статья «New Directions in Cryptography», 1976.

В чём смысл изменения
Было

Чтобы шифровать переписку, ключ нужно заранее передать лично или с курьером.

Стало

Ключ рождается прямо в открытом канале. Отсюда идея пары «открытый — закрытый ключ».

В биткойнеадрес — это открытый ключ, тратит монеты владелец закрытого.

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

Диффи — Хеллман на красках

  1. Общая краскажёлтый — виден всем

    Аня и Боря открыто договариваются об общей краске. Подслушивающая Ева её тоже знает.

  2. Свой секретАня: + красный · Боря: + синий

    Каждый подмешивает в общую краску свой тайный цвет и никому его не показывает.

  3. Обменоранжевый ⇄ зелёный

    Смесями обмениваются открыто. Ева видит обе, но разделить краску обратно на цвета не может.

  4. Общий ключ+ красный = + синий

    Каждый добавляет в чужую смесь свой секрет. Получается один и тот же цвет — это и есть ключ.

В математикеВместо красок — возведение в степень по модулю: вперёд считается легко, назад — практически невозможно.

1978Криптография2 из 24

RSA

Шифрование и подпись открытым ключом

статья 1978 года
Идея

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

Что это

Первая практичная система с открытым ключом. Умеет и шифровать, и ставить цифровую подпись.

Кто создал

Рон Ривест, Ади Шамир и Леонард Адлеман, MIT. Придумана в 1977 году, статья вышла в 1978-м.

В чём смысл изменения
Было

Подлинность документа подтверждает подпись от руки или печать — их можно подделать.

Стало

Цифровую подпись нельзя подделать без закрытого ключа, а проверить может кто угодно.

В биткойнекаждая транзакция подписана закрытым ключом владельца монет.

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

RSA: подпись и проверка

  1. Два простых числаp · q = n

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

  2. Пара ключейоткрытый (n, e) · закрытый d

    Из этих чисел получаем два ключа. Открытый публикуем, закрытый не показываем никому.

  3. Подписьподпись = хеш^d mod n

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

  4. Проверкаподпись^e mod n = хеш?

    Любой применяет открытый ключ к подписи. Совпало с хешем документа — подпись настоящая.

ОговоркаВ книге этот пункт назван «изобретение открытых ключей шифрования». Сама идея — у Диффи и Хеллмана, RSA — её первая рабочая реализация.

1978Сети и консенсус3 из 24

Порядок событий

Лэмпорт: что случилось раньше

статья 1978 года
Идея

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

Что это

Логические часы и идея репликации автоматов (SMR): копии остаются одинаковыми, если выполняют одни и те же команды в одном порядке.

Кто придумал

Лесли Лэмпорт. Статья «Time, Clocks, and the Ordering of Events in a Distributed System», 1978.

В чём смысл изменения
Было

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

Стало

Порядок событий задаёт протокол, а не часы. Одинаковый порядок — одинаковое состояние у всех.

В биткойнепорядок команд — это порядок блоков в цепочке.

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

Репликация автоматов: почему важен порядок

старт: 0 · команды +10, ×2, −5
Реплика A+10×2−515
Реплика B×2+10−5+10×2−5515
Реплика C−5+10×2+10×2−51015
цепочкаблок 1: +10блок 2: ×2блок 3: −5

Команды те же, порядок разный — состояния разошлись: 15, 5 и 10. Чья версия правильная?

Порядок задают блоки, PoW делает его общим. Все исправные реплики применяют одно и то же и приходят к 15.

1979Криптография4 из 24

Дерево Меркла

Один отпечаток на всё сразу

патент 1979 года
Идея

Заменить длинный список данных одним коротким отпечатком — так, чтобы подмену любого элемента было видно сразу.

Что это

Дерево хешей: хеши данных складываются попарно, пока не останется один — корень.

Кто придумал

Ральф Меркл. Описал в патенте и диссертации, 1979.

В чём смысл изменения
Было

Чтобы убедиться, что в списке ничего не подменили, нужно сверить его целиком.

Стало

Достаточно сверить один корень — 32 байта на любое число записей.

В биткойнекорень Меркла всех транзакций лежит в заголовке блока.

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

Дерево Меркла: подменим одну транзакцию

  1. Листьяхеш(Tx1) … хеш(Tx4)

    У каждой транзакции считают хеш — короткий отпечаток.

  2. Парыхеш(1 + 2) · хеш(3 + 4)

    Хеши склеивают попарно и считают хеш от пары. И так уровень за уровнем.

  3. Кореньодин хеш наверху

    Наверху остаётся один хеш. Измени что-то внизу — он изменится тоже.

кореньf3d96b1e хеш(1 + 2)5be0 хеш(3 + 4)c7a208f4 Tx1Алиса → Бобу 5a41f Tx2Боб → Еве 27c09 Tx3Ева → Дэну 1Ева → Дэну 9e25b1d8e Tx4Дэн → Алисе 393c7

Корень — отпечаток всех транзакций. В заголовке блока лежит только он: 32 байта на любое число транзакций.

Поменяли одну цифру в Tx3 — поменялся корень. Подмена видна сразу, проверять все транзакции не нужно.

1980Криптография5 из 24

Протоколы Меркла

Как пользоваться открытыми ключами

статья 1980 года
Идея

Показать, как применять открытые ключи на практике: как раздавать их, заверять и подписывать ими.

Что это

Статья «Protocols for Public Key Cryptosystems»: распространение ключей, сертификаты, подписи на основе деревьев хешей.

Кто автор

Ральф Меркл. Одна из восьми работ, на которые ссылается Сатоши.

В чём смысл изменения
Было

Открытый ключ придуман, но непонятно, как узнать, что этот ключ действительно принадлежит Боре.

Стало

Появились протоколы: справочники ключей, сертификаты и дерево подтверждений.

В биткойнедерево Меркла в блоке сделано по этой статье — Сатоши ссылается на неё напрямую.

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

Протоколы Меркла: чей это ключ?

  1. Задачаключ Бори = ?

    Аня хочет написать Боре, но получила его открытый ключ от незнакомца. А вдруг ключ подменили?

  2. Справочникимя → ключ

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

  3. Сертификатподпись центра: «ключ Бори»

    Или пусть доверенный центр подпишет запись «этот ключ — Борин». Подпись проверит каждый.

  4. Деревокорень + путь к ключу

    Или сложить все ключи в дерево хешей и опубликовать корень. Тогда подлинность ключа доказывается коротким путём к корню.

Зачем это биткойнуТот же приём — «корень + короткий путь» — позволяет проверить, что транзакция есть в блоке, не скачивая блок целиком.

1982Цифровые деньги6 из 24

Слепая подпись

Чаум: анонимные цифровые деньги

статья 1982 года
Идея

Сделать цифровые деньги такими же анонимными, как наличные: банк подтверждает купюру, но не знает, кому её выдал.

Что это

Способ подписать документ, не видя его содержимого. Подпись при этом остаётся настоящей.

Кто придумал

Дэвид Чаум. Статья «Blind Signatures for Untraceable Payments», 1982.

В чём смысл изменения
Было

Электронный платёж всегда оставляет след: банк знает, кто, кому и сколько заплатил.

Стало

Банк гарантирует подлинность денег, но не может проследить их путь.

В биткойнеидея «цифровой наличности» — та самая задача, которую решал Сатоши.

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

Слепая подпись: конверт с копиркой

  1. Купюраномер: случайный

    Клиент сам создаёт купюру со случайным номером.

  2. Конвертномер × случайное число

    Прячет её в «конверт с копиркой». В математике это умножение на случайное число.

  3. Подписьбанк подписывает вслепую

    Банк ставит подпись на конверт. Через копирку она ложится на купюру. Клиент достаёт её из конверта.

ЭЛЕКТРОННАЯ КУПЮРА 100 № 7F3A·91C2 конверт с копиркой БАНК банк не видит номер

Клиент готовит купюру со случайным номером. Банк её ещё не видел.

Кладёт в конверт с копиркой. Номер спрятан — в криптографии это «ослепление» случайным множителем.

Банк подписывает конверт, не открывая. Через копирку подпись ложится на купюру.

Купюра с подписью банка. Любой проверит подпись, но банк не свяжет купюру с клиентом.

1982Сети и консенсус7 из 24

Византийские генералы

Как договориться, если кто-то врёт

статья 1982 года
Идея

Понять, может ли сеть прийти к общему решению, если часть её участников — предатели.

Что это

Задача о согласии в системе, где узлы могут не просто ломаться, а намеренно врать — разным соседям по-разному.

Кто сформулировал

Лесли Лэмпорт, Роберт Шостак и Маршалл Пиз. Статья 1982 года.

В чём смысл изменения
Было

Считалось, что узел либо работает, либо сломан и молчит.

Стало

Узел может врать. Доказано: договориться можно, только если предателей меньше трети.

В биткойнепервая система, решившая эту задачу в открытой сети, где участников никто не считал.

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

Византийские генералы

  1. Осадаатаковать или отступать?

    Несколько армий окружили город. Победить можно, только если все ударят одновременно.

  2. Гонцыгенерал → генерал

    Генералы договариваются через гонцов. Собраться вместе они не могут.

  3. Предательодному: «атакуем», другому: «отступаем»

    Среди генералов есть предатели. Они шлют разным соседям разные приказы, чтобы армии разошлись.

  4. Правиловсего ≥ 3 · предателей + 1

    Верные генералы всё равно договорятся, если предателей меньше трети. Например, 1 из 4.

СвязьПодробно задачу разбирали в прошлом докладе — «Распределённые системы». Здесь отмечаем только дату: 1982 год.

1980-еСети и консенсус8 из 24

TCP/IP

Общий язык для всех сетей

история интернета
Идея

Соединить разные сети в одну — так, чтобы у неё не было ни хозяина, ни главного узла.

Что это

Набор протоколов: IP доставляет пакеты по адресу, TCP следит, чтобы они дошли все и в правильном порядке.

Кто создал

Винт Серф и Боб Кан. 1 января 1983 года на TCP/IP перешла сеть ARPANET.

В чём смысл изменения
Было

Сети разных организаций говорят на разных языках и друг друга не понимают.

Стало

Любые два компьютера в мире могут обменяться данными. Так появился интернет.

В биткойнеузлы сети находят друг друга и обмениваются блоками поверх TCP/IP.

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

TCP/IP: как письмо доходит до адресата

  1. Пакетысообщение → 1 · 2 · 3 · 4

    Сообщение режут на небольшие пакеты. Каждый подписан: откуда и куда.

  2. Маршрутузел → узел → узел

    Каждый пакет идёт своим путём через промежуточные узлы. Сломался один путь — найдётся другой.

  3. Сборка3 · 1 · 4 · 2 → 1 · 2 · 3 · 4

    Получатель расставляет пакеты по номерам. Потерянные просит прислать заново.

  4. Без центранет главного узла

    Сетью никто не управляет целиком: каждый узел знает только, куда передать пакет дальше.

ОговоркаВ книге дата — просто «1980-е». Конкретный день — 1 января 1983 года, когда ARPANET перешла на TCP/IP.

1985Криптография9 из 24

Эллиптические кривые

Та же стойкость — ключ в 12 раз короче

статья Миллера, 1985
Идея

Получить ту же стойкость, что у RSA, но с гораздо более короткими ключами и подписями.

Что это

Криптография на точках особой кривой. Умножить точку на число легко, а узнать это число по результату — практически невозможно.

Кто придумал

Нил Коблиц и Виктор Миллер — независимо друг от друга, 1985.

В чём смысл изменения
Было

Надёжный ключ RSA — 3072 бита. Для системы, где подпись хранится вечно, это много.

Стало

Ключ в 256 бит даёт ту же стойкость. Подписи короткие и быстрые.

В биткойнекривая secp256k1: закрытый ключ — 32 байта. Та же кривая — в Ethereum.

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

Эллиптическая кривая: сложение точек

P Q P + Q y² = x³ + 7
RSA3072 бита
ЭКК256 бит
В биткойне — кривая secp256k1, как раз y² = x³ + 7. Закрытый ключ — 32 байта, в Ethereum та же кривая.
1991Метки времени и PoW10 из 24

Цепочка меток времени

Самая ранняя идея блокчейна

статья 1991 года
Идея

Доказать, что документ существовал в такой-то день и с тех пор не менялся, — никому при этом не доверяя.

Что это

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

Кто придумал

Стюарт Хабер и Скотт Сторнетта. Статья «How to Time-Stamp a Digital Document», 1991.

В чём смысл изменения
Было

Дату на цифровом документе можно поставить любую — и потом поменять.

Стало

Чтобы подделать одну запись, придётся переписать все записи после неё.

В биткойнекаждый блок хранит хеш предыдущего. Три из восьми ссылок Сатоши — на работы этих авторов.

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

Хеш-цепочка: перепишем документ задним числом

поменяем сумму в договоре задним числом
Документ 1 · 12.03Акт приёмкипред.: —хеш: 4c1e
Документ 2 · 15.03Договор на 100Договор на 900пред.: 4c1eхеш: 9a7b3f60
Документ 3 · 20.03Счётпред.: 9a7b ≠ 3f60хеш: d02c
Документ 4 · 02.04Оплатапред.: d02cхеш: 71b5 · не сходится

Каждый документ «пристёгнут» к предыдущему. С 1995 года компания авторов, Surety, раз в неделю печатает итоговый хеш в New York Times — бумажную копию не перепишет никто.

Изменили документ 2 — изменился его хеш. Документ 3 ссылается на старый хеш, цепочка рвётся. Чтобы скрыть подделку, придётся переписать всё после неё.

1992Метки времени и PoW11 из 24

Плата вычислениями

Первое доказательство работы

статья 1992 года
Идея

Сделать спам невыгодным: пусть за каждое письмо отправитель «платит» работой своего компьютера.

Что это

Прежде чем отправить письмо, компьютер решает небольшую задачу. Проверить решение получателю — мгновенно.

Кто придумал

Синтия Дворк и Мони Наор. Статья «Pricing via Processing or Combatting Junk Mail», 1992.

В чём смысл изменения
Было

Отправить миллион писем стоит столько же, сколько одно, — почти ничего.

Стало

Одно письмо — секунда работы, незаметно. Миллион писем — недели работы.

В биткойнето же доказательство работы защищает сеть: майнинг вырос из борьбы со спамом.

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

Плата вычислениями: письмо со «штампом»

  1. Письмокому: Боря

    Аня хочет отправить Боре письмо. Почтовый сервер Бори бесплатно его не примет.

  2. Задачареши для этого письма

    Компьютер Ани решает задачу, привязанную именно к этому письму и адресату. На это уходит около секунды.

  3. Штампписьмо + решение

    Решение прикладывается к письму, как марка. Использовать его для другого письма нельзя.

  4. Проверкаодно вычисление

    Сервер Бори проверяет решение мгновенно. Нет решения — письмо считается спамом.

СмыслЧестному человеку секунда на письмо незаметна. Спамеру с миллионом писем нужны недели — рассылка перестаёт окупаться.

1993Метки времени и PoW12 из 24

Метки времени + дерево Меркла

Пачка документов — одна запись

статья 1993 года
Идея

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

Что это

Документы за период складывают в дерево Меркла, и в цепочку меток времени идёт только его корень.

В чём смысл изменения
Было

Одна запись в цепочке — один документ. Цепочка быстро разрастается.

Стало

Одна запись — тысячи документов. Это уже почти устройство блока.

В биткойнеблок = пачка транзакций, а в его заголовке — один корень Меркла.

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

Две идеи вместе: цепочка и дерево

  1. Пачкадокументы за неделю

    Служба собирает все документы, пришедшие за период.

  2. Дереводокументы → корень

    Из их хешей строит дерево Меркла и получает один корень.

  3. Цепочкакорень + хеш прошлой записи

    В цепочку меток времени записывается только корень, сцепленный с предыдущей записью.

  4. Доказательстводокумент + путь к корню

    Чтобы доказать дату одного документа, достаточно показать его путь к корню — несколько хешей.

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

1995Цифровые деньги13 из 24

DigiCash

Цифровая наличность в настоящих банках

Wikipedia — DigiCash
Идея

Запустить в настоящих банках электронные деньги, которые нельзя ни подделать, ни отследить.

Что это

Компания Чаума и её система eCash. Монеты — файлы со слепой подписью банка; банк ведёт список уже потраченных.

Кто создал

Дэвид Чаум. Компания основана в 1989 году; в 1995-м eCash выпустил американский Mark Twain Bank.

В чём смысл изменения
Было

Цифровые деньги либо отслеживаются, как карта, либо копируются, как файл.

Стало

eCash и анонимен, и защищён от копий. Но всё держится на банке — в 1998 году компания обанкротилась.

В биткойнете же два требования — подотчётность и анонимность, — но без центра.

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

Два требования к электронной наличности

Требование 1

Подотчётность

  • Деньги можно потратить только один раз
  • Потратить их может только законный владелец
Требование 2

Анонимность

  • Как наличные: путь купюры не отследить
  • Пользователь решает, кому раскрыть данные
Способ платить
Подотчётность
Анонимность
В чём подвох
Банковская карта
да
нет
Каждую покупку видит платёжная система
Файл «монета»
нет
да
Файл копируется — двойная трата
DigiCash Чаума
да
да
Нужен центральный банк-эмитент. Компания обанкротилась в 1998
1998Цифровые деньги14 из 24

Bit Gold

Цифровое «золото» из вычислений

запись в блоге Сабо
Идея

Сделать цифровой аналог золота: ценность, которую трудно «добыть» и которой не управляет ни один банк.

Что это

Проект денег, где «слиток» — это решение трудной вычислительной задачи, а записи о владении ведут сами участники.

Кто придумал

Ник Сабо. Замысел — 1998 год, публично описан в блоге в 2005-м. Запущен не был.

В чём смысл изменения
Было

Цифровые деньги выпускает банк или компания — им приходится верить.

Стало

Деньги «добываются» вычислениями, эмитента нет. Не решено одно: как участникам договориться.

В биткойнепочти готовый чертёж: добыча работой и цепочка решений.

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

Bit Gold: как «добывается» слиток

  1. Задачастрока-условие

    Участник получает строку-условие и ищет к ней решение — это требует много вычислений.

  2. Слитокрешение = «золото»

    Найденное решение и есть слиток: подделать его нельзя, только добыть заново.

  3. Реестрслиток № 17 → владелец

    Решение с меткой времени записывается в общий реестр собственности, который ведут участники.

  4. Цепочкарешение → новое условие

    Условие следующей задачи берётся из предыдущего решения. Слитки выстраиваются в цепочку.

Чего не хватилоРеестр предлагалось вести «византийским кворумом» участников. Как сделать это в открытой сети, где любой может создать тысячу фальшивых участников, осталось без ответа.

1998Цифровые деньги15 из 24

b-money

Реестр ведут сами участники

текст b-money
Идея

Убрать банк совсем: пусть каждый участник сам ведёт запись о том, у кого сколько денег.

Что это

Описание анонимных электронных денег: они создаются вычислениями, а переводы объявляются всей сети.

Кто придумал

Вей Дай. Рассылка cypherpunks, ноябрь 1998. Первая ссылка в статье Сатоши.

В чём смысл изменения
Было

Двойную трату ловит банк: только у него есть список потраченных монет.

Стало

Список ведут все. Осталось понять, как им договориться, какая трата была первой.

В биткойнерешил именно это: общий реестр и общий порядок трат.

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

Двойная трата: кто ведёт реестр

  1. Копиямонета → 2 магазина

    Цифровую монету можно скопировать и потратить дважды. Подпись на обеих копиях настоящая.

  2. Банкреестр у центра

    Чаум отдал список потраченных монет банку. Работает, но всё держится на одном центре.

  3. Всереестр у каждого

    Вей Дай отдал реестр всем участникам. Тогда им нужно договориться о порядке трат — без доверия друг к другу.

банк7F3A —потрачена кто первый? 1007F3A 7F3A 7F3A магазин 1✓ принято? магазин 2✓ принято✗ отказ?

Одну монету скопировали и потратили дважды. Оба магазина приняли — каждый видит настоящую подпись.

Банк ведёт реестр потраченных номеров и вторую трату отклоняет. Работает — но всё держится на одном центре.

Реестр ведут все узлы. Тогда им нужно договориться, какая трата была первой, — без доверия друг к другу. Это и решит биткойн.

1999Сети и консенсус16 из 24

Napster

Музыка от человека к человеку

Wikipedia — Napster
Идея

Меняться музыкой напрямую: файл идёт с компьютера на компьютер, минуя сервер.

Что это

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

Кто создал

Шон Фэннинг и Шон Паркер. Запущен в июне 1999 года.

В чём смысл изменения
Было

Файлы раздаёт сервер: он платит за хранение и трафик и отвечает за всё.

Стало

Миллионы людей раздают файлы друг другу. Но поиск остался в центре — и суд в 2001 году его выключил.

В биткойнеурок Napster: если у сети есть центр, её можно закрыть.

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

Napster: сеть с центром

  1. Списоку меня есть: …

    Программа сообщает серверу, какие песни лежат на вашем компьютере.

  2. Поисксервер: «песня у Бори»

    Вы спрашиваете у сервера песню. Он отвечает, у кого она есть.

  3. СкачиваниеБоря → вы

    Файл идёт напрямую от Бори к вам. Сервер в этом не участвует.

индекс есть файл ищет

Файл идёт от пира к пиру, а поиск — через сервер. Быстро и удобно, но центр есть.

2001: суд — и серверы выключены. Пиры на месте, а сети больше нет. Центр — единая точка отказа.

Запрос расходится волной от соседа к соседу. Центра нет, но каждый поиск будоражит всю сеть.

Узлы стоят на кольце и знают «дальних» соседей. Нужный узел — за несколько прыжков. Так ищут узлы и в Ethereum.

1999Метки времени и PoW17 из 24

TIMESEC

Метки времени с минимумом доверия

статья 1999 года
Идея

Построить службу меток времени, которой почти не нужно доверять: её работу может проверить любой.

Что это

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

Кто создал

Анри Массиас, Хавьер Серрет Авила и Жан-Жак Кискатер. Вторая ссылка в статье Сатоши.

В чём смысл изменения
Было

Службе меток времени приходится верить на слово, что она не меняет записи.

Стало

Служба публикует отпечатки своей работы. Обман сразу виден всем.

В биткойнеСатоши называет биткойн распределённым сервером меток времени.

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

TIMESEC: служба, которой не нужно верить

  1. Запросхеш документа → служба

    Клиент отправляет службе не документ, а только его хеш. Содержимое остаётся в тайне.

  2. Раундхеши за период → дерево

    Все хеши, пришедшие за короткий период, служба складывает в дерево.

  3. Цепочкакорень + прошлый раунд

    Корень дерева сцепляется с итогом прошлого раунда. Вставить запись задним числом нельзя.

  4. Публикацияитог раунда — всем

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

Зачем это здесьЧетыре ссылки из восьми в статье Сатоши — про метки времени. Метка здесь значит не «который час», а «в каком порядке».

2000Сети и консенсус18 из 24

Gnutella

Сеть, у которой нет центра

Wikipedia — Gnutella
Идея

Убрать из сети обмена файлами сервер совсем — тогда её нечем будет выключить.

Что это

Полностью одноранговая сеть: каждый узел знает нескольких соседей и передаёт им запросы.

Кто создал

Джастин Франкел и Том Пеппер, компания Nullsoft. Март 2000 года.

В чём смысл изменения
Было

В Napster поиск идёт через сервер. Выключили сервер — сети нет.

Стало

Запрос расходится от соседа к соседу. Закрывать нечего: центра не существует.

В биткойнетак же расходятся по сети новые транзакции и блоки.

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

Gnutella: запрос идёт волной

  1. Соседиузел ↔ 4–5 соседей

    Каждый узел держит связь с несколькими другими. Всей сети не знает никто.

  2. Волнасосед → его соседи → …

    Запрос «у кого есть песня?» узел шлёт соседям, те — своим соседям, и так дальше.

  3. Ответназад по той же цепочке

    Тот, у кого файл нашёлся, отвечает. Скачивание идёт напрямую.

индекс есть файл ищет

Файл идёт от пира к пиру, а поиск — через сервер. Быстро и удобно, но центр есть.

2001: суд — и серверы выключены. Пиры на месте, а сети больше нет. Центр — единая точка отказа.

Запрос расходится волной от соседа к соседу. Центра нет, но каждый поиск будоражит всю сеть.

Узлы стоят на кольце и знают «дальних» соседей. Нужный узел — за несколько прыжков. Так ищут узлы и в Ethereum.

2001Сети и консенсус19 из 24

BitTorrent и DHT

Файл по кускам, поиск без сервера

статья о Kademlia
Идея

Сделать сеть без центра не только живучей, но и быстрой: чтобы нужное находилось за несколько шагов.

Что это

BitTorrent качает файл кусками сразу у многих. Распределённая хеш-таблица (DHT) находит нужный узел без сервера.

Кто создал

Брэм Коэн — BitTorrent, 2001. DHT Kademlia — Петар Маймунков и Давид Мазьер, 2002.

В чём смысл изменения
Было

В Gnutella каждый запрос обходит всю сеть: чем она больше, тем медленнее.

Стало

Узел находится за несколько «прыжков», даже если узлов миллионы.

В биткойнеравноправные узлы без центра. По образцу Kademlia ищет узлы Ethereum.

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

DHT: найти узел за несколько прыжков

  1. Кольцоу каждого узла — номер

    Узлы получают номера и мысленно встают по кругу. У каждого файла тоже есть номер.

  2. Соседиближние и дальние

    Узел знает несколько ближних соседей и несколько дальних — через полкруга, четверть круга и так далее.

  3. Прыжкивдвое ближе с каждым шагом

    Запрос передают тому знакомому, чей номер ближе к нужному. Каждый прыжок сокращает путь вдвое.

индекс есть файл ищет

Файл идёт от пира к пиру, а поиск — через сервер. Быстро и удобно, но центр есть.

2001: суд — и серверы выключены. Пиры на месте, а сети больше нет. Центр — единая точка отказа.

Запрос расходится волной от соседа к соседу. Центра нет, но каждый поиск будоражит всю сеть.

Узлы стоят на кольце и знают «дальних» соседей. Нужный узел — за несколько прыжков. Так ищут узлы и в Ethereum.

2002Метки времени и PoW20 из 24

Hashcash

Найти трудно, проверить — один хеш

статья 2002 года
Идея

Сделать «плату вычислениями» простой: вместо сложной математики — одна хеш-функция.

Что это

К данным подбирают число (nonce), пока их хеш не начнётся с нужного количества нулей.

Кто придумал

Адам Бэк. Идея — 1997 год, рассылка cypherpunks; статья — 2002. Шестая ссылка Сатоши.

В чём смысл изменения
Было

Доказательство работы есть, но схемы сложные, и трудность задачи не настроить.

Стало

Трудность задаётся числом нулей. Найти ответ дорого, проверить — одно вычисление.

В биткойнемайнинг — это Hashcash: ищем nonce, при котором хеш блока меньше порога.

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

Hashcash вживую

  1. Данныетекст + nonce

    Берём данные и добавляем к ним число — nonce. Начинаем с нуля.

  2. Переборхеш начинается с 0000?

    Считаем хеш. Не подошёл — увеличиваем nonce и пробуем снова. Угадать нельзя, только перебирать.

  3. Проверкаодин хеш

    Нашли — показываем nonce. Проверяющий считает хеш один раз и видит нули.

данныеКнижный клуб · блок 1 · соль=7a3c · nonce=0
хеш—
попыток0
в среднем нужно65 536
проверка1хеш
Каждый лишний ноль — в 16 раз больше работы.
2004Метки времени и PoW21 из 24

RPoW

Доказательство работы как монета

описание RPoW
Идея

Не выбрасывать решённую задачу после первого использования, а передавать её дальше — как монету.

Что это

Reusable Proofs of Work: сервер меняет доказательство работы на подписанный жетон, который можно передать другому.

Кто создал

Хэл Финни, 2004. Через пять лет он получит первую транзакцию биткойна.

В чём смысл изменения
Было

Штамп Hashcash одноразовый: потратил на одно письмо — и он сгорел.

Стало

Работа превращается в жетон, который переходит из рук в руки. Это уже почти деньги.

В биткойнемонета, рождённая работой, — тот же принцип. Только сервера больше нет.

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

RPoW: работа, которую можно передать

  1. РаботаHashcash-решение

    Аня тратит вычисления и получает доказательство работы — как в Hashcash.

  2. Обменрешение → жетон

    Она отправляет его серверу RPoW. Сервер проверяет решение и выдаёт взамен подписанный жетон.

  3. ПередачаАня → Боря

    Аня отдаёт жетон Боре. Боря несёт его серверу и получает новый — уже на своё имя.

  4. Защитастарый жетон погашен

    Сервер помнит погашенные жетоны, так что потратить один дважды нельзя.

Слабое местоСервер по-прежнему один. Финни защитил его особым «железом», которое позволяло проверить, какая программа на нём работает, — но центр остался.

2005Сети и консенсус22 из 24

PoW против Сивиллы

Один человек — тысяча узлов

статья 2005 года
Идея

Защитить голосование в открытой сети от того, кто создал себе тысячу фальшивых участников.

Что это

Исследование: вычислительные головоломки делают каждый «голос» дорогим, и подделать большинство становится не по карману.

Кто авторы

Джеймс Аспнес, Коллин Джексон и Арвинд Кришнамурти, Йель, 2005.

В чём смысл изменения
Было

Один узел — один голос. Но узлов можно создать сколько угодно, и бесплатно.

Стало

Голос привязан к вычислениям: чтобы получить большинство, нужно больше мощности, чем у всех остальных.

В биткойне«один процессор — один голос»: поэтому в сеть можно пускать кого угодно.

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

Атака Сивиллы и защита от неё

  1. Голосование1 узел = 1 голос

    Сеть принимает решения большинством. Участников никто не регистрирует.

  2. Сивилла1 человек → 1000 узлов

    Злоумышленник запускает тысячу фальшивых узлов. Теперь большинство — это он один.

  3. Головоломкаголос = решённая задача

    Пусть каждый голос подтверждается вычислительной работой. Фальшивый узел сам по себе ничего не стоит.

  4. Итогголоса = мощность

    Тысяча узлов на одном компьютере дают столько же голосов, сколько один. Подделать большинство дорого.

ОговоркаSybil в книге переведена как «Сибил». Название — от имени героини книги о женщине со множеством личностей.

2008Биткойн23 из 24

Статья Сатоши

Девять страниц, которые всё собрали

bitcoin.org/bitcoin.pdf
Идея

Собрать из известных идей электронную наличность, которой не нужен ни банк, ни доверие между участниками.

Что это

Статья «Bitcoin: A Peer-to-Peer Electronic Cash System»: подписи, цепочка блоков, доказательство работы и одноранговая сеть — в одной системе.

Кто автор

Сатоши Накамото — псевдоним; кто за ним стоит, неизвестно. Опубликована 31 октября 2008 года.

В чём смысл изменения
Было

Двойную трату ловит банк. Без центра участники не могут договориться, какая трата первая.

Стало

Порядок трат задаёт цепочка блоков, а PoW делает этот порядок общим для всех.

В биткойнеэто он и есть — на бумаге. До запуска сети остаётся два месяца.

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

Что предложил Сатоши

  1. Подписьвладелец → получателю

    Монета — это цепочка подписей: каждый владелец подписывает передачу следующему.

  2. Рассылкатранзакция → всем узлам

    Транзакции объявляются всей сети. Узлы собирают их в блок.

  3. Работаблок + nonce → хеш с нулями

    Чтобы блок приняли, узел должен найти для него доказательство работы — как в Hashcash.

  4. Цепочкапобеждает самая длинная

    Блоки сцеплены хешами. Верной считается цепочка, в которую вложено больше всего работы.

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

2009Биткойн24 из 24

Генезис-блок

Биткойн запущен

блок 0 в обозревателе
Идея

Перейти от статьи к работающей сети: создать первый блок, от которого пойдёт вся цепочка.

Что это

Блок № 0 сети Bitcoin. В него вписан заголовок газеты The Times того же дня — о втором спасении банков.

Кто создал

Сатоши Накамото, 3 января 2009. 12 января — первая транзакция: 10 BTC Хэлу Финни, блок 170.

В чём смысл изменения
Было

Электронная наличность без банка существует только в статьях и провалившихся проектах.

Стало

Сеть работает. Первая практическая реализация e-cash — и первый блокчейн.

В биткойнев одном блоке сошлись все линии таймлайна — посмотрите в блоке ниже.

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

Блок биткойна: откуда каждая его часть

  1. Наведите на полешкала внизу подсветится

    Каждое поле блока — одна из идей таймлайна. Шкала внизу покажет, из каких она лет.

  2. Заголовокхеш · корень · время · nonce

    Хеш-цепочка 1991 года, дерево Меркла 1979-го, метки времени и Hashcash.

  3. Содержимоетранзакции с подписями

    Открытые ключи, эллиптические кривые и идеи цифровой наличности. А копия блока — у каждого узла P2P-сети.

Блок№ N
хеш предыдущего блока1991 · хеш-цепочка
корень Меркла1979 · дерево хешей
время1991–1999 · метки времени
сложность и nonce1992–2005 · PoW
транзакции с подписями1976–1998 · ключи, ЭКК, e-cash
копия у каждого узла P2P-сети1978–2001 · сети и консенсус

Из чего собран биткойн

₿Биткойн2009

Шифрование с открытым ключом

1976–1980

Криптография эллиптических кривых

1985

Хеш-функции

1979–1993

Электронные денежные схемы

1982–1998

Доверенная временная метка

1991–1999

Hashcash

1992–2002

Повторно используемое доказательство работы

2004

Одноранговая сеть

1980-е–2001

На кого ссылается Сатоши

В статье о биткойне всего восемь ссылок. Шесть из них — точки нашего таймлайна, они подсвечены на шкале внизу.

№
Работа
Год
[1]
Вей Дай — b-money
1998
[2]
Массиас, Серрет Авила, Кискатер — служба меток времени (TIMESEC)
1999
[3]
Хабер, Сторнетта — как поставить метку времени на документ
1991
[4]
Байер, Хабер, Сторнетта — метки времени эффективнее и надёжнее
1993
[5]
Хабер, Сторнетта — защищённые имена для битовых строк
1997
[6]
Адам Бэк — Hashcash
2002
[7]
Ральф Меркл — протоколы для систем с открытым ключом
1980
[8]
Вильям Феллер — теория вероятностей (для расчёта атаки)
1957
Половина ссылок — про метки времени. Сатоши сам описывает биткойн как одноранговый распределённый сервер меток времени: он отвечает на вопрос, какая трата была первой.

Что из этой истории работает в 2026

Почти ничего из таймлайна не устарело. Одна идея под угрозой: эллиптические кривые против будущих квантовых компьютеров.

1979 · дерево Меркла

В каждом блоке Bitcoin. Та же идея — в git и в BitTorrent v2.

1982 · слепая подпись

Чаумовская наличность вернулась: Cashu и Fedimint выпускают ecash поверх биткойна.

1985 · эллиптические кривые

secp256k1 в Bitcoin и Ethereum. С Taproot (2021) — подписи Шнорра на той же кривой.

1991 · метки времени

OpenTimestamps (с 2016) закрепляет хеши в биткойне. Surety всё ещё печатает хеш в газете.

1992–2002 · PoW

Защищает Bitcoin. Ethereum ушёл с PoW на PoS в сентябре 2022.

2001 · DHT

Поиск узлов в Ethereum (discv5) устроен по образцу Kademlia.

происходит сейчас  квантовая угроза ЭКК

NIST утвердил постквантовые стандарты в августе 2024. Для Bitcoin есть черновики BIP 360 (P2MR — выход без открытого ключа на виду) и BIP 361 (2026, план ухода от старых подписей). В сети ничего не активировано, сроков нет.

Выводы: тридцать лет — одна сборка

Каждый кусок таймлайна дал биткойну одну деталь. Блокчейн — это то, что получилось, когда их соединили.

Ключи1976–78
Хеш-деревья1979
Слепая подпись1982
Хеш-цепочка1991
PoW1992–2002
P2P1999–2001
Биткойн2009
Новое в биткойне — не детали, а то, что он решил двойную трату без доверенного центра: порядок транзакций задаёт цепочка блоков, а PoW делает этот порядок общим.
Имран Баширавтор «Mastering Blockchain»

Что далее

Антон Помазков
Антон Помазков
История блокчейна Пройдено
Антон Помазков
Введение в блокчейн
Артём Никифоров
Типы блокчейна
Артём Никифоров