Estoy publicando esto después de leer las respuestas a esto: ¿ Dónde se almacena la firma en una transacción de SegWit?
Descubrí al leer eso, que en Segwit, los "testigos" (o firmas) que verifican la autenticidad de una transacción todavía se almacenan en la cadena de bloques. En cuyo caso, una transacción dada debería usar la misma cantidad de bits que si no se usara Segwit. Si el tamaño del bloque sigue siendo el mismo, digamos 1 MB, entonces debería contener exactamente la misma cantidad de transacciones.
Tengo una posibilidad alternativa. Digamos que lo que realmente se envía a los nodos es una transacción con un campo de firmas vacío (creo que ese campo no existe debido a las secuencias de comandos y las cosas multi-sig, pero tengan paciencia conmigo). Luego, las firmas se pueden enviar a través de un canal separado. Lo que realmente se estampa en la cadena de bloques es una transacción con un campo de firmas vacío. Y luego, debido a la regla de la cadena de bloques más larga, siempre gana, los nodos que no son Segwit simplemente aceptarán que la cadena de bloques con la mayor cantidad de transacciones, que incluye algunas transacciones divertidas sin firma, es la cadena de bloques autorizada.
Pero aparentemente la realidad es más complicada.
Además, hay una pregunta sobre cuánto se puede abusar de la regla de cadena de bloques más larga que siempre gana. (La palabra "abusado" no implica una opinión negativa). Por ejemplo, digamos que se me ocurre FoobarWit. FoobarWit es lo mismo que Bitcoin pero con un tamaño de bloque más grande (sin Segwit). Una vez que suficientes nodos adopten FoobarWit, más nodos de este tipo ganarán la carrera minera y, por lo tanto, otros nodos aceptarán efectivamente bloques más grandes porque la historia es más larga. Sé que ese no es el caso, pero ¿por qué?
La respuesta a la pregunta "¿Son los testigos segwit parte de la cadena de bloques?" depende de lo que definas como la cadena de bloques:
Según los antiguos nodos pre-segwit, la respuesta es no , ya que no les importa ni reciben a los testigos.
Según los nuevos nodos segwit, la respuesta es sí ; los testigos son una parte tan importante de la cadena como todo lo demás y están sujetos a tantas reglas de validación.
Entonces, segwit aumenta ligeramente el rendimiento, a costa de aumentar el tamaño de la cadena de bloques. Aquí no hay una varita mágica, y este aspecto de segwit es simplemente un aumento del tamaño del bloque. No es una mejora de la escalabilidad.
Segwit fue principalmente una solución para el problema de la maleabilidad de las transacciones, abriendo la puerta a varios protocolos de alto nivel que se vieron perjudicados por no poder razonar sobre futuras transacciones en cadena que aún no se habían publicado. Además, también mejoró un poco la estructura de incentivos (haciendo que el gasto sea relativamente más barato que la creación de productos). Como efecto secundario final de eso, también aumentó un poco el tamaño del bloque de una manera compatible con versiones anteriores.
En cuanto a su pregunta sobre otra bifurcación que va más allá: lo que hace su software no tiene efecto en aquellos que no lo adoptan. Incluso si tiene todo el hashrate del mundo a bordo, a los nodos antiguos no les importará ni verán sus datos adicionales.
El límite de bloque de 1 MB sigue vigente después de la activación de segwit, pero solo se refiere a las transacciones de bloque serializadas en el formato anterior a segwit, que no incluye testigos. Este 1 MB sigue siendo consenso hoy.
Con segwit activado, hay una restricción de tamaño de bloque adicional, que SÍ se aplica a los datos de segwit: es un límite de "peso" de 4M por bloque.
El peso se calcula de la siguiente manera:
A medida que la porción testigo de los datos totales de la transacción aumenta hacia el 100 %, el límite de tamaño de bloque efectivo en bytes se acerca a los 4 MB.
op_return
campo no cuenta para el tamaño de bloque clásico de 1 MB?
muro
walad