Читать цепочку · Правило из найденной ошибки

Две транзакции с одним именем: правило, которого сначала не было

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

РЕДАКЦИОННЫЙ ОБЗОР · Подготовлен редакцией проекта на основе указанных источников.

Как появилось совпадение

Обычная транзакция ссылается на предыдущие выходы, поэтому точное повторение трудно создать. У coinbase-транзакции, которой майнер получает награду блока, нет обычных входов. Если её данные совпадали, совпадал и txid.

В основной цепочке сохранились два исторических случая: блоки 91 842 и 91 880 содержали coinbase-транзакции с идентификаторами, уже встречавшимися раньше. Тогда это не нарушало явного правила консенсуса.

Почему это было опасно

Старый код считал txid ключом записи о доступных выходах. Новая транзакция с тем же идентификатором могла перезаписать состояние прежней. При реорганизации цепочки узел мог восстановить его неправильно.

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

Правило BIP 30

В 2012 году Pieter Wuille предложил BIP 30: блок не может содержать транзакцию с тем же txid, что и более ранняя транзакция с ещё не потраченными выходами. Два исторических блока сохранили как исключения, потому что они уже были частью цепочки.

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

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

Источники и проверка

  1. BIP 30: Duplicate transactions

Исторический технический материал. «Имя» в заголовке — образное обозначение идентификатора транзакции txid.

Если не указано иное, текст, выводы, структура и редакционная компоновка созданы редакцией проекта. Факты, цитаты и материалы источников принадлежат их авторам и правообладателям.

Вернуться к рубрике