¿Cuáles son los principales obstáculos técnicos para implementar los compromisos de UTXO?

Las confirmaciones del conjunto UTXO en el encabezado del bloque permitirían clientes livianos más seguros y límites en la cantidad de bloques que deben descargarse y validarse en la descarga inicial de la cadena de bloques, que es de vital importancia para la longevidad y la escalabilidad de Bitcoin, pero me han dicho Las confirmaciones de UTXO son un cambio técnicamente muy desafiante en el diseño de Bitcoin.

¿Cuáles son los principales desafíos técnicos en la implementación de los compromisos de UTXO y cuáles son las soluciones propuestas para ellos?

¿En qué se diferencia esto de los puntos de control? CS no es mi fuerte
Un compromiso de UTXO se valida con todas las pruebas de trabajo que se construyeron sobre él.

Respuestas (1)

El principal cuello de botella de comprometerse con una raíz merkle de UTXO es que es pesado de E/S y CPU para crear y verificar. A día de hoy, el conjunto UTXO serializado tiene alrededor de 1 GB y contiene casi 34000000 entradas y sigue creciendo. Esto significa que una implementación ingenua tendría que codificar al menos esa cantidad de datos por bloque más los nodos intermedios para construir un árbol merkle. Esta es una complejidad O(n) y generalmente se considera un rendimiento deficiente. Es posible usar optimizaciones de almacenamiento en caché, pero eso usaría más RAM.

Una posible alternativa son las diferencias UTXO que introduce cada bloque. Funciona confirmando una raíz Merkle con todos los UTXO que se gastaron en el bloque actual y otra raíz que enumera todos los UTXO agregados. Para un cliente SPV, esto podría funcionar como una prueba de fraude, donde es posible demostrar que una producción específica se gastó en una altura específica (aunque ya es posible mostrarlo usando transacciones ordinarias).

Entonces, para resumir, los compromisos completos de UTXO merkle root son realmente útiles, pero no se pueden usar debido a una escala deficiente.

¿Cuánto tiempo se tarda en calcular una nueva raíz Merkle UTXO?
No estoy seguro, pero necesita hash sobre 2x34 millones de entradas. Puede probar el gettxoutsetinfocomando rpc para tener una idea muy aproximada (el hash_serialized es el hash de los datos, no un árbol merkle UTXO).