script : Comment calculer les signatures P2WSH avec OP_CODESEPARATOR ?


J’ai lu le bip143, mais je n’ai pas compris comment calculer le scriptCode de p2wsh.

Un nouvel algorithme de résumé de transaction est défini, mais uniquement applicable aux sigops dans la version 0 du programme témoin Double SHA256 de la sérialisation de : 1. nVersion de la transaction (4-byte little endian) 2. hashPrevouts (32-byte hash) 3. hashSequence (hachage de 32 octets) 4. point de sortie (hachage de 32 octets + petit endian de 4 octets) 5. scriptCode de l’entrée (sérialisé en tant que scripts à l’intérieur de CTxOuts) 6. valeur de la sortie dépensée par cette entrée (petit endian de 8 octets ) 7. nSequence of the input (4-byte little endian) 8. hashOutputs (32-byte hash) 9. nLocktime of the transaction (4-byte little endian) 10. sighash type of the signature (4-byte little endian) L’élément 5  : Pour le programme témoin P2WPKH. Pour le programme témoin P2WSH. le scriptCode est le WitnessScript sérialisé en tant que scripts à l’intérieur de CTxOut., sérialisé en tant que scripts à l’intérieur de CTxOut. (La sémantique exacte est démontrée dans les exemples ci-dessous)

Je ne sais pas comment savoir si « l’opcode de vérification de signature est en cours d’exécution ». Ensuite, j’ai lu l’exemple « Native P2WSH » dans bip143 et je suis encore plus confus.

script : Comment calculer les signatures P2WSH avec OP_CODESEPARATOR ?

Voici le premier exemple de « Native P2WSH » :

The following is an unsigned transaction : nVersion : 01000000 txin : 02 00000000 00 ffffffff 00000000 00 ffffffff txout: 01 00f2052a01000000 nLockTime : 00000000 The first input comes from an ordinary P2PK : scriptPubKey : value : 1.5625 private key : signature : t comes from a native P2WSH witness program : scriptPubKey : , value : 49 witnessScript:: hashPrevouts: dSHA256() = nVersion : 01000000 hashPrevouts: hashSequence : outpoint: bee0a6925f800000000 scriptCode : (see below) amount: 0011102401000000 nSequence : ffffffff hashOutputs: (this is the second input but there is only one output) nLockTime : 00000000 nHashType : 03000000 scriptCode :: sigHash: 82dde6e4f public key : private key : signature : scriptCode :. are removed) preimage : sigHash: 736268bcbe2d2134fc47 public key : private key : signature : The serialized signed transaction is: 01000000 0001 02 00000000 48 ffffffff 0000000000 ffffffff 01 00f2052a01000000 0003

Donc, voici mes questions:

  • Ici, « witnessScript » est RedeemScript, n’est-ce pas ?
  • Quelle est la signification de ‘CODESEPARATOR’ ici ?
  • ?