Me he estado golpeando la cabeza contra un escritorio durante unos días tratando de entender el protocolo segwit correctamente.
Otro obstáculo me tomó por sorpresa y estoy luchando por comprender el concepto de "scriptCode:" utilizado en los ejemplos de firma de bip0143 https://github.com/bitcoin/bips/blob/master/bip-0143.mediawiki# especificación
Entiendo que scriptPubKey es básicamente las condiciones de bloqueo puestas en una salida cuando se gasta. Y también entiendo que scriptSig es para canjear una salida previamente bloqueada (destinada a mi pubkey/pubkeyhash).
Me había familiarizado bastante bien con lo que acabo de decir anteriormente, con los elementos de datos de scriptSig empujados a la pila y luego evaluados por pubKeyHash ect. Pero ahora hay un extraño campo "scriptCode" definido que parece sospechosamente idéntico a un p2pkh pubKeyScript.
Así que llegué a la conclusión de que se usa igual en cada hashPreImage:
DUP HASH160 <keyhash> EQUALVERIFY CHECKSIG
Pero luego comencé a pensar en el orden de evaluación de la pila y me confundí nuevamente. ¿Cuál es el orden de evaluación de la pila? ¿Es: inserción de datos de scriptSig> evaluación de pubKeyScript> scriptCode? ¿Qué pasa si hay datos de testigos involucrados? ¿Cuándo se empuja eso a la pila? ¿O me estoy perdiendo totalmente el punto aquí?
Otra cosa que me confunde es la evaluación p2sh-p2wpkh. No entiendo porque el scriptSig tiene que ser un push del redimirScript:
0 <20-byte-key-hash>
volviendo a enfatizar mi pregunta principal. Estoy luchando con el concepto de scriptCode y el orden de evaluación de scripts en general. Me gustaría saber si el scriptCode siempre tiene el mismo formato si solo planeo firmar p2sh-p2wpkh, pk2pkh, pk2pkh
El orden de ejecución es:
El scriptCode es simplemente un nombre para "el código que se está ejecutando". Dentro de la evaluación de scriptPubKey, es igual a scriptPubKey. Dentro de la evaluación de redimirScript, es igual a la redimirScript. Dentro de la evaluación del script testigo, es igual al script testigo.
criptodescriptor
pieter wuille
Malone