Перейти к содержимому
buybitcoinsmart

Глоссарий / Транзакции и комиссии

Транзакция TRUC

Другие названия: транзакция v3, Topologically restricted until confirmation.

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

Определено в BIP-431.

TRUC представляет собой политику ретрансляции, в которую отправитель включается, устанавливая версию транзакции в значение 3, а не правило консенсуса. Bitcoin Core 28.0 сделала ее стандартной согласно BIP 431, который ограничивает транзакцию 10 000 виртуальными байтами, а ее дочернюю транзакцию 1000. Вы не будете устанавливать ее сами: BIP 431 направляет эту политику на такие протоколы, как Lightning, чьи транзакции обязательств предподписаны, а комиссия повышается в момент трансляции.

Как это работает

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

Правило первое делает транзакцию заменяемой независимо от того, сигнализирует она по старой схеме BIP125 или нет; впрочем, этот же выпуск сделал различие несущественным, перейдя по умолчанию к полной замене по комиссии (replace-by-fee). Правило второе делает выбор устойчивым: каждый неподтвержденный предок TRUC-транзакции должен быть TRUC, и каждый потомок неподтвержденной TRUC-транзакции тоже должен быть TRUC, так что никто не обойдет ограничения, присоединив обычную дочернюю транзакцию, хотя подтвержденные монеты освобождены в обоих направлениях. Правило третье представляет собой ограничение, от которого происходит название: один неподтвержденный предок и один неподтвержденный потомок, без исключения CPFP (CPFP carve out). Правило четвертое ограничивает транзакцию 10 000 виртуальными байтами против потолка стандартности 100 000 для всего остального. Правило пятое ограничивает дочернюю транзакцию 1000 виртуальными байтами, что при входах taproot все еще оставляет место для 15 входов и 2 выходов. Правило шестое позволяет транзакции оставаться ниже минимальной комиссии ретрансляции узла, в том числе на нуле, при условии, что окружающий ее пакет платит достаточно.

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

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

Два механизма идут вместе с правилами. Вытеснение родственных транзакций позволяет узлу, встретившему вторую дочернюю транзакцию с лучшей оплатой, вытеснить первую по правилам замены вместо отклонения новичка, и поскольку дочерняя транзакция может быть только одна, не нужно гадать, какую отбросить. Замена по комиссии на уровне пакета (package replace-by-fee), которую Bitcoin Core 28.0 включила для связанных групп размером два, затем работает с TRUC-транзакциями, потому что такая форма гарантирована.

Почему это важно при покупке биткоина

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

Покупка здесь ни при чем. Из 41 обзора кошельков на этом сайте те, что ставят настоящий узел Lightning на ваш смартфон, являются местом, где эта политика перестает быть любопытным фактом. Phoenix от ACINQ имеет здесь оценку 4,0 и запускает автономный узел, защищенный сид-фразой из 12 слов, а аварийный путь, который документирует ACINQ, состоит в принудительном закрытии, ожидании примерно 720 блоков, около пяти дней, и восстановлении средств ончейн с помощью такого инструмента, как Electrum. Такое закрытие транслирует транзакцию обязательств, которую BIP 431 называет той, что опирается на исключение CPFP, чтобы избежать пиннинга. Транзакция обязательств, которую не удается провести в блок до истечения тайм-аута, не просто остается на месте: деньги, которые она защищала, становятся доступными для требования другой стороной.

Хранение переносит риск, и в этом разница между нашими записями. Strike с оценкой 4,6 позволяет выводить через Lightning и не добавляет собственной комиссии на переводы, но пока балансы находятся в приложении, они кастодиальные, поэтому каналы и их закрытия принадлежат Strike. Muun с оценкой 3,8 показывает ончейн и Lightning как один баланс и переводит между ними с помощью подводных свопов. Чем большей частью канала вы действительно владеете, тем больше надежное повышение комиссии становится вашей заботой, и TRUC представляет собой политику, написанную для того, чтобы обеспечить его внутри множества узлов, которые ее запускают.

Принудительное закрытие Phoenix с пиннингом и без него

Принудительное закрытие Phoenix является самым ясным местом, где можно увидеть TRUC в работе, потому что транслируемая транзакция была подписана задолго до того, как кто-либо знал, каким будет рынок комиссий.

Сначала рассмотрите старый порядок. Ваша транзакция обязательств представляет собой обычную транзакцию, которая не объявляет версию 3 и транслируется с дочерней транзакцией, которая платит за обе. У вашего контрагента есть второй выход-якорь, который существует, чтобы любая из сторон могла повысить комиссию, и он использует его, чтобы присоединить свою дочернюю транзакцию размером 100 000 виртуальных байт, которая платит один сатоши за виртуальный байт. Ничего из того, что он сделал, не является недействительным. Исключение CPFP позволяло вам протолкнуть одну дополнительную дочернюю транзакцию сверх ограничения на потомков, но правилам замены это безразлично: вытеснить его дочернюю транзакцию означает заплатить 100 000 сатоши комиссии, которые она уже несет, прежде чем ваша собственная комиссия что-либо значит, а исключение предоставляло ровно одну дополнительную дочернюю транзакцию, поэтому оно переставало действовать, как только третья сторона делила транзакцию. Ваше закрытие закреплено пиннингом с помощью ненужной нагрузки, которая почти ничего не стоила ее автору.

Теперь задайте для обеих транзакций версию 3. Транзакции обязательств разрешено не платить вообще ничего, потому что правило шестое принимает ее ниже порога ретрансляции, если пакет проходит планку, а это именно то, что нужно транзакции, подписанной за месяцы до этого. Существовать может только одна дочерняя транзакция, и она не может превышать 1000 виртуальных байт, поэтому худший счет, который кто-либо может вам выставить, составляет сотую часть прежнего. Если контрагент успевает провести свою дочернюю транзакцию первым, ваша вытесняет ее, платя больше. И пара идет как единое целое, потому что Bitcoin Core 28.0 в том же выпуске включила ретрансляцию пакетов из одной родительской и одной дочерней транзакции, при этом родительские TRUC-транзакции допускаются ниже минимальной комиссии ретрансляции.

Честная оговорка касается внедрения. BIP 431 говорит, что выгода против пиннинга ограничена мемпулом отдельного узла, и то, насколько безопасна ваша транзакция, зависит от того, какая часть сети запускает эту политику. Версия 3 была нестандартной до Bitcoin Core 28.0, поэтому узел, все еще работающий на более старом выпуске, не будет ее ретранслировать вообще, а примечания к выпуску называют эту новую ретрансляцию пакетов ограниченной и пока ненадежной в состязательных условиях.

TRUC-транзакция vs номер версии транзакции

Номер версии транзакции представляет собой поле, которое несет каждая транзакция биткоина, а TRUC является набором правил, которые теперь дает одно значение этого поля.

Установка версии в значение 3 является способом, которым отправитель включается, но правила живут не в поле. Это флаг; все важное происходит в коде политики узла, поэтому обновленный узел ретранслирует транзакцию, которую более старый отклоняет. Консенсус никогда не высказывался ни в ту, ни в другую сторону. BIP 431 отмечает, что версия 3 ранее была нестандартной и не имела известных конфликтов с более ранним использованием, поэтому в Bitcoin Core 28.0 изменилась ретранслируемость, а не действительность.

TRUC-транзакция vs cluster mempool

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

Это связанные работы, а не соперники, и BIP 431 говорит об этом прямо: cluster mempool ограничивает размер кластера для всех транзакций, а не только для тех, что включаются по выбору, и гораздо менее строг, чем ограничения TRUC. Он также оставляет пробелы, которые называет BIP 431: cluster mempool не решает пиннинг через абсолютные комиссии или через число конфликтов и несовместим с исключением CPFP, на которое опирался прежний дизайн каналов Lightning. TRUC, вытеснение родственных транзакций и замена пакетов представляют собой путь, предложенный протоколам, которые на него полагались.

Не путать с

Часто задаваемые вопросы

Нужно ли что-то делать, чтобы использовать транзакции TRUC?

Нет, решает ваш кошелек. Поле версии задается программным обеспечением, а BIP 431 написан для контрактных протоколов, которые заранее подписывают транзакцию и добавляют комиссию в момент трансляции, прежде всего для Lightning, поэтому обычный ончейн-платеж с биржи или из аппаратного кошелька не выбирает этот режим.

Являются ли транзакция версии 3 и транзакция TRUC одним и тем же?

Да, это два названия одного и того же. Установка поля версии в значение 3 является единственным способом, который BIP 431 определяет для выбора правил TRUC, поэтому в более ранних текстах на эту тему ее называют v3 transaction policy.

Может ли транзакция TRUC действительно не платить комиссию совсем?

Да, но только внутри пакета. BIP 431 позволяет транзакции TRUC быть ниже минимальной комиссии за ретрансляцию узла при условии, что она оценивается вместе с дочерней транзакцией, комиссия которой покрывает обе, и по этой причине Bitcoin Core 28.0 допускает родительские транзакции TRUC ниже минимальной ставки комиссии за ретрансляцию.

Читайте далее

Связанные термины

Еще в разделе «Транзакции и комиссии»

Читать эту страницу на английском