¿Qué se entiende por "estándares relajados" para los scripts de canje de P2SH en Bitcoin Core 0.10.0?

De las notas de la versión de Bitcoin Core 0.10.0 :

Reglas de script estándar relajadas para direcciones P2SH

Las reglas de IsStandard() se han eliminado casi por completo para los scripts de redención de P2SH, lo que permite que las aplicaciones utilicen cualquier tipo de script válido, como "n-of-m OR y", direcciones Oracle bloqueadas con hash, etc. Mientras que el protocolo Bitcoin siempre ha admitido este tipo de secuencias de comandos; en realidad, usarlos en la red principal ha sido un inconveniente anteriormente, ya que los nodos estándar de Bitcoin Core no los transmitirían a los mineros, ni la mayoría de los mineros los incluirían en los bloques que extraían.

Entonces, esencialmente, el software central ahora transmitirá P2SH Txns más intrincados que anteriormente se considerarían transacciones no estándar .

¿Cuáles son los cambios específicos que se han hecho (es decir, estándares relajados)? ¿Solo aplica para P2SH Txns? Finalmente, "n-of-m OR y"y hash-locked oracle addressesse mencionan como ejemplos: ¿a qué se refiere esto exactamente?

IsStandardno parece haber cambiado en absoluto; ¿ Quizás los desarrolladores querían referirse a IsStandardTx? En cualquier caso, no puedo encontrar el código modificado.
@nickodell Sí, eso fue lo que entendí. Todavía necesito aclaraciones sobre n-of-m OR ylas direcciones de Oracle

Respuestas (1)

¿Cuáles son los cambios específicos que se han hecho (es decir, estándares relajados)?

Gavin Andresen hizo esta solicitud de extracción que propone el cambio, así como este documento de justificación que describe por qué apoyó el cambio.

¿Solo aplica para P2SH Txns?

Se aplica solo a los scripts de canje de P2SH , que es el script que se ejecuta para ver si tiene los datos necesarios para gastar una salida enviada a una dirección de P2SH.

Finalmente, "n-of-m OR y" y las direcciones de Oracle bloqueadas por hash se mencionan como ejemplos: ¿a qué se refiere exactamente?

  • n-of-m OR yse refiere a un script que busca múltiples firmas de un conjunto de claves O una única firma de otra clave. Por ejemplo, si Alice es propietaria de un negocio y Bob y Charlie son sus empleados, puede permitir que Bob y Charlie trabajen juntos para gastar sus bitcoins (2 de 2) o Alice ("y") puede gastar sus bitcoins por su cuenta. .

  • hash-locked oraclesignifica, en general, que puede crear una transacción que solo se puede gastar cuando se proporciona el hash de algunos datos. Por ejemplo, este PDF (página 24) describe un contrato bloqueado por hash con tres partes: Alice, Bob y Charlie.

    • Alice quiere pagar 1,00 BTC a Charlie a través de Bob.

    • Charlie genera aleatoriamente un gran número r y luego procesa (HASH160) ese número para producir h . El valor r es el oráculo y el valor h es el bloqueo hash.

    • Charlie le da hachís a Alice .

    • (Transacción 1) Alice obtiene la clave pública de Bob y le paga 1,01 BTC en una salida con un script como:<Bob's pubkey> CHECKSIGVERIFY HASH160 <hash h> EQUAL

    • (Transacción 2) Bob no puede gastar esa salida sin el número r que generó el hash h , pero sabe que Charlie tiene el número r , por lo que Bob obtiene la dirección de Charlie y le paga 1,00 BTC con un script como:<Charlie's pubkey> CHECKSIGVERIFY HASH160 <hash h> EQUAL

    • (Transacción 3) Charlie gasta el resultado de la transacción 2 creando el script de firma: <number r> <Charlie's signature>Esto significa que r se revela en la cadena de bloques.

    • (Transacción 4) Bob ve r en la cadena de bloques y lo usa en algún momento para gastar el resultado de la transacción 1:<number r> <Bob's signature>

    El ejemplo anterior parece demasiado artificial, pero el PDF vinculado anteriormente lo usa como parte de un canal de micropago que permite liquidar transacciones fuera de la cadena de bloques de una manera distribuida y de baja confianza, lo que posiblemente permita que Bitcoin escale mucho mejor de lo que lo hace sin tal sistema.

Guau, eso es fascinante. Si es posible, ¿puede aclarar un ejemplo funcional de un script de Oracle que podría funcionar sin la intercepción de un minero?
@WizardOfOzzie No puedo pensar en ningún ejemplo de oráculos bloqueados por hash que sean más simples que resolver el mismo problema sin oráculos bloqueados por hash, a menos que el gastador sea un minero y no tenga que preocuparse por la intercepción del minero. Lo siento.
@WizardOfOzzie Acabo de leer este PDF (a partir de la página 24) que describe un contrato bloqueado por hash , que es en lo que supongo que Peter Todd estaba pensando cuando escribió sobre oráculos bloqueados por hash en las notas de la versión. Actualizaré mi respuesta para describir el proceso en unos minutos.