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 addresses
se mencionan como ejemplos: ¿a qué se refiere esto exactamente?
¿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 y
se 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 oracle
significa, 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.
Nick ODell
IsStandard
no parece haber cambiado en absoluto; ¿ Quizás los desarrolladores querían referirse aIsStandardTx
? En cualquier caso, no puedo encontrar el código modificado.mago de ozzie
n-of-m OR y
las direcciones de Oracle