La Blockchain de NEO et le dBFT (2/3)
Cet article a pour vocation d’être une introduction à la technologie sous-jacente de l’écosystème NEO. J’ai évité autant que possible d’utiliser un jargon technique pour rendre la lecture facilement compréhensible par tous. Je m’excuse par avance auprès des lecteurs plus avancés pour les simplifications et raccourcis utilisés.
Suite du premier article : NEO : vers une économie intelligente ? (1/3)
L’algorithme de consensus de la blockchain de NEO : le dBFT
L’algorithme utilisé par NEO pour obtenir un consensus sur un réseau décentralisé s’appelle le dBFT pour Delegated Byzantine Fault Tolerance. Afin de bien comprendre, revenons rapidement sur les deux algorithmes les plus répandus :
- le POW pour Proof of Work ou preuve de travail qui est utilisé par Bitcoin ;
- le POS pour Proof of Stake, ou preuve de possession qui sera bientôt implémenté sur Ethereum.
Le « Proof of work » ou « Preuve de travail »
La puissance de calcul mise à disposition permet la vérification du réseau. Les ordinateurs sur le réseau sont mis en compétition pour résoudre un problème mathématique. Celui qui arrive à résoudre le problème peut confirmer les transactions dans la blockchain, prendre la récompense et ainsi sécuriser le réseau. Les deux reproches régulièrement fait à cet algorithme sont :
- La consommation d’électricité. Pour trouver la solution de l’équation – le nonce – les mineurs sont obligés de tester toutes les combinaisons possibles. Les machines utilisées sont de plus en plus puissantes (cas des ASICs pour Bitcoin) pour augmenter la probabilité de résoudre l’équation. En conséquence, la demande d’énergie augmente aussi.
- L’attaque des 51%. Ce type d’attaque consiste à contrôler plus de 51% de la puissance du réseau pour pouvoir modifier la blockchain (et s’attribuer plus de jetons par exemple). C’est un scénario improbable mais pas impossible. Dans cette éventualité, l’attaquant peut bénéficier d’économies d’échelles lors de l’achat en quantité massive du matériel nécessaire à l’attaque. Ce matériel peut aussi être ré-utilisé par la suite pour mener d’autres attaques.
La « Proof of stake » ou « Preuve de possession »
La possession de jetons – tokens – permet la vérification du réseau. Ces jetons doivent être verrouillés sur un portefeuille pour une période donnée – mis en « stake ». La rémunération est proportionnelle à la quantité de jetons mis en stake. Le PoS répond en partie aux deux défauts du PoW évoqués précédemment :
- La problématique de la consommation d’électricité est résolue.
- Rendues plus difficiles. Cela nécessite qu’un attaquant possède la majorité des jetons. L’achat de quantité massive de jetons ferait automatiquement augmenter son prix, rendant l’attaque beaucoup plus couteuse qu’en PoW. Ces jetons chèrement achetés perdront toute valeur après l’attaque, signifiant un suicide pour l’attaquant.
Le PoS possède aussi des défauts :
- Au niveau du code, le PoS est beaucoup plus complexe (donc plus vulnérable) que le PoW et aucun projet ne l’a encore implémenté à une échelle similaire à Bitcoin.
- Une possibilité de centralisation excessive qui donne un pouvoir trop important à certains acteurs. ArtPlay en parle par exemple dans cette vidéo à propos de DASH. Cette situation peut aussi apparaître après un piratage lorsque le pirate récupère une grande quantité de jetons.
Pour ce qui est de la centralisation, nous pouvons arguer que c’est le cas de fait sur le réseau Bitcoin avec le pouvoir concentré dans les mains de quelques grosses pools de mineurs.
NEO utilise le « delegated Byzantine Fault Tolerance » (dBFT)
Les principales caractéristiques du dBFT mis en place par NEO sont :
- Unicité de la chaine
- Vitesse de transaction supérieure
- Décentralisation moindre
Unicité de la blockchain
Sous PoW et PoS, une chaine peut être séparée et les différentes version co-exister. C’est le cas lorsqu’il y a un hard fork par exemple. Par le passé, deux forks ont été particulièrement retentissant :
- Le fork d’Ethereum et Ethereum classic suite au hack de DAO ;
- Le fork de Bitcoin et Bitcoin Cash qui résulte de deux différentes visions pour résoudre les problème de scalabilité que rencontre Bitcoin.
NEO ne permet pas de réaliser un split de la blockchain. La philosophie de NEO est d’amener l’économie réelle sur la blockchain et permettre aux entreprises d’y enregistrer leurs actifs. Il serait par exemple impensable qu’un même actif soit possédé par des personnes différentes en fonction de la version de la chaine. Aussi, en cas de split, les entreprises auraient leurs titres multipliés par deux.
Le fonctionnement de la blockchain par dBFT
Dans le système dBFT, il y a une différentiation entre deux types d’acteurs sur la blockchain :
- Les opérateurs professionnels – les bookkeepers – qui tiennent les nœuds de comptabilité dans le système de NEO ;
- Les simples utilisateurs.
Le processus de construction de la blockchain par dBFT
Les bookkeepers sont dans un premier temps élus par les détenteurs de NEO. A chaque création de bloc, un des nœuds de comptabilité est sélectionné au hasard et diffuse sa version de la blockchain au reste du réseau.
- Si au moins 2/3 des opérateurs professionnels approuvent cette version, il y a consensus et le bloc est confirmé.
- Si plus de 1/3 du réseau est en désaccord, le nœud est ignoré et un autre nœud est sélectionné pour diffuser à son tour sa version de la blockchain.
Ce mécanisme continue jusqu’à ce qu’un consensus soit atteint.
La particularité de ce système est qu’il: est impossible d’ajouter de l’information sans avoir obtenu un consensus. Un bloc ne peut pas être créé tant que le consensus n’est pas atteint alors que c’est possible avec PoS. Une autre différence primordiale est qu’il y a une finalité dans le dBFT : lorsqu’une information est placée sur la blockchain, elle y est pour de bon. Il n’y aura pas une version différente qui viendra la contredire.
Illustrons les deux points importants que nous venons de voir :
Robert, José et Fabienne font tourner chacun un des trois nœuds de la blockchain Bluecoin Cash (BCC), qui utilise PoS. Ils doivent répondre à la question suivante « De quelle couleur est le cheval blanc d’Henri IV ? »
Robert et Fabienne veulent répondre « Blanc ». José qui vient de fêter le Beaujolais Nouveau veut absolument répondre « Noir ».
Une dispute a lieu entre nos trois compères et aucun accord ne peut être trouvé.
Robert et Fabienne ayant la majorité, c’est « Blanc » qui est inscrit sur la blockchain. José, furieux, prend la décision de faire un hard fork et une nouvelle blockchain née, le Bluecoin Gold Cash (BGC), sur lequel la réponse est « Noir ».
Au début, BCC est la chaine dominante. La majorité des gens continuent à utiliser celle-ci et pour eux, le cheval est blanc.
José appelle son ami Roger : Roger, c’est un bon, il a un doctorat en marketing. Il va aller dire partout que la vraie chaine Bluecoin, c’est BGC et non BCC. Sa stratégie fonctionne : BGC attire de plus en plus d’utilisateurs jusqu’à dépasser BCC. José arrive aussi à séduire Fabienne qui quitte Robert pour le rejoindre. Bluecoin Gold Cash est maintenant la chaine dominante : Le cheval blanc d’Henri IV est devenu, aux yeux de la majorité des utilisateurs, noir.
Dans cet exemple, José a pu continuer à ajouter de l’information sur la chaine après avoir fait un split. Sur NEO, cette situation est impossible : il ne peut y avoir qu’une seule chaine. Avec dBFT l’information placée sur la blockchain est finale. Il n’y a aucun risque, même infime, que dans le futur un cheval blanc devienne noir.
Une vitesse de transaction élevée
La vitesse de transaction est exprimée en tps (transactions/seconde). Il y a deux valeurs que nous devons prendre en compte : la vitesse théorique et la vitesse pratique. Il y a une différence entre les deux dues aux limitations et variations qui ont lieu dans la vie réelle. Les développeurs des différents projets améliorent constamment les protocoles pour pouvoir approcher la vitesse théorique au plus près.
La première raison qui explique la différence de vitesse réside dans la génération de nouveaux blocs (block time) :
- Bitcoin génère un nouveau bloc en moyenne toutes les 10 minutes ;
- Ethereum génère un bloc toutes les 17 secondes ;
- NEO quant à lui génère un bloc toutes les 15 secondes. L’objectif futur de NEO est de descendre à 1 bloc par seconde.
La seconde raison est le système des nœuds de comptabilité. Au lieu de demander à tout le réseau de valider un bloc, la validation est effectuée par un nombre plus restreint de délégués : les bookkeepers. Ces nœuds « professionnels » répondent à certains critères de sélection comme avoir un équipement spécifique, une connexion internet dédiée ou un montant de GAS mis en caution.
Ainsi :
- La vitesse théorique de NEO est de 10 000 tps. Celle de Bitcoin est de 7 tps et celle d’Ethereum de 30 tps.
- La vitesse pratique de NEO est de 1 000 tps. Celle d’Ethereum tourne actuellement autour de 15 tps et celle de Bitcoin de 3 tps.
- Pour comparer avec des acteurs financiers traditionnels, VISA est à 1 700 tps avec des pics à 4 000 tps, et Paypal une vitesse moyenne de 115 tps.
Un système plus centralisé ?
Le prix à payer pour bénéficier d’une vitesse transaction élevée est une décentralisation moindre. Cela pousse certains à qualifier NEO de « Blockchain décentralisée centralisée ». NEO a fait le choix d’une « décentralisation future ». Cette stratégie consiste à lancer la plateforme sous une forme plutôt centralisée dans un premier temps et seulement une fois que tout fonctionne, alors commencera la phase de décentralisation.
Il faut aussi noter la différence entre la décentralisation et la distribution du réseau :
- la distribution des nœuds concerne COMBIEN de nœuds ;
- le niveau de décentralisation concerne QUI contrôle ces nœuds.
Au moment de la rédaction de cet article, même si le Conseil de NEO a mis en place des mesures pour améliorer la distribution du réseau, il reste peu distribué avec seulement une dizaine de nœuds dont la majorité est contrôlée par le Conseil. Bitcoin possède plus de 30 000 nœuds, cependant son réseau reste relativement peu décentralisé avec les 4 plus grosses pools de mineurs (pour la plupart chinoises) contrôlant environ 58% du réseau.
Les différents actifs sur la blockchain de NEO
Il y a deux types « d’actifs »dans l’écosystème NEO qui donnent une nouvelle fois l’occasion de comprendre la logique « financière » ou « entreprise » de NEO : NEO et GAS.
- Le NEO, qui est assimilé à un titre de propriété.
- Le GAS, qui est le « carburant » nécessaire pour réaliser les transactions sur la blockchain.
Ces deux jetons sont limités en quantité à 100 millions chacun.
Le jeton « NEO »
Un NEO est un titre de propriété sur la plateforme NEO. Les détenteurs de NEO possèdent un droit à des dividendes – reversés sous la forme de GAS – et un droit de vote pour l’élection des nœuds de comptabilité. Les NEO n’ont pas pour objectif d’être utilisés dans les transactions.
50% des NEO ont été vendu lors des différentes phases de l’ICO ou distribué aux premiers investisseurs. Le reste est contrôlé par le Conseil de NEO qui les utilise pour soutenir des projets dont le but est de développer l’écosystème sur le long terme.
Les jetons NEO étant fait à l’image d’une action, ils ne sont pas divisibles. Des fractions de NEO peuvent être échangés sur les plateformes d’échange mais il n’est possible d’envoyer qu’un nombre entier de NEO sur un portefeuille. Si vous essayez de sortir un nombre de NEO contenant des décimales de la plateforme d’échange, le nombre de NEO sera arrondi au nombre inférieur le plus proche.
Faites attentions aux frais de transactions pris par les plateformes ! Exemple : · Vous achetez 10 NEO sur Bittrex · Frais de transactions : 0,35 NEO · Montant à transférer sur le portefeuille : 10 – 0,35 = 9,65 NEO · Montant reçu sur votre portefeuille : 9 NEO · 0,65 NEO ont été perdu avec l’arrondi Remarque : Binance ne prélève aucun frais de retraits pour NEO ! 😉 |
Le jeton « GAS »
Les GAS sont utilisés pour payer toutes les opérations se produisant sur le réseau NEO. Par exemple, lorsqu’une entreprise opère sur la blockchain NEO elle paie en GAS. Toute personne qui possède des NEO se voit reverser des GAS en fonction du nombre de transactions qui ont lieu sur le réseau.
La seule condition est de contrôler la clé privée de son portefeuille. Cela veut dire que si vous gardez vos NEO sur un échange, vous ne recevrez pas vos GAS (à l’exception de Binance). Vous pouvez vous référer à ce tutoriel pour stocker vos NEO sur votre ledger et ainsi percevoir vos dividendes en GAS.
Quel est l’intérêt d’avoir deux jetons ?
Maintenir les frais de transaction bas
Les bookkeepers sont chargés de sécuriser le réseau. Ils sont récompensés par les frais de transaction, donc du GAS. Séparer NEO et GAS a pour avantage notamment de pousser les bookkeepers à proposer des frais de transactions bas.
Comme le mentionne Malcolm Lerider, responsable de la R&D chez NEO :
« Frais de transactions bas
= + d’utilisateurs
= + d’actifs enregistrés
= + de de GAS pour les détenteurs de NEO »
Les bookkeepers étant élus par les détenteurs de NEO, ceux-ci ont aussi le pouvoir de voter pour retirer ce statut. Ces détenteurs de NEO perçoivent des GAS en fonction du volume de transactions ayant lieu sur la blockchain. Ils ont donc tout intérêt à ce que les frais soient bas pour favoriser une adoption massive et faire en sorte qu’il y ait le maximum de transactions possible. Ils vont élire en conséquence les délégués qui « facturent » les frais de transactions les moins élevés.
Pas besoin de minage
Le fait de recevoir passivement des GAS en dividendes en possédant des NEO retire le besoin de miner et donc de consommer des grosses quantités d’électricité. Les GAS sont collectés par les bookkeepers et peuvent être réclamés très facilement en utilisant la fonction « réclamer » présente dans les portefeuilles NEO tels que le NEON Wallet. Cette fonction permet aussi d’alléger le trafic sur le réseau car il n’y a pas besoin de calculer et d’envoyer les GAS à chaque bloc, seulement lorsqu’ils sont réclamés.
Ces avantages ne seraient pas possibles sans la séparation en deux jetons et constituent un avantage conséquent de NEO sur la concurrence.
Autres caractéristiques de la blockchain de NEO
Facilité de programmation
Ce qui va déterminer l’adoption future d’une plateforme repose en grande partie sur le nombre de développeurs qu’elle arrive à attirer. Certaines plateformes requièrent d’apprendre un nouveau langage comme Ethereum avec Solidity. Pour faciliter son adoption, NEO supporte actuellement 5 langages de programmation et compte en ajouter 5 supplémentaires à l’avenir pour couvrir tous les langages les plus répandus :
- C
- C++
- C#
- Python
- Go
- JavaScript/TypeScript
- Java
- .Net
- Visual Basic
- JSON-RPC
Exécution des contrats intelligents
Les contrats intelligents (smartcontract) utilisent des machines virtuelles (VM – Virtual Machine). Ces VM tournent sur les machines des bookkeepers et fournissent l’environnement nécessaire à l’exécution des smartcontracts.
Par rapport à la concurrence, la NEO Virtual Machine (NEO VM) a une fonction supplémentaire qui permet d’optimiser le code du contrat intelligent avant de l’exécuter, augmentant son efficacité. Cela permet l’exécution de contrats intelligents complexes sur la blockchain NEO de façon efficace et rapide.
Résistance aux ordinateurs quantiques
Grâce à NeoQS (NEO Quantum Safe) la blockchain NEO peut résister aux ordinateurs quantiques.
Conclusion : NEO, une blockchain pour la crypto-économie
Grâce à ses caractéristiques techniques, NEO prend de plus en plus d’ampleurs et commence à devenir une plateforme de choix pour les projets souhaitant faire leur ICO. A ce jour, une petite dizaine de projets ont déjà réalisé une ICO sur NEO parmi lesquels nous pouvons citer Red Pulse (RPX), Deep Brain Chain (DBC), Qlink (QLC) ou THEKEY (TKY). Plus d’une dizaine d’autres sont prévues dans les mois à venir et ce n’est que le début.
Da Hongfei l’a répété lors la DevCon en Janvier : NEO a de grandes ambitions. Leur objectif est de devenir la plateforme principale pour les contrats intelligents dans les 5 ans à venir. Ethereum étant déjà établi comme LA plateforme de référence pour les contrats intelligents, surtout en occident, prendre sa place ne sera pas une mince affaire. Personnellement, je pense qu’il y a de la place pour NEO sur le marché, particulièrement en Asie. Leur proximité avec le gouvernement chinois les place dans une excellente position pour prendre le leadership sur ce marché de 1,4 milliards d’habitants lorsque le gouvernement aura décidé d’ouvrir le marché.
La suite est de la pure spéculation de ma part. J’ai du mal à imaginer cependant que dans le premier pays pour la Fintech au monde, avec une adoption massive de la technologie largement supérieure à ce que nous pouvons voir en Europe, le gouvernement décide de passer à côté de la révolution blockchain. Malgré le ban des ICO et des plateformes d’échanges, des signes favorables apparaissent comme la publication d’un plan quinquennal pour la blockchain. Il est beaucoup plus probable que le gouvernement soit en train de réfléchir à la meilleure façon de contrôler cette nouvelle technologie. Ce ban est provisoire, le temps de mettre en place le cadre législatif nécessaire.
Pour résumer, NEO est une plateforme qui a un objectif clair dès sa création : la mise en place d’une économie intelligente en intégrant l’économie existante à la blockchain. Le Conseil de NEO met tous les outils en place pour atteindre ce but, notamment dans sa volonté à coopérer avec les gouvernements. NEO n’a pas pour ambition de changer complètement le monde. Sa mission est plus simple mais c’est peut-être ce dont nous avons besoin maintenant : faire le premier pas vers une adoption massive de la blockchain.
Cet article est la suite du premier article publié sur NEO : NEO : vers une économie intelligente ? (1/3). N’hésitez pas à poser vos questions dans les commentaires et je prendrai soin d’y répondre. En attendant, vous pouvez également lire le dernoer article de cette série : NEO : un écosystème complet grâce à Ontology (3/3)