Normalmente, escuché que el tamaño de bloque de bitcoin es de 1 MB, pero con la actualización de Segwit, el tamaño de bloque puede ser de hasta 4 MB, por lo que deberíamos decir que el tamaño de bloque es de 4 MB, ¿verdad? Además, los nodos heredados solo reciben los datos de entrada y salida de las transacciones de segwit. ¿Cómo verifican los nodos heredados la validez de las transacciones segwit? El nodo heredado puede verificarlo durante la propagación desde un nodo segwit, pero ¿cómo funciona para la propagación entre dos nodos heredados, donde los datos segwit faltan por completo? Gracias
Normalmente escuché que el tamaño de bloque de bitcoin es de 1 MB, pero con la actualización de Segwit, el tamaño de bloque puede ser de hasta 4 MB, por lo que deberíamos decir que el tamaño de bloque es de 4 MB, ¿verdad?
Antes de la activación de segwit, el bloque estaba limitado a 1.000.000 de bytes. Este límite fue reemplazado por un límite de peso en bloque de 4 000 000 de unidades de peso (WU) con la activación de segwit. Un byte de datos testigo aporta 1 WU y un byte de datos no testigo aporta 4 WU hacia el límite. Teóricamente, el bloque podría tener hasta 4.000.000 de bytes si estuviera compuesto exclusivamente por datos testigo. En la práctica, se espera que incluso los bloques que consisten solo en transacciones segwit terminen en el rango de 2,1 a 2,7¹ MB debido a los datos no testigos que las transacciones siempre tienen. Por lo tanto, el tamaño de bloque ya no es el término correcto para el límite, sino que deberíamos decir que "el límite de peso de bloque es 4 MWU" .
Además, los nodos heredados solo reciben los datos de entrada y salida de las transacciones de segwit. ¿Cómo verifican los nodos heredados la validez de las transacciones segwit? El nodo heredado puede verificarlo durante la propagación desde un nodo segwit, pero ¿cómo funciona para la propagación entre dos nodos heredados, donde los datos segwit faltan por completo?
La identificación de la transacción (txid) de las transacciones segwit se calcula a partir de la transacción eliminada, es decir, los datos de la transacción excluyen los datos testigo. Esto tiene dos efectos: uno, los nodos heredados usan el mismo identificador para las transacciones de segwit que los nodos completos. Dos, el txid de una transacción sin firmar es el mismo que el de la transacción firmada (útil para configurar contratos inteligentes, por ejemplo, canales LN). Cuando un nodo heredado solicita una transacción segwit, el otro nodo reconoce que el nodo solicitante está en una versión obsoleta y les proporciona la transacción eliminada. Los nodos heredados también pueden transmitir la transacción eliminada entre sí. Para cubrir las firmas, las transacciones segwit también tienen una identificación de transacción testigo (wtxid) que cubre todos los datos de la transacción firmada. Los bloques Segwit también deben comprometerse con las transacciones firmadas, ¡aunque! Con ese fin, se construye un segundo árbol de Merkle a partir de los wtxids. La raíz de Merkle del árbol wtxid se almacena como el "compromiso de testigo" en una salida OP_RETURN en la transacción de coinbase. Esto se suma a la raíz de Merkle regular en el encabezado del bloque que se compromete con los txid de las transacciones y permanece legible para los nodos heredados.
Los nodos heredados llegan al mismo conjunto de UTXO, porque las transacciones eliminadas especifican qué UTXO se gasta en las entradas y qué nuevo UTXO se crea. Dado que los nodos heredados no conocen los datos testigo, no pueden verificar las firmas de las transacciones segwit. Por lo tanto, los nodos heredados no son nodos de validación completa (nodos completos) que aplican todas las reglas del protocolo Bitcoin de forma independiente (específicamente, no aplican las reglas de segwit). Las transacciones de segwit parecen válidas para los nodos heredados, ya que las entradas parecen ser "cualquiera puede gastar" según su comprensión fechada de las reglas del protocolo de Bitcoin.
¹ El 11 de agosto de 2022, el bloque 748 918 alcanzó un tamaño de 2 765 062 B, superando ese rango estimado por primera vez al incluir muchas entradas de 2 de 3 P2WSH. H/T @bordalix por señalar esto.
https://bitcoincore.org/es/2016/01/26/segwit-benefits/#block-capacitysize-increase
En teoría, puede acercarse bastante a 4M, al tener transacciones que consisten casi en su totalidad en datos de testigos. En la práctica, eso no sucederá con las transacciones financieras normales, más cercanas a 2M.
https://bitcoin.stackexchange.com/a/54949/
https://blockstream.com/2017/07/31/en-segwit-myths-debunked/
Los nodos de Segwit obtienen transacciones y bloques de Segwit que incluyen los datos de testigo mediante mensajes de red alternativos. Los nuevos mensajes de red se definen en BIP144 como parte de Segwit. Los bloques Segwit que incluyen los datos testigo pueden tener más de 1.000.000 de 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.
Los bloques Segwit están restringidos por algo llamado Peso del bloque. Block Weight es un nuevo concepto introducido en Segwit, y se calcula por transacción.
Cada transacción tiene un "peso" que se define de esta manera:
(tx size with witness data stripped) * 3 + (tx size)
Las transacciones de Segwit se transmiten a los nodos heredados sin datos testigo, por lo que esta fórmula siempre dará como resultado bloques comunicados a los nodos heredados que son menores o iguales a 1 000 000 de bytes. Una vez más, esta es la razón por la que Segwit es una bifurcación blanda.
Bordalix
muro