error de entradas no estándar bad-txns después de sendrawtransaction

Me golpeé la cabeza contra la mesa tratando de enviar una transacción sin procesar y cada vez obtenía el mismo error bad-txns-nonstandard-inputs.


Entonces, esto es lo que hago:

  1. Obtener transacciones no gastadas

    bitcoin-cli listunspent
    [
      {
        "txid": "txid_number_1",
        "vout": 1,
        "address": "address_1",
        "redeemScript": "redeemScript_1",
        "scriptPubKey": "scriptPubKey_1",
        "amount": 0.00024972,
        "confirmations": 31,
        "spendable": true,
        "solvable": true,
        "safe": true
      }
    ]
    
  2. Cree una transacción sin procesar con tx_id y vout tomados arriba

    bitcoin-cli createrawtransaction '[{"txid":"txid_number_1","vout":1}]' '{"address_to_sent":0.00002000}'
    

tx_id_as_hexstring =

02000000016affa8a874987f66be3ab4791b57042cbf0912088352ba0e3931b7b8b8f374c80100000000ffffffff01d0070000000000001976a9147c99343bb9cba8699e7f7b4f5552357e477dc76188ac00000000
  1. Firmar transacción sin procesar

    bitcoin-cli signrawtransaction tx_id_as_hexstring
    
  2. Enviar transacción sin procesar

    bitcoin-cli sendrawtransaction tx_id_as_hexstring
    
    error code: -26
    error message:
    64: bad-txns-nonstandard-inputs
    

Traté de crear la misma transacción con coinb.in , pero el resultado es el mismo.

¿Qué estoy haciendo mal?


También

bitcoin-cli decoderawtransaction tx_id_as_hexstring

devoluciones

{
  "txid": "txid_number_2",
  "hash": "txid_number_2",
  "version": 2,
  "size": 85,
  "vsize": 85,
  "locktime": 0,
  "vin": [
    {
      "txid": "txid_number_3",
      "vout": 1,
      "scriptSig": {
        "asm": "",
        "hex": ""
      },
      "sequence": 4294967295
    }
  ],
  "vout": [
    {
      "value": 0.00002000,
      "n": 0,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 7c99343bb9cba8699e7f7b4f5552357e477dc761 OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a9147c99343bb9cba8699e7f7b4f5552357e477dc76188ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "address_to_sent"
        ]
      }
    }
  ]
}
Tuve el mismo problema al usar algún tipo de P2SH tx. Podría obtener los mejores resultados usando todos los parámetros del comando signrawtransaction: <hexstring> {"txid":txid,"vout":n,"scriptPubKey":hex} <privkey>. Sin embargo, tuve que jugar mucho con los corchetes :-( ¿Cuál es su script de redención? ¿Es un multisig?

Respuestas (1)

Su transacción no está siendo firmada.

En primer lugar, la cadena hexadecimal que createrawtransactionte da no es el txid, es la transacción en sí. Esa transacción no se almacena en su billetera.

Cuando se lo pase a signrawtransaction, la transacción sin procesar se firmará y se le devolverá (será lo que se encuentra debajo del hexcampo en el objeto devuelto. Una vez más, esta transacción no se almacena en su billetera. Esa transacción firmada es lo que le pasa a sendrawtransaction, no lo que createrawtransactionte da.