¿Dónde se almacenan los scripts de canje completo de P2SH?

Un script de canje completo pay-to-script-hash/P2SH puede tener un tamaño de hasta 520 bytes . Solo para aclarar, antes de ser revelado/gastado, ¿el script de canje está almacenado en la billetera del gastador/Bob o en otro lugar?

La guía del desarrollador dice:

"Cuando Bob quiere gastar la salida, proporciona su firma junto con el script de canje completo (serializado) en el script de firma". ( https://bitcoin.org/en/developer-guide#p2sh-scripts )

ingrese la descripción de la imagen aquí

Soroushjp afirma:

"El script de canje en sí solo se revela, se compara con el hash del script de canje y se evalúa durante la transacción de gasto". ( http://www.soroushjp.com/2014/12/20/bitcoin-multisig-the-hard-way-understanding-raw-multisignature-bitcoin-transactions/ )

Antonpuolous afirma:

"P2SH cambia la carga en el almacenamiento de datos para el script largo de la salida (que está en el conjunto UTXO y, por lo tanto, afecta la memoria) a la entrada (solo se almacena en la cadena de bloques)". (2014:133)

(Esta pregunta hace casi lo mismo: ¿Dónde se escribe el guión de P2SH? )

(Hay una relación no deseada con esta pregunta "Almacenamiento de scripts (contratos inteligentes) fuera de la cadena de bloques" , en cuanto a la ubicación de los scripts de canje).

Solo para aclarar, ¿quiere decir dónde almacena el script completo el que lo construye hasta que decide gastar los UTXO bloqueados por sus derechos? (Todos los UTXO que contienen ese hash específico como scriptPubkey de salida)?
Sí, literalmente, ¿dónde se almacena/mantiene hasta que se revela para gastar? En el diagrama, dice la computadora de Bob. Solo quiero precisar dónde/cómo se almacena en un escenario de uso típico.

Respuestas (1)

Aquí hay un ejemplo de trabajo que sienta las bases para responder a su pregunta:

  1. Alice quiere pagarle a Bob, así que le pide a Bob una dirección.

  2. Bob quiere recibir el pago en una dirección P2SH.

  3. Bob crea el script de redimir y luego lo usa para crear un hash de script de redimir, que luego se codifica en una dirección P2SH.

  4. Bob le da la dirección P2SH a Alice y Alice la paga.

  5. Algún tiempo después, Bob quiere gastar esos bitcoins a Charlie.

  6. Bob crea una transacción con una entrada cuyo scriptSig contiene el script de redimir que creó anteriormente.

Ahora, para obtener una respuesta a su pregunta: Bob necesita saber el script de redención en el momento en que crea la dirección P2SH para Alice y cuando gasta los bitcoins en Charlie. Él puede, como usted sugiere, almacenar el script de redimir en su billetera durante todo ese tiempo, o puede regenerarlo a pedido a partir de otros datos en su billetera, o puede almacenarlo externamente; sin embargo, nadie más lo almacena automáticamente. y no se convierte en parte de la cadena de bloques hasta que lo usa en el gasto para Charlie.

Creo que Bitcoin Core hace lo simple y almacena todo el script de redención en su billetera para las direcciones creadas con addmultsigaddressRPC.

Puede haber algunas billeteras que usen algo como BIP45 para regenerar direcciones P2SH cuando sea necesario a partir de pares/combinaciones de semillas de billetera HD.

BitPay Cosign podría externalizar el almacenamiento de direcciones P2SH en algunos casos, aunque realmente no estoy seguro de eso.

Gracias. Eso da mucha información. Todavía no había pensado (o leído) sobre esos otros enfoques. Encuentro muchos tutoriales y documentación de Bitcoin que usan descripciones vagas como "mantenido", "almacenado", "retenido", etc. Encuentro muchas preguntas supuestamente "simples" / elementales, por ejemplo, "¿dónde está almacenado el script X?" difícil obtener respuestas específicas. (Es muy posible que no esté buscando en los lugares correctos). Me voy a leer sobre addmultsigaddressBIP45. Gracias de nuevo.