Archivo de la categoría: Blockchain

The tangle: un blockchainless para IoT, sin bloques y sin ser una cadena.

Artículo extraído principalmente de https://iota.org/IOTA_Whitepaper.pdf por Serguei Popov del 3 de Abril de 2016 versión 0.6.

The tangle (o yo lo traduzco como:  «el enredo») es la tecnología usada como columna vertebral de IOTA (una cripto-moneda para la industria de Internet-of-Things IoT). Para ver su cotización: https://www.cryptocompare.com/coins/iot/overview

La fama y (parcialmente) el éxito de Bitcoin durante los últimos años ha demostrado el valor de blockchain como un nuevo concepto de arquitectura de información, cómo integrar y compartir la información; sobre todo en los nuevos usos de internet, a saber, redes sociales, transacciones electrónicas, donde prevalezca la seguridad, anonimato. Pero ahora vienen «las máquinas»: el IoT (del inglés: Internet de las Cosas) necesita una nueva arquitectura de compartición de información, rápida, segura … pero sobre todo que sea extremadamente barata por cada transacción.

Pero bitcoin tiene varios problemas. Uno de ellos es que no se puede hacer micro-pagos… lo que es básico para los miles de millones de transacciones por minuto que se están generando, y que, obviamente, alguien va a querer monetizar.

Las criptomonedas basadas en blockchain, separan los roles «emisores de transacciones» y «aprobadores de transacciones», lo cual genera conflictos, que a su vez provoca que todos gasten recursos en resolver dichos conflictos; que en el fondo son costes. Incompatible con la premisa inicial: transacciones muy muy económicas.

De ahí la necesidad de buscar una nueva arquitectura: los blockchainless, que se lo están implementando los chicos de IOTA, diseñado como una criptografía para IoT.

¿cómo funciona IOTA?

En general, IOTA funciona de la siguiente manera:

En lugar de la cadena de bloques globales, existe un DAG (= grafo acíclico dirigido) que llamamos «tangle» o «enredo» (esto último es mío).

Las transacciones generadas por los nodos constituyen el conjunto de sitios del «calltangle» (es decir, el gráfico de enredo es el registro para almacenar transacciones).

Su conjunto de bordes se obtiene de la siguiente manera: cuando llega una nueva transacción, se debe a las transacciones anteriores.

Estas aprobaciones están representadas por bordes dirigidos, como se muestra en la anterior y otros (en las imágenes, los tiempos van siempre de izquierda a derecha).

Si no hay un borde dirigido entre transactionA y transactionB pero hay una ruta dirigida de longitud por lo menos 2 de A  a B, podemos decir que A indirectamente aprueba a B.

También está la transacción de «génesis», que es aprobada (directa o indirectamente) por todas las otras transacciones, véase la Figura 2.

La genesis se describe de la siguiente manera. Al principio había una dirección con balance que contenía todas las fichas.

Entonces la transacción de la génesis envió estos símbolos a varias otras direcciones «fundadoras».

Destaquemos que todas las fichas fueron creadas en la génesis (no se crearán otras fichas), y no hay minería en el sentido de «recompensas receptoras de los mineros».

Una nota rápida sobre la terminología: los sitios son transacciones representadas en el tanglegraph. La red está compuesta por nodos. Es decir, los nodos son entidades que issue transactions. Now, la idea principal es la siguiente: para emitir una transacción, los usuarios deben trabajar para aprobar otras transacciones, por lo tanto, contribuir a la seguridad de la red.

Se supone que los nodos comprueban si las transacciones aprobadas no son conflictivas y no aprueban (directa o indirectamente) las transacciones en conflicto2. Como una transacción cada vez más (directa o indirecta) aprobaciones, se convierte en más aceptado por el sistema; En otras palabras, será más difícil (o incluso prácticamente imposible) que el sistema acepte una transacción de doble gasto. Es importante observar que no hacemos referencia a ninguna regla para elegir las transacciones a aprobar. Más bien, argumentamos que si un gran número de otros nodos siguen alguna regla de «referencia» (que parece ser un supuesto razonable, especialmente en el contexto de IoT, donde los nodos son chips especializados con firmware preinstalado), Entonces para cualquier nodo fijo es mejor atenerse a una regla del mismo tipo.

Más concretamente, para emitir una transacción, un nodo hace lo siguiente:

  • En primer lugar, elige dos otras transacciones para aprobar (en general, estas dos transacciones pueden coincidir), de acuerdo con un algoritmo.
  • Comprueba si las dos transacciones no son conflictivas y no aprueban transacciones en conflicto.
  • Para que la transacción sea válida, el nodo debe resolver un rompecabezas criptográfico
    (Que puede ser computacionalmente exigente) similares a los de la Bitcoin

    La minería (p. Ej., Necesita un nodo tal que el hash de ese nonce junto con algunos datos de las transacciones aprobadas tenga una forma particular, por ejemplo, tiene por lo menos un cierto número xed de ceros al frente).

 

Es importante observar que, en general, tenemos una red asíncrona, por lo que los nodos no necesariamente ven el mismo conjunto de transacciones.

Cabe señalar también que «el enredo» puede contener transacciones en conflicto.

Los nodos no tienen que llegar a un consenso sobre qué transacciones válidas tienen derecho a estar en el libro mayor (todas ellas pueden estar allí); Pero, en caso de que existan transacciones en conflicto, deben decidir qué transacciones se harán huérfanas (es decir, no serán aprobadas indirectamente por las transacciones entrantes).

La regla principal que los nodos usan para decidir entre dos transacciones en conflicto es la siguiente: un nodo ejecuta el algoritmo de selección de punta muchas veces, y ver qué transacción de los dos es más probable que sea aprobada (indirectamente) por la punta seleccionada. Por ejemplo, si después de 100 ejecuciones del algoritmo de selección de punta, una transacción se seleccionó 97 veces, decimos que se confirma con un 97% de confianza.

¿Cómo se propagan las transacciones?

Comentemos también la siguiente pregunta: ¿qué motiva a los nodos a propagar transacciones? De hecho, en nuestra configuración los nodos no tienen motivación para no propagarse.

Cada nodo calcula algunas estadísticas, una de las cuales es «cuántas nuevas transacciones se reciben de un vecino». Si un nodo en particular es «demasiado perezoso», será eliminado por sus vecinos.

Por lo tanto, incluso si un nodo no emite transacciones (y por lo tanto no tiene incentivos directos para compartir nuevas transacciones que aprueban su propio). 

Por lo que tiene un incentivo para trabajar duro.