« Ethereum ne sert à rien »

… mais Vitalik Buterin n’est pas de cet avis.

Ce n’est pas moi qui le dit.
Je ne le pense pas, d’ailleurs.
Enfin, ni plus ni moins que Bitcoin.

Le jour où on m’aura démontré que ces trucs ne sont pas des systèmes de Ponzi améliorés [w] doublés d’un grave problème de gouvernance, alors oui, je commencerai à croire à ces « monnaies ». Par contre, la blockchain en tant que techno (i.e. base de données), je trouve ça intéressant.

Au sujet, donc :

Turing completeness is pointless on a blockchain in any case. So no worries, Ethereum’s long term value is still ~0. :)
— (supposedly) Gregory Maxwell, Bitcoin Core developer

La blockchain attise les passions. Les investisseurs ont trouvé un nouveau jouet ; les développeurs, une nouvelle techno enthousiasmante ; les commentateurs, une nouvelle tendance à suivre. Le feuilleton devient encore plus passionnant si on l’agrémente d’une petite guerre Bitcoin vs Ethereum, qui se joue en cette mi-2017 à hauteur de dizaines de millions de dollars (Bancor ICO), avec des annonces de financements mirobolantes. Pas vraiment des introductions en bourse, IPO, d’ailleurs, mais des ICO pour initial coin offering.

Bref. Ce sujet échauffe les esprits, et beaucoup y voient une révolution qui va changer le monde, la finance, la banque. Ou rien.

Comprendre ce qui se trame derrière les mots d’un core dev d’une cryptomonnaie n’est pas une tache d’une simplicité absolue

Bruno [LI] m’a donné l’idée d’essayer de traduire en langage humain les réponses de Vitalik Buterin aux critiques qui se sont récemment abattus sur Ethereum. Les compétences me manquent pour pouvoir totalement appréhender les questions soulevées par Ethereum et les réponses du créateur de cette cryptomonnaie, pour le moins techniques et lapidaires, n’arrangent rien à l’affaire.

Ce billet n’est donc qu’une modeste tentative de réponse à cet exercice compliqué proposé par la communauté blockchain. N’hésitez pas à me reprendre si je délire.

Liens: discussion originale, mise en forme ici.


Question. Turing completeness is bad! You need decidability for safety!
Answer. We don’t agree, but if you want decidability here’s a decidable HLL on top of ethereum that gives you that.

Turing completeness : se dit d’un langage de programmation qui peut tout exprimer, comme le sont la quasi totalité des langages dominants. Tous les langages sérieux ne sont Turing-complet, cela dit ; et BrainFuck est Turing-complet. Donc bon.

Decidability : notion de logique liée à Gödel et à son théorème d’incomplétude ; dans ce contexte, je suppose qu’il parle de “programme décidable”, c’est à dire de programme dont on peu, sans l’exécuter, dire s’il va fournir une réponse. Au contraire, un programme peut ne pas s’arrêter, entrer dans une boucle infinie par exemple : il sera dit indécidable.

Un théorème prouvé par Alan Turing lui-même démontre qu’un langage Turing-complet n’est pas décidable [pdf]. Autrement dit, on ne peut pas a priori savoir si un programme donné s’arrêtera sans l’exécuter.

Traduction
VB semble revendiquer la nécessité d’avoir un langage de programmation « complet », qui peut tout exprimer, et le préfère à la notion de décidabilité. Il accepte-t-on la possibilité d’introduire des programmes tournant en rond dans la blockchain.


Question. But we don’t need Turing completeness because Post’s theorem!
Answer. Sure, but it’s not about turing completeness, you’re missing the whole point of why a richly stateful model like ethereum can do things that a UTXO model can’t. Moeser-Eyal-Sirer wallets to start off. Then we can talk about advanced state channel constructions like this, ENS auctions, and so on and so forth.

Le théorème de Post est le genre de truc qui peut passionne les gens qui ont un doctorat en logique ou informatique fondamentale. Mon frère [LI] a un doctorat de maths, il a donc pris le temps de m’écrire ces quelques mots:

« Post a travaillé sur une hiérarchie de richesse (=pouvoir de calculabilité) des langages de programmation. Je crois que le gars parle de ce qu’il est possible de faire autour de la blockchain grâce à la richesse d’Ethereum ».

UTXO: « unspent transaction output », cf w. Ca semble être une base de données permettant de vérifier si une transaction à valider est reliée à des transactions validées.

ENS : Ethereum name services [w, w], qui est une façon d’accéder aux données de la blockchain d’Eth à partir d’adresses simples type « toto.eth ». Il y a un système d’enchères sur l’achat des adresses, si je comprends bien. Ce qui me parait personnellement louche.

Traduction
Ca va chercher trop loin pour moi dans la plomberie interne d’Ethereum.

Je suppose, d’ailleurs, que quiconque n’a pas une réelle connaissance technique de l’implémentation d’Ethereum ne comprendra vraisemblablement pas ce point. Soit, disons, moins d’une centaine de personne au monde … ?


Question. We can do smart contracts too!
Answer. Sure, if they’re either (i) trivial, or (ii) reliant on a multisig of known intermediaries to actually execute then you can, but not natively.

Smart contracts : très schématiquement, ce sont des bouts de code inclus dans des transactions Ethereum/Bitcoin permettant de programmer/planifier une exécution future. Une des (la?) fonctionnalité(s) permettant de lier du contenu externe à la blockchain, qui fait couler beaucoup d’encre et attise tellement de passions. Le buzz techno des dernières années, sans trop de doutes.
multisig(nature) : signature d’une transaction par différents acteurs

Traduction
VB dit que les smart contracts d’Ethereum sont inclus par construction dans le protocole, et sont donc plus simple à utiliser qu’ailleurs.


Question. Smart contracts are useless!
Answer. ENS auctions have users. Contracts for token sales that implement logic like funding caps have users. Multisig wallets with single-sig daily withdrawal limits have users, and have been a substantial convenience boon for the ethereum foundation itself.

Traduction
 Il y a déjà des utilisateurs de smart contracts.


Question. Ethereum can’t scale!
Answer. Raise the gas limit by 40%

Le Gas est une mesure de l’effort de calcul qu’un acteur doit fournir pour agir sur la blockchain.
 Gas = execution fee for every operation made on ethereum
 Fee = Gas Amount Spent * Gas Price

Gas limit : c’est une limite supérieure à l’effort nécessaire pour construire un block.

Scalability : une des grosses limitations actuelles de Bitcoin est la limite dure sur la taille des blocs de transactions, qui empêche de dépasser ~10 transactions par seconde. Un souci, quand on sait que Visa est à deux ordres de grandeurs au dessus. C’est un point très important.

Traduction
VB affirme qu’Ethereum peut supporter l’accroissement du volume instantané de transactions.

En théorie. En pratique, je ne sais pas si on a dépassé quelques dizaines de transactions par seconde.


Question. EIUC: No, we mean technical capacity! Like that chart that shows geth nodes take up 150 GB.
Answer. First of all, that 150 GB is only true if you full-sync; fast syncing gives you 15 GB. Second, this can be handled with state tree pruning, and if you want it now the Parity client already has it, and takes up only ~10 GB. And by the way, we have a really nice light client that you can run instead of a full node and it has basically the same functionality and thanks to Merkle Patricia state trees it can even directly verify the state of any account without any need for interactive protocols or centralization.

EIUC : nom de la discussion Reddit initiale « Ethereum is useless » (crowd). 
Faire tourner un nœud complet en synchronisation totale semble prendre déjà pas mal de place (150GB), ce qui serait problématique pour une adoption massive du protocole décentralisé.

Traduction :
 VB parle cuisine et chiffres et dit que tout est prévu pour ne pas avoir à récupérer toute la base pour pouvoir faire tourner un nœud Ethereum.


Question. But it’s not parallelizable!
Answer. cf w et w

Traduction:
Si.


Question. But it’s not cacheable!
Answer. The version of EIP 648 with full-length address prefixes. And by the way, cacheability only helps reduce stale rates, not initial sync times, and we have an alternative technique to mitigate the practical impact of stale rates, namely the uncle mechanism. And when full proof of stake hits, it’ll become okay to have block processing times that are much longer, as long as they can reliably stay under 100% of the block time, and in that case cacheability isn’t really all that beneficial in the first place.

… Ça parle perfs, et tout semble sous contrôle.


Question. Proof of stake is fundamentally flawed! Nothing at stake! Stake grinding!
Answer. Cf w.

Proof-of-stake : algorithme de consensus, primordial pour assurer la cohérence d’une base de données décentralisée. C’est le pendant du proof-of-work de Bitcoin, le truc qui permet de miner des bitcoin en polluant inutilement notre belle planète, et c’est un sujet d’un absolue criticité. La solution technique version Eth est encore en débat, si j’ai bien compris.

Traduction
 Cf FAQ. Si si, allez la lire, ça change du pipo LinkedIn sur le sujet.

Et si vous ne comprenez pas, dîtes-vous que votre cheminement dans le monde joyeux et sympathique des cryptomonnaie est mal barré, car cette page est écrite en anglais, et pas en Java. Êtes-vous vraiment prêt à mettre de l’argent dans un truc que vous ne comprenez pas ? Moi non.


Question. It’s still not scalable enough!
Answer. Cf w. And so on and so forth.

Cf au dessus. Quand c’est flou, il y a un loup ?

La tenue de la montée en charge (=scalability) est vraiment un point fondamental pour une adoption massive.


Question. But Bitcoin can do vaults with some fancy thing we’re building in Elements Alpha!
Answer. Sure, but now you’re the one talking up hypothetical features that may or may not ever get implemented due to politics to counter stuff in Ethereum that works now, and by the way I looked at the code for doing that even with the feature and it’s quite ugly. I’d rather have a clean, simple 15-line Solidity script with startWithdrawal, finalizeWithdrawal and cancelWithdrawal that anyone can understand and audit.

Point sur la différence avec Bitcoin, le concurrent à battre. Réponse de bon sens et pseudo-technique de VB, qui parle de qualité et lisibilité du code. Ce point est important pour le debuggage et la pérennité.


Question. Smart contracts are not for noobs, noobs will inevitably screw them up. Smart contract programming should only be done by teh elite experts with mad computer science skills, and such experts don’t need that kind of user-friendliness.
Answer. Even if it is true that only teh elite experts should be coding contracts, (i) a model that’s noob friendly is still superior as it’ll make it easier for experts to understand too, and (ii) noob-friendliness is still crucial because it greatly expands the set of people who can audit a given contract and make sure it’s doing what it says it’s doing.

Noobs : les non core-dev d’Ethereum

Cette question est, comme souvent, importante. Qui peut écrire de tels contrats ? Faudra-t-il être développeur confirmé, expert dans ce langage (<0.1% de la population) ou l’accès sera-t-il plus simple ? La contrepartie est la possibilité d’écrire des contrats de qualité très médiocre et donc de bordeliser le tout.
 
Traduction
En bon anarchiste russe, VB pousse pour que l’écriture des contrats soit accessible à la populace. Même les investisseurs … ?


Question. Something something infinite rapidly growing supply.
Answer. Casper. Transaction fee reclaiming.

Je ne comprends pas la question. Ni la réponse.
Casper est l’algorithme (en test) qui assure la proof-of-stake.


Question. But proof of stake is fundamentally insecure!
Answer. We already linked the FAQ that refutes all of that…

La proof-of-stake ne semble vraiment pas convenir à tout le monde, pour des raisons assez techniques qui, j’avoue, m’échappent encore un peu.


Question. You’re centralized!
Answer. Starts publishing core dev meetings so people can see what the decision-making process looks like. Spoiler: no, it’s not centralized.

Comme Bitcoin, Ethereum a libéré son code source. Les questions du développement du protocole et le processus de prise de décisions sont un peu obscures pour moi. VB affirme qu’il n’est pas un tyran. Je n’en ai aucune idée.


De l’importance d’être serein.

Critiquez-moi. Dites-moi où je me trompe. Si vous avez des articles plus clair et précis que le mien, mais abordables, je prends … :-)


Et ton avis, mec ?

Je n’avais initialement pas trop d’avis sur la question. Autant il me parait assez clair qu’en l’état, Bitcoin ne pourra pas dépasser le prototype technique intéressant, ne serait que pour des questions de perfs, autant Ethereum me parait beaucoup mieux pensé. Normal, puisqu’il vient après Bitcoin ? Peut-être.

Trois points me dérangent, pour Bitcoin et Ethereum.

La gouvernance. Des groupes de dev, plus ou moins géniaux, ont pensé ces protocoles. Bravo, sincèrement. Mais que sait-on de leurs motivations ? Sont-ils taillés pour prendre des décisions d’impact mondial, si ces protocoles sont massivement adoptés ? Le point que Bitcoin et Ethereum adresse est celui de la confiance: ils ont bâti des protocoles basés sur la construction d’un réseau de confiance entre acteurs à qui on ne fait a priori aucune confiance. C’est là un tour de force. Est-ce pertinent de ré-introduire une défiance dans la conception même du système ?

La barrière technique. Ou devrais-je dire, le mur, la falaise. Auditer ce code source, même libre, sera complexe. Réussir à le faire accepter par des juristes le sera encore plus, puisqu’il leur faudra pouvoir comprendre les algorithmes, les détails de l’implémentation (cf theDAO) et les maths.

Le buzz. Et les millions de $ ! C’est fâcheux.

Et vous ?