Рассмотрим 3 возможных транзакции:
Tx1 выходное значение отрицательное
Tx2 a sigScript пуст
Tx3 a scriptPubKey пуст
Могут ли эти транзакции соответствовать правилам консенсуса (могут быть добыты в блоке)? Все ли они нестандартны в соответствии с правилами стандартности/политики?
Выходное значение Tx1 отрицательное
Точно нет. ( кодовая база 2015 г. , кодовая база 2022 г. )
SigScript Tx2 пуст.
Да, если сценарий оценивается как true.
Tx3 scriptPubKey пуст
Да, scriptPubKey не проверен.
Tx2 и Tx3 могут быть потрачены кем угодно в сети, другие пользователи попытаются потратить их мгновенно, а майнеры могут попытаться атаковать их из-под вас, даже если вы совершите первую транзакцию с высокой комиссией.
Чтобы добавить к ответу Кларис что-то, что смутило меня в пустом случае scriptPubKey, который мне объяснили в IRC на этой неделе.
Пока что ни один из явно определенных типов вывода (P2PK, P2PKH, P2SH, P2WPKH, P2WSH, P2SH-P2WPKH, P2SH-P2WSH, P2TR) не может содержать пустой scriptPubKey, как определено. Однако биткойн-транзакция не обязательно должна иметь явно определенный тип вывода. Правила консенсуса касаются только сценариев, а не типов вывода. Действительно, если бы правила консенсуса определялись исключительно с точки зрения типов выходных данных, было бы невозможно использовать SegWit и Taproot в качестве программных форков.
Соответствующий код Bitcoin Core (EvalScript возвращает true, если scriptPubKey пуст) находится здесь .