Подтверждения и реорганизации: насколько окончательным бывает окончательное?

·7 мин. чтения·Автор: SSP Editorial Team
Обложка SSP Academy: подтверждения, реорганизации и окончательность в блокчейне

Подтверждения и реорганизации: насколько окончательным бывает окончательное?

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

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

Что на самом деле считает подтверждение

Подтверждение — не чей-то знак одобрения. Это измерение глубины.

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

SSP считает это обычным способом: tipHeight - blockheight + 1. Эта +1 — не ошибка на единицу: транзакция, лежащая в самом свежем блоке, имеет одно подтверждение, а не ноль. Ноль подтверждений означает, что она всё ещё в мемпуле: разослана, но никуда не включена.

Глубина что-то значит потому, что отмена вашей транзакции требует заменить блок, который её содержит, и каждый блок, построенный сверху. Каждый следующий блок делает эту работу тяжелее. На цепочке с доказательством работы ничто никогда не бывает невозможно отменить; это просто становится всё дороже, и на какой-то глубине затраты превосходят всё, что кто-либо мог бы выиграть.

Реорганизации — норма, а не атака

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

Двое майнеров на противоположных концах света могут решить блок с разницей в секунды. На мгновение сеть по-настоящему расходится во мнениях о том, какой блок является вершиной. Затем следующий блок ложится на один из них, эта ветвь становится длиннее, а другой блок остаётся сиротой. Любая транзакция, бывшая только в осиротевшем блоке, возвращается в мемпул и вскоре добывается снова.

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

Глубокие реорганизации — зверь другого рода. Они требуют либо колоссальной вычислительной мощности, либо, изредка, чего-то более странного: ошибка консенсуса Ravencoin вынудила переписать историю куда глубже любой обычной реорганизации — не потому, что кто-то напал, а потому, что узлы разошлись в том, каковы правила. Это редкость. И это напоминание, что «цепочка не может измениться» — сокращение, а не физика.

Откуда взялись шесть подтверждений

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

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

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

Это не гипотеза. Меньшие цепочки с доказательством работы — среди них Ethereum Classic и Bitcoin Gold — пережили настоящие атаки пятидесяти одного процента с подлинными двойными тратами против бирж. Ответом отрасли было не отказаться от этих цепочек, а резко поднять требование к подтверждениям, иногда до тысяч. Эта асимметрия и есть весь урок: глубина подтверждений осмысленна лишь по отношению к тому, сколько безопасности цепочка на самом деле покупает за блок.

Доказательство доли меняет сам вопрос

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

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

Это по-настоящему более сильное утверждение, чем вероятностная глубина, и потому ожидание окончательности в Ethereum — иной род ожидания, чем счёт блоков в биткоине. Solana проводит похожее различие между оптимистично подтверждённой транзакцией и полностью укоренённой.

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

Асимметрия, о которой никто не упоминает

Подтверждения важны, когда вы получаете. При отправке они почти не важны.

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

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

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

Что SSP вам показывает, а что нет

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

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

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

Правила большого пальца, которые стоит держать при себе

Ноль подтверждений — не платёж. Это объявление о намерении заплатить. Для мелких, малорисковых сумм при личной встрече этого может хватить. Для всего прочего это не рассчитанная транзакция.

Одно подтверждение настоящее, но мелкое. Прекрасно для траты. Мало для приёма чего-либо существенного от того, кому вы не доверяете.

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

На цепочках с доказательством доли спрашивайте об окончательности, а не считайте. «Окончательно» означает нечто качественно более сильное, чем «глубоко».

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

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

Поделиться статьёй

Похожие статьи

Квадратная обложка SSP Academy: доказательство работы против доказательства доли

Доказательство работы и доказательство доли: что на самом деле покупает блокчейн

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

6 min
Квадратная обложка SSP Academy: чтение обозревателя блокчейна

Как читать обозреватель блоков и зачем это нужно

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

6 min
Квадратная обложка SSP Academy: ошибка консенсуса Ravencoin и смысл подтверждения

Когда цепь переписывает себя: ошибка консенсуса Ravencoin и чего на самом деле стоит подтверждение

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

7 min