signature : Quelle est la pré-image de hachage de transaction pour différentes valeurs de SIGHASH (et non de SIGHASH_ALL) dans P2PKH ?


J’ai quelques questions concernant la préimage de hachage de transaction lors de la signature avec différentes valeurs du drapeau SIGHASH dans le cas du P2PKH scénario.

mais à quoi ressemble-t-elle pour les autres valeurs de cet indicateur.

I2

signature : Quelle est la pré-image de hachage de transaction pour différentes valeurs de SIGHASH (et non de SIGHASH_ALL) dans P2PKH ?

Ensuite nous définissons son champ scriptSig sur scriptPubKey à partir de la sortie (UTXO) vers laquelle pointe cette entrée La longueur du champ scriptSig dans les autres entrées reste nulle (0x00) et le champ scriptSig reste vide Enfin ce qui indique qu’il s’agit d’une signature de type SIGHASH_ALL.

mais comment cela fonctionne-t-il pour les autres valeurs de ce drapeau.

Mon hypothèse est que c’est exactement le même processus, la seule question est de savoir quels intrants et extrants sont pris en compte. Par conséquent, les préimages de hachage de transaction pour les différentes valeurs du drapeau SIGHASH sont les suivantes (j’ai pris en compte les valeurs définies dans le livre Master Bitcoin) :

  • NONE (0x02) – La signature s’applique à toutes les entrées, aucune des sorties

      /li>

    • les sorties ne sont pas prises en compte (elles ne font pas partie de la pré-image de hachage de transaction, de la même manière que le champ scriptSig des autres entrées n’en fait pas non plus partie)
    • ajouter 0x02000000 à la fin
  • SIGNLE (0x03) – La signature s’applique à toutes les entrées mais uniquement à la sortie avec le même numéro d’index que l’entrée signée

      /li>

    • seul le contenu de la sortie dont l’index correspond à l’index d’entrée est pris en compte (par exemple si on veut signer I2, on prendra les entrées I1, I2 et I3, mais seulement la sortie O2)
    • ajouter 0x02000000 à la fin
  • ANYONECANPAY (0x81) – La signature s’applique à une entrée et à toutes les sorties

      les autres entrées un scénario similaire que nous aurions si le la transaction n’avait qu’une seule entrée et le SIGHASH_ALL)

      /li>

    • ajouter 0x81000000 à la fin

    ANYONECANPAY (0x82) – La signature s’applique à une entrée, aucune des sorties

      ANYONECANPAY) s’applique

    • les sorties ne sont pas prises en compte (elles ne font pas partie de la préimage du hachage de la transaction)
    • ajouter 0x82000000 à la fin

    ANYONECANPAY (0x83) – La signature s’applique à une entrée et à la sortie avec le même numéro d’index

      ANYONECANPAY) s’applique

    • pour les sorties, absolument la même histoire que celle que j’ai décrite pour 0x03 (SIGNLE) s’applique
    • ajouter 0x83000000 à la fin

    Mes questions sont donc :

    Est-ce ainsi que ça fonctionne ?

    2. Existe-t-il d’autres valeurs pour le drapeau SIGHASH que je devrais couvrir ?

    3. Existe-t-il des travaux/documents/normes connexes qui expliquent cela (peut-être pour d’autres scripts, comme P2WPKH, etc.) ?