Ethereum vs. Bitcoin: les différences

 

Bitcoin et Ethereum sont des plateforme open source qui ont quatre points communs: un criptomonnaie sous-jacente, une blockchain intrinsèque, un mécanisme de consensus décentralisé basé sur un preuve de calcul, et de mineurs qui soutiennent le réseau. A première vue ils devraient être semblables mais en creusant un peu plus, la réalité révèle que Bitcoin et Ethereum ont plus de différences que de similarités.

1. la blockchain Ethereum accepte un nouveau bloc tout les 12 secondes comparée au Bitcoin qui demande 10 minutes. Cet aspect, permis par l’utilisation du protocole Ghost  (Greedy Heaviest Observed Subtree), donne des temps de transaction plus rapides. 

eth-btc

2. le modèle de création et livraison de nouvelle monnaie (bitcoin dans un cas, ether dans l’autre) n’est pas le même:  pour le Bitcoin la récompense pour avoir cassé un nouveau bloc est divisé par deux environ tous les 4 ans, alors que Ethereum délivre le même montant de éther de manière régulière chaque année et à l’infini.

L’éther est émis par blocs de 5 ETH tout les 12 secondes. Le montant émis par an reste constant à 15.6 millions d’unités d’éther.

3. La calcul du coût de transaction n’est pas le même: dans Ethereum il dépend de la complexité  d’une transaction et de l’utilisation qu’elle fait des ressources machine (cycles de la machine, largeur de bande, quantité de stockage…) Les transactions bitcoin sont standard et toutes un clone égale l’une avec l’autre. Le cout de transaction est discrétise dans Ethereum en unités de ether appellées gaz.

Operation name Gas Cost Function

step 1 Default amount of gas to pay for an execution cycle.
stop  0 Nothing paid for the SUICIDE operation.
sha3  20  Paid for a SHA3 operation.
sload  20  Paid for a SLOAD operation.
sstore  100  Paid for a normal SSTORE operation (doubled or waived sometimes).
balance  20  Paid for a BALANCE operation
create  100  Paid for a CREATE operation
call  20  Paid for a CALL operation.
memory  1 Paid for every additional word when expanding memory
txdata  Paid for every byte of data or code for a transaction
transaction  500  Paid for every transaction

 

4. Ethereum a son propre code interne qui est un vai langage de programmation Turing complet. Cela signifie qu’il n’a pas de limitations théoriques: si on a assez de puissance de calcul et assez de temps tout peut être calculé dans Ethereum. Bitcoin n’a pas cette puissance et cette flexibilité puisque il se base sur un langage de scripts très limité, conçu pour effectuer des échanges de monnaie. Cela implique que:

Le langage n’est pas Turing-complet. La catégorie principale qui manque dans les scripts bitcoin ce sont  les boucles. Le protocole BTC lesa a écartés pour éviter des boucles infinies pendant la vérification de transaction. Théoriquement c’est un obstacle surmontable puisque n’importe quelle boucle peut être simulée en répétant simplement le code sous-jacent plusieurs fois avec un IF dans la déclaration, mais cela donne des scénarios très inefficaces.
Value-blindness – les scripts bitcoin ne fournissent pas un contrôle fin des montants qui peuvent être retirés. Les opérations complèxes restent possibles mais au prix de d’avoir beaucoup d’UTXO  (Unspent Transaction Output ) chacun s’occupant d’une soutache du problème globale.
Manque d’état – les scripts bitcoin sont binaires: il peuvent être dépensé ou non dépensé. Point.  Il n’y a pas de place pour des contrats multi-étage ou des scénarios avec des états internes. Ceci rend difficile proposer des offres qui se déroulent en plusieurs deux étapes. Ainsi les UTXO donnent uniquement des contrats simples. L’état binaire combiné avec la value-blindness signifie aussi qu’une autre fonctionnalité importante est impossible: mettre des limites aux retraits.
Blockchain-blindness – UTXO est aveugle aux données sous-jacents de la blockchain comme les ID, l’horodatage et le hash des blocs précédents. Ceci limite sévèrement les applications dans le jeux et plusieurs autres catégories, en privant la langue scripting de variables aléatoires.

5. Ethereum a été financée par  crowd-funding, est bâti dans le temps (encore maintenant) et son avancement est publique. Bitcoin est sorti soudainement au point que les premiers mineurs possèdent (vraisemblablement encore aujourd’hui) la majeure partie des pièces qui seront jamais extraites.

6. Le fait que Ethereum utilise le protocole Ghost  décourage le mining par pool centralisés parce qu’il n’y a aucun avantage à s’associer en termes de probabilité de gain lors de l’émission de nouveaux blocs.

Un bloc orphelin (ou stale bloc) est un bloc qui n’est pas retenu lorsque deux noeuds trouvent la solution en même temps, c’est-à-dire un bloc qui a été propagé dans le réseau, vérifié par d’autres noeuds comme étant correct et proposé pour l’insértion dans la blockchain, mais finalement rejeté puisque la chaîne plus longue dominante ne l’a pas intègré. Dans le Bitcoin, la probabilité de trouver un bloc en même temps est relativement bas, puisque l’émission de deux blocs est espacée de dix minutes. Les blockchains dites rapides  comme celle d’Ethereum ont des temps de bloc beaucoup plus court (12 secondes) et souffrent donc davantage du problème des stale blocs

Le protocole Ghost est une façon de pallier à ce problème et aussi de décourager la centralisation du mining  via l’association en pools. Plus grand est l’association moins souvent les acteurs associés auront une longueur d’avance sur les mineurs individuels.

7. Ethereum utilise l’algorithme de hash  Ethash qui dissuade l’utilisation d’ASICs et de CPUs tandis qu’il encourage le mining décentralisée par des GPU isolées. Ethash permet de satisfaire ces quatres propriétés: 

IO saturation : l’algorithme exploite presque toute la bande passante d’accès de mémoire disponible dans la GPU, une stratégie contre la réalisation de nouveaux ASIC dédiés produits  ad hoc pour Ethereum.
GPU friendliness : Tout est fait dans Ethereum pour rendre aussi facile que possible le mining avec GPU. 
Vérification rapide sur client léger: un client léger vérifie une étape de mining sous 0.01 secondes sur un PC en C et sous 0.1 secondes s’il utilise Python ou Javascript, avec 1 MB de mémoire.
Freinage du client léger: exécuter l’algorithme avec un client léger est beaucoup plus lent qu’avec un client complet, cela est requis pour que l’algorithme du client léger ne soit pas économiquement viable pour le mining, y compris via du matériel éventuellement dédié.
Mise en route rapide du client léger : un client léger est entièrement opérationnel et capable de vérifier des blocs en 40 secondes en Javascript.

8. La taille d’un bloc bitcoin est actuellement de 1MB ce qui limite le nombre de transaction possibles par second. La discussion est grande ouverte entre développeurs, mineurs et utilisateurs pour définir comment enlever cette contrainte. Techniquement Ethereum n’a pas de limites à la dimension d’un bloc: le système se recalibre de manière dynamique selon les règles imparties dans son design de base.

9. Bien que pour le moment Ethereum utilise un consensus de type proof-of-work  il est prévu que les livraisons futures adopteront une méthode moins dispendieux comme la  proof-of-stakeIl est démontré que le proof-of-stake est une technique de consensus efficace , fiable et surtout à la fois plus économique à calculer et en même temps plus difficile à attaquer.

10. Le fait que Ethereum intègre des langages spécifiques à sa plateforme permet d’avoir une réponse temps réel de l’activité transactionnelle de la base de données. Avec Bitcoin, il faut télécharger sa blockchain, analyser toutes les transactions et interroger la base des données pour pouvoir extraire des renseignements, tandis qu’avec de Ethereum il est possible d’émettre demandes spécifiques en temps réel sur n’importe quelle adresse de la blockchain.

Laisser un commentaire