OP_RETURN в транзакции coinbase?

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

Вы спрашиваете о том, что вообще такое OP_RETURN (подробно описано здесь ) или почему майнер решил поставить его в транзакцию coinbase (точно знает только майнер)?
Возможные причины, по которым майнер решил поместить один в транзакцию coinbase. Объяснение, возможно, я никогда не видел этого раньше.

Ответы (2)

У каждого блока segwit есть один такой OP_RETURN в транзакции coinbase: это корень Merkle дерева свидетелей.

Когда софтфорк segwit был активирован, это включало исправление проблемы гибкости сторонних транзакций, которая ранее присутствовала в сети. Проблема заключалась в том, что подпись транзакции могла быть изменена любым другим лицом путем инвертирования S-значения, используемого в подписи. Это привело к другой действительной (нестандартной) транзакции, которая тратила те же монеты тем же получателям, но с другим txid.

Segwit предотвратил этот источник гибкости транзакций, переместив программу-свидетель из входного скрипта в отдельное «поле свидетеля» в транзакции («отделил свидетель»), которое игнорируется при вычислении txid. Это означает, что даже когда подписи для segwit-транзакций меняются, их txid остается прежним. Создание независимого от подписи txid также упрощает построение поверх неподписанных транзакций (поскольку их txid не меняется вместе с подписью), что полезно, например, для смарт-контрактов, используемых в платежных каналах Lightning Network.

Блок фиксирует все свои транзакции, включая корень дерева Меркла поверх их txids. Однако это будет означать, что это обязательство не распространяется на подписи транзакций segwit, поскольку они не вносят вклад в txid. Чтобы зафиксировать подписи, segwit представил второе параллельное дерево Меркла, построенное из txids-свидетелей, то есть идентификатора транзакции, рассчитанного на основе полных данных транзакции, включая программу-свидетель. Поскольку блок-заголовок не может быть расширен без хардфорка, segwit блокирует фиксацию этого дерева-свидетеля, включая корень в OP_RETURN транзакции coinbase.

Другая причина: объединенный майнинг

Хотя это не относится к транзакции coinbase в примере OP, другой причиной для OP_RETURNтранзакции coinbase является слияние майнинга. Майнер может следовать спецификации объединенного майнинга, которая включает в себя размещение одного или нескольких идентификаторов блоков другой системы во входном скрипте. Кроме того, майнер может создать один или несколько OP_RETURNs с идентификационным кодом и заблокировать информацию о других блокчейнах в соответствии со спецификацией этих цепочек.

Пример: блок 733578 coinbase Tx

Примером, как описано здесь , является транзакция coinbase блока 733578 , в которой майнер майнил три других блокчейна (Namecoin, RSK и Vcash, а также BTC). Блок Namecoin ( ) идентифицируется во входном скрипте ig. Блоки RSK и Vcash включены в транзакции coinbase ; RSK ( ) и Vcash ( ).fabe6d6dOP_RETURN52534b424c4f434b3ab9e11b6d

Согласно ответу @Murch здесь, третьим OP_RETURNв этом примере является сегрегированный корень Merkle свидетеля ( aa21a9ed).