Tecnología Bitcoin: Testigo segregado (SegWit). Segregated Witness (SegWit) es una actualización de protocolo implementada destinada a proporcionar protección contra la maleabilidad de las transacciones y aumentar la capacidad de bloque.
SegWit separa el testigo de la lista de entradas. El testigo contiene los datos necesarios para comprobar la validez de la transacción, pero no es necesario para determinar los efectos de la transacción.
Para entender realmente cómo funciona SegWit, nos centraremos en dos conceptos distintos: peso de bloque y horquillas blandas.
Tamaño del bloque Bitcoin y horquillas
Para hablar con precisión sobre los tamaños de bloque, es importante comprender cómo se mide el tamaño de bloque. El tamaño del bloque es simplemente el tamaño en bytes del bloque serializado (el encabezado del bloque, el número de transacciones y las transacciones en sí).
Como parte de las reglas de consenso, cada nodo de la red Bitcoin actualmente comprueba para asegurarse de que un bloque sea inferior a 1.000.000 bytes. Un bloque mayor de 1.000.000 bytes será rechazado por estos nodos como regla de consenso.
Dado que los nodos heredados (nodos que no se actualizan) rechazarán un bloque mayor de 1.000.000 bytes, cualquier tenedor suave debe mantener esta regla. Pero, ¿cómo puedes aumentar el tamaño del bloque y seguir manteniendo esta regla? ¿Son posibles los bloques más grandes a través de una horquilla blanda?
La idea clave es que una gran parte de la transacción, ScriptSig (clave pública), esencialmente no se puede enviar a nodos heredados para que una transacción se cuente como válida. El hecho de que esto se pueda hacer como un tenedor suave y permitir más transacciones es un avance de ingeniería.
Las transacciones que no son Segwit ponen el ScriptSig en el medio de la transacción. Las transacciones de SegWit ponen el ScriptSig al final. La parte ScriptSig de las transacciones SegWit se denomina “datos testigo”. Cuando las transacciones SegWit se envían a nodos heredados, los datos testigo se eliminan. La clave es que estas transacciones “despojadas” siguen siendo transacciones válidas en nodos heredados, lo que nos da un ahorro de espacio sobre las transacciones que no son SegWit. Por lo tanto, más transacciones pueden caber en el bloque enviado a nodos heredados sin sobrepasar el límite de 1.000.000 bytes.
Los nodos SegWit reciben transacciones y bloques SegWit que incluyen los datos de testigo mediante mensajes de red alternativos. Los bloques SegWit que incluyen los datos de testigo pueden tener más de 1.000.000 bytes. Los nodos heredados, como se mencionó, reciben los mismos bloques y transacciones, pero con los datos testigo eliminados. Esta es una forma de hacer de SegWit un tenedor suave, lo que significa que no es obligatorio actualizar su software para participar en consenso.
SegWit y peso del bloque
Un problema obvio para un crítico de SegWit sería el hecho de que necesita haber un límite superior, de lo contrario, el tamaño del bloque podría escalar indefinidamente, lo cual es un gran problema para la tolerancia a fallas de los nodos.
Para restringir los bloques SegWit, a los creadores de SegWit se les ocurrió una restricción diferente que no sea el tamaño. Los bloques SegWit están restringidos por algo llamado peso de bloque. El peso del bloque es un nuevo concepto introducido en SegWit, y se calcula por transacción. En esencia, cada transacción tiene un “peso”.
Las transacciones que tienen cero datos de testigos son más ligeras que las que tienen datos de testigos. Tenga en cuenta que las transacciones de SegWit se transmiten a nodos heredados sin datos de testigo, por lo que esto siempre dará lugar a bloques comunicados a nodos heredados que son inferiores o iguales a 1.000.000 bytes.
Un concepto clave a entender es que las transacciones SegWit pueden tener muchos pesos diferentes dependiendo de la cantidad de la transacción que toman los datos de testigos, lo que da a los creadores de transacciones mucho más espacio para jugar con la maleabilidad de la transacción.
Disclaimer: The views and opinions expressed by the author should not be considered as financial advice. We do not give advice on financial products.