Pila P2SH-P2WPKH

Estoy estudiando P2SH-P2WPKH y cuando creo la transacción firmada puedo ver esta pila (usando btcdeb )

script                                   |                                                             stack 
-----------------------------------------+-------------------------------------------------------------------
OP_DUP                                   | Public Key
OP_HASH160                               | Signature
3ecfc6b4....a49                          | 
OP_EQUALVERIFY                           | 
OP_CHECKSIG                              | 

La pregunta es ¿Dónde y cuándo presiono OP_DUP e OP_CHECKSIG? No encuentro nada dentro del código de Bitcoin en GitHub, ¿quizás durante signrawtransactionwithkey?

Entiendo que la pila contiene el

OP_DUP OP_HASH160 <PubKHash> OP_EQUALVERIFY OP_CHECKSIG

como P2PKH, pero no entiendo por qué están dentro de la pila.

Es mi UTXO y no encuentro 1a83d46422201593cb8f42f44a22a29e86ad652fdentro de mi pila.

{
  "asm": "OP_HASH160 1a83d46422201593cb8f42f44a22a29e86ad652f OP_EQUAL",
  "hex": "a9141a83d46422201593cb8f42f44a22a29e86ad652f87",
  "reqSigs": 1,
  "type": "scripthash",
  "addresses": [
    "2MufRUxRcGnwbdL4PWKzKb7uSFzBT1wQL7u"
  ]
}

ACTUALIZAR No encuentro el código dentro de Github, pero tal vez gracias al programa testigo (<0 <20-byte-key-hash>>) el software se activa y crea la pila con P2PKH. Para el nodo más antiguo es ANYONE_CAN_SPEND, para el nodo más nuevo verifique si hash160 (pubkey) == pubkeyhashy luego verifique la firma.

En ese caso, cuando el UTXO está involucrado solo para TXID y Cantidad, no para validación (scriptPubKey) como P2SH y P2PKH.

¡¡Creo!! Su script es un ScriptPubKey (script de desbloqueo) y el operador OP_DUPcrea un volcado de la pila cuando se ejecuta el ScriptSig (script bloqueado) y se copia en una pila diferente. ¿Por qué esto? porque en el pasado, el bitcoin funcionaba en la pila única y estaba dañado. se OP_DUPusa porque ahora bitcoin usa más pila para verificar un script. Solo soy un estudiante de bitcoin, no tomo mi respuesta como verdadera, pero pruebo esto o espero una posible respuesta de bitcoin-dev.
Gracias, ¿tienes alguna documentación al respecto?
OP_DUP Duplica el elemento de la pila superior, no toda la pila
No sé dónde se puede encontrar la documentación. sobre el operador OP_DUMPsi crees que la pila de entrada es ScriptSig. Tal vez tengo la información incorrecta. Solo agregué una idea.
no, es la clave publica
OP_DUP solo duplica el elemento de la pila superior.
Creo que puedo ser el culpable de la confusión aquí. Btcdeb crea un script virtual para emular el proceso de verificación del programa. El último btcdeb ahora generará una breve nota al respecto. Intente ejecutar con --dataset=p2sh-p2wpkh por ejemplo.

Respuestas (1)

La pregunta es ¿Dónde y cuándo presiono OP_DUP e OP_CHECKSIG?

tu no Ni la transacción que crea la salida ni la transacción que la gasta contienen explícitamente estas instrucciones.

Al verificar un gasto de P2WPKH (lo que significa que el scriptPubKey o el P2SH redimeScript son exactamente OP_0 <20-byte hash>), se activa una lógica especial que verifica la pila de testigos con el script OP_DUP OP_HASH160 <20-byte-hash> OP_EQUALVERIFY OP_CHECKSIG.

Consulte los ejemplos en BIP 141 para obtener más información.

En ese caso, solo obtengo VOUT Amount y Txid de UTXO. ¿Por qué necesito almacenar información en asm (y hexadecimal) de UTXO scriptPubKey?
no entiendo tu pregunta ¿Qué está tratando de lograr?
En P2SH y P2PKH, necesito obtener información de ScriptPubKey para desbloquear la transacción. En P2SH-P2WPKH no me importa scriptPubKey a9141a83d46422201593cb8f42f44a22a29e86ad652f87para desbloquear la transacción
Sé que 1a83d46422201593cb8f42f44a22a29e86ad652fes hash160 del script de canje. ¿Quizás en primer lugar verifique si redimir script hash160 es igual a scriptPubKey para satisfacer al revés? ¿Y "duplicar" la pila como P2SH "clásico", donde el nodo más antiguo verifica solo esta condición y "ve" la transacción ANYONE_CAN_SPEND?
No tengo idea de lo que estás hablando. En todos los P2SH, P2WSH y P2SH-P2WSH, no hay ningún código de bloqueo real en scriptPubKey (y en P2SH-P2WSH tampoco en redimirScript). Todos tienen una fórmula mágica fija en scriptPubKey que dice "busca el script en otra parte".
Como se señaló anteriormente, esta confusión es mi culpa. Modifiqué btcdeb para que ahora imprima un aviso cuando haga esto.