Validez en la Tangle: El bueno, el malo y el feo.

89
pasarela de pagos con criptomonedas

Este artículo analiza cómo podemos evaluar la validez de una transacción en un libro mayor distribuido y los problemas particulares a los que nos enfrentamos en el caso del Tangle.

Para empezar, veamos las estructuras de datos de las cadenas de bloques. En una cadena de bloques, antes de que los usuarios conecten un nuevo bloque al final de una cadena, se asegurarán de que todas las transacciones de la cadena sean válidas. Validez significa que en cada transacción, el pagador tiene que tener los fondos necesarios, y no se pueden crear monedas fuera de la especificación del protocolo. Esto se simplifica, porque los bloques se ordenan a tiempo y las transacciones se ordenan dentro de los bloques (por los mineros) – esto hace que la comparación de la sincronización de dos transacciones sea relativamente sencilla. Por ejemplo, si Alice comienza con una billetera vacía, la transacción «Alice recibe 3 monedas» debe preceder a la transacción «Alice da 3 monedas», de lo contrario, esta última es inválida.

¿En qué se diferencia la Tangle?

Al igual que una cadena de bloques, una condición necesaria para que una transacción sea válida es que el pagador haya recibido la moneda antes de realizar el pago. Sin embargo, como la Tangle es un Gráfico Acíclico Dirigido (DAG), la cuestión del ordenamiento temporal se vuelve no trivial. La estructura del DAG hace difícil, o a veces imposible, resolver si un pagador ha recibido monedas antes de gastarlas.

Tomemos el caso de 2 transacciones A y B. En una transacción en cadena, sólo hay dos opciones con respecto a su pedido. A sucedió antes que B o A sucedió después que B. Sin embargo, en un DAG, también tenemos la opción de que dos transacciones son incomparables (es decir, no sabemos qué sucedió primero).

Para continuar nuestra discusión, pongámonos de acuerdo en algunos preliminares. En primer lugar, consideremos la validez como un estado de una transacción, examinado en el contexto del estado actual de la Tangle. Es decir, cualquier función que decida si una transacción es válida o no, tiene en cuenta tanto la transacción en sí como el Tangle en el que vive.

En segundo lugar, lo único por lo que una transacción es responsable es por su cono de transacciones pasadas, es decir, todas las transacciones que aprueba directa o indirectamente.

Cuando un usuario elige qué transacciones desea aprobar, comprueba la validez de las transacciones analizando sus conos (la parte del Tangle a la que se refieren estas transacciones), y puede ignorar el resto del Tangle.

Cada transacción en un cono implica el movimiento de monedas de una cuenta a otra. Para evaluar la validez, aplicamos todos estos movimientos al estado Génesis para generar un estado actualizado de las carteras y sus balances. Llamaremos aceptable este estado si todos los balances son no negativos (es decir, los balances de direcciones no pueden contener valores negativos, sólo cero o positivos) y la suma de los balances es igual al número de monedas creadas en el Génesis.

Ahora vamos a profundizar en las propiedades que debe tener una transacción y su cono, para que la transacción sea considerada válida. Hay muchas opciones para tales propiedades. Aquí, consideramos tres de ellas:

1. La propiedad mínima

En el momento en que un usuario honesto (aunque sea egoísta) envía una transacción, debe ser dueño de los fondos que está gastando. Es decir, en un sistema saludable, esperamos que los usuarios tengan el dinero «en su bolsillo» antes de intentar dárselo a alguien más.

Tener fondos suficientes es la condición más básica. Para que una transacción sea considerada válida, esperamos que después de que todas sus transacciones de cono se apliquen al estado Génesis, obtengamos un estado aceptable. Esta propiedad es mínima en el sentido de que cualquier otra propiedad razonable que se nos ocurra satisfará esta propiedad.

2. La propiedad «good random walk»

Esta propiedad surge de forma bastante natural cuando se implementa la Tangle. Como sabemos, para elegir dos transacciones, el usuario realiza dos random walks a partir del Génesis hasta que llega a una tip que considera «válida». Sería un dolor ir desde el Génesis hasta un tip sólo para descubrir que no es bueno.

Para ahorrar tiempo, y corazones rotos sobre los malos tips, un usuario puede comprobar que cada transacción en la que el random walk pasa tiene la «propiedad mínima» indicada anteriormente. Esto significa que para cada transacción en el camino, después de aplicar el cono de esta transacción al estado de Génesis, el estado que obtenemos es aceptable.

3. La propiedad máxima

La propiedad más estricta que podemos exigir de una transacción es que cada transacción en su cono tenga la propiedad mínima. Además de obtener un estado aceptable para la transacción final o las transacciones que vimos en el random walk, también comprobamos que obtenemos un estado aceptable para cualquier transacción que aprobemos, directa o indirectamente.

Así que si los usuarios aprueban una transacción, deben asumir alguna responsabilidad sobre los fondos de esa transacción, incluso si esos fondos no están involucrados en la nueva transacción que están añadiendo. Esta propiedad es máxima en el sentido de que cualquier propiedad razonable en la que podamos pensar no puede pedir más del cono de lo que se ha dicho anteriormente.

Entonces, ¿qué propiedad es buena, cuál es mala y cuál es fea? Bueno, lo único que podemos decir claramente es que la propiedad «good random walk» es mala, aunque sea atractiva desde el punto de vista de la implementación. El problema es el siguiente. Si todos los usuarios están de acuerdo en esta propiedad, puede ser que dos usuarios no estén de acuerdo en la validez de una transacción dada porque la aleatoriedad de sus paseos los llevó por dos caminos diferentes. Como nos gustaría que los usuarios honestos estuvieran de acuerdo entre sí en la medida de lo posible, esta propiedad es definitivamente mala.

En cuanto a las otras dos – numerosas horas y galones de tinta electrónica entraron en la discusión de cuál es la buena (y cuál es la fea). No pudimos encontrar un ataque que la propiedad mínima permita o un caso de uso que impida la propiedad máxima, lo que deja mucho espacio para la discusión sin un desempate claro. Tengo mis ideas, pero te animo a que pienses y compartas las tuyas y tal vez encontremos la única propiedad que las gobierne todas.

Articulo original.

Comentarios

comentarios