¿Por qué Bitcoin no implementó segwit en primer lugar?

¿Por qué Bitcoin no implementó segwit en primer lugar?

¿Por qué y cómo Bitcoin no segwit permite a un minero cambiar una transacción txid?

De Mastering Bitcoin cap. 7 § "Identificadores de transacciones" :

Antes de segwit, las transacciones podían tener sus firmas modificadas sutilmente por terceros, cambiando su ID de transacción (hash) sin cambiar ninguna propiedad fundamental (entradas, salidas, cantidades).

Respuestas (2)

¿Por qué Bitcoin no implementó segwit en primer lugar?

La razón por la que Bitcoin inicialmente no tenía SegWit depende de la interpretación, diría que simplemente no se pensó antes de la maleabilidad de la transacción. Aunque ese no es su único objetivo. Segregated Witness fue una idea propuesta en BIP 141 como una bifurcación blanda , lo que significa que no requería una actualización completa de la red. Debido a la naturaleza de una bifurcación blanda, es compatible con versiones anteriores del software Bitcoin. Con el tiempo, se ha adoptado gradualmente .

¿Por qué y cómo Bitcoin no segwit permite a un minero cambiar el txid de una transacción?

Dominar Bitcoin se refiere a algo llamado maleabilidad de transacción . Tradicionalmente, txidera un hash de TODOS los datos de la transacción, incluidas las firmas. La maleabilidad de la transacción significaba que una firma podía modificarse ligeramente de modo que txidse cambiaría por completo mientras la firma seguía siendo válida.

Como David ha mencionado en su propia respuesta:

cambiar incluso un solo byte en la transacción cambia por completo la identificación de la transacción.

Esto creó una oportunidad para un ataque de "Denegación de servicio" en el que, si bien la transacción aún era válida y cada parte de la transacción tendría las mismas entradas/salidas, los nodos podrían rechazar las transacciones modificadas y evitar que se confirmen. Con SegWit, las firmas (como implica el nombre "Testigo segregado") ya no forman parte de este hash. Eliminando el problema por completo.

Recomiendo leer este artículo para obtener más información sobre cómo se hace exactamente en la práctica.

¿Por qué Bitcoin no implementó segwit en primer lugar?

Nadie pensó en ello en ese momento. No había interés en cosas como escalar fuera de la cadena en ese momento.

¿Por qué y cómo Bitcoin no segwit permite a un minero cambiar el txid de una transacción?

La firma de cada entrada solo cubre parámetros críticos de la transacción, como a quién se le hace el pago y cuánto. Es posible modificar la transacción y preservar la validez de la firma al no cambiar nada crítico. Dado que la identificación de la transacción es el hash de toda la transacción, cambiar incluso un solo byte en la transacción cambia por completo la identificación de la transacción.

La maleabilidad de la transacción estropeó por completo la billetera original y causaría una pérdida efectiva de fondos (la billetera nunca liberaría monedas para volver a gastar cuando la maleabilidad de tx principal la matara). Era solo una vulnerabilidad no pensada. Segwit es deseable sin pensar en nada fuera de la cadena, y se propuso por primera vez en 2012 sin ninguna referencia a su importancia para los contratos inteligentes.
Si alguien hubiera pensado en la maleabilidad probablemente en los primeros días, probablemente habría llevado a un cambio más pequeño solo para arreglar la maleabilidad, no segwit. Pero, por supuesto, los contrafactuales son difíciles de establecer.
Eso no está del todo claro para mí, tanto los datos completos como los datos sin testigos deben estar comprometidos, sin importar cómo se construyan. Cuando creamos segwit, primero lo hicimos desde cero para elementos sin necesidad de ser compatibles y solo más tarde nos dimos cuenta de que podíamos adaptarlo a Bitcoin. Las dos versiones eran casi idénticas. Como resultado, creo que es probable que si la falla se conociera originalmente, la solución sería equivalente a un nivel de descripción de alto nivel, además de admitir el estilo antiguo, por supuesto.