en bip 143 para crear una firma de testigo, describe lo que debe serializarse/firmarse. Una cosa que parece faltar en el documento es cómo determinar QUÉ punto de salida usar. Entonces, en estas transacciones hay múltiples txins en cada ejemplo, ¿y siempre parecen elegir solo uno de ellos?
Por ejemplo del Native P2WPKH en bip 143
La siguiente es una transacción sin firmar: 0100000002fff7f7881a8099afa6940d42d1e7f6362bec38171ea3edf433541db4e4ad969f0000000000eeffffffef51e1b804cc89d182d279655c3aa89e815b1b309fe287d9b2b55d57b90ec68a0100000000ffffffff02202cb206000000001976a9148280b37df378db99f66f85c95a783a76ac7a6d5988ac9093510d000000001976a9143bde42dbee7e4dbe6a21b2d50ce2f0167faa815988ac11000000 nVersión: 01000000 txin: 02 fff7f7881a8099afa6940d42d1e7f6362bec38171ea3edf433541db4e4ad969f 00000000 00 eeffffff ef51e1b804cc89d182d279655c3aa89e815b1b309fe287d9b2b55d57b90ec68a 01000000 00 ffffffff txout: 02 202cb20600000000 1976a9148280b37df378db99f66f85c95a783a76ac7a6d5988ac 9093510d00000000 1976a9143bde42dbee7e4dbe6a21b2d50ce2f0167faa815988ac nTiempo de bloqueo: 11000000 La primera entrada proviene de un P2PK ordinario: scriptPubKey: 2103c9f4836b9a4f77fc0d81f7bcb01b7f1b35916864b9476c241ce9fc198bd25432ac valor: 6,25 clave privada: bbc27228ddcb9209d7fd6f36b02f7dfa6252af40bb2f1cbc7a557da8027ff866 La segunda entrada proviene de un programa testigo P2WPKH: scriptPubKey: 00141d0f172a0ecb48aee1be1f2687d2963ae33f71a1, valor: 6 clave privada: 619c335025c7f4012e556c2a58b2506e30b8511b53ade95ea316fd8c3286feb9 clave pública: 025476c2e83188368da1ff3e292e7acafcdb3566bb0ad253f62fc70f07aeee6357 Para firmarlo con un nHashType de 1 (SIGHASH_ALL): hashPrevouts: dSHA256(fff7f7881a8099afa6940d42d1e7f6362bec38171ea3edf433541db4e4ad969f00000000ef51e1b804cc89d182d279655c3aa89e815b1b309fe287d9b2b5a06d57b000) = 96b827c8483d4e9b96712b6713a7b68d6e8003a781feba36c31143470b4efd37 secuencia hash: dSHA256(eeffffffffffffff) = 52b0a642eea2fb7ae638c36f6252b6750293dbe574a806984b8e4d8548339a3b Salidas hash: dSHA256(202cb206000000001976a9148280b37df378db99f66f85c95a783a76ac7a6d5988ac9093510d000000001976a9143bde42dbee7e4dbe6a21b2d50ce8aac015) = 863ef3e1a92afbfdb97f31ad0fc7683ee943e9abcf2501590ff8f6551f47e5e5 hash preimage: 0100000096b827c8483d4e9b96712b6713a7b68d6e8003a781feba36c31143470b4efd3752b0a642eea2fb7ae638c36f6252b6750293dbe574a806984b8e4d8548339a3bef51e1b804cc89d182d279655c3aa89e815b1b309fe287d9b2b55d57b90ec68a010000001976a9141d0f172a0ecb48aee1be1f2687d2963ae33f71a188ac0046c32300000000ffffffff863ef3e1a92afbfdb97f31ad0fc7683ee943e9abcf2501590ff8f6551f47e5e51100000001000000 nVersión: 01000000 hashPrevouts: 96b827c8483d4e9b96712b6713a7b68d6e8003a781feba36c31143470b4efd37 secuencia hash: 52b0a642eea2fb7ae638c36f6252b6750293dbe574a806984b8e4d8548339a3b punto de salida: ef51e1b804cc89d182d279655c3aa89e815b1b309fe287d9b2b55d57b90ec68a01000000 Código de script: 1976a9141d0f172a0ecb48aee1be1f2687d2963ae33f71a188ac cantidad: 0046c32300000000 nSecuencia: ffffffff hashSalidas: 863ef3e1a92afbfdb97f31ad0fc7683ee943e9abcf2501590ff8f6551f47e5e5 nTiempo de bloqueo: 11000000 nHashTipo: 01000000
puede ver que hay 2 txins y solo un punto de salida utilizado en la firma, y esto es bastante cierto para todos los ejemplos. No dice en ninguna parte de bip143 CÓMO eliges. Cualquier consejo es muy apreciado.
Cuando está creando firmas, está firmando para una entrada específica en la transacción. Esa entrada específica tiene un punto de salida correspondiente, por lo que usa su punto de salida en el sighash.
En los ejemplos dados, se dan los sighashes para todas las entradas. Entonces, para cada entrada, hace un suspiro usando el punto de salida para esa entrada.
En este ejemplo, si está firmando para la entrada 1, entonces usa el punto de salida fff7f7881a8099afa6940d42d1e7f6362bec38171ea3edf433541db4e4ad969f00000000
. Si está firmando para la entrada 2, use el punto de salida ef51e1b804cc89d182d279655c3aa89e815b1b309fe287d9b2b55d57b90ec68a01000000
.
nadie392
pieter wuille
andres chow
nadie392