¿Dónde se almacena la firma en una transacción de SegWit?

Entiendo que SegWit hace que los datos del bloque de transacciones sean más pequeños, al no almacenar la firma en el Bloque, para que quepan más transacciones en 1 MB. Esto se debe a que la firma ya no se almacena en la cadena de bloques. La Firma genera casi el 70% del peso de los datos del Bloque. Entonces, en una transacción de SegWit, se almacena un 70% menos en Blockchain. Pero, ¿dónde se almacenan las firmas si no es en Blockchain?

Respuestas (2)

Eso no es exacto. El testigo se almacena en la cadena de bloques.

En el formato segwit, la firma es parte del testigo, el testigo es parte de la transacción y la transacción se escribe en el bloque en su totalidad. Los nodos que entienden segwit descargarán y almacenarán la transacción completa, incluida la firma.

Sin embargo, segwit está construido de manera compatible hacia adelante. Está hecho para que sea posible producir una "versión simplificada" de una transacción segwit que omite el "testigo". Esta versión simplificada es una transacción válida no estándar de acuerdo con las reglas pre-segwit. Esto significa que los nodos pre-segwit no lo propagarán cuando no esté confirmado, pero lo aceptarán cuando esté incluido en un bloque. Los nodos habilitados para Segwit considerarían incompleta la versión eliminada y, por lo tanto, dependerían de recibir la versión completa de la transacción de otro nodo habilitado para Segwit.

Dado que los resultados de la transacción son parte de la transacción eliminada (porque no son parte del testigo), los nodos pre-segwit llegarán a la misma conclusión con respecto a la propiedad de los fondos al seguir los bloques eliminados como nodos con capacidad segwit que leen la información completa. bloques

Parte de la crítica de segwit es que los nodos anteriores a segwit no verificarán la firma de las transacciones de segwit, ya que no reciben el testigo y no sabrían qué hacer con él. Esto significa que un nodo heredado podría aceptar un bloque segwit-invalid hasta que ese bloque ya no sea parte de la punta de la cadena de mayor trabajo. Sin embargo, dicho bloque no se propagaría bien en la red, ya que aproximadamente el 89 % de los nodos de la red son compatibles con segwit . Si está recibiendo una cantidad significativa de fondos de una transacción de segwit y está ejecutando un nodo incapaz de segwit, es posible que desee esperar confirmaciones adicionales antes de tomarlo por su valor nominal. Sin embargo, para cantidades significativas sería una gran idea independientemente.

Gracias por esta explicación detallada, sin embargo, no estoy seguro de entender la última oración.
@EricLavault: Si recibe una gran cantidad de dinero, puede ser interesante que la gente intente engañarlo. Si espera más de una confirmación, será más costoso y más difícil para ellos.
Esta no es una respuesta a mi pregunta... mi pregunta era; ¿Dónde se almacena la firma cuando se separa de la transacción (formato SegWit)? en la cadena de bloques o fuera de la cadena de bloques?
@laizess: En la cadena de bloques. Vea mi segunda oración: "En el formato de transacción segwit, la firma es parte del testigo, el testigo es parte de la transacción y la transacción es parte del bloque". En realidad, la firma no está separada de la transacción, sino que está separada del resto del script de entrada pero aún dentro de la misma transacción.
@Murch Eso es confuso. Si el testigo está en el bloque, ¿por qué no cuenta para el tamaño del bloque? Suponga la posibilidad de que no sea parte del bloque y, en cambio, provenga de un canal separado. En ese caso, está claro que se almacenan menos datos en la cadena de bloques para cada transacción. Lo que estás describiendo pone exactamente la misma cantidad de datos en la cadena de bloques; así que no veo cómo resuelve el problema.

Todavía se mantiene en la cadena de bloques. Simplemente se mantiene de una manera que los clientes que no son segwit nunca ven ni almacenan la firma.

Si la Firma todavía está en la cadena de bloques, ¿cómo es posible ahorrar el 70% del espacio de bloques para colocar más transacciones sin la firma en el mismo bloque? independientemente si los clientes que no son segwit pueden verlos o no? Si la firma todavía está en Blockchain, separada de la transacción, ¿cómo se puede identificar la firma en cualquier momento, que las transacciones fueron válidas (firma)? si la transacción y la firma están separadas pero ambas guardadas en la cadena de bloques, ¿por qué separarlas en primer lugar?
Segwit realmente no 'ahorra' espacio de bloques. Es un truco de contabilidad. Mueve bytes del área contada contra el tamaño del bloque a un área no contada por el tamaño del bloque (presegwit). Un nodo que no sea segwit nunca ve y no puede validar firmas segwit. Hay dos razones principales para hacer esto. 1) El tamaño efectivo del bloque se puede aumentar sin una bifurcación dura. 2) Es bueno tener un identificador para la transacción que no se puede cambiar sin volver a firmar la transacción.