Перейти к основному содержимому
Блокчейн01ГЛАВА 01Что такое блокчейн#

Что такое блокчейн

Прочитано0%
Квизы0/5
Тренажёры0/7
Уровень 1 · Новичок

Зачем это нужно​

Блокчейн (blockchain, от block — «блок» и chain — «цепь») — это способ хранить записи так, чтобы их нельзя было незаметно подделать или стереть, даже если у записей нет единого хозяина. Слово звучит громко, но идея внутри простая: вместо одной тетради, которую ведёт один бухгалтер, — тысячи одинаковых тетрадей у тысяч независимых участников, а каждая новая страница накрепко приклеена к предыдущей математической печатью.

Эта глава — без единой строчки кода. Здесь нет компилятора, который проверит твоё понимание, поэтому мы разберём каждое понятие на пальцах: что такое блок, что такое хеш и почему его нельзя подделать, зачем нужна распределённость, как выглядит запись о переводе (транзакция) и чем приватный блокчейн отличается от публичного. Именно эти пять идей — фундамент всего трека: следующая глава запустит настоящую сеть из трёх нод на платформе Waves Enterprise, а без этой базы шаги оттуда будут выглядеть магией. Ничего не считаем очевидным — если термин произнесён, он объяснён на месте, с английским оригиналом в скобках и карточкой в конце главы.

Как это было
31 октября 2008 года в рассылке криптографов появилось письмо от некоего Сатоши Накамото со ссылкой на whitepaper «Bitcoin: A Peer-to-Peer Electronic Cash System» — девять страниц, из которых вырос весь мир блокчейна. 3 января 2009-го Сатоши добыл первый, «генезис»-блок. Кто скрывается за псевдонимом — один человек или группа — неизвестно до сих пор: это одна из главных загадок IT.

Блок и хеш: цепочка, которую нельзя подделать​

Хеш на пальцах​

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

У криптографического хеша (мы будем использовать алгоритм SHA-256 — тот же, что использует Bitcoin) есть три свойства, которые и делают блокчейн блокчейном:

  1. Детерминированность. Одни и те же входные данные всегда дают один и тот же хеш. Хешируешь строку "Alice->Bob:5" сегодня, через год, на другом компьютере — результат один и тот же, потому что алгоритм не использует ничего случайного.
  2. Лавинный эффект (avalanche effect). Меняешь во входных данных один-единственный символ — хеш меняется почти полностью, будто ты подбросил монету заново для каждого бита результата. Половинчатых изменений не бывает.
  3. Необратимость. По хешу нельзя вычислить исходные данные — только перебором всех вариантов, что для длинного текста практически невозможно.
ХЕШ · ЛАВИННЫЙ ЭФФЕКТAlice->Bob:5SHA-2567c1366a3…Alice->Bob:6SHA-2569f0ae72c…один изменённый символ входа — и хеш не имеет ничего общего с прежним: половинчатых изменений не бывает
Один изменённый символ на входе — и хеш SHA-256 не имеет ничего общего с прежним: это и есть лавинный эффект.

Ниже — не выдуманный, а настоящий пример: так выглядит SHA-256 от строки "Alice->Bob:5", посчитанный прямо для этой главы.

Нажми на часть выражения
Совет

Попробуй дома — в терминале выполни printf 'Alice->Bob:5' | shasum -a 256 (на Linux вместо shasum -a 256 пиши sha256sum). На любом компьютере в мире результат совпадёт до последнего символа, потому что SHA-256 — открытый, детерминированный алгоритм, а не секрет конкретной программы.

Одна тонкость: хешируется не «текст», а ровно те байты, которые ты подал. Если сохранить строку в файл редактором или вывести её через echo, в конец добавится невидимый перевод строки — это уже другие входные данные, и хеш будет совсем другим (5988fb03…). Именно поэтому в команде выше стоит printf, а не echo: он ничего не дописывает.

Текущий SHA-256
…
Как это устроено под капотом
Хеш здесь считает не наш код, а встроенный в браузер WebCrypto: вызов crypto.subtle.digest('SHA-256', байты текста) возвращает 32 байта, которые мы переводим в 64 hex-символа. Это тот же самый SHA-256, что работает в настоящих блокчейнах — никакой упрощённой учебной версии. Подсветка отличий устроена просто: две hex-строки сравниваются посимвольно, совпадения остаются серыми, отличия подсвечиваются. Вся «магия» лавинного эффекта происходит внутри самой хеш-функции, компонент её только показывает.

Блок: данные плюс хеш предыдущего блока​

Блок (block) — это пачка данных (обычно — набор транзакций за какой-то промежуток времени), у которой есть номер, собственный хеш и одно особое поле: хеш предыдущего блока. Именно это поле и превращает набор отдельных блоков в цепочку (chain).

Нажми на часть выражения

Смысл именно в этом устройстве: блок #483 хранит внутри себя хеш блока #482, блок #482 — хеш блока #481, и так до самого первого блока (его называют genesis block — «блок бытия», у него единственного нет предыдущего). Получается цепь, где каждое звено физически держится за соседа своим отпечатком.

блок #1data: …prevHash: —hash: a1b2…блок #2data: …prevHash: a1b2…hash: c3d4…блок #3data: …prevHash: c3d4…hash: e5f6…hash блока копируется в prevHash следующего — это и есть «цепь»
Цепочка блоков: hash каждого блока копируется в поле prevHash следующего — подмена любого блока рвёт все звенья после него.

Почему подмену обнаружат​

Представь, что кто-то хочет задним числом подменить данные в блоке #481 — например, переписать сумму перевода. Изменение хотя бы одного символа в блоке #481 (см. лавинный эффект выше) полностью меняет его хеш. Но блок #482 уже хранит внутри себя старый хеш блока #481 — и при проверке цепи окажется, что сохранённый в блоке #482 хеш_пред не совпадает с реальным, только что пересчитанным хешем блока #481.

Нажми на часть выражения
Важно

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

Измени данные в любом блоке — и посмотри, как рвётся цепь: hash блока пересчитается, а prevHash следующих блоков перестанет совпадать.
Блок 1…
prevHash0000000000…000000
hash…
Блок 2…
prevHash…
hash…
Блок 3…
prevHash…
hash…
Блок 4…
prevHash…
hash…

А теперь почувствуй, откуда в публичных сетях берётся та самая «тяжёлая работа»: майнинг — это перебор числа nonce до тех пор, пока хеш блока не начнётся с нужного количества нулей. Другого способа найти подходящий nonce не существует — только пробовать снова и снова, и именно поэтому подделать блок задним числом так дорого.

МАЙНИНГ · ПОДБОР NONCEnonce: 41hash: 8f3a7c1e…nonce: 42hash: c91e0af2…nonce: 43hash: 5b0d71aa…nonce: 44hash: 0000e7b4…nonce перебирают по одному — как только хеш начинается с нужного числа нулей, блок найден
Nonce перебирают по одному — как только хеш блока начинается с нужного числа нулей, подходящее значение найдено.
Сложность
SHA-256(данные + nonce) — должен начинаться с «0»
…
Как это устроено под капотом
Перебор честный: для каждого nonce строка «данные + nonce» хешируется настоящим SHA-256 через встроенный в браузер crypto.subtle.digest, и проверяется, начинается ли hex-запись хеша с нужного числа нулей. Чтобы вкладка не зависала, перебор идёт порциями по 64 попытки с паузой через setTimeout — браузер успевает отрисовывать живой счётчик. Каждый следующий требуемый ноль уменьшает долю подходящих хешей в 16 раз (один hex-символ — 16 вариантов), отсюда и рост времени. Настоящие майнеры делают ровно то же самое, только на специализированных чипах и с триллионами попыток в секунду.
Отвечено вопросов: 0 из 4
Что произойдёт с хешем блока, если поменять в его данных всего один символ?
Что именно хранит блок #482, чтобы быть связанным с блоком #481?
Можно ли по хешу восстановить исходные данные?
Почему подделать блок #481 «задним числом» практически невозможно незаметно?
Отвечено верно: 0 из 4

Распределённость: одна книга, тысячи копий​

Реестр (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». Математика подтверждает это сама, и проверить может каждый узел независимо.

ЦИФРОВАЯ ПОДПИСЬ · ЗАКРЫТЫЙ И ОТКРЫТЫЙ КЛЮЧ1. Alice подписываетзакрытый ключсекрет — знает только AliceSIGNподпись: MEYCIQ…2. любой узел проверяетоткрытый ключможно публиковать всемVERIFY → OKподписать может только владелец закрытого ключа; проверить подпись — кто угодно, открытым
Закрытым ключом подписывают, открытым — проверяют: подделать подпись без закрытого ключа нельзя, а проверить её может кто угодно.

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

Начни с кнопки «Создать ключи» — пара ключей сгенерируется прямо в твоём браузере.
Отвечено вопросов: 0 из 4
Что означает «распределённый реестр» (distributed ledger)?
В записи Alice -> Bob: 5 монет что означает стрелка ->?
Зачем нужна цифровая подпись под транзакцией?
Кому нужно доверять, чтобы поверить, что подпись Alice подлинная?
Отвечено верно: 0 из 4

Как узлы договариваются: консенсус​

Остался последний вопрос: если узлов тысячи и каждый может предложить свой вариант следующего блока, кто решает, чей вариант считается «настоящим»? За это отвечает консенсус (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 может быть уверен, что перевод уже не отменят.

  1. Alice создаёт и подписывает транзакцию. Кошелёк (wallet) — программа, которая хранит закрытый ключ Alice, — собирает запись Alice->Bob:5, считает от неё хеш и подписывает этот хеш закрытым ключом. Готовая транзакция — данные, подпись и хеш вместе — теперь может быть отправлена в сеть.
  2. Транзакция расходится по сети. Кошелёк Alice отправляет её не напрямую Bob'у, а тем нодам, к которым сам подключён. Каждая нода, получив новую транзакцию, проверяет подпись и остаток на счету Alice и, если всё сходится, пересылает её дальше своим соседям. За несколько секунд транзакция расходится по всей сети — примерно как слух передаётся от человека к человеку, только с проверкой на каждом шаге.
  3. Она ждёт своей очереди в mempool. Каждая нода хранит локально список уже проверенных, но ещё не вошедших ни в один блок транзакций — пул неподтверждённых транзакций (mempool, memory pool). Транзакция Alice лежит в mempool у сотен нод одновременно, ожидая, пока кто-то не соберёт из таких транзакций следующий блок.
  4. Кто-то предлагает блок. По правилам консенсуса сети — PoW, PoS или другой алгоритм из раздела выше — право собрать очередной блок получает один узел: он берёт пачку транзакций из своего mempool, включая транзакцию Alice, добавляет хеш предыдущего блока и рассылает готовый блок остальным.
  5. Остальные ноды проверяют блок целиком. Получив блок, каждая нода независимо перепроверяет: подписи всех транзакций внутри, совпадение хеш_пред с реальным хешем предыдущего блока, соблюдение правил консенсуса. Если всё сходится, нода добавляет блок к своей копии цепочки и убирает вошедшие в него транзакции из своего mempool.
  6. Перевод виден, но пока не окончательный. Формально Bob уже получил свои 5 монет — они есть в блоке, который приняла сеть. Но самый свежий блок ещё не с чем сверить: он последний в цепочке, и его подмену (в отличие от старых блоков) нельзя обнаружить пересчётом хешей изнутри самой сети — только сравнением с чужой копией. Поэтому кошельки и платёжные сервисы обычно ждут ещё несколько подтверждений (confirmations) — новых блоков поверх этого — прежде чем показать перевод как окончательный: чем больше блоков сверху, тем дороже и невероятнее стало бы отменить его задним числом.
Интересный факт

В Bitcoin новый блок в среднем находят раз в 10 минут, а для крупных сумм принято дожидаться порядка 6 подтверждений — то есть около часа, прежде чем считать перевод окончательно необратимым. У более быстрых сетей (в том числе у приватных, разрешённых) блоки находят чаще, а нужное число подтверждений обычно меньше — это тоже часть компромиссов, о которых дальше пойдёт речь в разделе про приватные и публичные сети.

Приватный блокчейн vs публичный​

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

Публичный блокчейн (public blockchain) — сеть открыта для всех: любой человек может скачать программу-ноду, подключиться, увидеть всю историю транзакций и, по правилам сети, участвовать в добавлении новых блоков. Так устроены Ethereum (платформа для смарт-контрактов и децентрализованных приложений, DApps) и TON (The Open Network) — никакого разрешения на вход не требуется, зато вся история публична и видна кому угодно.

Приватный, или разрешённый блокчейн (permissioned blockchain) — участвовать может только тот, кого допустили: конкретная организация, консорциум банков, участники образовательного чемпионата. Узлы известны заранее, доступ и права каждого настраиваются, а часть данных можно скрыть от посторонних участников той же сети. Так устроены Waves Enterprise и Hyperledger Fabric — на них часто строят решения для бизнеса и госсектора, где полная публичность неприемлема, а список участников известен и ограничен.

ПубличныйПриватный (разрешённый)
Кто может войти в сетькто угодно, без разрешениятолько допущенные участники
Кто видит историювидна всем в интернетевидна участникам сети (или ограниченному кругу)
ПримерыEthereum, TONWaves 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, отказоустойчивое голосование) и получить сотни или тысячи транзакций в секунду, — но за счёт открытой децентрализованности: список узлов ограничен и известен заранее, а не «кто угодно из интернета».
Совет

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

Где это встречается в жизни​

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

  • Логистика. Отслеживание пути товара от завода до полки магазина: каждая передача груза — новая транзакция, всю цепочку поставок видно и нельзя незаметно подменить задним числом.
  • Медицина. Единая неизменяемая запись визитов к врачу, назначений и анализов, доступная только тем, кому разрешено — здесь особенно к месту приватный, разрешённый блокчейн.
  • Госуслуги. Реестры прав на недвижимость, дипломов об образовании, лицензий: подделать запись задним числом невозможно, а проверить подлинность может любой, у кого есть доступ.
  • Финансы. Переводы напрямую между двумя участниками без банка-посредника — та самая транзакция с подписью, разобранная выше, только в промышленном масштабе.
Отвечено вопросов: 0 из 3
Чем публичный блокчейн отличается от приватного (permissioned)?
Какая пара примеров верно сопоставлена?
Почему медицинские записи — хороший пример именно для приватного блокчейна?
Отвечено верно: 0 из 3

Типичные заблуждения​

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

1. «Блокчейн — это то же самое, что биткоин»​

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

Точная формулировка (Skillbox): технологию «стали применять не только в цифровых криптовалютах, но и в платежных системах, банковской сфере, идентификации личности, игровой индустрии и т. д.».

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

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

2. «Блок хранит полные копии всех предыдущих блоков»​

Так говорят: «Значит, каждый следующий блок тяжелее предыдущего, раз он всё помнит?»

Точная формулировка: блок хранит не копию, а хеш-сумму предыдущего блока — «каждый блок содержит собственную хеш-сумму и хеш-сумму предыдущего блока».

Причина: слово «цепочка» интуитивно напоминает вложенные матрёшки, где каждая следующая содержит все предыдущие целиком.

Починка: блок хранит только компактный отпечаток соседа (64 символа для SHA-256, независимо от размера самого блока) — этого достаточно, чтобы обнаружить подделку, полный дубликат данных не нужен.

3. «Хеш — это шифрование, его можно расшифровать обратно»​

Так говорят: «Раз данные захешировали, значит, где-то есть ключ, чтобы вернуть их обратно».

Точная формулировка (Википедия, статья «Хеш-функция»): «для заданных выходных данных должно быть вычислительно неосуществимо найти входные данные» — то есть операции «расхешировать» не существует в принципе.

Причина: хеширование и шифрование (encryption) оба превращают данные во что-то нечитаемое, и на бытовом уровне их легко перепутать.

Починка: у шифрования всегда есть обратная операция — расшифровка ключом. У хеша обратной операции нет вообще: это осознанное свойство алгоритма, а не недоработка.

4. «Приватный блокчейн — это просто база данных с паролем»​

Так говорят: «Зачем городить блокчейн, если можно завести обычную таблицу и дать к ней доступ по логину?»

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

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

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

5. «Раз данные в блокчейне неизменяемы, ошибку в смарт-контракте нельзя исправить»​

Так говорят: «Написали контракт с багом — и что, обратно уже не открутить?»

Точная формулировка: неизменяем реестр — уже проведённые транзакции и зафиксированные состояния, а не обязательно сам код контракта: разработчик может заранее заложить в контракт возможность обновления (upgradability) либо развернуть новую версию контракта и постепенно перевести пользователей на неё.

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

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

Отвечено вопросов: 0 из 4
Что неверно в утверждении «блок хранит полные копии всех предыдущих блоков»?
Чем хеширование принципиально отличается от шифрования?
Что действительно ограничивает приватный (permissioned) блокчейн?
Значит ли неизменяемость блокчейна, что ошибку в смарт-контракте нельзя исправить?
Отвечено верно: 0 из 4

Слова главы​

blockchain
1 / 15

Проверь себя руками​

Учебную запись транзакции — до автоматизма:

Цель: скорость ≥ 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 человек чьи-то дни рождения совпадут с вероятностью больше половины — искать любое совпадение всегда куда легче, чем совпадение с заранее выбранным). Это не то же самое, что необратимость — свойства независимы друг от друга, у хорошей хеш-функции должны выполняться все сразу.

Электронная (цифровая) подпись под капотом. Подпись строится на асимметричной криптографии: закрытым ключом подписывают не сами данные целиком, а их хеш — это быстрее и работает для данных любого размера. Проверяющая сторона пересчитывает хеш заново и сверяет его с тем, что «раскрывает» подпись при помощи открытого ключа: если хоть один символ в данных изменился после подписания, хеш не совпадёт, и подпись окажется недействительной.

Дальше по теме:

Куда дальше: проверенные ресурсы​

Челлендж ⭐​

На чемпионате «Профессионалы» команда ведёт учебный блокчейн из матчей. Блок #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 — и объяснять, что именно в них общее, а что разное.
  • Разводить блокчейн, криптовалюту и смарт-контракт как три независимых понятия, а не синонимы.
  • Объяснять на примерах, почему децентрализованность, безопасность и скорость сети — это компромисс, а не три независимо максимизируемых свойства.
  • Приводить минимум два реальных примера применения блокчейна вне криптовалют.
  • Распознавать типичные заблуждения о блокчейне и объяснять, в чём именно они ошибочны.

Видео по теме

ВидеоЧто такое Блокчейн простыми словами? Как работает Блокчейн?blockchain24 - Ведущий криптохаб
ВидеоЧто такое Блокчейн (Blockchain) | принцип работыAltcoinlog Media
ВидеоЧто такое блокчейн - простыми словамиPack Money
ВидеоБлокчейн и криптовалюта на пальцахListen IT
ВидеоПростым языком, что такое блокчейн и где он используетсяНаучДок

Комментарии

Обсуждение живёт в GitHub Discussions и грузится с чужого домена — поэтому только по нажатию.