Что такое блокчейн
Зачем это нужно
Блокчейн (blockchain, от block — «блок» и chain — «цепь») — это способ хранить записи так, чтобы их нельзя было незаметно подделать или стереть, даже если у записей нет единого хозяина. Слово звучит громко, но идея внутри простая: вместо одной тетради, которую ведёт один бухгалтер, — тысячи одинаковых тетрадей у тысяч независимых участников, а каждая новая страница накрепко приклеена к предыдущей математической печатью.
Эта глава — без единой строчки кода. Здесь нет компилятора, который проверит твоё понимание, поэтому мы разберём каждое понятие на пальцах: что такое блок, что такое хеш и почему его нельзя подделать, зачем нужна распределённость, как выглядит запись о переводе (транзакция) и чем приватный блокчейн отличается от публичного. Именно эти пять идей — фундамент всего трека: следующая глава запустит настоящую сеть из трёх нод на платформе Waves Enterprise, а без этой базы шаги оттуда будут выглядеть магией. Ничего не считаем очевидным — если термин произнесён, он объяснён на месте, с английским оригиналом в скобках и карточкой в конце главы.
- Зачем это нужно
- Блок и хеш: цепочка, которую нельзя подделать
- Распределённость: одна книга, тысячи копий
- Как узлы договариваются: консенсус
- Путь одной транзакции: от подписи до необратимости
- Приватный блокчейн vs публичный
- Блокчейн, криптовалюта и смарт-контракт — не одно и то же
- Почему нельзя получить всё сразу: компромиссы блокчейна
- Где это встречается в жизни
- Типичные заблуждения
- Слова главы
- Проверь себя руками
- Символы и обозначения главы
- Куда дальше: проверенные ресурсы
- Челлендж ⭐
- Что должен уметь
Как это было
Блок и хеш: цепочка, которую нельзя подделать
Хеш на пальцах
Хеш (hash) — это функция, которая берёт данные любого размера — одно слово или весь текст «Войны и мира» — и превращает их в строку фиксированной длины, которая выглядит как случайный набор букв и цифр. По-русски это называют «отпечатком» или «цифровым слепком»: как и отпечаток пальца, хеш короткий, уникальный для практических целей и не позволяет восстановить исходные данные в обратную сторону.
У криптографического хеша (мы будем использовать алгоритм SHA-256 — тот же, что использует Bitcoin) есть три свойства, которые и делают блокчейн блокчейном:
- Детерминированность. Одни и те же входные данные всегда дают один и тот же хеш. Хешируешь строку
"Alice->Bob:5"сегодня, через год, на другом компьютере — результат один и тот же, потому что алгоритм не использует ничего случайного. - Лавинный эффект (avalanche effect). Меняешь во входных данных один-единственный символ — хеш меняется почти полностью, будто ты подбросил монету заново для каждого бита результата. Половинчатых изменений не бывает.
- Необратимость. По хешу нельзя вычислить исходные данные — только перебором всех вариантов, что для длинного текста практически невозможно.
Ниже — не выдуманный, а настоящий пример: так выглядит SHA-256 от строки "Alice->Bob:5", посчитанный прямо для этой главы.
Попробуй дома — в терминале выполни printf 'Alice->Bob:5' | shasum -a 256 (на Linux вместо shasum -a 256 пиши sha256sum). На любом компьютере в мире результат совпадёт до последнего символа, потому что SHA-256 — открытый, детерминированный алгоритм, а не секрет конкретной программы.
Одна тонкость: хешируется не «текст», а ровно те байты, которые ты подал. Если сохранить строку в файл редактором или вывести её через echo, в конец добавится невидимый перевод строки — это уже другие входные данные, и хеш будет совсем другим (5988fb03…). Именно поэтому в команде выше стоит printf, а не echo: он ничего не дописывает.
…Как это устроено под капотом
Блок: данные плюс хеш предыдущего блока
Блок (block) — это пачка данных (обычно — набор транзакций за какой-то промежуток времени), у которой есть номер, собственный хеш и одно особое поле: хеш предыдущего блока. Именно это поле и превращает набор отдельных блоков в цепочку (chain).
Смысл именно в этом устройстве: блок #483 хранит внутри себя хеш блока #482, блок #482 — хеш блока #481, и так до самого первого блока (его называют genesis block — «блок бытия», у него единственного нет предыдущего). Получается цепь, где каждое звено физически держится за соседа своим отпечатком.
Почему подмену обнаружат
Представь, что кто-то хочет задним числом подменить данные в блоке #481 — например, переписать сумму перевода. Изменение хотя бы одного символа в блоке #481 (см. лавинный эффект выше) полностью меняет его хеш. Но блок #482 уже хранит внутри себя старый хеш блока #481 — и при проверке цепи окажется, что сохранённый в блоке #482 хеш_пред не совпадает с реальным, только что пересчитанным хешем блока #481.
Подделать один блок незаметно нельзя: пришлось бы пересчитать хеши у него и у вообще всех блоков после него, причём быстрее, чем остальная сеть добавляет новые блоки. Дальше в этой главе разберём, почему в приватной и в публичной сети это «быстрее, чем остальная сеть» устроено по-разному.
0000000000…000000…………………А теперь почувствуй, откуда в публичных сетях берётся та самая «тяжёлая работа»: майнинг — это перебор числа nonce до тех пор, пока хеш блока не начнётся с нужного количества нулей. Другого способа найти подходящий nonce не существует — только пробовать снова и снова, и именно поэтому подделать блок задним числом так дорого.
…Как это устроено под капотом
Распределённость: одна книга, тысячи копий
Реестр (ledger) — это и есть та самая «бухгалтерская книга», куда записывают все транзакции по порядку. В блокчейне реестр распределён (distributed): полная копия всей цепочки хранится не на одном сервере, а у каждого узла сети (node) — независимой программы, которая хранит цепочку, проверяет новые блоки по правилам (проверка из раздела выше) и обменивается данными с соседними узлами.
Разница с привычным «облаком» принципиальная. Когда фото хранится в облачном сервисе, есть один хозяин инфраструктуры: если его сервер сломается, случится атака или он решит стереть файл — фото пропадёт. В распределённой сети с сотнями независимых узлов, чтобы подделать историю, нужно договориться (или взломать) с большинством узлов одновременно — а они принадлежат разным, часто вообще не связанным друг с другом людям и организациям.
Транзакция: запись о переводе
Транзакция (transaction) — это единичная запись о действии, обычно о переводе чего-то одного участника другому. Разберём по частям учебную запись перевода — ровно ту форму, которую каждый узел сети умеет проверить самостоятельно.
Цель: скорость ≥ 90 зн/мин, точность ≥ 90%
Alice -> Bob: 5 монет, подпись, хеш
Цифровая подпись: доказательство согласия
Цифровая подпись (digital signature) решает вопрос «а точно ли это одобрила именно Alice?». У каждого участника сети есть пара математически связанных ключей: закрытый (private key) — секрет, который никому не показывают, и открытый (public key) — его можно свободно публиковать. Подписать транзакцию значит применить к её данным закрытый ключ; проверить подпись может кто угодно, используя только открытый ключ — без доступа к секрету.
Вот настоящая, а не выдуманная подпись — по-настоящему сгенерированный ключ подписал строку Alice->Bob:5, и та же строка ниже реально проверена соответствующим открытым ключом:
подпись: MEYCIQDNV61c9HV6x9iOCTVnsHh+40RPdLWGWBJwY4F4i7NR0QIhAKB7FvTWA29RxTeMJKDtvWcKVuJvtLDvdyEkPKqszdnx
проверка открытым ключом: Verified OK
Подпись даёт сразу два свойства: аутентификацию (перевод точно инициировала Alice, а не кто-то другой — подделать подпись без закрытого ключа нельзя) и целостность (если изменить в транзакции хоть цифру суммы, старая подпись перестанет быть действительной для нового текста — она привязана именно к исходным данным через хеш). Поэтому в блокчейне не нужен банк-посредник, который «на честном слове» подтверждает: «да, это точно Alice». Математика подтверждает это сама, и проверить может каждый узел независимо.
А теперь то же самое живьём: подпись выше была посчитана заранее, а здесь твой браузер сгенерирует настоящую пару ключей ECDSA и подпишет сообщение прямо сейчас. Проверь подпись, потом измени в сообщении хоть один символ — и посмотри, что скажет проверка.
Как узлы договариваются: консенсус
Остался последний вопрос: если узлов тысячи и каждый может предложить свой вариант следующего блока, кто решает, чей вариант считается «настоящим»? За это отвечает консенсус (consensus) — алгоритм, по которому независимые узлы договариваются об одной и той же версии цепочки без центрального координатора.
Какую именно проблему решает консенсус
Представь: у Alice на счету всего 5 монет, но она одновременно рассылает две транзакции — Alice->Bob:5 и Alice->Carol:5. Первую она отправляет нодам с одной стороны сети, вторую — с другой. Без единого координатора в какой-то момент у разных групп нод — своя, слегка разная версия «правды»: одни уже видели перевод Bob'у, другие — перевод Carol'е. Это и есть двойная трата (double-spend) — ровно та проблема, ради решения которой блокчейну вообще нужен консенсус, а не только хеши и подписи сами по себе. Хеш и подпись проверяют лишь «действительно ли это одобрила Alice» — каждая из двух транзакций по отдельности абсолютно честная и правильно подписанная. Они ничего не говорят о том, в каком порядке два таких перевода должны попасть в единую историю, если исполнить оба нельзя физически.
Консенсус решает это тем, что заставляет всю сеть сойтись к одному-единственному порядку блоков: как только одна из двух транзакций Alice попадает в блок, принятый большинством сети, вторая при проверке (тот самый пересчёт остатка на счету Alice) окажется недействительной — средств для неё уже не осталось. Формально задача заставить множество независимых участников — часть которых может ошибаться или вести себя нечестно — договориться об одном и том же известна в информатике как задача византийских генералов (Byzantine Generals Problem, 1982 год). Блокчейн-консенсус — один из практических способов решить её в открытой сети, где участники даже не знают заранее, сколько их всего и кому из них можно доверять.
В публичных сетях, где узлом может стать кто угодно анонимно, право предложить следующий блок обычно нужно заслужить — иначе сеть было бы легко наводнить поддельными узлами. Два самых известных подхода:
- Proof of Work (доказательство работы). Узлы решают заведомо трудную вычислительную задачу; кто первый нашёл решение — тот и предлагает блок. Подделать историю значит переделать эту тяжёлую работу для всех блоков после подделываемого и обогнать остальную сеть — на практике невозможно.
- Proof of Stake (доказательство доли). Право предложить блок получают пропорционально тому, сколько узел «заморозил» своих средств в сети как залог: попытка обмана обойдётся ему же в потерю этого залога. Именно на этот механизм перешёл Ethereum.
В приватных, разрешённых сетях участники уже известны заранее и частично друг другу доверяют — тратить электричество на тяжёлые вычисления незачем. Поэтому такие платформы, включая Waves Enterprise, обычно поддерживают на выбор несколько более быстрых и дешёвых алгоритмов: например, вариант доказательства доли, адаптированный под известный круг участников, вариант «доказательства полномочий» (Proof of Authority), где право предлагать блок явно закреплено за конкретными доверенными узлами, и вариант отказоустойчивого голосования, устойчивый к тому, что часть узлов может на время выйти из строя. Какой именно алгоритм выбрать — решает администратор сети ещё на этапе её создания; в следующей главе мы настроим ровно такую сеть на практике.
Путь одной транзакции: от подписи до необратимости
Все понятия разобраны по отдельности — хеш, блок, подпись, консенсус. Соберём их в одну историю: что происходит с транзакцией Alice -> Bob: 5 монет с момента, когда Alice нажимает «отправить», до момента, когда Bob может быть уверен, что перевод уже не отменят.
- Alice создаёт и подписывает транзакцию. Кошелёк (wallet) — программа, которая хранит закрытый ключ Alice, — собирает запись
Alice->Bob:5, считает от неё хеш и подписывает этот хеш закрытым ключом. Готовая транзакция — данные, подпись и хеш вместе — теперь может быть отправлена в сеть. - Транзакция расходится по сети. Кошелёк Alice отправляет её не напрямую Bob'у, а тем нодам, к которым сам подключён. Каждая нода, получив новую транзакцию, проверяет подпись и остаток на счету Alice и, если всё сходится, пересылает её дальше своим соседям. За несколько секунд транзакция расходится по всей сети — примерно как слух передаётся от человека к человеку, только с проверкой на каждом шаге.
- Она ждёт своей очереди в mempool. Каждая нода хранит локально список уже проверенных, но ещё не вошедших ни в один блок транзакций — пул неподтверждённых транзакций (mempool, memory pool). Транзакция Alice лежит в mempool у сотен нод одновременно, ожидая, пока кто-то не соберёт из таких транзакций следующий блок.
- Кто-то предлагает блок. По правилам консенсуса сети — PoW, PoS или другой алгоритм из раздела выше — право собрать очередной блок получает один узел: он берёт пачку транзакций из своего mempool, включая транзакцию Alice, добавляет хеш предыдущего блока и рассылает готовый блок остальным.
- Остальные ноды проверяют блок целиком. Получив блок, каждая нода независимо перепроверяет: подписи всех транзакций внутри, совпадение хеш_пред с реальным хешем предыдущего блока, соблюдение правил консенсуса. Если всё сходится, нода добавляет блок к своей копии цепочки и убирает вошедшие в него транзакции из своего mempool.
- Перевод виден, но пока не окончательный. Формально Bob уже получил свои 5 монет — они есть в блоке, который приняла сеть. Но самый свежий блок ещё не с чем сверить: он последний в цепочке, и его подмену (в отличие от старых блоков) нельзя обнаружить пересчётом хешей изнутри самой сети — только сравнением с чужой копией. Поэтому кошельки и платёжные сервисы обычно ждут ещё несколько подтверждений (confirmations) — новых блоков поверх этого — прежде чем показать перевод как окончательный: чем больше блоков сверху, тем дороже и невероятнее стало бы отменить его задним числом.
В Bitcoin новый блок в среднем находят раз в 10 минут, а для крупных сумм принято дожидаться порядка 6 подтверждений — то есть около часа, прежде чем считать перевод окончательно необратимым. У более быстрых сетей (в том числе у приватных, разрешённых) блоки находят чаще, а нужное число подтверждений обычно меньше — это тоже часть компромиссов, о которых дальше пойдёт речь в разделе про приватные и публичные сети.
Приватный блокчейн vs публичный
Всё, что разобрано выше — хеш, блок, распределённость, транзакция, подпись — работает одинаково в любом блокчейне. Разница начинается с вопроса: кто вообще может стать узлом сети и предлагать новые блоки?
Публичный блокчейн (public blockchain) — сеть открыта для всех: любой человек может скачать программу-ноду, подключиться, увидеть всю историю транзакций и, по правилам сети, участвовать в добавлении новых блоков. Так устроены Ethereum (платформа для смарт-контрактов и децентрализованных приложений, DApps) и TON (The Open Network) — никакого разрешения на вход не требуется, зато вся история публична и видна кому угодно.
Приватный, или разрешённый блокчейн (permissioned blockchain) — участвовать может только тот, кого допустили: конкретная организация, консорциум банков, участники образовательного чемпионата. Узлы известны заранее, доступ и права каждого настраиваются, а часть данных можно скрыть от посторонних участников той же сети. Так устроены Waves Enterprise и Hyperledger Fabric — на них часто строят решения для бизнеса и госсектора, где полная публичность неприемлема, а список участников известен и ограничен.
| Публичный | Приватный (разрешённый) | |
|---|---|---|
| Кто может войти в сеть | кто угодно, без разрешения | только допущенные участники |
| Кто видит историю | видна всем в интернете | видна участникам сети (или ограниченному кругу) |
| Примеры | Ethereum, TON | Waves Enterprise, Hyperledger Fabric |
| Типичное применение | DApps, криптовалюты, открытые сообщества | бизнес-процессы, госуслуги, консорциумы компаний |
Важно: базовая механика цепочки блоков и хешей от этого не меняется — приватная сеть точно так же не даёт незаметно подделать историю, просто круг тех, кто эту историю пишет и хранит, заранее ограничен. Со следующей главы этот трек пойдёт именно по приватному пути: ты своими руками запустишь маленькую сеть Waves Enterprise из трёх нод.
Блокчейн, криптовалюта и смарт-контракт — не одно и то же
Три термина легко путают, потому что они появились рядом и часто звучат в одном предложении. Но это три разных уровня, и держать их разделёнными в голове — то, что отличает поверхностное знакомство от рабочего понимания.
- Блокчейн (blockchain) — сама технология: структура данных (цепочка блоков с хешами) плюс правило, по которому независимые узлы соглашаются о её содержимом (консенсус). Это фундамент — сам по себе он ничего не покупает и «не стоит денег».
- Криптовалюта (cryptocurrency) — одно из применений блокчейна: собственный, встроенный в сеть цифровой актив, переводы которого и есть транзакции, разобранные в этой главе. У Bitcoin и Ethereum такой актив есть (BTC, ETH). У приватной сети — необязательно: у платформы, с которой познакомит следующая глава, никакой встроенной монеты вообще нет — блокчейн там используется без криптовалюты.
- Смарт-контракт (smart contract) — ещё одно, отдельное применение: программируемый код, который живёт внутри сети и выполняется по тем же правилам, что и обычные транзакции (тот же хеш, та же подпись, то же согласие большинства нод), но сам по себе не является валютой — это скорее программа с состоянием, которому можно доверять, потому что его нельзя подделать незаметно.
Отсюда прямо следует то, с чем предстоит разобраться в следующей главе: Waves Enterprise — это блокчейн без собственной криптовалюты, зато со смарт-контрактами. Три понятия действительно независимы друг от друга: на одном и том же фундаменте (блокчейне) можно построить только один из двух «этажей», оба сразу или ни одного.
| Блокчейн | Криптовалюта | Смарт-контракт | |
|---|---|---|---|
| Что это | технология хранения и согласования данных | цифровой актив поверх блокчейна | программируемый код поверх блокчейна |
| Обязателен ли для блокчейна | — (это и есть основа) | нет, есть далеко не у каждой сети | нет, поддерживается не каждой платформой |
| Пример | сама идея из этой главы | Bitcoin (BTC), Ethereum (ETH) | контракт, который развернём в следующей главе |
Почему нельзя получить всё сразу: компромиссы блокчейна
У любой блокчейн-сети одновременно хочется трёх вещей: чтобы она была децентрализованной (никто в одиночку не контролирует сеть), безопасной (историю практически невозможно подделать) и быстрой (много транзакций в секунду, с низкой задержкой подтверждения). На практике усилить одно почти всегда означает ослабить другое — это неформально называют трилеммой блокчейна (blockchain trilemma): в реальных системах получается уверенно выбрать сильные стороны по двум из трёх, а третья остаётся слабее.
- Bitcoin выбирает децентрализованность и безопасность: майнить может кто угодно с любым оборудованием, подделать историю дороже, чем вся годовая добыча золота, — но пропускная способность низкая (около 7 транзакций в секунду на всю сеть), а подтверждение занимает минуты.
- Быстрые приватные сети, вроде Waves Enterprise из раздела выше, выбирают безопасность и скорость: раз участники известны заранее, дорогой Proof of Work не нужен — можно использовать более быстрый механизм консенсуса (Proof of Authority, отказоустойчивое голосование) и получить сотни или тысячи транзакций в секунду, — но за счёт открытой децентрализованности: список узлов ограничен и известен заранее, а не «кто угодно из интернета».
Это не недостаток конкретной платформы, а следствие самой природы распределённого согласия: чем больше независимых, не доверяющих друг другу участников должны прийти к одному мнению, тем больше сообщений им нужно обменять между собой и тем дольше это займёт. Выбор алгоритма консенсуса из раздела выше — это всегда выбор точки на этом компромиссе, а не поиск идеального алгоритма без недостатков.
Где это встречается в жизни
Блокчейн — не только про криптовалюты. Несколько реальных направлений, где технологию используют не как эксперимент, а как рабочий инструмент:
- Логистика. Отслеживание пути товара от завода до полки магазина: каждая передача груза — новая транзакция, всю цепочку поставок видно и нельзя незаметно подменить задним числом.
- Медицина. Единая неизменяемая запись визитов к врачу, назначений и анализов, доступная только тем, кому разрешено — здесь особенно к месту приватный, разрешённый блокчейн.
- Госуслуги. Реестры прав на недвижимость, дипломов об образовании, лицензий: подделать запись задним числом невозможно, а проверить подлинность может любой, у кого есть доступ.
- Финансы. Переводы напрямую между двумя участниками без банка-посредника — та самая транзакция с подписью, разобранная выше, только в промышленном масштабе.
Типичные заблуждения
Здесь нет компилятора, который выдаст точный текст ошибки, — зато есть устойчивые заблуждения, которые повторяет почти каждый новичок. Ниже — четыре из них: как заблуждение звучит на практике, точная формулировка из проверенного источника, которая его опровергает, откуда оно берётся и как переучиться.
1. «Блокчейн — это то же самое, что биткоин»
Так говорят: «Зачем нам блокчейн, мы же не делаем криптовалюту».
Точная формулировка (Skillbox): технологию «стали применять не только в цифровых криптовалютах, но и в платежных системах, банковской сфере, идентификации личности, игровой индустрии и т. д.».
Причина: биткоин был первым массовым применением блокчейна, и многие узнали о технологии именно через него — название приложения перепутали с названием фундамента.
Починка: блокчейн — это способ хранения данных (цепочка блоков с хешами), а криптовалюта — лишь одно из множества применений поверх него, наравне с логистикой, медициной и госреестрами из раздела выше.
2. «Блок хранит полные копии всех предыдущих блоков»
Так говорят: «Значит, каждый следующий блок тяжелее предыдущего, раз он всё помнит?»
Точная формулировка: блок хранит не копию, а хеш-сумму предыдущего блока — «каждый блок содержит собственную хеш-сумму и хеш-сумму предыдущего блока».
Причина: слово «цепочка» интуитивно напоминает вложенные матрёшки, где каждая следующая содержит все предыдущие целиком.
Починка: блок хранит только компактный отпечаток соседа (64 символа для SHA-256, независимо от размера самого блока) — этого достаточно, чтобы обнаружить подделку, полный дубликат данных не нужен.
3. «Хеш — это шифрование, его можно расшифровать обратно»
Так говорят: «Раз данные захешировали, значит, где-то есть ключ, чтобы вернуть их обратно».
Точная формулировка (Википедия, статья «Хеш-функция»): «для заданных выходных данных должно быть вычислительно неосуществимо найти входные данные» — то есть операции «расхешировать» не существует в принципе.
Причина: хеширование и шифрование (encryption) оба превращают данные во что-то нечитаемое, и на бытовом уровне их легко перепутать.
Починка: у шифрования всегда есть обратная операция — расшифровка ключом. У хеша обратной операции нет вообще: это осознанное свойство алгоритма, а не недоработка.
4. «Приватный блокчейн — это просто база данных с паролем»
Так говорят: «Зачем городить блокчейн, если можно завести обычную таблицу и дать к ней доступ по логину?»
Точная формулировка: приватный (permissioned) блокчейн ограничивает круг участников, но при этом каждый допущенный узел хранит свою полную копию цепочки и независимо проверяет каждый блок по хешам — как разобрано в начале главы.
Причина: слово «приватный» ассоциируется с обычными таблицами баз данных, где один сервер — единственный источник правды, и администратор может незаметно исправить строку.
Починка: даже в приватной сети ни один участник не может незаметно подменить историю в одиночку — остальные узлы пересчитают хеши и увидят расхождение. Ограничен только вход в сеть, а не устойчивость к подделке внутри неё.
5. «Раз данные в блокчейне неизменяемы, ошибку в смарт-контракте нельзя исправить»
Так говорят: «Написали контракт с багом — и что, обратно уже не открутить?»
Точная формулировка: неизменяем реестр — уже проведённые транзакции и зафиксированные состояния, а не обязательно сам код контракта: разработчик может заранее заложить в контракт возможность обновления (upgradability) либо развернуть новую версию контракта и постепенно перевести пользователей на неё.
Причина: «неизменяемость» относится к прошлому — к тому, что уже записано и подтверждено сетью, — а не к будущему коду, который ещё только предстоит написать и развернуть.
Починка: неизменяемость блокчейна защищает уже случившуюся историю от подделки задним числом; она не отменяет обычную инженерную дисциплину. Тестировать контракт до разворачивания в боевую сеть важнее, чем в обычном коде, именно потому что откатить его так же просто, как обычный деплой веб-сервиса, не получится.
Слова главы
Проверь себя руками
Учебную запись транзакции — до автоматизма:
Цель: скорость ≥ 100 зн/мин, точность ≥ 90%
Alice -> Bob: 5 монет, подпись, хеш
Формулу связи блока с предыдущим:
Цель: скорость ≥ 110 зн/мин, точность ≥ 90%
хеш(данные + хеш_пред) = хеш_блока
Символы и обозначения главы
| Символ | Как называется | Что означает | Пример |
|---|---|---|---|
-> | стрелка перевода | направление: от кого к кому передаётся значение | Alice -> Bob |
: | двоеточие | отделяет участников сделки от содержимого перевода | Bob: 5 монет |
# | решётка перед числом | порядковый номер блока в цепочке | Блок #482 |
= | знак равенства (математический) | слева — вычисление, справа — его результат; не присваивание, как в коде | SHA-256(x) = 7c1366a3… |
== | двойной знак равенства | проверка совпадения двух значений при верификации блока | хеш(данные) == хеш_пред |
хеш(...) | запись хеш-функции | имя функции и её аргумент в скобках — как в математике | хеш(блок #481) |
хеш_пред | поле «хеш предыдущего» | копия хеша соседнего блока, физически связывающая цепочку | хеш_пред блока #482 |
подпись: | метка цифровой подписи | значение, полученное закрытым ключом отправителя транзакции | подпись: MEYCIQ… |
Углубиться
Свойства хеш-функции формально. У криптографической хеш-функции выделяют устойчивость к коллизиям (collision resistance) двух родов: сложно найти второй вход с тем же хешем, что и у заданного (первого рода), и заметно проще — хотя на практике всё равно нереально — найти произвольную пару разных входов с одинаковым хешем (второго рода). Порядок величин для SHA-256: второй прообраз к заданному ищут перебором примерно 2^256 вариантов, а произвольную пару — всего около 2^128 благодаря «парадоксу дней рождения» (уже в группе из 23 человек чьи-то дни рождения совпадут с вероятностью больше половины — искать любое совпадение всегда куда легче, чем совпадение с заранее выбранным). Это не то же самое, что необратимость — свойства независимы друг от друга, у хорошей хеш-функции должны выполняться все сразу.
Электронная (цифровая) подпись под капотом. Подпись строится на асимметричной криптографии: закрытым ключом подписывают не сами данные целиком, а их хеш — это быстрее и работает для данных любого размера. Проверяющая сторона пересчитывает хеш заново и сверяет его с тем, что «раскрывает» подпись при помощи открытого ключа: если хоть один символ в данных изменился после подписания, хеш не совпадёт, и подпись окажется недействительной.
Дальше по теме:
- Хеш-функция — Википедия — детерминированность, лавинный эффект, необратимость и коллизии подробнее и формальнее
- Электронная подпись — Википедия — асимметричная криптография, закрытый и открытый ключ, история и применение подписи
Куда дальше: проверенные ресурсы
-
Блокчейн — Википедия — сжатое энциклопедическое определение: связность блоков, распределённое хранение, неизменяемость — три идеи из этой главы одним абзацем.
-
Блокчейн: что это такое, как технологию используют в криптовалютах и бизнесе — Skillbox — то же самое, что в этой главе, но другими словами и с бытовыми аналогиями — хорошо для повторения.
-
What is Ethereum — ethereum.org — официальное описание публичной сети на русском: смарт-контракты, DApps, открытость участия.
-
What is Hyperledger Fabric — официальная документация приватной, разрешённой платформы для бизнеса: чем её архитектура принципиально отличается от публичных сетей.
-
Smart contracts — TON Docs — раздел официальной документации о смарт-контрактах ещё одной публичной сети, TON: инструменты, стандартные контракты, приёмы — для сравнения архитектур (по-английски).
-
Применение блокчейна в различных отраслях — Nomium — развёрнутые реальные кейсы к разделу «Где это встречается в жизни»: логистика, медицина, госуслуги, страхование.
-
Видео и материалы сообщества — ниже — ролики по теме и ссылки от студентов и преподавателей смотри в самом низу страницы.
Челлендж ⭐
На чемпионате «Профессионалы» команда ведёт учебный блокчейн из матчей. Блок #1 (genesis) содержит строку "Genesis block Championship 2026". Её настоящий SHA-256-хеш — 5530d021a9321d2049ccb0b8f57d96a389b502c1bb7e19f9484a4355c3ed692b — уже посчитан и записан в поле хеш_пред блока #2.
Ступень 1. Организатор в шутку предлагает «подправить историю»: заменить в genesis-блоке 2026 на 2027. Объясни словами (без формул), почему эту подмену обнаружат мгновенно, и укажи, какое именно поле в блоке #2 перестанет совпадать при проверке.
Ступень 2 ⭐. У тебя есть терминал (свой компьютер, не эта страница). Выполни printf 'Genesis block Championship 2027' | shasum -a 256 (на Linux — sha256sum вместо shasum -a 256) и сравни результат с хешем из решения ниже. Затем построй на бумаге свою мини-цепочку из трёх блоков: придумай тексты для блоков #1–#3, посчитай хеши по-настоящему через терминал, впиши хеш_пред в каждый следующий блок — и опиши, чем обнаружение подмены блока #2 отличается от обнаружения подмены блока #1 (какая часть цепочки «развалится» в каждом случае).
Решение (сначала попробуй сам)
Ступень 1: изменение одного символа (6 → 7) из-за лавинного эффекта полностью меняет хеш genesis-блока. Блок #2 хранит хеш_пред = 5530d0…d692b — старое, «правильное» значение. При проверке кто угодно пересчитывает хеш текущего (уже подделанного) genesis-блока и получает совсем другую строку, которая не совпадает с сохранённым хеш_пред в блоке #2. Несовпадение обнаруживается мгновенно, без доверия кому-либо на слово.
Ступень 2 ⭐: настоящий хеш строки "Genesis block Championship 2027" —
57ddae505272e0cc2b9034b19e269a86d511390fa63d5b0d8dc949440316504b
— и он действительно не имеет почти ничего общего с хешем версии 2026, хотя отличался всего один символ. Про мини-цепочку: если подделать блок #1 (самый старый), «рвётся» связь у блока #2, а значит и у блока #3, и у всех блоков после — несовпадение находят сразу на первой же проверке хеш_пред. Если же подделать блок #3 (самый новый, последний в цепочке), его хеш_пред всё ещё указывает верно на настоящий блок #2, а вот собственный хеш блока #3 больше никто не пересчитает и не сверит, потому что после него в цепочке ничего нет — обнаружить такую подмену можно, только сравнив её с чужой (не подделанной) копией цепочки. Поэтому в реальных сетях последним, самым свежим блокам доверяют меньше: их принято дожидаться нескольких следующих блоков «подтверждения» (confirmations), прежде чем считать перевод окончательным.
Сводная проверка по всей главе: 10 вопросов, 5:00 на всё, без подсказок по ходу. Вопросы показываются по одному, ответ изменить нельзя. Если время выйдет — экзамен завершится с тем, что успел ответить. Пересдавать можно сколько угодно раз.
Что должен уметь
- Объяснять своими словами, что такое хеш, и перечислять три его ключевых свойства: детерминированность, лавинный эффект, необратимость.
- Описывать, как устроен блок и почему поле «хеш предыдущего блока» превращает набор блоков именно в цепочку, а не в произвольный набор.
- Рассуждать, почему подмену данных в старом блоке обнаружат при проверке хешей, и что для этого не нужен центральный арбитр.
- Читать и объяснять учебную запись транзакции
Alice -> Bob: 5 монет, подпись, хеш, включая роль цифровой подписи. - Формулировать разницу между распределённым реестром и обычной централизованной базой данных.
- Объяснять, какую именно проблему (двойную трату) решает консенсус, и почему для этого недостаточно одних только хешей и подписей.
- Прослеживать путь одной транзакции от подписи в кошельке через mempool и предложенный блок до подтверждений — своими словами, без пропущенных шагов.
- Отличать приватный (permissioned) блокчейн от публичного, приводить по два примера каждого — Waves Enterprise/Fabric и Ethereum/TON — и объяснять, что именно в них общее, а что разное.
- Разводить блокчейн, криптовалюту и смарт-контракт как три независимых понятия, а не синонимы.
- Объяснять на примерах, почему децентрализованность, безопасность и скорость сети — это компромисс, а не три независимо максимизируемых свойства.
- Приводить минимум два реальных примера применения блокчейна вне криптовалют.
- Распознавать типичные заблуждения о блокчейне и объяснять, в чём именно они ошибочны.
Комментарии
Обсуждение живёт в GitHub Discussions и грузится с чужого домена — поэтому только по нажатию.