Что такое блокчейн
Зачем это нужно
Блокчейн (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) — алгоритм, по которому независимые узлы договариваются об одной и той же версии цепочки без центрального координатора.
В публичных сетях, где узлом может стать кто угодно анонимно, право предложить следующий блок обычно нужно заслужить — иначе сеть было бы легко наводнить поддельными узлами. Два самых известных подхода:
- Proof of Work (доказательство работы). Узлы решают заведомо трудную вычислительную задачу; кто первый нашёл решение — тот и предлагает блок. Подделать историю значит переделать эту тяжёлую работу для всех блоков после подделываемого и обогнать остальную сеть — на практике невозможно.
- Proof of Stake (доказательство доли). Право предложить блок получают пропорционально тому, сколько узел «заморозил» своих средств в сети как залог: попытка обмана обойдётся ему же в потерю этого залога. Именно на этот механизм перешёл Ethereum.
В приватных, разрешённых сетях участники уже известны заранее и частично друг другу доверяют — тратить электричество на тяжёлые вычисления незачем. Поэтому такие платформы, включая Waves Enterprise, обычно поддерживают на выбор несколько более быстрых и дешёвых алгоритмов: например, вариант доказательства доли, адаптированный под известный круг участников, вариант «доказательства полномочий» (Proof of Authority), где право предлагать блок явно закреплено за конкретными доверенными узлами, и вариант отказоустойчивого голосования, устойчивый к тому, что часть узлов может на время выйти из строя. Какой именно алгоритм выбрать — решает администратор сети ещё на этапе её создания; в следующей главе мы настроим ровно такую сеть на практике.
Приватный блокчейн vs публичный
Всё, что разобрано выше — хеш, блок, распределённость, транзакция, подпись — работает одинаково в любом блокчейне. Разница начинается с вопроса: кто вообще может стать узлом сети и предлагать новые блоки?
Публичный блокчейн (public blockchain) — сеть открыта для всех: любой человек может скачать программу-ноду, подключиться, увидеть всю историю транзакций и, по правилам сети, участвовать в добавлении новых блоков. Так устроены Ethereum (платформа для смарт-контрактов и децентрализованных приложений, DApps) и TON (The Open Network) — никакого разрешения на вход не требуется, зато вся история публична и видна кому угодно.
Приватный, или разрешённый блокчейн (permissioned blockchain) — участвовать может только тот, кого допустили: конкретная организация, консорциум банков, участники образовательного чемпионата. Узлы известны заранее, доступ и права каждого настраиваются, а часть данных можно скрыть от посторонних участников той же сети. Так устроены Waves Enterprise и Hyperledger Fabric — на них часто строят решения для бизнеса и госсектора, где полная публичность неприемлема, а список участников известен и ограничен.
| Публичный | Приватный (разрешённый) | |
|---|---|---|
| Кто может войти в сеть | кто угодно, без разрешения | только допущенные участники |
| Кто видит историю | видна всем в интернете | видна участникам сети (или ограниченному кругу) |
| Примеры | Ethereum, TON | Waves Enterprise, Hyperledger Fabric |
| Типичное применение | DApps, криптовалюты, открытые сообщества | бизнес-процессы, госуслуги, консорциумы компаний |
Важно: базовая механика цепочки блоков и хешей от этого не меняется — приватная сеть точно так же не даёт незаметно подделать историю, просто круг тех, кто эту историю пишет и хранит, заранее ограничен. Со следующей главы этот трек пойдёт именно по приватному пути: ты своими руками запустишь маленькую сеть Waves Enterprise из трёх нод.
Где это встречается в жизни
Блокчейн — не только про криптовалюты. Несколько реальных направлений, где технологию используют не как эксперимент, а как рабочий инструмент:
- Логистика. Отслеживание пути товара от завода до полки магазина: каждая передача груза — новая транзакция, всю цепочку поставок видно и нельзя незаметно подменить задним числом.
- Медицина. Единая неизменяемая запись визитов к врачу, назначений и анализов, доступная только тем, кому разрешено — здесь особенно к месту приватный, разрешённый блокчейн.
- Госуслуги. Реестры прав на недвижимость, дипломов об образовании, лицензий: подделать запись задним числом невозможно, а проверить подлинность может любой, у кого есть доступ.
- Финансы. Переводы напрямую между двумя участниками без банка-посредника — та самая транзакция с подписью, разобранная выше, только в промышленном масштабе.
Типичные заблуждения
Здесь нет компилятора, который выдаст точный текст ошибки, — зато есть устойчивые заблуждения, которые повторяет почти каждый новичок. Ниже — четыре из них: как заблуждение звучит на практике, точная формулировка из проверенного источника, которая его опровергает, откуда оно берётся и как переучиться.
1. «Блокчейн — это то же самое, что биткоин»
Так говорят: «Зачем нам блокчейн, мы же не делаем криптовалюту».
Точная формулировка (Skillbox): технологию «стали применять не только в цифровых криптовалютах, но и в платежных системах, банковской сфере, идентификации личности, игровой индустрии и т. д.».
Причина: биткоин был первым массовым применением блокчейна, и многие узнали о технологии именно через него — название приложения перепутали с названием фундамента.
Починка: блокчейн — это способ хранения данных (цепочка блоков с хешами), а криптовалюта — лишь одно из множества применений поверх него, наравне с логистикой, медициной и госреестрами из раздела выше.
2. «Блок хранит полные копии всех предыдущих блоков»
Так говорят: «Значит, каждый следующий блок тяжелее предыдущего, раз он всё помнит?»
Точная формулировка: блок хранит не копию, а хеш-сумму предыдущего блока — «каждый блок содержит собственную хеш-сумму и хеш-сумму предыдущего блока».
Причина: слово «цепочка» интуитивно напоминает вложенные матрёшки, где каждая следующая содержит все предыдущие целиком.
Починка: блок хранит только компактный отпечаток соседа (64 символа для SHA-256, независимо от размера самого блока) — этого достаточно, чтобы обнаружить подделку, полный дубликат данных не нужен.
3. «Хеш — это шифрование, его можно расшифровать обратно»
Так говорят: «Раз данные захешировали, значит, где-то есть ключ, чтобы вернуть их обратно».
Точная формулировка (Википедия, статья «Хеш-функция»): «для заданных выходных данных должно быть вычислительно неосуществимо найти входные данные» — то есть операции «расхешировать» не существует в принципе.
Причина: хеширование и шифрование (encryption) оба превращают данные во что-то нечитаемое, и на бытовом уровне их легко перепутать.
Починка: у шифрования всегда есть обратная операция — расшифровка ключом. У хеша обратной операции нет вообще: это осознанное свойство алгоритма, а не недоработка.
4. «Приватный блокчейн — это просто база данных с паролем»
Так говорят: «Зачем городить блокчейн, если можно завести обычную таблицу и дать к ней доступ по логину?»
Точная формулировка: приватный (permissioned) блокчейн ограничивает круг участников, но при этом каждый допущенный узел хранит свою полную копию цепочки и независимо проверяет каждый блок по хешам — как разобрано в начале главы.
Причина: слово «приватный» ассоциируется с обычными таблицами баз данных, где один сервер — единственный источник правды, и администратор может незаметно исправить строку.
Починка: даже в приватной сети ни один участник не может незаметно подменить историю в одиночку — остальные узлы пересчитают хеши и увидят расхождение. Ограничен только вход в сеть, а не устойчивость к подделке внутри неё.
Слова главы
Проверь себя руками
Учебную запись транзакции — до автоматизма:
Цель: скорость ≥ 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), прежде чем считать перевод окончательным.
Сводная проверка по всей главе: 7 вопросов, 5:00 на всё, без подсказок по ходу. Вопросы показываются по одному, ответ изменить нельзя. Если время выйдет — экзамен завершится с тем, что успел ответить. Пересдавать можно сколько угодно раз.
Что должен уметь
- Объяснять своими словами, что такое хеш, и перечислять три его ключевых свойства: детерминированность, лавинный эффект, необратимость.
- Описывать, как устроен блок и почему поле «хеш предыдущего блока» превращает набор блоков именно в цепочку, а не в произвольный набор.
- Рассуждать, почему подмену данных в старом блоке обнаружат при проверке хешей, и что для этого не нужен центральный арбитр.
- Читать и объяснять учебную запись транзакции
Alice -> Bob: 5 монет, подпись, хеш, включая роль цифровой подписи. - Формулировать разницу между распределённым реестром и обычной централизованной базой данных.
- Отличать приватный (permissioned) блокчейн от публичного, приводить по два примера каждого — Waves Enterprise/Fabric и Ethereum/TON — и объяснять, что именно в них общее, а что разное.
- Приводить минимум два реальных примера применения блокчейна вне криптовалют.
- Распознавать типичные заблуждения о блокчейне и объяснять, в чём именно они ошибочны.
Комментарии
Комментарии появятся после настройки. Нужен аккаунт GitHub — вход прямо в виджете выше.