Comment la Blockchain peut interagir avec des API et le Cloud

8 January 2018

Les systèmes à base de Blockchain déclenchent énormément d’innovation. De la monnaie digitale au suivi de chaîne de distribution ou les plateformes pour artistes.

Une des contraintes principales du consensus basé sur la blockchain est la nécessité de fonctionner à l’intérieur d’un univers clos. Tout doit y être prévisible, fiable et reproductible. C’est un fait limitant pour beaucoup de projets. Comment fait pour développer des applications qui interagissent avec l’extérieur?

Par exemple,

Pour ces cas d’utilisation, on développe des ponts (Bridges) entre la Blockchain, “fiable et sécurisée”, et le monde extérieur.

Contraintes d’un Smart Contract sur la Blockchain

Les Smart Contracts sont de petits robots qui vivent dans la Blockchain Ethereum. Ils vivent dans un compte (Wallet) accessible à tous. Quand quelqu’un envoie une transaction à ce compte, les mineurs vont exécuter le code du Smart Contract. Ce code peut mettre à jour la Blockchain et déclencher d’autres transactions.

Ces Comptes Robots rendent la Blockchain “Intelligente”.

Mais les Smart Contracts ont une limitation: le programme doit être Pure. C’est-à-dire que le résultat doit dépendre uniquement des entrées du programme (le contenu de la transaction). C’est la source du Consensus Décentralisé. Chaque membre du réseau peut rejouer toute l’histoire du système pour vérifier sa légitimité.

Donc nos Smart Contract doivent être sans effet de bords. Ils ne peuvent pas interagir avec le monde extérieur.

Un contre-exemple: Imaginons un Smart Contract qui prenne une décision reposant sur une API de météo. Aucun Mineur ne recevrait le même résultat, il serait impossible de rejouer la transaction pour prouver qu’elle est authentique.

On utilise des Bridges pour résoudre ce problème. Ils exposent le monde extérieur grâce à des Oracles.

Bridges Blockchain à la rescousse

Un Smart Contract expose des points d’entrée vers un système externe. Ce contrat existe dans le monde de la Blockchain. Un de nos serveurs va observer ce contrat. Quand une transaction est envoyée sur le contrat, le serveur transmet la requête au monde extérieur.

Plus tard, notre serveur peut transmettre le résultat de la requête au Smart Contract. On peut même déclencher de nouvelles transactions (callbacks) vers le Client de notre Smart Contract / Bridge / API.

Donc une partie du système vit dans la Blockchain Ethereum et fournit la Source de Vérité (Source of Truth). Une autre partie du système observe et réagit comme un utilisateur “classique” le ferait.

Dans une infrastructure plus classique: Ce Smart Contract est équivalent a votre Frontend HTTP qui expose votre API. Ce frontend cache la complexité de votre stack à vos clients.

Voilà quelques exemples de projets qui lient une Blockchain (Ethereum) avec une plateforme extérieure:

Beyond the Void

Ils utilisent le “cas d’utilisation basique”. L’infrastructure de Beyond The Void relie la Blockchain Ethereum avec leurs Serveurs de jeu Unity:

Un de leurs Smart Contract va recevoir des transactions sur la Blockchain ETH. Un de leurs serveurs traduit ces transactions, en tokens NXC vers des échanges de ressources dans le Monde du Jeu.

iExec

Ils utilisent un système un peu plus générique où les utilisateurs possèdent le Contrat du Bridge:

Quand vous déployez une application via iExec, vous déployez aussi un nouveau Smart Contract sur la Blockchain Ethereum.

Un des serveurs de iExec va écouter les transactions en rapport avec ce Smart Contract et transmettre les requêtes vers leurs plateformes. iExec permet, par ce biais, d’échanger des tokens RLC contre du temps de calcul, similaire à AWS.

Leur code est disponible sur github: iexec-bridge.

Oraclize

Oraclise est un meta-oracle qui vous permet d’accéder des ressources externes sans avoir à construire vos propres bridges. Ils promettent une solution générique qui répond au besoin de créer des oracles. Un article concis et intéressant décrit la plateforme, à lire sur medium.

Ils sont aussi sur github: ethereum-bridge.

Finalement

Stocker et accéder a de la donnée sur Ethereum est un processus fiable, mais coûteux. On a un consensus puissant, mais coûteux que l’on utilise donc pour orchestrer d’autres systèmes. Les exemples que l’on a vus appliquent l’idée d’utiliser Ethereum pour stocker des metadata"

Avec les Oracles on peut “étendre” les systèmes de Blockchain. Mais on perd la décentralisation! Quand un Smart Contract commence à interagir avec une API externe, il devient dépendant d’une entité ce qui n’est plus décentralisé.

Cover par Yong Chuan

Laurent Senta

I wrote software for large distributed systems, web applications, and even robots. These days I focus on making developers, creators, and humans more productive through IPDX.co.