Parte 4: Aprobadores, balances, y doble-gastos.
Hasta ahora hemos hablado de DAGs, caminatas aleatorias y varios mecanismos de selección de tips; esta semana hablaremos de dinero. Ha llegado el momento de explicar a qué nos referimos cuando decimos que la transacción A aprueba la transacción B.
Como se menciona en el primer artículo de la serie, cada transacción contiene información del formato «Alice le dio a Bob 10 IOTAs». Es el trabajo del aprobador asegurarse de que Alice realmente tenía esas 10 IOTA para dar en primer lugar.
Tal vez se pregunte a estas alturas de dónde salieron estas IOTA. La respuesta es que todos ellos fueron creados en la primera transacción de la tangle, llamada transacción génesis. Nunca se crearán nuevas IOTAs. A partir de la génesis, las IOTAs fueron transferidas a las cuentas de los inversores originales en el proyecto, en proporción a la cantidad aportada. Posteriormente, vendieron parte de su IOTA a otros, y finalmente se estableció una red comercial.
Volviendo a Alice y Bob, veamos un ejemplo sencillo. La casilla representa una transacción. Por conveniencia, también anotamos los saldos en las cuentas de Alice y Bob antes y después de que la transacción se llevara a cabo. Vemos que al principio Alice tenía 10i, que le dio a Bob, después de lo cual Bob tiene 10i y Alice no tiene nada.
Eventualmente alguien, digamos Charlie, quiere hacer su propio pago. Ejecuta el algoritmo de selección de tips, y resulta que necesita aprobar la transacción de Alice. Para hacer eso, debe verificar que Alice realmente tenía los 10i que gastó. Será mejor que Charlie se tome esta tarea en serio: si aprueba una mala transacción, ¡su propia transacción nunca será aprobada!
Para estar absolutamente seguro, Charlie tiene que enumerar todas las transacciones aprobadas directa e indirectamente por la transacción de Alice, hasta la génesis. Termina con una larga lista, que puede verse así:
Génesis crea 15i
Génesis da a Bob 2i
Génesis da a Alice 8i
Génesis da a Charlie 5i
Charlie le da a Donna 3i
Bob le da a Alice 2i
Esta es sólo una opción por supuesto; cualquier lista que termine con 10i en la cuenta de Alice y 0 en la de Bob es aceptable. Charlie también tiene que llevar un registro de todas las otras cuentas en el sistema, para asegurarse de que no van por debajo de cero: si cualquiera de los saldos en las secciones «antes» o «después» son negativos, su transacción es inválida.
Veamos un caso en el que Alice trata de dar más IOTA de los que tiene:
Alice le pagó a Bob 100i aunque sólo tenía 10. La transacción de Alice, y cualquier transacción futura que la apruebe, son consideradas inválidas por la red. No se permiten saldos negativos.
La situación se vuelve más interesante cuando aprobamos dos transacciones en vez de una:
Bob estaba en lo cierto al aprobar las transacciones de Alice, porque ella tenía suficiente dinero en su cuenta para pagar ambos sin ir por debajo de cero.
¿Qué pasaría si el total es más de lo que ella tiene? Esto se muestra a continuación. En este caso, Bob no puede aprobar las dos transacciones de Alice, porque resultan en un balance negativo para Alice. Si Bob hace esto, está rompiendo las reglas del protocolo de la IOTA, y nadie aprobará su nueva transacción.
Esta última situación se llama un doble gasto, porque Alice gastó su dinero dos veces. Note que ella no rompió el protocolo, porque tenía suficiente dinero para cada transacción individual. Tal vez ni siquiera quiso gastar el doble, pero envió su transacción dos veces por error. Sin embargo, creó dos ramas en la tangle que no pueden ser reconciliadas. Esto crea un problema para los usuarios honestos de IOTA: ¿qué rama deberían aprobar?
La solución a este problema es una vez más la caminata ponderada que aprendimos la semana pasada. Eventualmente una de las ramas crecerá y sera más pesada que la otra, y la más ligera será abandonada. Esto también implica que una operación no puede considerarse confirmada inmediatamente después de su emisión, aunque tenga algunos aprobadores, ya que podría formar parte de una rama que eventualmente será abandonada. Para asegurarse de que su transacción está confirmada, tiene que esperar a que su confianza de confirmación sea lo suficientemente alta. Este será el tema del artículo de la próxima semana.
Como siempre, eres más que bienvenido a hacerme preguntas aquí o en Disord, @alongal#3938.
Parte 1: Introducción a la tangle.
Parte 2: tasas de transacciones, latencia y caminatas aleatorias.
Parte 3: Pesos acumulados y caminatas aleatorias ponderadas.
Parte 4: Aprobadores, balances, y doble-gastos.
Parte 5: Consenso, intervalo de confianza, y el coordinador.
Traducido por Deepl.