Error al enviar la transacción: envío de datos más grande de lo necesario

Parece que la transacción se decodifica bien. Pero cuando uso sendrawtransaction obtuve

Data push larger than necessary

¿Qué tiene de malo este 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"
        ]
      }
    }
  ]
}

Respuestas (2)

Tu scriptSigutiliza una inserción de datos para insertar 0x01 en la pila. Podría usar en su OP_1lugar.

¡Gracias! Pero ahora obtuve "Script evaluado sin error pero terminado con un elemento de pila superior falso/vacío)" ¿Hay algún problema con mi script de canje o scriptpubkey?

Su transacción está fallando en la validación con SCRIPT_VERIFY_MINIMALDATA, que se describe en BIP 62 , regla 3, protecciones contra la maleabilidad. CheckMinimalPush () requiere que se realice un empuje de 0x01 usando OP_1.

Esta regla de estandarización evita el caso en el que alguien toma una transacción de la red y una inserción con una codificación más larga de la misma inserción y, como resultado, crea una forma maleada de la transacción.