¿Qué es el "testigo segregado" y cómo puede mejorar la escalabilidad de la red?

Acabo de enterarme de ello, y se afirma que es un "punto de inflexión" en el debate sobre el tamaño de los bloques.

¿Qué es un " testigo segregado "? ¿como funciona?

¿Cómo se puede utilizar para mejorar la escalabilidad de la red?

¿Es esta la respuesta a todas las preocupaciones de escalabilidad de la red?

¿Puedes agregar un enlace a donde leíste sobre este concepto?

Respuestas (1)

No es una solución milagrosa, pero es un muy buen comienzo.

Como ha dicho Gavin Andresen , Segregated Witness es un nombre pobre. La parte 'segregada' del nombre está ahí para denotar que se está haciendo una separación. La parte de 'testigo' del nombre proviene del hecho de que las firmas digitales a menudo se denominan testigos.

El testigo segregado divide las transacciones en diferentes partes que se pueden manejar por separado en lugar de una sola porción de datos como lo son ahora. Específicamente, saca las firmas digitales de las transacciones y las coloca en un árbol merkle separado que tiene la misma estructura que el árbol merkle de transacciones. Entonces, si se implementa por completo, para verificar que una entrada gasta legalmente su salida anterior, obtendría la firma del árbol de firmas, en lugar del scriptSigcampo estándar.

Estos son algunos de los beneficios de esta idea:

  • Dado que los datos de firma (datos de testigos) se almacenan fuera de la transacción (y fuera del bloque estándar), significa que esos datos no tienen que contarse para el tamaño del bloque. Pieter Wuille propone un descuento del 75 % en el espacio ocupado por los datos de firma, lo que significa que puede colocar 4 veces más datos de firma en bloques. Esto da como resultado un aumento de bifurcación suave en el tamaño del bloque.
  • Resuelve completamente los problemas de maleabilidad. El uso de transacciones con los datos de la firma fuera de la transacción significa que los TXID no procesan los datos de la firma, lo que significa que no son maleables (suponiendo que esté utilizando el indicador SIGHASH estándar). Técnicamente, las firmas siguen siendo maleables, solo que modificarlas no invalida las cadenas de transacciones porque las firmas no firman las partes modificables.
  • Permite una actualización lenta. El software tiene que optar por usar Segregated Witness después de que se haya implementado por completo en la red, pero mientras tanto (y después), las transacciones aún se pueden realizar como de costumbre sin el testigo segregado.
  • Todas las futuras actualizaciones de Script se convierten en bifurcaciones blandas. Cuando el testigo segregado se implemente por completo, tendrá un byte de versión en los resultados para la versión de Script que está utilizando. Y el comportamiento de los clientes que ven un script con un número de versión no reconocido es que lo tratan como una salida de 'cualquiera puede gastar'.
  • Las firmas solo prueban que una transacción está autorizada, no describe a dónde van los fondos o de dónde provienen. Entonces, después de que se revisen, se pueden desechar. Poner las firmas en una estructura de datos separada hace que sea mucho más fácil eliminar esos datos, lo que da como resultado que sea necesario almacenar muchos menos datos de blockchain en su disco duro.

Sin embargo, esto no aumenta completamente el tamaño del bloque, solo aumenta la cantidad de datos de firma que puede almacenar un bloque. Dado que las transacciones se componen aproximadamente en un 60 % de datos de firmas, sigue siendo una ganancia bastante grande.

La desventaja es que es una actualización no trivial para que la red comience a usar testigo segregado. El formato de serialización de transacciones es diferente, y el código en todas partes que hace transacciones de bitcoin debe actualizarse. Sin embargo, dado que es un proceso de suscripción, la actualización se puede realizar lentamente con el tiempo.

Puedes ver la gran charla de Pieter Wuille sobre Segregated Witness en:

https://www.youtube.com/watch?v=fst1IK_mrng&feature=youtu.be&t=37m12s .