Что мешает майнеру изменить скрипты блокировки неподтвержденной транзакции

Во многих криптовалютах TX состоит из массива входов TX и выходов TX.

Когда TX отправляется в сеть, у него уже есть подпись (в сценарии разблокировки).

Итак, мой вопрос: что мешает майнеру или кому-либо в сети использовать уже существующую разблокировку и изменить сценарии блокировки транзакций, а затем распространить транзакцию.

Потому что, насколько я понимаю, я могу предоставить подпись для разблокировки TXO, а кто-то использует мою подпись для изменения сценариев блокировки этих TX.

Ответы (2)

Подписи охватывают входы и выходы.

Если кто-то изменяет один из выходов в транзакции, требуется новая подпись. По сути, ваша подпись означает «разрешить использовать мой UTXO X для отправки A BTC в B, C BTC в D,…».

Тогда мой вопрос заключается в том, что на самом деле подписано в сценарии разблокировки биткойнов. Я проводил небольшое исследование скрипта биткойнов. А для P2PKH TX предварительным конечным состоянием стека является открытый ключ, подпись и OP_CHECKVERIFY, без упоминания о том, какие данные были подписаны или подлежат проверке.
Критерием поиска для этого является «sighash». Это хэш (модифицированной версии) расходной транзакции. Он изменен, потому что подпись должна была бы подписывать себя, если бы она была включена. BIP143 меняет схему вздоха.
Но концептуально можно сказать, что большинство подписей эффективно подписывают всю транзакцию расходов.
«Но концептуально можно сказать, что большинство подписей эффективно подписывают всю расходную транзакцию». Означает ли это, что подписанные данные представляют собой SHA 256 (TXO)? .
Что означает ТХО? Можно сказать, что подписывается вся транзакция (все входы, все выходы), исключая сами подписи.
Я просто должен понять, что происходит на самом деле. Тем не менее, блокчейны в настоящее время плохо документированы. Я действительно благодарен за время, которое вы посвящаете объяснению этих технологий.
Вот спецификация схемы хеширования подписи, используемой в тратах свидетеля v0: github.com/bitcoin/bips/blob/master/…

Потому что, насколько я понимаю, я могу предоставить подпись для разблокировки TXO, а кто-то использует мою подпись для изменения сценариев блокировки этих TX.

Принимая «P2PKH tx», скрипт разблокировки требует выполнения некоторых операций при трате tx:

<sig><pubkey><OP_DUP><OP_HASH160>pk hash<OP_EQUALVERIFY><OP_CHECKSIG>

Здесь у меня есть три сценария при изменении частей полей скрипта:

1.) изменить <sig>и<pubkey>

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

2.) изменить только<sig>

майнер изменяет только часть с новой подписью. Теперь транжира будет соответствовать хэшу файла . Однако последняя команда <OP_CHECKSIG>проверит оставшиеся части в стеке ( <new sig><pubkey>), и это (очевидно) потерпит неудачу.

3.) изменить сценарий публичного ключа

когда что-либо в сценарии публичного ключа изменяется, процесс подписи завершится ошибкой. Во время создания подписанной транзакции область подписи заполняется скриптом публичного ключа, а затем подписывается. Позже, перед передачей tx, область sciptsig заменяется на <signature><pubkey>. Поэтому, когда блок будет распространяться на другие узлы, они будут проверять этот блок и его транзакцию внутри и обнаруживать несоответствие подписи.

Питер подробно рассказал здесь о сценариях здесь: Каковы части сценария «Ввод» биткойн-транзакции?

и две ссылки, которые дополнительно помогают понять:

1) http://www.righto.com/2014/02/bitcoins-hard-way-using-raw-bitcoin.html

2) Книга Андреаса «Освоение биткойнов», 2-е издание, стр. 135 и далее.