Fehler beim Senden der Transaktion: Datenpush größer als nötig

Sieht so aus, als würde die Transaktion gut dekodiert. Aber wenn ich senddrawtransaction benutze, bekomme ich

Data push larger than necessary

Was ist falsch an diesem 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"
        ]
      }
    }
  ]
}

Antworten (2)

Ihr scriptSigverwendet einen Daten-Push, um 0x01 auf den Stack zu schieben. Es könnte OP_1stattdessen verwenden.

Danke schön! Aber jetzt bekomme ich "Skript ohne Fehler ausgewertet, aber mit einem falschen/leeren Top-Stack-Element beendet)". Stimmt das mit meinem Einlöseskript oder Skriptpubkey nicht?

Ihre Transaktion schlägt bei der Validierung mit SCRIPT_VERIFY_MINIMALDATA fehl, was in BIP 62 Regel 3 Schutzmaßnahmen gegen Formbarkeit beschrieben wird. CheckMinimalPush () erfordert, dass ein Push von 0x01 mit OP_1 ausgeführt wird.

Diese Standarditätsregel vermeidet den Fall, dass jemand eine Transaktion aus dem Netzwerk und einen Push mit einer längeren Codierung desselben Pushs nimmt und als Ergebnis eine manipulierte Form der Transaktion erzeugt.