IOTAtoken: une tangle crypto-currency

 

Aujourd’hui, 11 juillet 2016, c’est le jour du lancement de la crypto-monnaie IOTA-token. L’occasion pour le blog de faire le point sur cette nouvelle blockchain  qui d’un point de vue strictement technique n’en est pas vraiment une.

La montée et le succès du Bitcoin au cours des six dernières années ont prouvé la valeur de la blockchain. Cependant, à l’état actuel, cette technologie a également un certain nombre d’inconvénients qui empêchent son utilisation comme plateforme de paiements à très large diffusion. On souligne notamment l’impossibilité d’absorber des gros volumes de micropaiements, une fonctionnalité de plus en plus demandée par l’industrie suite au développement croissant de l’IoT.

Les commissions à payer pour effectuer une transaction bitcoin rendent prohibitif les transferts de très petits montants puisque, dans ces cas, les frais sont plusieurs fois plus grands que les montants en jeu. Ces frais de commission servent d’incitation pour les créateurs des blocs et sont, de ce fait, irrévocables. Cela justifie la recherche de solutions essentiellement différentes de la technologie blockchain, sur laquelle sont basées les Bitcoin ainsi que pratiquement toutes les autres cryptocurrencies.

Dans cet article, nous discutons de l’approche blockchain-less mis en œuvre dans IOTA, une crypto-monnaie pour l’industrie Internet-of-Things, conçue pour fonctionner avec d’autres blockchains comme Bitcoin ou Ethereum.

En général, IOTA fonctionne de la manière suivante:

  • La structure des données ne prend pas la forme d’une blockchain, c-à-d d’une chaîne de blocs contenant des transactions. A la place, on y trouve un DAG (directed acyclic graph) que nous appelons tangle. IOTA est une tangle-based cryptocurrency.
  • Les transactions émises par les noeuds du peer-2-peer vont former le tanglec’est-à-dire que les transactions forment le grand livre (ledger) sous forme de DAG.
  • Lorsqu’une nouvelle transaction arrive, il doit approuver deux transactions précédentes. Ces approbations, représentées par des arêtes, contribuent à sécuriser le réseau.
  • S’il n’y a pas de bord dirigé entre une transaction A et une transaction B, mais il y a un chemin de longueur >=2 de A à B, alors on dit que A approuve indirectement B.

Le réseau de peers est composé de noeuds qui émettent les transactions représentées schématiquement sous forme d’un carré vide (box). Chaque transaction a un poids proportionnel à la quantité de travail (proof-of-work) que le noeud d’émission y a investi. Une des notions cruciales est le poids cumulatif: il est défini comme le poids propre à une transaction plus la somme des poids de toutes les transactions qui l’approuvent directement ou indirectement. Les petits numéros dans le coin en bas sont les poids propres, tandis que les numéros en gras (haut à gauche) sont les poids cumulatifs. 

iotatoken_1
le temps va de gauche à droite

Autre notion importante: celle de la transaction genèse, qui est approuvée (directement ou indirectement) par toutes les autres transactions. Au début, il y a une adresse à l’équilibre contenant tous les jetons IOTA. Ensuite, on a envoyé ces jetons à plusieurs autres adresses dites fondatrices. Tous les jetons ont ainsi été créés au moment de la genèse et il n’y aura pas d’autres jetons créés par la suite. De ce fait, il n’y a pas de mining dans IOTA et les noeuds ne reçoivent pas de récompenses monétaires pour leur travail accompli.

Maintenant, l’idée principale dans IOTA est la suivante:

1) avant de pouvoir émettre une transaction, les utilisateurs doivent travailler à approuver d’autres transactions (deux ou plus)  contribuant ainsi à la sécurité du réseau.

2) On suppose que les nœuds n’approuvent pas (directement ou indirectement) des transactions contradictoires. Au fil du temps, une transaction correcte obtient de plus en plus d’approbations (directes ou indirectes) et devient de plus en plus acceptée par le système. Il sera donc de plus en plus difficile (voire pratiquement impossible) d’accepter un échange qui effectuerait une double dépense.

Plus précisément, pour émettre une transaction, un noeud effectue les opérations suivantes:

• il choisit deux autres opérations à approuver selon un critère algorithmique.
• il vérifie si les deux opérations ne sont pas contradictoires
• pour que la transaction soit valide, le noeud doit résoudre un problème cryptographique (qui demande de la puissance informatique) semblable à ceux de la proof-of-work bitcoin.

Il convient de noter également que dans IOTA le ledger peut contenir  des transactions en conflit. Dans ces cas, les noeuds doivent décider quelles transactions deviendront orphelines et donc sans valeur.

La règle principale que les noeuds utilisent pour décider entre deux transactions en conflit est la suivante: un nœud exécute l’algorithme de sélection plusieurs fois sur une transaction non confirmée (tip), et
regarde laquelle des deux transactions est la plus susceptible d’être (indirectement) approuvée par l’algotrithme. Par exemple, si, après 100 itérations, une transaction a été sélectionnée 97 fois, on dit qu’elle est confirmée avec 97% de confiance.

Chaque nœud calcule aussi des statistiques, dont l’un est le nombre de nouvelles transactions reçues par un voisin. Si un noeud est trop paresseux, il sera abandonné par ses voisins. Ce mécanisme motive les noeuds à propager le plus possible les transactions via le réseau des peers.

L’idée d’utiliser des DAG dans le contexte des crypto-monnaies n’arrive toutefois pas avec IOTA. Les travaux du protocole GHOST avaient déjà proposé une modification de la structure bitcoin qui transformait le ledger en arbre au lieu d’une chaîne de blocs. Il est démontré qu’une telle modification permet de réduire les temps de confirmation et d’améliorer la sécurité globale du réseau. Ethereum utilise GHOST.

 

IOTA

***

Le projet IOTA est important parce qu’il montre la vitalité de la recherche au tour des blockchains.  Quand on met l’accident TheDAO et relative la difficulté à produire des smart-contracts bug-free à coté des titres comme IOTA – The Next Generation Blockchain, on mesure la vitesse à laquelle on avance dans le secteur.

Des projets comme IOTAtoken, Z-Cash, The Lightning NetworkFlare … montrent qu’on sait produire en l’espace de quelques mois (un temps relativement court) des solutions alternatives dans la famille DLT originales et techniquement très pointues. Ces solutions restent bien encrées dans la philosophie de décentralisation blockchain bien que techniquement parfois on ne puisse plus parler de « chaines de blocks ».

On devine que le cadre du conseil blockchain va être complexe puisque le contexte sous-jacent se profile comme étant très variable. Une sorte  de conseil dans le sable mouvant

sable mouvant

En effet, contrairement au conseil informatique standard ou les gros changements coïncidaient avec les major relases d’un langage (Java, C++…) ou à l’arrive d’un break technologique majeur (le Cloud Computing), dans le monde blockchain on a l’impression que les outils sortent avant la formalisation des solutions et des applications concrètes.

Une personne qui aurait souhaité développer une application IoT en janvier 2015 aurait choisit naturellement le bitcoin, mais il aurait pu également attendre Ethereum fin 2015  ou bien IOTAtoken quelques mois plus tard…

Si ce dynamisme pourrait retarder la décision de certains acteurs de prendre les choses en main, il prouve aussi que vraisemblablement les solutions seront au rendez-vous pour beaucoup de problématiques aujourd’hui encore ouvertes. Il y a beaucoup de place pour l’optimisation et l’innovation pour les cas spécifiques où les blockchain standard ne seraient pas 100% optimales.

Les dés sont jetés, la course est lancée et à notre avis on ne reviendra pas en arrière.

 

3 réflexions au sujet de « IOTAtoken: une tangle crypto-currency »

Laisser un commentaire