Modelo UTXO frente a modelo de cuenta/saldo

Entiendo que Bitcoin utiliza la salida de tx no gastada y el saldo de la cuenta de Ethereum. Sin embargo, recientemente hay muchas discusiones sobre que la base de datos UTXO de Bitcoin se ha vuelto demasiado grande. ¿Significa esto que las transacciones basadas en el saldo de la cuenta son mejores para escalar que las basadas en UTXO?

No sé mucho sobre cómo funciona el saldo de la cuenta de Ethereums. Pero el conjunto de UTXO en Bitcoin puede optimizarse, por ejemplo, como lo describe Peter Todd aquí: petertodd.org/2016/delayed-txo-commitments

Respuestas (2)

La elección entre el modelo UTXO y el modelo de equilibrio es principalmente entre incentivos de privacidad y aparente intuición.

Si se sigue el consejo estándar de no reutilizar direcciones/salidas/scripts, de no revelar gratuitamente qué monedas pertenecen al remitente y cuáles pertenecen al receptor, los dos modelos son en realidad equivalentes. En este caso, los saldos serían de un solo uso de todos modos, y habría tantos saldos como UTXO, lo que eliminaría tanto la ventaja del tamaño aparente como la conveniencia.

Sin embargo, el modelo de equilibrio incentiva efectivamente la reutilización. Como el costo para el sistema (posiblemente en tarifas, pero ciertamente en costos de operación de nodos) para una actualización de saldo es menor que la creación de un nuevo saldo, dicho sistema incentiva inherentemente la revelación de las fuentes de transacción.

Y aunque los saldos son más intuitivos, complican el razonamiento sobre la seguridad del sistema. Un problema es el problema de los ataques de repetición. Supongamos que X pagó a Y e Y paga a Z. Ahora W paga a Y nuevamente. En una implementación ingenua, Z puede retransmitir su transacción anterior desde Y, y podría tomar el dinero del pago de W a Y. Una solución es poner números de secuencia en los saldos y requerir que las transacciones enumeren el número de secuencia de las transacciones de las que toman dinero. . Desafortunadamente, esto requiere mantener el número de secuencia incluso para saldos que llegaron a cero, lo que significa que la base de datos de saldos necesita mantener algunos datos para cada saldo que alguna vez fue distinto de cero; un resultado que es mucho menos escalable que el modelo UTXO en primer lugar (que puede olvidar las salidas tan pronto como se gastan).

En resumen, mi opinión es que el modelo de equilibrio reduce la fungibilidad de la moneda en su conjunto por una ganancia a corto plazo que desaparece.

La base de datos de saldos no necesita mantener el número de secuencia para los saldos que llegaron a cero. Entre otras soluciones, puede asignar a una cuenta un número de secuencia pseudoaleatorio cuando se crea que debe ir en cada transacción. Hay otras soluciones a este problema también.
Eso es justo; Solo estaba explicando cómo el modelo de cuenta presenta complicaciones adicionales: varias soluciones son posibles. El problema principal, en mi opinión, es cómo las cuentas fomentan inherentemente la vinculación reveladora de las transacciones, que en mi humilde opinión es un no-go para cualquier moneda que apunte a la fungibilidad.
@DavidSchwartz, ¿podría explicar un poco más los detalles de cómo "asignar a una cuenta un número de secuencia pseudoaleatorio" evitaría los ataques de repetición?
Si se vuelve a crear la cuenta, tendrá un nuevo número de secuencia. Esto hará que todas las transacciones anteriores no sean válidas para esa cuenta, ya que el número de secuencia no coincidirá.
Esta es una respuesta muy sesgada. No es que sea malo, pero animo a la gente a que también lea la razón por la que Ethereum eligió su modelo: github.com/ethereum/wiki/wiki/… También dicen que los UTXO admiten más paradigmas de escalado, pero todavía tengo que encontrar alguno. más información sobre eso.

En el modelo UTXO, cada transacción gasta el resultado de transacciones anteriores y crea un nuevo resultado que puede ser gastado por transacciones operadas posteriormente por nodos completos. Su billetera mantiene una lista de UTXO asociados con todas las direcciones propiedad del usuario, y el saldo de la billetera se calcula como la suma de estas transacciones no gastadas. Echale un vistazo a éste ejemplo :

A tiene 2,5 btc, es decir, una UTXO de 2,5 btc. Un deseo de enviar B 1.0 btc. A usa 2,5 btc como entrada para el trxn y envía 1,0 bitcoin a B, 1,5 btc se devuelve a A como un nuevo UTXO con una nueva dirección. Entonces, si B tiene 1 btc, entonces el total es 2 btc (enviado por A) y tiene dos UTXO: uno ya de 1 btc y otro es de 1 btc por A.

La cadena de bloques de Bitcoin usa este modelo, hay otro modelo que está siendo utilizado por la cadena de bloques de Ethereum, es decir, el modelo de cuenta, que es bastante más simple que el modelo anterior. Veamos el ejemplo:

A tiene 2 éteres, A desea enviar 1 éter a B, por lo que la red reducirá 1 éter de A, es decir, A tiene 1 éter ahora y la red agrega 1 éter a B. Si B ya tiene 2 éteres, el total es 3 éteres.

Ambos modelos tienen diferentes pros y contras.

Cada transacción en el modelo de cuenta genera una salida que conduce a ahorros de espacio. Cualquier ahorro de espacio es un beneficio. Como los nodos completos de la red están destinados a ser operados por individuos en lugar de centros de datos, cuanto menores sean los requisitos de datos, más participantes potenciales.

Pero UTXO brinda un mayor nivel de privacidad ya que los usuarios usan nuevas direcciones para cada transacción y será difícil vincular cuentas entre sí.