¿Cuáles son los pros y los contras de los saldos de Ethereum frente a los UTXO?

Ethereum tiene un modelo más simple al no tener UTXO (salidas de transacciones no gastadas) como Bitcoin. ¿Qué "renuncia" Ethereum al no tener UTXO y qué gana?

La respuesta a estas importantes preguntas está, lamentablemente, totalmente inclinada hacia Ethereum, directamente de la documentación de Ethereum. Por ejemplo, con los UTXO no hay necesidad de pensar en un momento y otras cosas para solucionar los problemas de pedidos de transacciones: el reciente Ledger Nano S SNAFU donde muchos tx se transmitieron varias veces o las personas finalmente enviaron ETH muchas veces en lugar de una vez para crowdfunding ICOs durante la congestión de blockchain no puede ser casi tan malo cuando se utilizan UTXO. También hay sistemas 0-conf que se usan con UTXO que simplemente no son tan seguros con Ethereum (debe esperar bloques)

Respuestas (3)

Las principales restricciones de validación en un sistema Bitcoin UTXO son:

  • cada entrada referenciada debe ser válida y aún no gastada
  • la transacción debe tener una firma que coincida con el propietario de la entrada para cada entrada
  • el valor total de las entradas debe ser igual o superior al valor total de las salidas

Por el contrario, la funcionalidad en un sistema basado en cuentas de Ethereum son:

  • un estado global almacena una lista de cuentas con saldos, código y almacenamiento interno
  • una transacción es válida si la cuenta de envío tiene saldo suficiente para pagarla, en cuyo caso se debita la cuenta de envío y se acredita el valor en la cuenta de destino
  • si la cuenta receptora tiene código, el código se ejecuta y el almacenamiento interno también puede cambiar, o el código puede incluso crear mensajes adicionales a otras cuentas que conducen a más débitos y créditos

De hecho, estos sistemas tienen varias compensaciones. Por ejemplo, mientras Ethereum mantiene el saldo de la cuenta como parte del estado global, el "saldo" de un usuario de Bitcoin es el valor total por el cual el usuario tiene una clave privada capaz de producir una firma válida.

En general, los beneficios de las UTXO son:

  • Mayor grado de privacidad : si un usuario usa una nueva dirección para cada transacción que recibe, puede ser difícil vincular las cuentas entre sí.
  • Paradigmas de escalabilidad potencial : los UTXO son teóricamente más compatibles con ciertos tipos de paradigmas de escalabilidad.

Los beneficios de las cuentas son:

  • Gran ahorro de espacio : porque cada transacción solo necesita hacer una referencia y una firma y produce una salida
  • Mayor fungibilidad : debido a que no existe un concepto a nivel de cadena de bloques de la fuente de un conjunto específico de monedas, se vuelve menos práctico instituir un esquema de lista roja/lista negra
  • Simplicidad : más fácil de codificar y comprender, especialmente una vez que se involucran scripts más complejos
  • Referencia de cliente ligero constante : los clientes ligeros pueden acceder en cualquier momento a todos los datos relacionados con una cuenta escaneando el árbol de estado en una dirección específica

Una debilidad del paradigma de la cuenta es que para evitar ataques de reproducción, cada transacción debe tener un "nonce" y la cuenta debe realizar un seguimiento de los nonces utilizados.

No entiendo el argumento de 'mayor grado de privacidad' para UTXO. ¿Por qué Ethereum no debería poder hacer exactamente lo mismo, creando una nueva dirección para cada transacción?
@RolandKofler, Ethereum puede tener una nueva dirección para cada transacción. Creo que JAXX ya hace esto y también usa una semilla similar a Electrum. Este concepto aún no se ha incorporado a la billetera oficial de Ethereum. Como es solo un dapp, ¿quizás alguien haga una billetera basada en semillas para Ethereum en el futuro como un dapp?
Ahora han introducido chainId en el objeto de transacción sin procesar para evitar ataques de repetición, ¿por qué el nonce todavía está allí?
@James: Nonce es para evitar el ataque de doble gasto, no para el ataque contra la repetición.
@James chain ID es para evitar ataques de repetición entre cadenas. Nonce es para evitar el ataque de repetición en cadena obvio que de otro modo sería posible porque la transacción no hace referencia a UTXO particulares, sino que simplemente especifica la cantidad a debitar, que de otro modo podría incluirse fácilmente en múltiples bloques, debitando la cuenta varias veces.
@RolandKofler es posible usar una dirección/cuenta separada para cada transacción, pero luego es más difícil reagrupar sus monedas y enviarlas al destino en una sola transacción. Es una limitación fundamental de Ethereum.

La respuesta aceptada es un muy buen resumen de la siguiente wiki:

https://eth.wiki/es/fundamentos/razon-del-diseno#cuentas-y-no-utxos

Véalo para obtener más detalles, incluida la justificación de Ethereum:

Hemos decidido que, particularmente porque estamos lidiando con dapps que contienen estado y código arbitrarios, los beneficios de las cuentas superan enormemente las alternativas. Además, en el espíritu del principio No tenemos características, observamos que si las personas realmente se preocupan por la privacidad, los mezcladores y las combinaciones de monedas se pueden crear a través de protocolos de paquetes de datos firmados dentro de los contratos.

Con el modelo UTXO de bitcoins, una sola billetera puede gastar múltiples salidas de forma asincrónica, mientras que con el modelo nonce de ETH, debe esperar a que se extraiga una transacción anterior antes de que se pueda procesar su próxima transacción.

Vota a favor y tienes razón sobre el nonce de ETH, pero un minero podría elegir más de una transacción que tengas en el mempool e incluirlas todas en el bloque. El minero tiene que ordenar sus transacciones de acuerdo con nonce. Su punto sobre UTXO es un aspecto de lo que la respuesta aceptada llama "paradigmas de escalabilidad potencial".