On voit apparaître depuis peu des objets connectés dans notre maison. Les smart thermostats qui régulent la température de votre maison en fonction de vos habitudes et des données météo empruntées sur le web, Les lampes intelligentes qui s’allument uniquement lorsque quelqu’un est dans la pièce, le réfrigérateur qui commande tout seul ce qu’il vous manque ou encore les smartlocks qui ferment votre maison automatiquement, sont autant de capteur plus ou moins intelligents présents dans notre environnement.
Ces objets deviennent intelligents parce qu’ils sont équipés de processeurs visant de faire fonctionner des algorithmes capables d’apprendre nos habitudes et donc de s’adapter à notre quotidien tout en combinant les information relevées sur leur environnement avec les données trouvées sur internet.
Les smart thermostats par exemple, analysent dans un premier temps les niveaux de chaleurs que nous préférons et utilisent les données météorologiques disponibles sur internet pour optimiser les économies d’énergies. Ces appareils peuvent évidemment interagir avec les autres capteurs de leur environnement. Vous pouvez par exemple programmer un smart thermostat pour diminuer la température et les lampes intelligentes pour qu’elles s’éteignent lorsque le smart Lock est enclenché et qu’aucune présence n’est détectée dans la maison.
Nous ne sommes qu’au début d’un mouvement de grande envergure, puisque Gartner, la célèbre compagnie de recherche en téchnologie de l’information, estime que le nombre de ces objects connectés pourrait atteindre 13,5 milliards d’ici à 2020. Or ce mouvement soulève des questions importantes à commencer par celle de la sécurité.
Comme en témoigne une attaque perpétrée aux Etats Unis et en France en octobre 2016 contre le fournisseur d’accès Dyn, il est possible de prendre contrôle d’objets du quotidiens comme des webcams, des routers et même de babyphones en vue de conduire des attaques déni de service d’une taille sans précédent.
Tous ces objets étant en réseau, ils vont communiquer et réaliser des transactions les uns avec les autres, des milliards de micro-transactions pour être précis. Il est donc essentiel de leur permettre d’échanger en toute sécurité et de manière indépendante. Ces capteurs n’étant pas pour la plupart encore très intelligents, c’est-à-dire qu’ils ont une mémoire et des capacités de calcul limitées, il faut dès aujourd’hui imaginer un système qui soit très léger et facile à mettre en œuvre tout en étant rapide et capable de supporter un nombre illimité de membres.
BLOCKCHAIN
Un système reposant sur une blockchain pourrait sembler très adapté de prime abord. Une blockchain permet en effet à un réseau de membres ou d’objets connectés de réaliser des transactions et de communiquer de manière autonome et très sécurisée.
Pourtant, en l’état actuel de son développement la blockchain du bitcoin (que nous prenons comme exemple ici) présente de nombreux inconvénients pour être appliqué à un nombre important d’objets connectés en réseau :
- Une capacité de déploiement limitée
En raison du nombre limité de transactions pouvant être ajoutées à chaque block de la blockchain, il est actuellement difficile d’étendre l’application de la blockchain à un réseau ayant une croissance exponentielle et donc un nombre de transactions entre les membres du réseau (personnes physiques ou objets connectés) également exponentiel. La taille des blocks de la blockchain Bitcoin est 1MB (en septembre 2017) et même une amélioration comme SEGWIT 2X qui ajoute des capacités de stockage dans chaque block, ne suffit pas à contenter la demande actuelle du réseau bitcoin. Il est en effet considéré que près de 250,000 transactions sont constamment en attente de confirmation.
- La lenteur du protocol
Cet engorgement est largement dû à la lenteur du protocol Bitcoin. A l’heure actuelle le protocol Bitcoin ne permet d’ajouter un block à la blockchain que toutes les 10 minutes. La difficulté du Proof of Work est en effet constamment ajustée aux nombre de mineurs présent sur le réseau (et donc au hashing power utilisé sur le réseau) pour que espace soit respecté entre chaque block pour assurer la sécurité du réseau. On comprend bien que ce système qui est déjà mal adapté aux applications commerciale, ne peut fonctionner dans un univers où des milliards de machines échangent entre-elles à la vitesse de la lumière.
- Des frais élevés
La présence de mineurs qu’il faut rémunérer pour leur travail de validation et d’ajout des blocks à la blockchain, est également un gros désavantage. A l’heure actuelle, les frais facturés les mineurs aux usagers pour chaque transactions ajoutées à la blockchain tourne autour de 2 dollars, mais peut atteindre des pics allant jusqu’à 8,5 dollars. Là encore le principe du minage qui vise à faire fonctionner le réseau de manière décentralisé et sécurisé, s’avère particulièrement inadapté aux micro-transactions qui vont exploser autour de nous dans un futur proche.
- La lourdeur de la blockchain
Enfin la taille de la blockchain peut également s’avérer être un inconvénient majeur. Certe il n’est pas nécessaire de télécharger une blockchain en entier pour interagir avec elle et envoyer des transactions, mais il faudra que celle-ci soit stockée dans un même endroit par tous les membres (mineurs ou nom) du réseau. Ce système est de toute évidence inadapté à un monde où des milliards de transactions vont être réalisées chaque jour.
LA SOLUTION POSSIBLE: LE LIGHTNING NETWORK
Le Lightning Network est un protocol dont l’objectif initial est de permettre au bitcoin d’étendre son réseau en accélérant la vitesse de réalisation des transactions.
Ce protocol s’applique maintenant à l’ensemble des blockchains et permet de réaliser des millions de transactions par seconde de manière instantanée et avec des frais extrêmement faible.
Chaque partie doit donc d’abord créer ensemble un canal en émettant une transaction qu’ils doivent tous signer à l’aide de leur clef privée, qui ne sera pas diffusée sur le réseau et qui aura pour vocation de blocker une certaine somme d’argent.La technologie utilisée par le Lighting Network est celle des canaux de paiements. Les canaux de micropaiments (« Micropayments Channels ») sont une technologie qui permet de regrouper plusieurs petites transactions dans une même transaction en vue de limiter les frais et ne pas avoir à attendre la confirmation pour chaque transaction.
Le Lightning Network va plus loin et propose un canal bidirectionnel, c’est à dire que les deux parties peuvent effectuer des paiements à travers un même canal. Les deux parties peuvent donc bloquer une somme d’argent dans la mulit-sig transaction initiale et effectuer des transactions à travers ce canal.
Le Lightning Network organise également la mise en réseau de ces différents canaux de manière à permettre la réalisation de paiements par personnes interposées. Pour ce faire, le logiciel va réaliser une série d’étapes qui vont permettre à Alice de transférer des fonds à Carol par l’intermédiaire de Bob.
Ces étapes du fonctionnement du Lightning Network sont les suivantes :
- Alice demande à Carol de créer une valeur (par exemple un mélange de chiffre et de lettres) et de lui en transférer le hachage ainsi que son adresse bitcoin.
- Alice transmet le hachage à Bob et lui dit qu’elle lui transmettra un bitcoin si il lui montre la valeur qu’il a reçu de Carol prouvant qu’il a bien transmis un bitcoin à Carol.
- Bob reçoit la valeur (qui vérifie le hachage) de la part de Carol et lui transmet un bitcoin en retour.
- Bob transmet la valeur qu’il a reçue de Carol à Alice prouvant ainsi qu’il a transféré le bitcoin à Carol. Alice peut donc lui transmettre à son tour un bitcoin en toute sécurité.
Comme nous le voyons Alice utilise le canal que Bob a mis en place avec Carol pour transférer un bitcoin à cette dernière sans pour autant la connaître. Evidement ce scénario fonctionne avec plusieurs intermédiaires.
Mais comme vous vous le demandez peut être, que se passerait-il si Alice changeait d’avis et décidait de ne plus transférer le bitcoin une fois qu’elle a reçu la valeur de la part de Bob et que ce dernier a transmis le bitcoin à Carol (étape 4 ci-dessus) ?
Hash Time-Locked Contract
Pour ce faire, le lightning Network utilise un procédé appelé «Hash Time-Locked Contract» qui inclut à la fois un minuteur (« Time-Locked ») et un secret (« Hash »). Si nous reprenons l’exemple si dessus d’un transfert de bitcoin de Alice vers Carol (directement, sans inclure Bob pour faciliter l’explication), la mise en place d’un Hash Time-Locked Contract s’effectue selon les étapes suivantes :
- Alice envoie les bitcoin qu’elle veut transférer à Carol, vers une adresse tierce qui nécessite la signature des deux parties pour être utilisée (adresse multisig).
- Bob peut récupérer les fonds en les envoyant vers une adrese qu’il contrôle à tout moment en y ajoutant sa signature et la valeur qui lui aura été transmise par Alice.
- Alice peut également envoyer les fonds vers une addresse qu’elle maîtrise mais seulement après une certaine période (« Time-Lock »).
Ce mécanisme est ensuite utilisé au niveau du réseau. Ainsi Alice et Bob ont aussi mis en place un Hash Time-Locked Contract. Dans notre exemple ci-dessous, Bob reçoit la valeur d’Alice avant de lui transférer le bitcoin. Les deux canaux sont liés donc si Alice ne veut pas lui transférer le bitcoin à son tour, Bob pourra insérer la valeur qu’il a reçue de Carol dans le Hash Time-Locked Contract en place avec Alice et ainsi être certain de le récupérer.
Comme vous pouvez le constater le Lightning Network représente un avancées importante pour le développement du réseau bitcoin et peut être une solution pour les réseaux de communication entre machines qui se développent actuellement. Bien que de nombreux prototypes de réseaux reposant sur une blockchain tous plus performants les uns que les autres soient actuellement en développement, nous voudrions nous arrêter sur un des plus prometteur, en tout cas l’internet des objets.
TANGLE : tous les avantages de la blockchain, sans blockchain
Tangle est un nouveau type de réseau reposant sur un DAG (Directed Acyclic Graph) qui a été conçu avec l’internet des objets comme ligne de mire. Tangle n’est plus vraiment une blockchain à proprement parlé, puisqu’il n’y a plus de « block » ni de « chain ». Tangle est en fait une blockchain de seconde génération qui ne repose pas sur une architecture de blocks reliés les uns aux autres par des hachages cryptographiques, mais conserve certains fondamentaux de la blockchain actuelle :
- Un réseau de pair à pair
- Une base de données décentralisée
- Un mécanisme de consensus en vue de valider les transactions
Une des premières conséquences de l’absence de blocks est l’absence de mineurs. Pour être précis et comme nous allons le voir, il n’existe pas de membres du réseau qui soient exclusivement mineurs pour le compte du réseau. Tous les membres le sont un peu. Un réseau reposant sur Tangle ne charge donc pas de frais pour valider des transactions. C’est une des différences majeures avec la blockchain telle que nous la connaissons actuellement. Les transactions même pour des montants infimes sont donc possibles sur ce type de réseau, ce qui est particulièrement bien adapté à l’internet des objets.
CONSENSUS: Tangle propose un système de validation des transactions très novateur.
Le mode de consensus est également différent de celui que nous connaissons actuellement puisqu’il ne s’effectue pas en séquence, de 10 minutes pour le protocol bitcoin par exemple, mais en continue et en parallèle.
TANGLE est également appelé un DAG ou DIRECTED ACYCLIC GRAPH. « Directed » signifie que cela ne va que dans un sens, « Acyclic » signifie que ce n’est pas circulaire et « Graph » que le réseau en lui-même est l’équivalent de la blockchain pour stocker les transactions.
Comme pour les réseaux actuels chaque membre du réseau (ou « node » en anglais cad « nœud ») est un ordinateur qui envoie des transactions pour validation aux autres membres avec lesquels il est connectés. Dans le cas de Tangle, ces transactions sont appelées « Site ».
La règle est que toute nouvelle transaction, appelée « Tips » (en gris ci-dessus), doit approuver deux transactions existantes. Chaque chaine de transactions est appelé une branche. Plus la branche sur laquelle une transaction repose est longue, c’est-à-dire plus il y a de nouvelle transactions après elle, plus son poids est important. Par « poids », il faut comprendre le montant de travail qui a été investi dans la transaction par le membre émetteur. Le poids d’un « Tip » peut également être calculé en fonction du poids de toutes transactions qui figurent sur la même branche.
On parle alors de poids cumulé. Dans l’exemple ci-dessus, le poids cumulé de A est 9, c’est-à-dire son poids (1), plus le poids des transactions vers lesquelles il pointe, soit (B), (D), (F) et (G). Plus le poids d’un Site est important, moins il sera possible de revenir sur cette transaction. Il est important de voir que toutes les transactions en vert dans le schéma ci-dessus sont indirectement pointées par toutes les nouvelles transactions en gris, ce qui n’est pas le cas des transactions en rouge. L’objectif de toute transaction est de devenir verte.
Les deux transactions que doivent valider chaque nouvelle transaction sont choisies au hazard par un algorythme appelé « Markov Chain Monté Carlo » et entend éviter que des membres choisissent de valider seulement leurs transactions. Comme vous pouvez le voir, chaque membre du réseau joue le rôle de mineur en validant deux transactions pour que la sienne soit acceptée par le réseau.
Comment connaitre le degré de fiabilité d’une transaction ?
Tout simplement en actionnant l’algorithme « Markov Chain Monté Carlo » pour déterminer le nombre de fois qu’un Tip choisit conduit à votre transaction. Si vous actionnez l’algorithme 100 fois et que votre transaction est atteinte 50 fois alors le taux de validation est des 50%.
Une fois qu’un membre a vérifié que les deux transactions sélectionnées par l’algorithme ne sont pas conflictuelles, le principe utilisé pour valider les transactions est le même que celui utilisé par la blockchain du bitcoin, c’est-à-dire Proof of Work. Chaque membres reproduit le même hachage cryptographique jusqu’à ce qu’il découvre le Nonce qui permet de valider la transaction. La grande différence avec le POW utilisé pour le bitcoin réside dans le fait qu’il n’y a plus de course entre les différents mineurs et donc la difficulté pour trouver le Nonce n’augmente pas. Il est donc possible de participer au minage des transactions d’un réseau reposant sur la technologie Tangle depuis son smartphone ou son PC. Tangle est en fait conçu pour que le minage soit réalisé depuis des objets connectés aux faibles capacités. Il est donc parfaitement adapté à l’internet des objets.
DEPLOYEMENT: avec Tangle plus le réseau est grand plus il est sécurisé
Il est essentiel de comprendre que le type de minage que nous venons de décrire s’effectue simultanément par tous les membres du réseau et non plus en cadence, toutes les 10 minutes comme c’est le cas avec le bitcoin. Donc plus il y a de membres dans le réseau, plus il y a de mineurs et plus le réseau est sécurisé. Cette option est rendue possible parce que les transactions ne sont plus ajoutées à des blocks dont la taille est limitée, mais sont directement enregistrées dans le DAG ou DIRECTED ACYCLIC GRAPH.
OFFLINE: Tangle fonctionne même lorsque lorsqu’il n’est pas connecté.
Un autre élément crucial pour son utilisation dans l’internet des objets est que les membres du réseau peuvent participer au minage sans pour autant être connecté en permanence au réseau internet. Quand on appréhende les problématiques de communication des capteurs d’un réseau dans le monde réel, on s’aperçoit que cette option est indispensable. Pour des raisons pratiques, il est en effet impossible que tous les objets connectés soient en permanence connectés à internet, même indirectement au travers d’un Gateway.
N’hésitez pas à poser vos questions en commentaire et à Liker si cet article vous a plu!!
Follow me on Social media