Bitcoind

發送交易時出錯:數據推送大於必要

  • November 16, 2018

看起來交易解碼很好。但是當我使用 sendrawtransaction 我得到了

Data push larger than necessary

這個 tx 有什麼問題?

bitcoin-cli -testnet decoderawtransaction 020000000149d4a5f520ded6fa94f79cd268f0334baeec9a7732c9d946d1cdee58d81e7aad00000000020101ffffffff01904c96000000000017a914f45d94733d430261962932e0c847075195916a048700000000
{
 "txid": "1bbf569b281f2cd9d948e4273120a9bc3bb2c21e31bc9786682c0a22d8feb76c",
 "hash": "1bbf569b281f2cd9d948e4273120a9bc3bb2c21e31bc9786682c0a22d8feb76c",
 "version": 2,
 "size": 85,
 "vsize": 85,
 "weight": 340,
 "locktime": 0,
 "vin": [
   {
     "txid": "ad7a1ed858eecdd146d9c932779aecae4b33f068d29cf794fad6de20f5a5d449",
     "vout": 0,
     "scriptSig": {
       "asm": "1",
       "hex": "0101"
     },
     "sequence": 4294967295
   }
 ],
 "vout": [
   {
     "value": 0.09850000,
     "n": 0,
     "scriptPubKey": {
       "asm": "OP_HASH160 f45d94733d430261962932e0c847075195916a04 OP_EQUAL",
       "hex": "a914f45d94733d430261962932e0c847075195916a0487",
       "reqSigs": 1,
       "type": "scripthash",
       "addresses": [
         "2NFXJy8mvz7ZiT4VVN29xPGC38hTygd3AyJ"
       ]
     }
   }
 ]
}

scriptSig使用數據推送將 0x01 推送到堆棧上。它可以OP_1改為使用。

您的交易未通過 SCRIPT_VERIFY_MINIMALDATA 驗證,這在BIP 62規則 3 保護延展性中有所描述。 CheckMinimalPush () 需要使用 OP_1 推送 0x01。

此標準規則避免了有人從網路中獲取交易並使用相同推送的更長編碼的推送,從而創建交易的變形形式。

引用自:https://bitcoin.stackexchange.com/questions/81066