Comment gérer, sur le long terme, l’augmentation du nombre de transactions ? Gavin Andresen plaide en faveur d’une augmentation de la taille des blocs. Pierre Noizat explore, en complément, une seconde voie : le développement de sidechains (chaines collatérales).
Mise à jour du 30.08.19
Il existe actuellement deux sidechains de Bitcoin :
– RSK (Rootstock), qui permet l’exécution de contrats Turing-complets et qui repose Basée sur une fédération d’acteurs
– Liquid de Blockstream qui repose sur une fédération de plateformes, facilite les échange entre bourse et permet aux utilisateur d’émettre et d’échanger confidentiellement leurs propre actifs (les issued assets).
Ne pas anticiper l’augmentation du nombre de transaction c’est courir le risque d’un engorgement qui bloquerait le développement de Bitcoin. Dans un tel cas de figure, seuls les utilisateurs consentant à payer aux frais de transaction prohibitifs pourraient encore utiliser le système. En mai dernier, Gavin Andresen a présenté les enjeux du problème. Il plaide désormais en faveur d’une augmentation de la taille des blocs.
Sur son blog, Pierre Noizat, secrétaire général de l’association Bitcoin France et co-fondateur de Paymium, étudie une seconde possibilité : l’utilisation de sidechains pour délester le registre principal.
Quand Adam Back, l’inventeur de hashcash, le procédé de “proof of work” utilisé par Bitcoin, co-signe un papier sur la technologie Bitcoin, on se doit d’y prêter attention. D’autant plus qu’il a co-fondé récemment au Canada, Blockstream, une startup dédiée au développement de ce concept.
Le papier en question traite d’une question cruciale pour la technologie Bitcoin qui est sa flexibilité: comment accommoder des cas d’usages toujours plus divers et variés tout en conservant l’excellent niveau de performance qui est atteint et désormais attendu par ses utilisateurs ? Par exemple, comment réaliser une multitude de micro-paiements sans polluer la blockchain avec autant de microtransactions ? Au moins trois solutions sont envisagées actuellement, premièrement les altcoins, une solution radicale qui postule que la blockchain Bitcoin n’y parviendra pas et qu’il faut donc un ou plusieurs autres réseaux dédiés pour y parvenir, ensuite l’augmentation de la taille des blocs et enfin les “sidechains” (qu’on pourrait traduire par “chaîne collatérale”).
Source : blockstream.com
Les altcoins posent deux problèmes non résolus à ce jour: le premier est la fragmentation de l’infrastructure qui induit un gaspillage d’énergie et des risques de sécurité. Les vulnérabilités d’un altcoin peuvent passer inaperçue et sont exploitées seulement lorsque l’altchain commence à véhiculer une valeur importante. Le second problème est la valeur flottante d’un altcoin qui , contrairement à Bitcoin, est attachée à une altchain encore balbutiante. Les néophytes peuvent être floués par de fausses promesses sur la sécurité ou la décentralisation d’un altcoin et toute expérience négative retarde l’adoption des monnaies décentralisées.
L’augmentation de la taille des blocs est une solution pratique et relativement simple à déployer, déjà préconisée par Gavin Andresen. Elle s’accompagne bien sûr d’un alourdissement de la blockchain qui peut être géré grâce aux checkpoints. Un checkpoint est un numéro de bloc codé “en dur” dans le wallet qui est considéré comme sûr par les mineurs pour reconstituer l’historique complet des transactions. Le consensus s’établit sur le fait que les transactions antérieures à ce bloc, par exemple des transactions confirmées il y a plus de deux ans, ne peuvent plus être invalidées par une réorganisation de la blockchain résultant d’une attaque des 51%.
Cependant, les solutions de scalabilité ne s’opposent pas et peuvent co-exister. Le concept des sidechains semble prometteur et fonctionne de la manière suivante :
1) Une sidechain est créée avec un stock initial de sidecoins, disons pour simplifier 21 millions de sidecoins. Ces sidecoins sont initialement tous verrouillés et ne peuvent être dépensés qu’en verrouillant une quantité égale de bitcoin sur la blockchain Bitcoin. Les bitcoins ne peuvent être libérés à leur tour qu’en verrouillant à nouveau les sidecoins correspondants. On a donc créé une sidechain où peuvent circuler des sidecoins avec un taux de conversion à parité (1:1) avec les bitcoins.
2) une transaction spéciale sur le réseau Bitcoin permet de verrouiller une certaine quantité de bitcoins, disons pour simplifier un bitcoin : les inputs de la transaction sont standards mais l’output est un script particulier qui utilise une instruction nouvelle (OP_SIDECHAINPROOFVERIFY). Cette instruction verrouille le bitcoin impliqué tout en libérant un sidecoin qui peut être dépensé sur la sidechain dans une troisième étape.
3) une fois que la transaction de verrouillage du bitcoin est confirmée et après une période de latence d’un jour ou deux (“contest period”), une transaction sur la sidechain peut être créée pour loger le “sidecoin” ainsi libéré sur une adresse sidecoin contrôlée par le propriétaire du bitcoin verrouillé. Les inputs de cette transaction sidecoin contiennent une preuve cryptographique du verrouillage du bitcoin (“SPV proof”) et font référence à la chaîne d’origine, par exemple avec le hash du genesis block de Bitcoin. La “contest period” permet d’invalider le transfert sur la sidechain en produisant une preuve de l’existence d’une blockchain plus longue où ne figurerait pas la transaction qui a verrouillé le bitcoin. Le procédé proposé pour la preuve cryptographique s’appuie sur le protocole “Simple Payment Verification” décrit dans le papier fondateur de Satoshi Nakamoto (“Bitcoin, an electronic cash system“) qui fait l’objet d’un blog post précédent [voir sur e-ducat.fr].
4) pour récupérer le Bitcoin précédemment verrouillé, il faut que l’utilisateur réunisse la quantité requise de sidecoin (dans notre exemple, un sidecoin) et crée une transaction de verrouillage du sidecoin sur la sidechain. Une fois cette transaction confirmée sur la sidechain et après une “contest period”, le Bitcoin redevient disponible sur la blockchain sur une adresse contrôlée par l’utilisateur.
Il reste beaucoup de questions ouvertes qui font débat sur IRC et sur les forums concernant les sidechains, notamment la question du transfert retour qui assure la convertibilité des sidecoins en bitcoins avec une preuve SPV, c’est-à-dire sans que les valideurs de la sidechain aient besoin d’avoir une copie complète de la blockchain Bitcoin (“symetric 2-way peg”). Si les participants de la sidechain s’appuient sur une copie complète de la blockchain pour valider les transferts en provenance de la blockchain, on parle de “asymetric 2-way-peg”. L’asymétrie induit une contrainte sur les sidechains qui les lie plus fermement à Bitcoin et empêcherait sans doute, en pratique, le développement de cascades de chaînes qui seraient ingérables du point de vue de la sécurité. A suivre donc…
Pierre Noizat – e-ducat.fr