
IOTA 2.0 Introducción Parte 9
TL;DR:
IOTA 2.0 utiliza cadenas de compromiso de tragamonedas para lograr el consenso y la sincronización de su libro mayor distribuido. Cada bloque contiene un compromiso criptográfico con un intervalo de tiempo pasado específico llamado «ranura». Estos compromisos de espacios forman una cadena que garantiza que los nodos estén de acuerdo con los datos aceptados, ayuden en la disponibilidad dinámica y la resolución de bifurcaciones, e impulsen la finalización para mayor seguridad. En general, las cadenas de compromiso de tragamonedas desempeñan un papel crucial en la creación de una red confiable, descentralizada y escalable para IOTA 2.0.
En cualquier libro mayor distribuido, los puntos de control regulares son cruciales para lograr un consenso sobre un estado aceptado y finalizado; en otras palabras, los puntos de control ayudan a sincronizar los diferentes registros de un libro mayor entre sus nodos. Los puntos de control también permiten comprimir los datos en una instantánea local y eliminar cualquier información innecesaria. La solución de IOTA para crear tales puntos de control son las cadenas de compromiso de tragamonedas.
Esta publicación de blog avanzada profundiza en el meollo de la cuestión de las cadenas de compromiso de tragamonedas y cómo ayudan a lograr la finalidad al sincronizar el libro mayor.
Introducción a las cadenas de compromiso de tragamonedas
Cada bloque emitido por un nodo incluye una referencia a un compromiso de ranura, que es un compromiso criptográfico con un intervalo de tiempo específico en el pasado conocido como «ranura». Estas ranuras son intervalos de 10 segundos definidos con precisión que no se superponen entre sí. El compromiso de espacio encapsula toda la información crucial sobre ese espacio, incluidos los bloques y transacciones aceptadas. También se compromete con el compromiso del espacio anterior, formando efectivamente una secuencia vinculada conocida como «cadena de compromiso de espacio».
Cuando los nodos acuerdan un compromiso de intervalo, esencialmente coinciden en los datos aceptados por la red hasta el final de ese intervalo en particular. De esta manera, los compromisos de espacios funcionan como puntos de control que los nodos pueden utilizar para sincronizar su libro mayor. Los compromisos de espacios y la cadena de compromisos de espacios permiten a los nodos sincronizar sus versiones locales del libro mayor comparándolas entre sí. Si son idénticos, los nudos saben que tienen la misma información. Esta publicación de blog explora funcionalidades adicionales basadas en compromisos de espacios.
Estructura de los compromisos de franjas horarias
A compromiso de tragamonedas se crea combinando diferentes piezas de información mediante hash. Estos datos son:
- Versión del protocolo denota la versión del protocolo, que aumenta con cada actualización del protocolo.
- Índice de ranuras indica el índice de un espacio al que se compromete el contenido del espacio. El emisor del bloque considera que la ranura con este índice puede comprometerse.
- Compromiso de tragamonedas anterior se refiere al compromiso de la ranura con el índice de ranura anterior.
- Compromiso del contenido de las tragamonedas es la raíz hash de un árbol Merkle que contiene todos los elementos de compromiso al final de la ranura.
- peso acumulado representa el peso colectivo de los validadores que hacen referencia a un compromiso pasado particular, incluido el peso acumulado del compromiso de espacio anterior.
- Costo de maná de referencia (RMC) se calcula a partir del contenido de la ranura y del RMC de la ranura anterior.

Un compromiso de espacio identifica de forma única un espacio comprometido y su contenido. De manera análoga a un encabezado de bloque en una cadena de bloques, cada compromiso de ranura hace referencia al compromiso de la ranura anterior, creando un cadena de compromiso de tragamonedas eso se remonta al compromiso de Génesis.
Encabezado de bloque
Como se muestra en la figura siguiente, el compromiso de ranura está contenido en el encabezado del bloque. Este diseño facilita la creación de una certificación de un compromiso de ranura: una lista criptográficamente verificable de nodos que coinciden en el historial de Tangle hasta la ranura respectiva.

Compromiso del contenido de las tragamonedas
Un importante ingrediente de un compromiso de tragamonedas, el compromiso de contenido de tragamonedas, es un valor hash calculado como la raíz de Merkle del árbol binario con las siguientes hojas:
- raiz de enredo: La raíz hash de un árbol Merkle disperso que contiene todos los bloques aceptados emitidos dentro de la ranura. Esto sirve como declaración de bloques aceptados en Tangle. Se utiliza para acreditar la inclusión o ausencia de bloques aceptados.
- Raíz del estado: La raíz hash de un árbol Merkle disperso que contiene todas las salidas de transacciones no gastadas (UTXO) al final de la ranura. Se utiliza para demostrar la existencia o ausencia de UTXO.
- Raíz de mutación estatal: La raíz hash de un árbol Merkle disperso que contiene transacciones aceptadas en la ranura actual y que sirve como prueba de mutación de estado de la ranura anterior a la actual. Ayuda a comprobar la inclusión o ausencia de transacciones aceptadas.
- raiz de cuentas: La raíz hash de un árbol Merkle disperso que contiene el emisor de bloques (créditos de emisión de bloques, claves públicas del emisor, ranura de vencimiento) y datos de participación (costo fijo, época de finalización de la participación, montos de participación) para cuentas que están apostando o son emisores de bloques. Se utiliza para probar la emisión de bloqueos para una ID de cuenta determinada.
- comité raíz: La raíz hash de un árbol Merkle disperso que contiene ID de cuentas que representan a los miembros actuales o futuros del comité. Se actualiza únicamente cuando el comité se rota con éxito. Se utiliza para acreditar la inclusión o ausencia de una cuenta específica ante el comité.
- raiz de recompensas: La raíz hash de un árbol Merkle disperso que contiene datos relacionados con las recompensas (p. ej., participación del grupo, recompensa del grupo, costo fijo) para los miembros del comité al finalizar la época anterior. Ayuda a demostrar la existencia o ausencia de recompensas para un Staker o Delegator determinado.
- Raíz de atestación: La raíz hash de un árbol Merkle disperso que contiene datos relacionados con la certificación de todos los ID de cuenta al final del espacio. Se utiliza para probar la certificación de compromisos anteriores mediante un ID de cuenta determinada.
¿Cómo se generan los compromisos de franjas horarias?
Los nodos mantienen su propia cadena de compromiso de tragamonedas en función de su comprensión de Tangle, que incluye bloques y transacciones aceptadas. Cada nodo realiza un seguimiento del comité de validación en línea, que está formado por miembros del comité de validación que han emitido al menos un bloque con marcas de tiempo recientes y han alineado sus cadenas de compromiso de espacios entre sí. Cuando el comité validador en línea llega a un consenso sobre aceptar todos los bloques y transacciones dentro de un slot, o cuando se alcanza un tiempo de espera máximo, los nodos generan el compromiso para ese slot.
En condiciones normales de red, todos los nodos deben observar los mismos bloques, lo que resulta en la aceptación de los mismos bloques y transacciones. En consecuencia, esto conduce a la generación de compromisos de franjas horarias idénticas por parte de todos los nodos.
¿Por qué son necesarias las cadenas de compromiso de tragamonedas?
En IOTA 2.0, las cadenas de compromiso de tragamonedas se utilizan para crear un historial confiable de decisiones consensuadas tomadas por el comité de validación. Estas cadenas tienen tres propósitos principales:
1. Sincronización: Las cadenas de compromiso de espacios proporcionan un medio confiable para que los participantes de la red sincronicen el contenido de Tangle hasta el último espacio comprometido. Esta característica es particularmente útil al inicializar un nuevo nodo, volver a unirse a la red después de inactividad o cambiar una cadena de compromiso de ranura.
Por ejemplo, al inicializar un nuevo nodo, el bloque de génesis de Tangle sirve como la verdad última. El nodo se conecta con los nodos vecinos de la red, ya sea manualmente o mediante autopeering, y comienza a recibir los últimos bloques mediante chismes.
Sin embargo, el desafío radica en determinar qué bloques se han aceptado y si los pares del nodo comparten el mismo estado del libro mayor. La solución es utilizar los compromisos de franjas horarias incluidos en los bloques recibidos.
A medida que el nuevo nodo comienza a recibir bloques a través del protocolo de chismes, puede rastrear la cadena de compromisos de espacios, y cada nuevo compromiso de espacios se refiere al anterior, creando una cadena que se extiende hasta el bloque Génesis. Mientras el nodo procesa los bloques recibidos, verifica los compromisos para todos los espacios, monitorea la evolución del comité de validación a través de épocas e identifica el último espacio finalizado. Este proceso garantiza que el nodo esté sincronizado con la red y mantenga el estado del libro mayor correspondiente al compromiso de ranura.
2. Disponibilidad dinámica y resolución de bifurcación: El diseño del protocolo IOTA 2.0 permite que los nodos avancen en Tangle y el libro mayor, preservando así la funcionalidad y la integridad de la red incluso en condiciones desafiantes, como particiones de red o validadores fuera de línea. De hecho, la aceptación de bloques, transacciones y la posterior creación de compromisos de espacios dependen de la participación activa del comité de validación en línea en el consenso.
Sin embargo, en condiciones de red desafiantes como las descritas anteriormente, es posible que los nodos no vean los mismos bloques al mismo tiempo. Esta divergencia podría dar lugar a que se acepten diferentes bloques, lo que daría lugar a bifurcaciones o compromisos diferentes para las mismas franjas horarias. Las bifurcaciones, a su vez, pueden dar lugar a diferentes interpretaciones del estado del libro mayor entre los nodos, lo que dificulta determinar qué versión del libro mayor es correcta.
Una de las ventajas importantes de utilizar compromisos de espacios es que los nodos pueden identificar rápidamente si algunos bloques contienen compromisos de espacios diferentes a los suyos. Las cadenas de compromiso de ranuras facilitan la identificación del punto en Tangle donde los nodos inicialmente no estaban de acuerdo. Los nodos pueden comprobar inmediatamente qué cadena es más pesada y empezar a seguir la cadena de bloques más pesada, es decir, la cadena con mayor consenso. Sin compromisos de ranuras, sería difícil determinar el punto en el que los nodos comenzaron a ver diferentes bloques y cómo deben cambiar al estado correcto. Para obtener más información sobre la disponibilidad dinámica, consulte la próxima Parte 12 de esta serie de publicaciones de blog, Disponibilidad dinámica: garantías basadas en protocolos .
3. Finalización: En IOTA 2.0, la finalización se produce en el nivel de compromiso de tragamonedas. El comité finaliza los compromisos de franjas horarias, junto con todas las transacciones y bloques asociados con esos compromisos.
Para finalizar un compromiso de espacio, una supermayoría (que tenga más de dos tercios del poder de voto) del comité debe hacer referencia a este compromiso en sus bloques de validación. Además, todos estos bloques de validación deben emitirse dentro del mismo slot y estar confirmados.
Cada nodo calcula los indicadores de finalización en función de su copia mantenida localmente de Tangle. Sin embargo, la percepción de finalización de un nodo se representa en el encabezado del bloque, es decir, cuando se emite un nuevo bloque, el nodo incluye tanto un compromiso de ranura de la última ranura comprometible como el índice de ranura del último compromiso de ranura finalizada en la cadena respetada. Para obtener más información sobre el consenso, consulte el artículo wiki en nuestro modelo de consenso.
¿Como funciona?
Para comprender mejor la mecánica de las cadenas de compromiso de tragamonedas en IOTA 2.0, profundicemos en los dos componentes críticos: la regla de cambio de cadena, que aborda la resolución de las cadenas de compromiso de tragamonedas bifurcadas, y la selección de cadena más pesada. , que explica cómo los nodos determinan las cadenas de compromiso más pesadas y cadena confiable.
Regla de cambio de cadena
En condiciones de red desafiantes, los nodos pueden percibir que se aceptan diferentes bloques, creando así diferentes cadenas de compromiso de ranuras. Es posible que los nudos ni siquiera se den cuenta de que esto está sucediendo hasta que el problema desaparezca (por ejemplo, la red se fusiona nuevamente). en) y todos los nodos de la red ven los mismos bloques. En la siguiente visualización de Tangle, las cadenas de compromiso de ranuras bifurcadas se parecen a las bifurcaciones de una cadena de bloques.

Para resolver esto, cada nodo rastrea y actualiza su propia cadena de compromiso de espacios y verifica los compromisos de espacios contenidos en los bloques recibidos de otros nodos. Las bifurcaciones en las cadenas de compromiso de tragamonedas no se pueden fusionar, ya que podrían generar inconsistencias y doble gasto en el conjunto de transacciones aceptadas. En cambio, cada nodo selecciona qué cadena de compromiso de espacios es más pesada. Los nodos en las particiones minoritarias cambian a la cadena mayoritaria después de que finaliza su ranura actual, abandonando bloques de las cadenas minoritarias. Los emisores de los bloques abandonados deben volver a emitirlos después de cambiar la cadena.
La regla de cambio de cadena permite que la bandera de finalización esté viva en el consenso de IOTA 2.0. Una vez que la red se recupera de su estado dividido y los validadores vuelven a estar en línea, los nodos cambian con éxito a la cadena más pesada y el comité de validación continúa finalizando los compromisos de espacios.
Selección de cadena más pesada
Debido a que cada bloque está firmado por su emisor, los nodos pueden crear para cada lista de atestación de compromiso de espacio (compromiso-emisor) con bloques de validación confirmados que hacen referencia a un compromiso de espacio anterior. Las listas de certificación permiten a un nodo determinar el peso acumulado de una cadena de compromiso de espacios. Específicamente, el peso de un compromiso de espacio se calcula como el peso de votación de los validadores en la lista de certificación respetada. Luego, el peso acumulado de una cadena de compromiso de espacios se determina como la suma de los pesos de todos los compromisos de espacios en esa cadena.
El primer paso para seleccionar la cadena más pesada es que un nodo solicita a sus pares el peso acumulado del compromiso recibido de la bifurcación. Dado que el peso acumulado es parte de la estructura de datos del árbol utilizada para obtener el compromiso de ranura, los datos requeridos a enviar son bastante pequeños. Si el peso acumulado de la bifurcación es menor o igual al peso de la cadena principal, el nodo descarta la bifurcación. Además, si la última ranura finalizada para el nodo ocurrió después de que comenzó la bifurcación, la bifurcación se descarta.
El primer paso se realiza ingenuamente sin solicitar todas las certificaciones. Para verificar la exactitud del peso acumulado, el nodo debe solicitar listas de certificación para la cadena de compromiso de ranura después del punto de bifurcación. Si el peso acumulado se calculó incorrectamente, entonces se descarta la bifurcación y se deja caer al vecino. De lo contrario, el nudo crea un motor candidato para la bifurcación.
Si el motor candidato descubre que el peso acumulado de la horquilla es correcto, entonces el nodo necesita cambiar de motor. Descarte la cadena minoritaria junto con todos los bloques y transacciones emitidas después del punto de bifurcación y coloque la cadena más pesada en lugar de la principal.
Nuestra regla de cambio de cadena propuesta es un enfoque distintivo en comparación con las reglas de elección de bifurcación en otros protocolos de consenso. Por ejemplo, el algoritmo LMD-GHOST de Ethereum prioriza la bifurcación con el subárbol más pesado, considerando solo el último voto por validador. Por el contrario, nuestra solución cuenta los votos de los validadores con multiplicidad, por cadena en lugar de por árbol. Mientras tanto, la regla de la cadena más densa de Cardano favorece la cadena con más bloques en un segmento acotado que sigue al punto de bifurcación. En comparación, al seleccionar entre dos cadenas, nuestra regla de cambio de cadena le da prioridad a la cadena con el último compromiso de ranura finalizado. Si las dos cadenas son iguales, se da preferencia a la cadena con mayor peso acumulado (sin restringir a un segmento).
Conclusión
Las cadenas de compromiso de tragamonedas son fundamentales para lograr consenso, mantener la sincronización del libro mayor, resolver bifurcaciones e impulsar la finalización. Al permitir que los nodos crean un estado de libro mayor confiable y consistente, las cadenas de compromiso de ranuras garantizan la integridad y confiabilidad de la red, incluso en condiciones difíciles.
La próxima publicación del blog de esta serie, Una elección obvia: ¿Por qué DAG en lugar de Blockchain?analiza los beneficios de la arquitectura subyacente de gráfico acíclico dirigido de IOTA.
Únase a la conversación en X
🌐En cualquier DLT, los puntos de control periódicos son cruciales para lograr el consenso. Presentamos: Cadenas de compromiso de tragamonedas en #IOTA 2.0! Estos compromisos criptográficos sincronizan los datos del libro mayor entre nodos, comprimiéndolos en instantáneas locales y eliminando información innecesaria. ¡Vamos a sumergirnos! 📽️+🧵🔽 pic.twitter.com/hekUhZnCX7
– IOTA (@iota) 30 de octubre de 2023
Introducción a IOTA 2.0
Parte 1: Autonomía digital para todos: el futuro de IOTA
Parte 2: Cinco principios: los fundamentos que toda DLT necesita
Parte 3: Explicación del flujo de datos: cómo procesan los bloques los nodos
Parte 4: Explicación de las estructuras de datos: los componentes básicos que forman el conjunto
Parte 5: Cuentas, tokens, maná y apuestas
Parte 6: Un nuevo modelo de consenso: el consenso de Nakamoto sobre un DAG
Parte 7: Bloques de confirmación: cómo funcionan los validadores
Parte 8: Control de congestión: regulación del acceso en un sistema sin permisos
Parte 9: Explicación de la finalidad: cómo los nodos sincronizan el libro mayor
Parte 10: Una elección obvia: ¿Por qué DAG en lugar de Blockchain?
Parte 11: ¿Qué hace que IOTA 2.0 sea seguro?
Parte 12: Disponibilidad dinámica: garantías basadas en protocolos
Parte 13: Tokenómica justa para todos los poseedores de tokens
Parte 14: UTXO vs Cuentas: fusionando lo mejor de ambos mundos
Parte 15: Sin Mempool, sin MEV: proteger a los usuarios contra la extracción de valor
Parte 16: Escritura accesible: reduciendo las barreras de entrada