#devoxxfr la blockchain en détail

Juste en introduction, un chiffre, actuellement, 1 bitcoin=470$

Donc chez Octo, ils croient que la blockchain va changer le monde … et moi aussi.

Donc Bitcoin (parce que c’est l’exemple canonique de la blockchain).
Bitcoin permet (mais on le sait déjà) de transférer de façon sûre des informations. Et ça, c’est grâce à des méthodes cryptographiques bien connues.
D’abord du hash, c’est rapide, c’est résistant à la collision, et c’est non réversible (bien pratique pour conserver la confidentialité de l’information hashée).
Ensuite, la signature électronique. elle est assymétrique, comme ça on peut envoyer la clé publique au monde entier, tout en étant toujours le seul à pouvoir signer un message.

Ensuite, il y a des structures de données qui vont bien.
Typiquement, la blochchain, qui consiste en fait à mettre dans le block (n) la signature du block (n-1). Ce qui fait qu’on ne peut modiifier à bas cout que le dernier block. Et puis le merkle tree (petite musique d’ambiance) .. Globalement, on crée des hashes à partir d’un arbre de hash, qui permet à partir d’un seul hash d’avoir l’état de validité de tout un paquet d’opération. L’intérêt est surtout de pouvoir valider une donnée rapidement et efficacement.

Du coup, bitcoin, c’est juste l’assemblage de toutes ces technologies pour ne pouvoir faire que les opérations suivantes

Transférer des bitcoins qu’on possède
Trouver des bitcoins (miner) et faire des transactions coinbase.

Donc les gens peuvent se transférer des bitcoins, qui passent par l’envoi de message signés par le hash de l’émetteur via le protocole gossip.

Bon, le truc compliqué, c’est quand on veut transférer des demi-bitcoins, parce qu’il faut faire une transaction vers le destinataire et vers soi-même avec le reste.

Et le truc encore plus compliqué, c’est d’éviter la double-dépense : envoyer la transaction à deux destinataires pour dépenser le même bitcoin en double. On l’évite justement grâce aux blocks et aux arbres de merkle : les transactions sont toutes enregistrées dans des blocks qui sont organisés, de façon interne, en arbres de merkle.

Alors du coup, après, pour faire pousser les blocks, il faut que les mineurs calculent de nouvelles valeurs de « nonce », qui garantit la valeur du hash. Et là, l’explication est un peu flou, mais c’est pas grave.

Passons maintenant à un problème typique des réseaux : supposons que deux nouveaux blocks apparaissent en même temps, avec des hash valides, mais des contenus de transaction différents. Et ça va être résolue simplement en considérant que, dans le cas d’un fork, la chaîne de blocks valide est toujours la plus longue. Et du coup, si on contrôle la moitié du réseau, on a d’une certaine manière la possibilité de réécrire l’histoire, en invalidant certaines transactions, ou faire du déni de service en empêchant une personne de voir ses transactions écrites.

Du coup, les mineurs ont quand même un rôle important, surtout qu’il sont rémunérés en bitcoin … à l’heure actuelle, trouver un nouveau nonce rapporte environ 7000 € en bitcoins !

Ca soulève certains enjeux. D’abord, la difficulté de miner augmente en fonction du nombre de mineurs … et comme il y a maintenant des cartes physiques dédiées, ça devient vraiment compliqué. Du coup, pour miner, actuellement, l’investissement minimum est de 70 000 €. Et pour posséder 51 % du réseau, il faut un investissement bien plus conséquent … Et la théorie des jeux indique que, dans ce cas, il vaut mieux s’équiper pour miner, ce qui permet de sécuriser le réseau de façon partagée. Même si les mineurs restent les mêmes. Ca se voit avec les pools de minage.

En bonus, si les pools de mineurs se regroupent, ils sont susceptibles de prendre le contrôle de l’écosystème bitcoin … mais si ils le faisaient, ils perdraient leur investissement actuel.

Dernier point : le nombre de bitcoins minables est défini. Et il semblerait que plus aucun bitcoin ne sera minable en 2140. Bon, à cette date, on sera mort. Mais surtout, les mineurs ne pourront plus gagner de l’argent en minant. En revanche, comme à cette date il y aura 17 milliards de bitcoins en circulation, les frais de transaction seront suffisants pour faire vivre les mineurs, qui se seront reconvertis.

A cause de certaines limitations, d’autres monnaies sont apparues : le litecoin (avec beaucoup moins de puissance de travail requis), le NXT (ou c’est carrément une loterie – mais une loterie franchement intéressante), et bitshare qui permet la délégation de proof of work.

Pour en revenir au bitcoin, on atteint déjà certaines limites : les transactions doivent attendre 10 minutes avant confirmation … enfin, dans le cas où tout va bien (c’est-à-dire si le block fait encore moins de 1 Mo). Dans les autres cas, on peut attendre plusieurs heures … pas pratique pour acheter la baguette.

Et maintenant, passons à Ethereum …

Ca n’est pas le successeur de bitcoin.
Ca n’est pas non plus le début du web 3.0 (le fameux web décentralisé).
Et ça n’est enfin pas le nouvel investissement avec revenu garanti.

En fait, c’est un ordinateur
Décentralisé s’appuyant sur la blockchain et sans maître
Infalsifiable grâce aux preuves de calcul.
Toujours disponible (du moins tant qu’il y a suffisamment de noeuds)
Accessible de partout, et par tout le monde.

Où toute action se paye. Et l’aspect économique va permettre de (dé)favoriser certaines actions
Qui produit des résultats cohérents … à terme, ce qui n’inclut pas des résultats valides à court terme.
Et enfin aussi rapide qu’un smartphone des années 90.

Comment est-on passé de bitcoin à ethereum ?
Grâce à une blockchain plus rapide, qui peut stocker des données, et des smart contracts turing complete (WTF ?!).

Donc pour ça, la taille des blocks est adaptable dynamiquement en fonction du contenu.
Et d’autre part, la chaîne de blocs qui est acceptée n’est as la plus longue, mais celle qui met en jeu les blocs du plus grand nombre de mineurs.

Les données dans la blockchain
En fait, chaque compte de la blockchain a un stockage de données et du code qui lui est associé.
Chaque compte ? ben oui, parce qu’on peut gérer un compte par utilisateur et par smart contract. Bon, le stockage, c’est du clé/valeur 256 bits => 256 bits, donc peu, mais les APIs permettent du stockage bien plus riche (sans doute via un hash). En bonus, c’est un stockage privé. Cela dit, ces données sont lisibles par tous les mineurs.

Du coup, à cause des limitations de débit (90kb/1és), il vaut mieux ne stocker que les hashs des données, plutôt que les données complètes

Les smart contracts.
Bon, là, c’est juste du code stocké dans la blockchain et capable d’agir dessus.

En bonus, l’exécution d’un tel programme est transactionnel.

Et enfin, les contrats peuvent se parler. Du coup, un contrat de prêt peut appeler un contrat de gestion de comptes.

Bon, il y a toutefois des limitations :
pas d’exécution déclenchée automatiquement parce que le code doit pouvoir être exécuté quelque soit l’hôte
pas d’accès direct aux données externes pour la même raison
et pas de temps d’exécution limitée parce que l’exécution d’un smart contract se paye

Les smart contracts se développent pour l’instant avec des langages dédiés (le Solidity équivalent au javascript, le Serpent équivalent au Python, et enfin le LLL analogue au Lisp).

Et enfin, une pause

On reprend avec une démo, basée sur ethereum et ethereum wallet, qui permet de voir facilement ce qu’il y a dans un compte.

A noter que l’exécution d’un contrat coûte de l’ethereum et du gaz, ce qui garantit qu’aucun contrat ne peut s’exécuter indéfiniment.

Bon, tout ça, ça induit plusieurs complexités

Chaque version d’un smart contract a une adresse différente. il faut donc trouver un moyen de garantir qu’on utilise la dernière version.
Exécuter un contrat à intervalles réguliers va nécessiter un smart contract particulier (comme ethereum alarm clock), qui agit comme un cron distribué (et rémunérant les exécuteurs en bitcoin).
Interagir entre contrats nécessite de connaître à la fois l’adresse et l’api de l’autre contrat. Il y a donc des mécanismes de service registry qui existent pour ça.
Obtenir des informations sur le monde extérieur passe par un oracle, qui peut être appelé en synchrone ou en assynchrone.

En conclusion, ces systèmes sont implémentés avec une vision libertaire du monde, qui vient de l’absence de régulation du web faite par les gouvernements depuis les années 2000. On en revient aux fameuses histoires de « code is law » et « software is eating the world ».

2 réflexions sur “#devoxxfr la blockchain en détail

  1. Pingback: #devoxxfr – blockchain as a trust machine | riduidel's wordpress

  2. Pingback: La blockchain … au chtijug ! | riduidel's wordpress

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s