Hadrien Charlanes travaille sur un projet de stable coin appelé STABL sous l’aile de Consensys, une des plus importantes entreprises de l’écosystème Ethereum. La volatilité des crypto fait partie des freins à l’adoption depuis toujours. Un « stable coin » est un coin qui garde une valeur stable par rapport à une monnaie donnée. L’interview a été réalisée le 22 septembre 2016 pendant la Devcon de Shanghai. Hadrien nous explique son approche.
JB : Peux-tu nous expliquer ce qu’est un « stable token » ?
HC : Un stable token est un actif numérique stocké sur une blockchain et transférable. C’est un actif qui a les mêmes caractéristiques que les crypto-monnaies, à savoir de très faibles coûts et une vérification répartie (ou distribuée) des transactions.
Ce token va pouvoir être échangé en pair-à-pair sur la blockchain d’Ethereum, mais aussi être utilisable au sein d’un contrat ou d’une application décentralisée (dapps). Ces tokens gardent une valeur stable.
JB : Stable par rapport au dollar par exemple ?
HC : Oui, on va faire une série de plusieurs tokens différents. Par exemple notre USD-token garde la même valeur que le dollar à tout moment. Idem pour l’euro et le yuan chinois.
JB : Pourquoi ces tokens ?
HC : Il y a deux marchés qui sont intéressés par ce type de token : les traders sont intéressés par le côté « crypto » qu’on ajoute aux fiats. Ils veulent échanger différentes monnaies, garder des frais de transactions très bas et profiter du côté liquide des crypto, on peut les utiliser comme des crypto, c’est-à-dire qu’on utilise des pairs de clés publiques/clés privées plutôt qu’un compte en banque classique. Donc on améliore les propriétés du dollar et de l’euro en permettant de les manipuler comme des crypto. Le marché des développeurs de dapps est aussi intéressé par le projet. Un des problèmes majeurs que rencontrent Bitcoin et Ethereum est le suivant : lorsque vous stockez ces tokens, ils sont soumis à une grande volatilité due aux tensions sur le marché. Ces deux marchés distincts ont besoin d’un token qui garde une valeur fixe par rapport à une monnaie fiat.
Le stable coin parfait sera celui qui sera totalement décentralisé, autrement dit les mécaniques qui font que ce token garde une valeur stable restent on-chain, on ne se repose pas sur quelque chose qui serait off-chain. Dans l’idéal, ce token serait 100% liquide, c’est-à- dire qu’on pourrait l’échanger facilement contre ce qu’on veut comme on veut. Il faudra aussi qu’il soit disponible sur une plateforme d’échange décentralisée. Le fait que cette plateforme d’échange soit elle-même décentralisée permet à la fois de proposer ce service aux traders mais aussi aux contrats déployés sur la blockchain d’Ethereum : tout ce qui est on-chain est accessible à la fois par de nombreux utilisateurs mais aussi par les contrats qui sont sur cette chaîne, celle d’Ethereum en l’occurence. Une plateforme d’échange décentralisée (onchain) permet aux applications elles-même (dapps) d’acheter ce token. L’idéal est de tout décentraliser. Les mécanismes incitatifs liés à la théorie des jeux ont un rôle important dans la stabilité du prix de ce token.
JB : Peux-tu nous expliquer en quoi consiste l’astuce ?
HC : J’évoquais le « système parfait » qui mettra sans doute un certain temps avant d’être disponible. C’est un peu comme Bitcoin et Ethereum où tout repose sur la théorie des jeux : les participants de ces deux protocoles ont intérêt à ce qu’ils soient maintenus. Tout est construit autour de ces incentives [motivations] : comme il n’y a plus de tiers de confiance, il faut que les règles soient acceptables et acceptées par tous les acteurs et qu’ils aient chacun personnellement intérêt à maintenir le réseau. Le stable coin parfait serait une sorte de banque centrale autonome, un contrat qui agirait comme une banque centrale avec des share holders. Le travail de cette banque centrale serait d’émettre des stable coins quand la demande est plus forte et de les racheter quand la demande est plus faible. Couplé avec des services d’assurances si jamais le prix baisse trop ou bien que les share holders veulent racheter trop de stable coins, ce serait le « système idéal ». Les banques centrales fonctionnent un peu de cette façon, elles émettent de l’argent quand le prix augmente trop et rachète quand le prix est trop bas.
Dans ce « modèle parfait », la difficulté est de réussir à mettre en place les bonnes structures d’incentive pour que tout fonctionne bien, d’ailleurs c’est ce qu’essaie de faire MakerDAO. Il est également possible d’adopter l’approche MVP (Minimum Viable Product) pour répondre aux besoins des traders (liquidité et disponibilité sur les plateformes d’échanges). Les traders acceptent plus facilement des services centralisés comme Tether qui propose un token on-chain dont le prix est stable mais il utilise une autre manière d’assurer la stabilité : pour chaque token émis, un vrai dollar est stocké off-chain. Ce type de système suffit souvent aux traders mais le risque est que les dollars stockés off-chain soit volés ou autre, c’est pourquoi ce type de service s’inscrit dans le cadre de législations existantes pour permettre aux détenteurs de ces tokens d’être protégés. Ce système est acceptable pour les traders mais pas pour les dapps. Les développeurs de dapps recherchent plutôt un système dont le mécanisme de stabilité serait on-chain et décentralisé sinon la dapp elle-même perd son intérêt : on ne veut pas de tiers de confiance.
JB : Peux-tu détailler le besoin des développeurs de dapps ?
HC : Aujourd’hui dans un contrat de crowdfunding sur une campagne de 180 jours par exemple, la valeur va être stockée en ether. Or, cette valeur est très volatile : ce qu’on veut c’est qu’au lieu de stocker une valeur en ether, on stocke une valeur en USD-token. Pour ça une dapp a besoin d’avoir à disposition des tokens qui soient stables. Elle n’a pas forcément besoin que la valeur soit 100% liquide, ils ont juste besoin d’un supply prédictible (approvisionnement prédictible) pour savoir à l’avance ce qu’il est possible de faire, etc. Pour une dapp, ce qui est essentiel c’est d’anticiper une mise en échec du système. Si pour telle ou telle raison, le système ne peut plus assurer le service, il faut qu’elles aient une solution de backup pour ne pas gêner l’exécution du contrat : le but d’une dapp est d’être trustless, c’est-à-dire qu’on ne fait confiance à aucun tiers et certainement pas à l’organisme émetteur de stable coin. C’est pour ça que, au lieu de partir sur l’approche « MVP pour trader » comme Tether, j’ai choisi d’aider les dapps à réduire leur risque et c’est pour ça qu’on émet un stable token sur Ethereum. Pour l’instant, il s’agit d’un mécanisme de stabilité très simple.
JB : Peux-tu nous en dire plus sur le fonctionnement de ce stable coin ?
HC : Si le prix de l’ether est à 10 dollars, tu vas pouvoir acheter 10 USD-token, elle va envoyer 1 ether sur un de nos contrats. Dans ce contrat, il y a ce qu’on appelle des collaterals (« fonds de garantie ») : c’est une quantité de token stockée dans le contrat. Donc par exemple, si tu veux en acheter pour 10 dollars, tu vas obtenir 1 ether et le contrat va en stocker 3, donc pour 10 dollars, 40 dollars sont bloqués. Autrement dit, le système supporte une division par 4 du prix de l’ether. Donc si le prix de l’ether baisse en deçà des 2,5 dollars pour 1 ether on n’a plus assez d’argent pour assurer le service : si un contrat (une dapp) souhaite les retirer, ça ne sera pas possible. J’ai dit tout à l’heure qu’il faut que les dapps puissent prévoir ce risque : ce qu’on fait c’est que dès que la valeur de 4 ethers est inférieure à 15 dollars, les 10 USD-tokens sont automatiquement retirés (via ce qu’on appelle un « événement » qui déclenche cette transaction) ce qui permet aux développeurs de contrats d’anticiper ce cas.
Ce modèle est très simple mais il est assez robuste. Ce n’est pas un modèle scalable parce que des ethers doivent être bloqués et les ressources ne sont pas illimitées. C’est très robuste notamment parce qu’on met à jour les collaterals toutes les 6 minutes. On bloque 4 ethers dès qu’1 ether est demandé (quand l’ether est à 10 dollar pour 1 ether). Si le prix passe à 5 dollars et qu’il reste encore des collaterals dans le contrat, on passe à ce moment-là de 4 à 8 ethers bloqués ce qui permet de garder mes 40 dollars. Le système se veut très robuste mais comme il faut bloquer beaucoup d’ether pour chaque token, on ne peut pas émettre une quantité infinie de stable coin, c’est pour ça que j’assume le fait que ce stable token n’est pas « 100% liquide », c’est-à-dire qu’au lieu de créer un marché ouvert de stable coins (que n’importe qui pourrait acheter), je réserve ces stable coins aux développeurs de dapps qui vont par exemple dire « j’ai besoin d’un stable coin pour une campagne de 100 dollars donc je veux interagir avec un contrat qui contienne au moins 400 dollars qui vont me permettre de les échanger contre du dollar ».
JB : Donc ça sera « sur commande » dans un premier temps ?
HC : Oui, le modèle n’est pas parfait, c’est un début. On veut expérimenter tout ça dans un premier temps. On passera à un modèle plus scalable au fur-et-à-mesure de l’adoption. Le modèle basé sur les collaterals est très robuste à petite échelle et d’autres modèles sont plus robustes à d’autres échelles mais ces autres modèles (la « banque centrale parfaite » dont je parlais tout à l’heure) sont très vulnérables à petite échelle car pour que ce genre de banque soit stable, il faut qu’elle soit grosse dès le début. Sinon, c’est très facile de l’attaquer spéculativement, c’est-à-dire en achetant tous les tokens d’un coup ce qui affaiblit les share holders puis en rachetant les shares parce que leur prix a baissé entre temps, etc. Donc il faut être gros dès le début et ce n’est pas simple du tout à mettre en place.
Pour l’instant, ce sont des partenaires privés qui vont fournir les collaterals. En fonction de la traction et de la demande, on ouvrira les collaterals à plus de gens qui pourront investir s’ils le souhaitent. Il faut savoir que ces gens misent sur une hausse du prix de l’ether. Dans le cas où le prix de l’ether augmente, si je reprends l’exemple des 10 dollars (avec 1 ether à disposition et 4 ethers stockés), si demain le prix passe à 20 dollars, la personne n’aura plus qu’à rembourser 0,5 ether dont elle aura mis 4 ethers et il se retrouve avec 4,5 et en plus le prix de l’ether aura augmenté donc c’est ça revient à faire du margin trading sur le prix de l’ether.
JB : Dans l’hypothèse d’une hausse du prix de l’Ether, est-ce que ça veut dire que tu peux proposer le service à plus de gens ?
HC : Oui, le prix est ajusté tout le temps, donc s’il passe à 20 et qu’il ne les retire pas, il n’y aura plus que 2 ethers en collateral.
Petit à petit, on pourrait atteindre le modèle de « banque centrale ». Le système n’est pas scalable en tant que tel mais on envisage effectivement de monter progressivement en charge en profitant dans un premier temps de sa caractéristique robuste et de passer à quelque chose de plus scalable. C’est important de bien comprendre les besoins et de d’abord proposer un service robuste, le faire très bien et de manière très modulaire et sécurisée. D’ailleurs le système basé sur les collaterals est très sécurisé parce que très simple. Avant de chercher à l’améliorer, ajouter des fonctionnalités, etc. Le plus gros de mon travail est de faciliter l’utilisation pour les développeurs de dapps, j’ai notamment créer l’API Solidity qui est facilement intégrable et permet d’appeler une fonction du contrat ce qui permet de convertir des ethers en USD-tokens et les retirer quand on le souhaite.
Par exemple, une dapp européenne de crowdfunding organise une campagne qui a 100 euros comme objectif. La dapp va pouvoir transformer les ethers reçus en EUR-tokens. Pendant toute la campagne, les fonds peuvent rester en stable token qui sont restitués en ether au dernier moment. Sachant que des services comme Metamask intègrent déjà des plateformes d’échanges comme Coinbase, un utilisateur peut très facilement mettre 10 dollars dans une campagne : si tu crées une campagne en euros parce que tu es européen, un américain qui souhaite participer à hauteur de 10 dollars peut le faire en dollars et celui qui gère la campagne obtient l’équivalent dans sa propre monnaie. L’objectif des stable coins est vraiment de pouvoir répondre à cette demande précise sans chercher à répondre aux besoins distincts des traders et développeurs, mais plutôt en « cachant l’ether », c’est-à-dire sans que l’utilisateur ait forcément conscience qu’il utilise Ethereum. De cette façon, non seulement il ne perd pas d’argent si le prix de l’ether baisse, mais en plus il est possible de créer des interfaces qui ne bougent pas et qui « cachent » l’ether. Vu que c’est stable, on peut dire « dans cette campagne, il y a X euros ou Y dollars ». Le prix ne bouge pas, il est constant.
JB : Quelles sont les prochaines étapes pour toi ?
HC : Je présente le projet demain au Demo Day de la Blockchain Week à Shanghai, les contrats sont déployés sur la chaîne Morden (réplique de la blockchain destinée aux tests) et vous pouvez le tester sur stabl.money. En tant que développeur de dapp, tu peux réserver un contrat, l’API est fournie. Si tu souhaites intégrer STABL dans ton appli, tu va réserver un contrat qui contient des collaterals et développer ton contrat de crowdfunding ou autre, et tu contrôles le passage d’une monnaie à l’autre grâce à l’API, tu déploie ton contrat et, comme on est encore en version privée, il faut autoriser explicitement le contrat que tu as créé à interagir avec le nôtre. Il faut donc bien indiquer au contrat STABL d’accepter les données en provenance du contrat de crowdfunding. L’étape suivante est d’ouvrir progressivement le service au plus grand nombre. On a énormément appris avec le premier prototype sur Morden. Les contrats sont en cours de refactoring pour un lancement sur le Livenet d’ici 3 mois.