Nous connaissons Ethereum comme une blockchain de deuxième génération, laquelle, du fait qu’elle est programmable par le biais de smart contracts, a engendré la création de nouvelles monnaies, d’application de la DeFi, de certificats d’identifications d’œuvres sous forme de NFT… etherscan.io est une fenêtre ouverte sur l’intégralité de cet écosystème multiforme. Toutes les activités intervenant ou intervenues sur la blockchain Ethereum peuvent être consultées dans le détail grâce à etherscan.io. Dans cette deuxième partie (NDLR: lire la première partie ici), nous allons examiner dans le détail ce qui se passe, du début à la fin, lorsque vous êtes à l’origine d’une transaction tel que le transfert de crypto-actifs de votre portefeuille à celui d’un autre. Ce faisant, le travail des validateurs et leur approche des transactions devrait devenir plus clair. Et oui… La consultation de etherscan.io amène réellement à mieux prendre la mesure de la révolution que représentent des blockchains telles que Ethereum.
Daniel Ichbiah
The Merge en septembre 2022 a consacré la transition de Ethereum d’un système à preuve de travail en un sytème à preuve d’enjeu (plus d’information sur The Merge ici). Depuis, alors qu’on nommait « mineurs » les responsables de la vérification d’une transaction, on les désigne à présent sous le nom de « validateur ».
Pourtant, le principe d’une blockchain telle que Ethereum n’a fondamentalement pas changé, et pour mieux le comprendre, il faut revenir aux sources. Imaginez que vous ayez envisagé de créer un système monétaire parallèle à celui des banques et totalement fiable, comment auriez-vous procédé ? Vous auriez mis au point un algorithme de validation des transactions qui garantisse leur authenticité. Et vous auriez dû concevoir l’équivalent d’un registre comptable répertoriant toutes ces transactions, conçu de façon telle qu’il soit impossible de le falsifier ou même de le mettre en doute. Nous le savons, ces principes ont présidé à la création du Bitcoin puis de Ethereum.
Dans le système classique, lorsque vous transférez des euros de votre compte en banque vers le compte d’un autre individu habitant en Suède, votre demande est d’abord inscrite sur l’ordinateur de votre banque. Elle est vérifiée par votre banquier – est ce que votre compte dispose de suffisamment d’euros pour permettre ce transfert, est-ce que le compte destinataire est valide, etc. Puis la somme d’argent est transférée vers l’ordinateur de la banque suédoise. Il arrive qu’une telle opération s’étale sur plusieurs jours.
Dans le cadre d’une blockchain comme Ethereum, c’est une multitude d’ordinateurs – ceux des validateurs – qui effectuent la vérification d’une transaction par le biais d’un calcul mettant en jeu la cryptologie. Au final, l’un de ces validateurs va inscrire une nouvelle information dans le registre commun à tous ces ordinateurs qu’est la blockchain Ethereum.
On désigne ce réseau décentralisé d’ordinateurs sous le nom de Ethereum Virtual Machine (EVM). La beauté de la chose, c’est que n’importe qui peut, à tout moment, entrer dans la boucle et participer à l’EVM. Et n’importe qui peut sortir de l’EVM sans que le système en soit le moins du monde impacté : à tout moment, la blockchain Ethereum continue d’être mis à jour. Et à la différence du monde des banques centrales, n’importe qui, depuis son ordinateur, peut prendre connaissance de la moindre transaction effectuée depuis la 1ère seconde d’Ethereum : le moindre transfert, le moindre smart contract jamais créé, la moindre monnaie dérivée, la moindre création d’un NFT suivi d’un potentiel achat…
Il pourrait sembler impossible d’embrasser une activité aussi titanesque depuis un simple site Web et pourtant, c’est ce qu’amène etherscan.io. Cette application nous ouvre à l’intégralité de la blockchain Ethereum tandis qu’elle est mise à jour en temps réel par toutes sortes de validateur en divers endroits du monde.
Au cours de la 1ère partie de cette introduction à etherscan.io, nous avons pu observer comment il est possible d’examiner dans le détail chaque élément de cette activité foisonnante. Dans ce 2ème article, nous allons suivre ce qui se passe lorsque vous êtes à l’origine d’une transaction sur la blockchain Ethereum. Ce processus peut être suivi pas à pas via etherscan.io. Vous devriez en tirer une compréhension affinée du travail des validateurs de cette blockchain.
1. La transaction peut-elle être traitée ?
Pour mémoire, une transaction est créée à chaque fois qu’un utilisateur la déclenche depuis son wallet, ce qui implique habituellement le transfert d’un certain montant vers un autre wallet (et donc une autre adresse).
Pourtant, avant qu’une transaction ne puisse être soumise à validation, il est nécessaire qu’elle soit perçue comme valide par votre wallet (Metamask, Coinbase Wallet, Trust Wallet…). Ainsi, vous devez bien évidemment disposer des fonds que vous souhaitez transférer, et parfois aussi de certaines permissions.
2. Création d’un hash pour la transaction
Chaque fois qu’une telle opération est jugée exécutable, la toute première action consiste à lui attribuer un identifiant de transaction, lequel sera visible dans etherscan.io dans la colonne Txn Hash.
La transaction en attente n’est pas inscrite sur la blockchain – ce qui constituerait un encombrement inutile – mais ajoutée à un pool de transactions en attente d’exécution. Ce pool de transaction en attente est appelé le mempool.
A partir de là, ladite transaction devient visible sous etherscan.io, le mempool étant accessible en tant que Pending Transaction.
3. Ajout de la transaction au pool des transactions
Nous pouvons observer le mempool / les transactions en attente sur etherscan.io, depuis le menu Blockchain / Pending transactions. Les hash des transactions apparaissent dans la 1ère colonne (Txn Hash).
Nous voyons ensuite apparaître une colonne appelée Nonce. Il concerne certaines transactions intervenant dans une séquence de transactions – ce qui pourrait être par exemple déclenché par un smart contract – et désigne leur numéro dans cette séquence.
Les colonnes suivantes indiquent l’heure, la limite de gas, le prix de gas, l’émetteur et le destinataire et le montant concerné.
Dans l’exemple ci-dessus, nous pouvons voir dans les colonnes From et To que plusieurs transactions ont été placées dans le mempool depuis quelques secondes.
Si nous cliquons sur l’identifiant d’une des transactions en attente (sous la colonne Txn Hash), nous avons accès à davantage de détails à son propos. Ce qui nous intéresse ici est son Status. Au départ, ce statut est égal à Pending (en attente).
Puisque la transaction est Pending, elle doit être sélectionnée par au moins un nœud de validation.
4. Plusieurs validateurs s’intéressent à la transaction.
Les validateurs ont pour habitude de consulter la mempool afin de choisir quelle transaction traiter à un moment donné. En fonction de cette liste de transactions en attente, chacun va normalement en sélectionner une, avec pour intention de l’intégrer à un bloc de transactions Ethereum. Ce processus de choix peut être effectué de manière automatique ou manuelle.
Par principe, les validateurs vont sélectionner les transactions proposant les prix de gas les plus élevés, puisque nous avons là leur rémunération.
5. Compétition entre les validateurs pour résoudre la transaction
Habituellement, plusieurs validateurs se retrouvent en compétition en vue de résoudre l’équation relative à l’énigme de type POS (proof-of-stake – preuve d’enjeu).
6. L’un des validateurs valide la transaction
Une fois qu’une solution a été trouvée par l’un des validateurs, sous etherscan.io, la transaction qui était en mode « Pending » a désormais le statut Success. Elle est intégrée à un bloc. Puis ce bloc lui-même est confirmé et peut être diffusé sur le réseau EVM. Nous avons également l’indication du n° de bloc dans lequel cette transaction a été inscrite.
Une telle transaction quitte le pool des Pending transactions et peut désormais être consultée depuis le menu Blockchain / View Txns. Elle fait désormais partie, de manière permanente de la blockchain Ethereum.
Si nous cliquons sur le n° de bloc indiqué, nous pouvons voir qu’il a fallu 12 secondes à builder0x69 pour valider cette validation. Le bloc ajouté à la blockchain comporte au total 157 transactions mais aussi 49 transactions liées à des smart contracts.
7. La récompense du validateur
Un peu plus bas sur la même page, nous pouvons voir quelle a été la rémunération du validateur.
Comme indiqué en face de la mention Block Reward, builder0x69 a recu un paiement de 0,04 ETH.
Quand une transaction n’aboutit pas ?
Les étapes de 4 à 6 n’aboutissent pas toujours à l’exécution d’une transaction.
En consultant les Pending Txns sur etherscan.io, vous devriez trouver des exemples tels que les suivants.
Dans la figure ci-dessus, nous avons l’exemple d’une transaction qui n’a pas été validée alors qu’elle a été lancée depuis 24 heures. Or, cette transaction concerne l’envoi de 0,004 ETH.
Si nous cliquons dans l’identifiant situé en face de From nous pouvons en apprendre davantage. La personne qui a initié cette transaction ne dispose que de 0,0047 ETH dans son wallet. Apparemment, cette somme n’est pas suffisante pour couvrir à la fois le montant à débourser et les fees que compte prendre le validateur de la transaction. Par conséquent, cette transaction tarde à passer l’étape initiale consistant à trouver un validateur qui veuille bien prendre en charge l’exécution de cette transaction.
Notons que celui qui est à l’origine de la transaction peut influer sur la limite de gas, afin d’obtenir un traitement plus rapide et qu’une telle option est habituellement proposée par son wallet.
Dans cet autre exemple, nous avons l’exemple d’une transaction en attente qui n’a pas été validée et qui porte la mention « Fail with error » (échec avec erreur). Plus bas, nous pouvons voir que la transaction a été « Reverted » – elle n’a pas été exécutée et le wallet a été restauré dans son état précédant la transaction.
Une transaction peut se retrouver en échec si le wallet ne dispose pas d’un solde suffisant pour régler le montant indiqué au moment de l’exécution de la transaction, si le gas disponible dans le wallet est insuffisant, si un souci dans un contrat est rencontré – ce qui est le cas ici, etc.
L’approche des validateurs
Ces quelques exemples pris sur etherscan.io aident à mieux comprendre quelle est l’approche des validateurs. Fort naturellement, ceux-ci cherchent à maximiser le montant de la compensation perçue pour une quantité donnée de travail fournie.
Lorsqu’ils choisissent des transactions à intégrer dans un bloc, les validateurs tendent à sélectionner :
- Les transactions avec le niveau le plus élevé de prix par unité de gas.
- Autant de transactions que possibles, en conformité avec la limite de gas totale imposée par Ethereum au niveau d’un bloc
Etant donné que Ethereum est un écosystème qui gère des monnaies, des applications de la DeFi, des NFTs, des smart contracts, le nombre de transactions en attente à un moment donné est considérable. De fait, si vous rafraîchissez la page des Pending Transactions sous etherscan.io, vous pouvez constater que de nouvelles transactions à traiter apparaissent à chaque fois.
Déterminer le prix du gas à un moment donné
Plus le gas est élevé et plus les validateurs auront envie de sélectionner les transactions correspondantes. Et de fait, un gas élevé améliore les chances qu’une transaction soit sélectionnée, confirmée et exécutée.
Etherscan.io nous fournit un outil pour savoir ce qu’il en est à un moment donné. Il est accessible via le menu : More, puis dans la section Explore : Gas Tracker.
Comme nous le voyons sur cette figure, au moment où cette capture a été faite le prix de gas allait de 27 gwei pour un traitement lent à 28 gwei pour un traitement rapide. La commission payée pour une transaction (en ETH) est égale à ce prix de gas choisi, multiplié par la quantité de gas utilisée par cette transaction. Un peu plus bas sur la gauche, nous voyons quelques exemples de gas moyen sur : 2,76 $ pour une transaction sur OpenSea, 7,12 $ sur Uniswap. Ce prix de gas total qu’il faudra débourser est habituellement visible depuis la plateforme où l’on effectue une transaction ou depuis son wallet.
Nous avons vu ici comment etherscan.io nous permettait de suivre l’épopée d’une transaction donnée jusqu’à son exécution réussie ou son rejet.