Problème lié à la construction d'une signature Schnorr correcte pour une transaction Taproot

en utilisant ce que je comprends comme une approche de dépenses par chemin clé, sans aucun script. Cependant, lorsque j'essaie d'envoyer la transaction, mon nœud la rejette avec l'erreur : obligatoire-script-verify-flag-failed (signature Schnorr invalide)

J'utilise les dépendances suivantes dans mon projet Rust :

3017.1" # (une version forkée de bitcoincore-rpc, même si je pense que ce détail n'est pas crucial pour le problème).

Voici la partie pertinente de mon code :

Client key_pair : &ampAddress) -> // Vérification qu' _parity) = XOnlyPublicKey ::from_keypair(& let adresse = Adresse : : p2tr (& Aucunscript_pubkey()script_pub_key ("Je ne peux pas dépenser utxo") [TxIn {

br />

txid : utxo.txid,

vout: utxo.vout,

into_script(),

witness: Witness: :new(),

[TxOut {

script_pubkey(),

value : 0, // tmp value for estimation

lock_time : LockTime ::ZERO tx[0unwrap() )vsize())}" txfee txscript_pub_key laissez mut sighash_cache = SighashCache ::new(&amptaproot_key_spend_signature_hash( 0as_ref())msg tx hash_ty : TapSighashType ::Defaultto_vec()tx)sign_raw_transaction_with_wallet(&ampsigned_tx_bytes) { Ok(txid) => ("Échec de l' info }"/p>

tx, None, None).hex; fonction, qui permet au nœud de remplacer mon témoin par un correct, la transaction est acceptée. Cela suggère que mes entrées et sorties sont construites correctement et que le problème réside probablement dans la façon dont je génère la signature.

taproot_script_spend_signature_hash, sans l'intervention du nœud lors de la signature.

Quelqu'un pourrait-il m'aider à identifier ce que je fais de mal ?