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 )
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).
Aquí hay un ejemplo de trabajo que sienta las bases para responder a su pregunta:
Alice quiere pagarle a Bob, así que le pide a Bob una dirección.
Bob quiere recibir el pago en una dirección P2SH.
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.
Bob le da la dirección P2SH a Alice y Alice la paga.
Algún tiempo después, Bob quiere gastar esos bitcoins a Charlie.
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 addmultsigaddress
RPC.
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.
addmultsigaddress
BIP45. Gracias de nuevo.
sr-gi
colman mcmahon