Bitcoin Unlimited: encore sur la taille des blocs

 

La recherche autour des blockchain est toujours aussi dynamique et depuis quelque temps un nouveau terme est apparu dans la sphère médiatique, celui de Bitcoin Unlimited (BU). De quoi s’agit-il concrètement ?

Bitcoin Unlimited est un full client qui se propose comme alternative au Bitcoin Core, le client original. Il offre un haut degré de sécurité et propose deux innovations majeures.

A) Il supprime la limite sur la taille des blocs, figée à 1 mégaoctet dans Bitcoin Core. Chaque utilisateur va pouvoir paramétrer la taille des blocs qu’il souhaite accepter, d’où découle un marché de la taille déterminée par consensus.

B) La couche consensus de Bitcoin Unlimited est plus propre puisqu’elle préserve sa propriété argent, dans le sens où elle ne fait que du consensus. Les blocs problématiques à accepter pour des raisons techniques (et non de cohérence dans la balance des avoirs) sont traités dans une couche différente où le consensus réseau n’est pas critique.

Nous verrons que  Bitcoin Unlimited peut occasionner un hard fork.

Actuellement, le réseau bitcoin permet environ 300 000 transactions par jour et sa capacité est clairement insuffisante pour la plupart des applications financières alors qu’on sait que le réseau de Visa traite des centaines de millions de transactions/jour. En outre, le bitcoin est depuis quelque temps assez saturé avec des temps de confirmation qui s’allongent, comme on le voit sur les graphiques qui concernent les deux dernières années.

Janvier 2015- Janvier 2017:  Temps pour qu’une transaction soit acceptée dans un bloc  (ne comprend pas les transactions sans frais de minage). Source: blockchain.info

Sans surprise, les utilisateurs bitcoin sont de plus en plus nombreux dans le monde et le bitcoin est quelque part victime de son succès. Ce site montre de manière graphique la saturation des blocs, mi 2015 versus fin 2016:

Saturation des blocs Avril 2015: jaune pâle = petite taille, rouge bordeaux = très saturés
Saturation des blocs Octobre 2016

Lorsque les blocs se remplissent de cette manière, en raison de plus de personnes qui utilisent le Bitcoin, la concurrence pour occuper l’espace à l’intérieur du bloc suivant se fait rude, ce qui signifie les gens doivent concéder des commissions plus élevées afin de convaincre les mineurs d’intégrer leur demande.

Vous pouvez regarder ici  par exemple la transaction 302811…1b01. Effectuée le 24 Janvier 2017, elle a demandé plus de 18 heurs avant confirmation (contre les 10 minutes théoriques). Cela reste exceptionnel mais illustre bien le problème.

Temps de confirmation de la transaction BTC 3028…61b01 : 18h et 51 minutes

18 heures pour transférer 0.354 BTC (~320$) en ayant payé une commission relativement correcte: il faut clairement une solution pour augmenter le nombre de transactions. Une solution possible est justement Bitcoin Unlimited (une autre est l’adoption de SegWit, dont on avait parlé ici).

Il faut ici préciser que la question de la taille n’est pas une maladie chronique qui affecterait le bitcoin: il s’agit d’une étape normale dans la quête de scalability que tout acteur web qui a eu un succès mondial a du franchir à un moment donné.

Ce ralentissement a au moins deux effets néfastes sur le réseau.

  1. D’abord les acteurs qui font transiter des très petites sommes vont faire face aux délais les plus importants. Une transaction colored-coin (de valeur nominal pratiquement nulle) ne peut évidemment pas payer des grosses commissions. Il en va de même pour ce qui font du burn de la monnaie, par exemple pour horodater un document.
  2. Deuxièmement le réseau est très affaibli ce qui le rend très vulnérable dans ces conditions, par exemple, à un attaque dust.

***

La taille d’un bloc est définie par le nombre de transactions que le mineur insère et nous savons tous qu’elle est aujourd’hui limitée à 1MB. Augmenter cette taille aurait comme conséquence d’accepter un nombre de transactions par seconde plus important et cette augmentation peut déjà se faire en modifiant un paramètre qui est codé en dur dans le node client.

Mais l’idée derrière Bitcoin Unlimited est plus élégante: faire parler entre eux des parties du protocole afin de définir la taille idéale selon un consensus global choisi par les utilisateurs. Cela rend plus efficace le stockage de données dans la blockchain: en introduisant la notion de références aux transactions, on allège la taille des blocs et on gagne ainsi en débit.

Le problème est conceptuel. Avant de valider un noeud, chaque mineur parcourt et vérifie toutes les transactions qui le composent dans le but de trouver une double-spend et/ou une transaction invalide. S’il en trouve au moins une, le bloc est rejeté. Mais il y a d’autres raisons d’écarter un bloc, par exemple s’il est trop volumineux.

On voit bien que les deux critères ne jouent pas dans la même cour:

  1. Dans le premier cas, on juge un bloc par rapport à sa cohérence avec la balance des avoirs et donc l’argent qu’on veut transférer: on est au coeur de la mécanique argent/monnaie du bitcoin.
  2. Dans le deuxième cas, on juge un bloc par rapport à une limitation technique du moment afin de prendre en compte les contraintes physiques (provisoires et actuelles) des canaux de communication du réseau p2p Bitcoin. Si tout Internet avait la vitesse de la fibre optique et chaque noeud un peta-octet de disque dur à disposition, ce deuxième critère n’aurait pas lieu d’être.

Conceptuellement, le consensus ne devrait pas s’occuper des limitations techniques de la structure hardware qui porte le bitcoin. C’est en séparant ces deux critères que Bitcoin Unlimited arrive à une solution plus propre.

Bitcoin Core répond à la question de la taille des blocs de manière binaire (moins d’un MB on accepte, plus d’un MB on écarte) tandis que Bitcoin Unlimited propose une approche floue: la question de juger les blocs difficiles à accepter pour des raisons techniques est traitée à l’extérieur de la couche consensus, selon une logique plus permissive.

BU tente utilise une excessive-block gateun filtre qui vérifie les propriétés techniques de chaque nouveau bloc afin de juger s’il est acceptable (la taille en premier, mais pas seulement…). S’il n’y a pas de contraintes, le bloc passe directement à la couche consensus. Dans le cas contraire, il est temporairement mis de côté. La porte s’ouvrira éventuellement plus tard pour lui seul si un nombre suffisant de blocs supplémentaires viennent s’empiler par-dessus.

Si la majorité du réseau est d’accord avec le fait que le bloc en question est à écarter, un nouveau bloc viendra s’ajouter à la chaîne le rendant orphelin. Si au contraire le réseau est en désaccord, de nouveaux blocs seront construits sur celui qui a des soucis techniques. Une fois que la pile atteint une certaine hauteur définie par le noeud, la porte s’ouvre en permettant aux blocs de transiter vers la couche suivante et d’aller étendre la chaîne.

Dès qu’un bloc techniquement douteux (par exemple trop gros en taille) en a suffisamment au-dessus de lui, la porte s’ouvre, présentant la mini chaîne de blocs (qu’il porte sur ses épaules) comme une possible APPEND au sommet de la chaîne. Si la nouvelle chaîne ainsi formée est la plus longue, elle est acceptée par la communauté.

Chaque noeud mineur définit la taille de blocs qu’il va miner en modifiant un paramètre client via un menu GUI, en plus du paramètre acceptance depth qui définit le seuil en profondeur pour l’ouverture de la porte.

***

Contrairement à la situation actuelle (taille rigide de 1Mo), Bitcoin Unlimited rend flexible le choix de la taille des blocs qui revient entièrement aux mineurs. Les mineurs créent toujours des blocs de taille canonique de 1MB sur la blockchain bitcoin régulière. C’est lorsque assez mineurs proposeront des blocs plus grands, et d’autres accepteront de les traiter, que BU commencer automatiquement à empiler dans la chaîne ces grands blocs. Si un nombre suffisant de mineurs devait passer au BU en décrétant un nouveau consensus, nous aurions une nouvelle blockchain bitcoin en mesure d’accepter dynamiquement des blocs de tailles différentes et notamment ceux de grandes tailles.

De fait, en déplaçant la question de la taille des blocs de la couche protocole à la couche transport, Bitcoin Unlimited élimine le point central de contrôle du Bitcoin et rend le pouvoir décisionnel aux mineurs. Un consensus neutre, dynamique et basé sur une économie de marché libre peut ainsi émerger spontanément dès lors que la majorité des mineurs converge vers un point focal en trouvant un accord. Ce processus est une entité dynamique capable de répondre selon une philosophie 100% blockchain et dans un intervalle de temps fini à des situations réelles en évolution: la gouvernance s’effectue ainsi collectivement de manière décentralisée.

Cela correspond davantage aux souhaits du créateur Satoshi Nakamoto (pseudonyme). Comme principe fondamental, le Bitcoin devrait être la somme de deux choix:

  • Ce que ses utilisateurs définissent par le code qu’ils décident d’exécuter.
  • Les règles qui s’appliquent doivent être celles pour lesquelles les utilisateurs ont voté avec leur puissance de calcul.

***

Dans la communauté BTC, BU ne fait pas l’unanimité. Les sceptiques estiment que cette manière de gérer l’augmentation de la taille peut aboutir à un hard-fork dans le code qui diviserait le réseau. Ils pensent aussi qu’une telle flexibilité peut pousser les mineurs à accepter de plus en plus de grands blocs, rendant plus difficile le mining pour les mineurs aux ressources limitées. Cela pourrait concentrer ultérieurement la puissance de mining dans les mains d’un petit nombre, provoquant essentiellement une centralisation qui s’oppose à la philosophie de base du bitcoin.

Autre danger  est que les mineurs BU peuvent envoyer de gros blocs dans la blockchain actuelle  sans que personne ne soit prêt à les traiter: on peut balancer des gros bloc qu’on sait prédestinés à devenir orphelins. Va-t-on assister à des « stone attacks »  après avoir vu de dust attacks ?

À l’heure actuelle, la plus grande partie du réseau rejette les blocs de taille > 1MB. Tout changement impliquerait une majorité des mineurs BU. Tant qu’ils restent en minorité, le hard-fork ne peut pas se concrétiser. Ils sont aujourd’hui près de 10%, la possibilité de diviser le réseau reste donc lointaine…

Nodes Bitcoin Unlimited
Historique du nombre de noeuds Bitcoin Unlimited dans le réseau.

Dans tous les cas, ni les utilisateurs institutionnels ni d’autres acteurs peuvent contrôler ce changement. Le consensus sur la taille et donc sur la technologie sous-jacente qui devra l’implémenter sera en fin de compte déterminé par l’adoption des mineurs.

Pour résumer, par opposition à Bitcoin Core avec Bitcoin Unlimited:

  • Les mineurs décident manuellement la taille des blocs qu’ils créent
  • Les mineurs définissent la limite supérieure de la taille de blocs qu’ils sont prêts à accepter
  • Ils définissent la deep acceptable de la chaîne
  • Ils créent toujours des blocs de taille normale sur la blockchain bitcoin mais signalent qu’ils sont prêts à traiter éventuellement de blocs plus grands
  • Dès que suffisamment de mineurs BU s’installent, les mineurs peuvent commencer à créer de plus grands blocs

2 réflexions au sujet de « Bitcoin Unlimited: encore sur la taille des blocs »

Laisser un commentaire