← К содержанию навыка

Блокчейн — необходимый минимум

15 минут
Раздел 1 из 9

Блокчейн — необходимый минимум

Если вы уже представляете, что такое адрес, транзакция, подтверждение и reorg — переходите сразу к следующему разделу. Всё, что ниже, — это не курс по блокчейну: это словарь ровно тех понятий, на которые будут опираться остальные восемь разделов. Без него мы не сможем говорить о кастоди, депозитах и on-chain/off-chain-границе.

Один перевод, два совершенно разных мира

31 октября 2008 года в небольшой криптографической рассылке появился девятистраничный документ за подписью Сатоши Накамото — «Bitcoin: A Peer-to-Peer Electronic Cash System». Идея — деньги без банков, без посредников, без единого ответственного центра. Тогда это выглядело то ли утопией, то ли мошенничеством. Полтора года спустя, 22 мая 2010-го, программист Ласло Ханец заплатил 10 000 BTC за две пиццы Papa John's — и эта сделка вошла в историю как первая покупка чего-то материального за биткоины. Сегодня за те же 10 000 BTC можно купить небольшой остров.

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

Вариант первый — через банк. Открываете приложение, нажимаете «перевести», через секунду видите «выполнено». Но деньги ещё не у друга. В этот момент работает длинная цепочка посредников: ваш банк, клиринговая палата, корреспондентские счета, банк друга. Через час-другой запись в его бухгалтерии обновится — и только тогда баланс действительно вырастет. Вы этого не видите: банки показывают пользователю мгновенный итог и разбираются между собой позже.

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

Централизованная биржа (CEX, Centralized Exchange) сидит ровно между этими двумя мирами. Снаружи она выглядит как банк — мгновенные сделки, привычный интерфейс, поддержка по почте. А внутри она умеет говорить на языке блокчейна: видит входящие транзакции, подтверждает их, подписывает исходящие. Чтобы понять, как устроены восемь последующих разделов, нам нужен общий словарь обоих этих миров. Именно его мы сейчас и соберём.

И общая мысль, прежде чем нырять в технику. Со стороны криптобиржа кажется нишевой системой — «площадка для торговли странными деньгами». Но стоит посмотреть на неё глазами архитектора, и оказывается, что в одном решении сошлись сразу несколько интересных задач большой распределённой системы: low-latency-движок на горячем пути запроса, событийная модель с миллионами обновлений в секунду, двойная запись с жёсткими финансовыми инвариантами, безопасное хранение долгоживущих секретов на миллиарды долларов, интеграция с десятком внешних сетей со своими правилами и своими отказами. Решения, которые крупные биржи применяют для этих задач, работают и далеко за пределами крипты — те же приёмы встречаются в торговых системах фондовых бирж, в платёжных процессорах, в высоконагруженных банковских бэкендах. Даже если вы никогда не будете строить криптобиржу, разобрать её устройство стоит ради инженерных уроков, которые масштабируются куда шире самой темы.

Блокчейн: append-only журнал без хозяина

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

Для наших целей этого определения достаточно. Нам не важно, как именно работает консенсус — proof-of-work, proof-of-stake или что-то ещё. Нам важно, что в результате получается append-only журнал без единого владельца. Это первое, что отличает блокчейн от базы данных банка: банк может задним числом «исправить ошибку» в проводке, а блокчейн — нет.

Здесь важно сразу развести два понятия, которые в разговорной речи часто путают. Блокчейн — это не Bitcoin. Bitcoin — первая и самая известная сеть, построенная по блокчейн-принципу, но сам блокчейн — это общая технология распределённого журнала. Ethereum, Solana, Litecoin, Tron, BNB Chain, Avalanche, Polygon — каждая из них отдельный блокчейн со своими правилами консенсуса, своей валютой, своим темпом блоков и своими комиссиями. Когда мы дальше говорим «блокчейн», речь об общей идее. Когда речь заходит о конкретной сети — называем её по имени.

Адрес и приватный ключ: «не ваши ключи — не ваши монеты»

В 2013 году валлийский айтишник Джеймс Хауэллс, разбирая стол, по ошибке выбросил жёсткий диск, на котором лежал кошелёк примерно с 7 500 биткоинами. С тех пор он не раз пытался добиться от городского совета Ньюпорта разрешения раскопать местную свалку — и каждый раз получал отказ. Содержимое того диска сегодня стоит больше полумиллиарда долларов. Ни служба поддержки, ни суд, ни полиция эти деньги вернуть не могут: нет файла с приватным ключом — нет и денег.

Эта история напрямую объясняет, как устроены адреса и ключи в блокчейне.

Адрес — публичный идентификатор кошелька. На Bitcoin он выглядит как bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh, на Ethereum — как 0x742d35Cc6634C0532925a3b844Bc9e7595f0bE48. Адреса можно показывать кому угодно: по ним нельзя «обнулить счёт» или украсть деньги.

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

Отсюда и знаменитая фраза «not your keys, not your coins». Если ваши монеты лежат на бирже, приватный ключ хранит биржа, а значит, формально распоряжается ими именно она. Если биржа обанкротится, будет взломана или заморозит вывод — ключ у неё, а не у вас. Это не мелочь: седьмой раздел навыка целиком посвящён тому, как крупные биржи хранят миллиарды долларов средств пользователей и какие катастрофы уже из-за этого случались.

Транзакция: от намерения до записи в блокчейне

22 мая 2010 года Ласло Ханец опубликовал на форуме bitcointalk.org объявление: «Заплачу 10 000 BTC тому, кто закажет мне на дом две большие пиццы». Через несколько дней откликнулся пользователь под ником jercos, оформил доставку Papa John's в Джексонвилл, и Ханец перевёл ему 10 000 BTC. Эту транзакцию и сегодня можно открыть в любом блок-эксплорере и увидеть, как 10 000 BTC переходят с одного адреса на другой при нулевой комиссии — тогда сеть ещё не была загружена. Запись останется в блокчейне навсегда.

Транзакция — это подписанное приватным ключом сообщение вида «перевести N монет с адреса A на адрес B, заплатить комиссию сети». Путь транзакции от отправки до зачисления проходит через два этапа:

  1. Mempool (memory pool). Когда вы отправляете транзакцию, она сначала попадает в общую очередь ещё не включённых в блок транзакций — её держат в памяти тысячи узлов сети. Пока транзакция в mempool — она есть и её нет одновременно: все узлы её видят, но ни один баланс ещё не изменился.

  2. Включение в блок. Майнеры или валидаторы выбирают из mempool транзакции с наиболее выгодными комиссиями и включают их в очередной блок. Только с этого момента баланс изменён.

Для биржи это критическая деталь: mempool-транзакция не подтверждает ровно ничего. Пока депозит не лёг в блок, биржа не может с уверенностью сказать, что он вообще состоится.

Блоки и подтверждения: почему одного недостаточно

Транзакции не попадают в блокчейн поодиночке — они пакуются в блоки. У каждой сети свой темп: Bitcoin — примерно раз в десять минут, Ethereum — раз в двенадцать секунд, Solana — несколько раз в секунду. Новый блок ссылается на предыдущий, предыдущий — на своего предшественника, и так до самого первого, «генезисного» блока. Сатоши создал его 3 января 2009 года и вшил в него газетную цитату: «The Times 03/Jan/2009 Chancellor on brink of second bailout for banks». Отсюда слово «цепь»: каждый блок криптографически связан со всей историей до него.

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

Блок № 812 3449kz3→qf4a 0.18 BTCa2xp→t7mn 0.02 BTC···Блок № 812 345r5ld→j8vc 1.40 BTC9kz3→b2nk 0.05 BTC···Блок № 812 346h7yf→qwl0 0.61 BTCqf4a→xm3r 0.09 BTC···Блок № 812 347t7mn→ztu8 0.24 BTCb2nk→pv5k 0.33 BTC···Блок № 812 348j8vc→ek9w 0.77 BTCxm3r→c6fn 0.11 BTC···Блок — пакет транзакций в цепи (~10 мин)Транзакция — «переведи N монет с адреса A на B»Адрес — публичный идентификатор кошелькаГлубина — блоков добавлено поверх этой транзакции
Блок, транзакция, адрес и глубина подтверждений — ключевые термины, к которым мы будем возвращаться каждый раз, когда речь зайдёт о депозитах и выводах

Зачем биржи вообще ждут больше одного подтверждения? Потому что сразу после включения в блок транзакция ещё может «уехать» обратно в mempool — об этом в следующем разделе. Типичные пороги, которыми пользуются крупные биржи: Bitcoin — 3–6 подтверждений (полчаса–час), Ethereum — около двенадцати (пара минут), Solana — секунды. Для крупных депозитов пороги ещё выше: чем больше денег переводит пользователь, тем дороже бирже ошибиться.

0 подтв.tx: a3f1…9cв блоке — ждём1 подтв.tx: a3f1…9c2 подтв.tx: a3f1…9c3 подтв.tx: a3f1…9cбиржа зачисляет4 подтв.tx: a3f1…9c5 подтв.tx: a3f1…9cнеобратимо0 подтверждений — транзакция в блоке, но reorg может её откатить.Биржа ждёт нескольких блоков поверх. Для Bitcoin — 3–6 подтверждений (~30–60 мин).Чем крупнее депозит, тем выше порог зачисления.
Одна и та же транзакция с нулём, одним, двумя и более подтверждениями. Биржа ждёт не «в блоке», а «достаточно глубоко в блокчейне»

Reorg: когда история переписывается

В январе 2019 года в сети Ethereum Classic случилась история, которая для бирж стала хрестоматийным чёрным сценарием. Атакующий собрал больше половины хешрейта сети, втайне намайнил собственную ветку блокчейна — длиннее канонической — и опубликовал её. Узлы переключились на новую версию истории. А в этой новой истории нескольких депозитов больше не существовало — но биржи их уже зачислили, и пользователи уже успели обменять полученные монеты и вывести в другие сети. Coinbase оценила ущерб примерно в двести тысяч ETC — больше миллиона долларов на тот момент. Это был не баг и не «теоретическая угроза»: это было штатное поведение блокчейна под давлением.

Такое явление называется reorg (chain reorganization). Иногда два валидных блока появляются почти одновременно в разных частях сети, и какое-то время часть узлов считает каноническим один блок, а часть — другой. Сеть не может долго жить в этом состоянии: через один-два блока большинство увидит более длинную ветку и откатит более короткую. Чаще всего это происходит из-за сетевых задержек, без всякой атаки. Иногда — намеренно, как в истории с Ethereum Classic.

Представьте, что это значит для биржи:

  1. Пришёл депозит, блок с ним получил одно подтверждение.
  2. Биржа зачислила пользователю баланс.
  3. Пользователь немедленно вывел эти деньги в другую сеть.
  4. Через две минуты случается reorg — исходный блок откатывается.
  5. Депозита у биржи больше нет, а вывод уже ушёл.

Дыра в балансе — ровно на сумму депозита.

Именно поэтому одного подтверждения почти никогда не достаточно. Седьмой раздел навыка подробно разбирает, как биржи проектируют депозитный пайплайн, чтобы переживать reorg без потерь. Пока запомним главное: reorg — это не баг и не редкость, это штатное поведение блокчейна, к которому биржа обязана быть готова.

Комиссии: почему биржи группируют выводы

В декабре 2017 года в Ethereum случилась история, которую вспоминают в любом разговоре про комиссии. В сети запустилась игра CryptoKitties — коллекционные виртуальные котики, которых можно покупать, продавать и скрещивать. За несколько дней она забила mempool так плотно, что обычные транзакции зависали часами, а средняя комиссия выросла с центов до десятков долларов. Несколько крупных бирж временно остановили вывод ETH — и из-за стоимости, и из-за того, что подписанные транзакции просто не попадали в блок.

Механика простая: каждая транзакция платит комиссию сети за включение в блок. Пользователь выставляет цену, майнер или валидатор выбирает из mempool транзакции с наиболее высокими комиссиями. В периоды перегрузки — NFT-мания, запуск популярного токена, массовая ликвидация на DEX (Decentralized Exchange) — комиссии могут взлетать в десятки раз за считанные минуты.

Для биржи это прямая финансовая проблема. Когда тысяча пользователей одновременно нажимает «вывести 0,1 ETH», бирже не выгодно отправлять тысячу отдельных транзакций — она заплатит комиссию за каждую. Поэтому большинство бирж батчит выводы: собирает сотни пользовательских заявок в одну on-chain-транзакцию с несколькими выходами и платит одну комиссию за весь пакет. Это один из приёмов, которые мы подробно разберём в седьмом разделе, когда будем говорить про пайплайн вывода.

On-chain и off-chain: самое важное разделение

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

On-chain значит «записано в блокчейне». Такая операция видна всему миру, требует комиссии сети, подтверждается минутами или часами, и её нельзя отменить решением биржи — только новой транзакцией, которая сама стоит комиссии.

Off-chain значит «существует только внутри частной системы — например, внутри биржи». Такая операция — это строчка в транзакционной базе данных: мгновенная, бесплатная, невидимая снаружи. Её можно откатить, если БД поддерживает транзакции. Снаружи биржи её просто не существует.

Все сделки на CEX происходят off-chain. Границу с блокчейном пересекают только два события: депозит (деньги входят на биржу) и вывод (деньги уходят с неё). Это предложение стоит запомнить. Когда вы меняете биткоин на USDT на Binance, в Bitcoin-блокчейне ничего не меняется — ни одна транзакция не отправляется. Меняются только две строчки в базе данных биржи: «у пользователя X стало меньше BTC», «у пользователя X стало больше USDT». Именно поэтому биржа может обрабатывать миллионы ордеров в секунду: в блокчейне такие скорости невозможны, а в собственной БД — пожалуйста.

On-chain — публичный блокчейнМедленно, дорого, видно всемТранзакции записаны в глобальный блокчейнПодтверждение — минуты или часыКомиссии сети за каждую операциюНеизменяемая история, видимая всем узламOff-chain — внутренний леджер биржиМгновенно, бесплатно, внутри одной системыСтроки в транзакционной БД биржиПодтверждение — микросекундыБиржа берёт комиссию по своим правиламВидно только пользователю и самой биржеДепозитВыводГлавное правило: на CEX все сделки происходят off-chain.Блокчейн пересекается только при депозите (деньги входят) и выводе (деньги уходят).
Самая важная модель: блокчейн — открытое пространство с медленными и дорогими транзакциями, внутренний леджер биржи — частная БД с мгновенными и бесплатными проводками. Пересечение — только депозит и вывод

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

Разные сети — разные правила

Мы говорили в основном про Bitcoin и Ethereum, но настоящая биржа работает не с двумя сетями, а с десятками. У каждой свой ритм — блоки приходят быстрее или медленнее, комиссии колеблются в разных диапазонах, адреса выглядят по-разному, пороги безопасности не совпадают.

СетьВремя блокаПодтвержденийТипичная комиссияФормат адреса
Bitcoin~10 минут3–6$0.5–$20+bc1qxy2kgdygj…hx0wlh
Ethereum~12 секунд~12$0.5–$50+0x742d35Cc66…bE48
Solana~400 мс~32 (≈13 с)≈ $0.0001DYw8jCTfwHNR…NSKK
Tron~3 секунды~20$0 (energy)TXYZopYRdj2D…AeBf

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

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

Итоги раздела

Теперь у нас есть общий язык. Вот что из этого раздела понадобится дальше:

  • Блокчейн — append-only журнал без единого владельца: никто не может внести в него правки задним числом. Не синоним Bitcoin — десятки независимых сетей, у каждой свои правила.
  • Адрес — публичный идентификатор кошелька, показывать безопасно. Приватный ключ — единственный способ распоряжаться монетами. Потерян ключ — потеряны деньги навсегда.
  • Транзакция сначала попадает в mempool (видна, но ничего не гарантирует), и только потом — в блок (факт состоялся).
  • Подтверждение — каждый новый блок сверху. Биржи ждут не одного подтверждения, а нескольких: Bitcoin — 3–6, Ethereum — около 12, Solana — секунды. Для крупных депозитов пороги выше.
  • Reorg — штатное поведение блокчейна, при котором более короткая ветка откатывается. Биржа обязана учитывать этот сценарий в депозитном пайплайне.
  • Комиссии могут взлетать в разы за минуты. Биржи батчат выводы, чтобы платить одну комиссию за пакет транзакций.
  • On-chain / off-chain — главное разделение всего навыка. Все сделки на CEX off-chain; блокчейн пересекается только на депозите и выводе.
  • Разные сети — разные правила: темп блоков, диапазон комиссий, формат адресов, порог подтверждений — всё различается. Интеграция каждой новой сети — отдельный инженерный проект.

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

Дополнительное чтение

  • Satoshi Nakamoto. Bitcoin: A Peer-to-Peer Electronic Cash System (2008)bitcoin.org/bitcoin.pdf. Первоисточник. Восемь страниц, которые стоят у истоков всей индустрии. Стоит прочитать хотя бы первую половину — понятно и без сильной математики.
  • Gavin Wood. Ethereum Yellow Paperethereum.github.io/yellowpaper/paper.pdf. Формальная спецификация Ethereum. Тяжёлое чтение, но если вы хотите знать, как устроен account model, виртуальная машина и газ, — это главная ссылка.
  • Bitcoin Core documentationbitcoincore.org/en/doc. Референс для тех, кто будет поднимать собственный узел: RPC API, настройки, операционные практики.