Transaktion mit CLTV immer noch nicht auszahlbar

Zuvor habe ich tx mit CHECKLOCKTIMEVERIFY generiert. Hier ist die Transaktion https://tchain.btc.com/bb1415c166fd9f767c06d34d539f4b110ef4445f74a76c5ffad1ded33032e872

Es sperrt Gelder vor Block 1442909. Ich erstelle eine neue Ausgabentransaktion.

Wenn ich versuche zu unterschreiben:

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

Ich bekomme "Locktime-Anforderung nicht erfüllt"? Die Höhe der Blockchain beträgt jetzt 1.442.912

Was mache ich falsch?

Antworten (1)

Bitcoin Core unterstützt keine Signaturskripte mit CLTV-Anweisungen.

Es unterstützt nur:

  • P2PK
  • P2PKH
  • k-aus-n-Multisig
  • P2WSH-verpackte Versionen des Obigen
  • P2WPKH
  • P2SH-verpackte Versionen des Obigen

Wenn Sie etwas anderes signieren möchten, müssen Sie Ihre eigene Signaturlogik implementieren.

Der Fehler, den Sie sehen, ist darauf zurückzuführen, dass die Ausgabetransaktion das nLockTimeFeld nicht gesetzt hat. Im Allgemeinen wirkt CLTV indirekt:

  • Eine CLTV-Ausgabe stellt eine Anforderung an die Ausgabetransaktion, um ein nLockTimeFeld zu haben, das größer als die durch die CLTV-Anweisung spezifizierte Zeit ist.
  • Eine Transaktion mit einem nLockTimeFeld kann nur bestätigt werden, wenn die Blockchain-Zeit nach dem Wert in diesem Feld liegt (dies ist sogar der Fall, wenn kein CLTV vorhanden ist).

nLockTimeAber unabhängig davon, selbst wenn Sie ein korrektes Feld hätten , signrawtransactionwüssten Sie immer noch nicht, wie Sie für dieses Skript unterschreiben sollen.

gibt es dafür einen grund? Um zu verhindern, dass Benutzer Geld verlieren oder eine Schutzmaßnahme für den Endbenutzer ohne detaillierte Kenntnisse? Ich habe mich gefragt, ob es möglicherweise Aktivitäten gibt, um anspruchsvollere Anwendungsfälle zu ermöglichen (nach etwas wie einem "--experimental" -Schalter)?
Nein, es ist einfach nicht implementiert. Bitcoin Core hat keine Ahnung, was dieses Skript tut oder wie man eine zufriedenstellende Eingabe dafür erstellt.
Gibt es Pläne, dies umzusetzen?