Transacción aún impagable con CLTV

Anteriormente generé tx con CHECKLOCKTIMEVERIFY Aquí está la transacción https://tchain.btc.com/bb1415c166fd9f767c06d34d539f4b110ef4445f74a76c5ffad1ded33032e872

Bloquea los fondos antes del bloque 1442909. Creo una nueva transacción de gasto.

Cuando trato de firmarlo:

bitcoin-cli -testnet signrawtransactionwithwallet "020000000172e83230d3ded1fa5f6ca7745f44f40e114b9f534dd3067c769ffd66c11514bb0000000000ffffffff01443dd200000000002676a92103e8546cfe53ca9014f6a352bc2e5c1f7cec1f5b344c73d4db3ed3b8f075d5c9ef88ac00000000"
{
  "hex": "020000000172e83230d3ded1fa5f6ca7745f44f40e114b9f534dd3067c769ffd66c11514bb0000000000ffffffff01443dd200000000002676a92103e8546cfe53ca9014f6a352bc2e5c1f7cec1f5b344c73d4db3ed3b8f075d5c9ef88ac00000000",
  "complete": false,
  "errors": [
    {
      "txid": "bb1415c166fd9f767c06d34d539f4b110ef4445f74a76c5ffad1ded33032e872",
      "vout": 0,
      "witness": [
      ],
      "scriptSig": "",
      "sequence": 4294967295,
      "error": "Locktime requirement not satisfied"
    }
  ]
}

Recibí "Requisito de tiempo de bloqueo no satisfecho"? La altura de blockchain ahora es 1,442,912

¿Qué estoy haciendo mal?

Respuestas (1)

Bitcoin Core no admite la firma de scripts con instrucciones CLTV.

Solo admite:

  • P2PK
  • P2PKH
  • k-of-n multigrado
  • P2WSH versiones envueltas de lo anterior
  • P2WPKH
  • Versiones envueltas en P2SH de lo anterior

Si desea firmar algo más, deberá implementar su propia lógica de firma.

El error que está viendo se debe a que la transacción de gastos no tiene el nLockTimecampo configurado. En general, CLTV trabaja indirectamente:

  • Una salida CLTV exige que la transacción de gasto tenga un nLockTimecampo más grande que el tiempo especificado por la instrucción CLTV.
  • Una transacción con un nLockTimecampo solo se puede confirmar cuando el tiempo de la cadena de bloques es posterior al valor de ese campo (este es el caso incluso cuando no hay CLTV presente).

Pero independientemente, incluso si tuviera un nLockTimecampo correcto, signrawtransactionaún no sabría cómo firmar ese script.

¿Hay alguna razón para ello? ¿Para evitar que los usuarios pierdan fondos o una medida de protección para el usuario final sin un conocimiento detallado? Me preguntaba si puede haber actividades para permitir casos de uso más sofisticados (siguiendo algo como un interruptor "--experimental").
No, simplemente no está implementado. Bitcoin Core no tiene idea de qué hace ese script o cómo construir una entrada satisfactoria para él.
¿Hay algún plan para implementar esto?