Le premier outil qui recensa les transactions sur la blockchain Bitcoin est ce que l'on appelle aujourd'hui un explorer. Chaque transaction sur l'explorer est détaillée de manière précise et unique. Il est possible de voir l'heure de chaque transaction, son bloc, les frais utilisés, etc. On peut également consulter chaque portefeuille et contrat. En somme, cet outil offre de la précision, mais pas de vision globale.
La plupart des explorers se ressemblent, donc une fois que vous maîtrisez celui d'Ethereum, vous maîtriserez naturellement celui de Solana et les autres blockchains.
La barre de recherche est le meilleur outils d’un explorer, vous pouvez grâce à elle rechercher les ENS (nom.eth), les noms de tokens, les numéros de blocs, puis tout ce qui commence par 0x : hash de transactions, contrats, et adresses.

Il y a également les dernières transactions et derniers blocs qui sont mise en page d’accueil, ainsi que quelques données globales.
Comment peut-il nous servir ? Par exemple, a la fin de la lecture du whitepaper du protocol GMX, un protocol qui permet de trader plusieurs cryptomonnaies avec levier on-chain. Il est renseigné des adresses de contrat que GMX utilise :

Pour vérifier les informations données par GMX dans son whitepaper, rentrons ces adresses dans l’explorer. Ici, Arbitrum est la blockchain utilisée, son explorer est trés similaire a Ethereum. On prend l’adresse du token GMX (la première) et on la rentre dans la barre de recherche de arbiscan.io
Voici le résultat :

Comme c’est l’adresse d’un contrat et non d’un wallet, on retrouve dans l’ordre les informations telle que “Contrat”, “Contract Creator”, “Token Tracker” et “Contract”.
Ce qui signifie :
1/ “Contract” : C’est la nature de la page qu’on consulte, comme un titre, l’explorer nous informe simplement qu’il s’agit d’un contrat.
2/ “Contract Creator” : Le créateur du contrat et la transaction de sa création.
3/ “Token Tracker” : Comme ce contract est celui d’un token, arbiscan nous ajoute la page du token a disposition. Chaque contrat n’est pas forcément relié a un token, mais un token est forcément relié a un contrat. Pour les adresses de tokens il y aura donc 2 page au sein de l’explorer : 1 - https://arbiscan.io/token/0xfc5A… en tant que token et 2- https://arbiscan.io/address/0xfc5A… en tant qu’adresse de contrat.
4/ “Contract” : L’onglet pour lire le code Solidity du token.
Regardons maintenant une Page “Token”, je repasse sur la blockchain Ethereum avec l’explorer etherscan, le fonctionnement est toujours le même.
Faisons une simple recherche dans la barre de recherche de l’explorer d’Ethereum avec le nom d’un token connu, prenons par exemple “CRV”, le token de gouvernance du protocol Curve basé sur Ethereum.

Le token apparait en première position, en cliquant dessus on tombe sur sa page :

Les informations qu’on retrouve sont dans l’ordre :
“Token” : C’est la nature de la page qu’on consulte, comme un titre, l’explorer nous informe simplement qu’il s’agit d’un token.
“Price”: Le prix du token.
“Fully Diluted Market Cap” : La capitalisation du token si tout les jetons CRV étaient émis. Attention, Etherscan et les explorers ne sont pas une source de fiabilité pour cette information.
“Max Total Supply” : Le nombre maximum de jetons CRV qui peut exister, ici aussi, ne vous fiez pas à l’explorer qui peut ne pas prendre en compte certains paramètres important.
“Holders + Nombre” : Le nombre de wallet possédant des tokens CRV.
“Contract” : Comme nous l’avons vu précédèment avec GMX. Puisque il s’agit d’un token, une page Contract est forcément reliée a la page du token.
“Decimals” : Le nombre de decimales du token CRV.
“Official site et Social Profiles” : Les réseaux sociaux et le site officiel du protocol. Ils sont indiqués pour Curve mais ça manquera sur la plupart des tokens moins “connus”.
“Transfer” : Toutes les transactions impliquant un mouvement des tokens CRV, entre des wallets ou des contracts (achat, vente, staking, ajout de liquiditée, transfer ect…)
“Holders” : Une liste des 1000 wallets possédant le plus de tokens CRV. Cette liste nous permettra de repéré les plus gros détenteur du token et d’en tirer des conclusions.
“Dex Trades” : Tout les Achats et Ventes du token CRV sur des exchanges décentralisés tel que Uniswap. Cet onglet permet d’afficher seulement les opérations d’achats/ventes, les autres opérations tel que le staking, les transfer de wallet à wallet, les ajouts de liquidité ect… sont masquées.
“Contract” : Lire le contrat solidity du token, on retrouve le même contrat que sur la page “Contract” de la même adresse.
Maintenant, cliquons au hasard sur une transaction d’achat/vente basique de l’onglet “Transfer”
Celle-ci par exemple :

Regardons ce qu’il en sort :

1/Le premier rectangle rouge est le Hash de la transaction, chaque transaction à un Hash différent.
2/Le deuxième “Status” signifie que la transaction est terminée et validée. Dans le cas contraire, elle est soit en “Pending” au lieu de “Succes”, qui signifie qu’elle est en attente, sois “Failed” qui signifie que la transaction à échoué, peut importe la raison.
3/Le 3ième rectangle “Bloc” est le numéro de bloc qui à validé la transaction.
4/“Timestamp” vient ensuite, c’est l’heure a laquelle la transaction à été validée
Ces informations sont sédentaires pour toutes les transactions, quelque soit la nature de celle ci (swap, transfer, stake, ect…)
Ensuite, l’explorer fait un saut de ligne car dorénavant les informations affichées sont unique pour chaque transactions, c’est à dire qu’on rentre dans les détails.
5/“Transaction Action” est un raccourci qui permet de comprendre en un coup d’oeil la transaction. C’est un résumé concret.
6/“From” indique d’adresse de la personne ou du contrat qui à effectué la transaction.
7/“Interected With (To)” : La transaction est un swap, l’utilisateur à utilisé ici le DEX Uniswap pour échanger des tokens CRV contre de l’Ethereum, utilisant ainsi le principe d’AMM qui nécessite des smart contracts. De ce fait, en utilisant Uniswap pour swap ses tokens, l’utilisateurs à intéragis avec le smart contrat de Uniswap, et Etherscan nous le précise. Le contrat s’appel “Uniswap V3: Router 2” En dessous, dans le même rectangle rouge ce trouve 2 tiret qui liste les actions de ce contrat. On pourrait aussi cliquer sur l’adresse du contrat et lire le code solidity.
8/“ERC-20 Tokens Transferred”: Cette partie montre en détails l’opération, de qui a qui et pour tout les ERC-20 impliqué.
9/La dernière partie est comme la première, chaque transactions comprendra ces 3 paramètres: “Value” montre le nombre d’ETH envoyé a l’utilisateur dans cette transaction. “Transaction fee” sont les frais de transactions en ETH. Puis “Gas Price” indique le prix du gaz pour cette transaction.
Grâce a cette transaction on sait que l’utilisateur à vendu 35 $CRV pour environ 0.0172 $ETH. Mais on se sait pas a quel prix il a acheter ses CRV, est il en benéfice ou en perte ?
Nous allons chercher son prix d’achat grâce à l’explorer. Copions son adresse (Rectangle rouge “From”). Ensuite, revenons sur la page du token $CRV.

En bas a droite, en cliquant sur la petite loupe et en collant l’adresse de l’utilisateur dans la barre de recherche qui s’affiche, l’explorer va trié toutes les transactions et ne laisser que celle qui proviennent de l’adresse qu’on a collé.
Voici donc toutes les transactions du wallet 0x6df… impliquant des tokens CRV:

En effet, il apparait au dessus de “Transfer” le commentaire “Filtered by token holder + l’adresse qu’on a rentrée”.
L’explorer indique également la balance de l’utilisateurs pour le token, ici $CRV.
Puis, la partie qui nous intéresse, les transactions (”Transfer”).

“Txn Hash” est le hash de chaque transactions
“Method” indique la fonction de la transaction, lorsque ce n’est pas renseigné il est écrit l’ID (0x12345…). (Par exemple en 3ieme ligne, “Multicall” est un type d’aggrégation qui regroupe toutes les requêtes adressées à différents contrats en un seul appel/call, ce qui garantit que vos données sont récupérées dans le même bloc. Ca sert a l'interrogation des prix des tokens sur uniswap. On ne veut pas avoir le prix d'un token du bloc x et le prix d'un autre token du bloc y).
“Age”: La date de la transaction.
“From”: Qui à envoyé les tokens
OUT ou IN : est ce qu’il s’agit d’une entrée ou d’une sortie pour l’utilisateur.
OUT signife une sortie, l’utilisateur envoie ses tokens a une autre adresse.
IN est une entrée, l’utilisateur reçoit des tokens.
“To”: Qui à reçu les tokens
La plus vieille transaction de l’utilisateur impliquant des tokens $CRV à eu lieu il y a 1 jour et 14 heures, (”Age” : 1 day, 14 hrs ago). On peut voir dans la colonne quantity qu’il en à reçu envrion 38,13… Cliquons sur la transaction :

Cependant, cette transaction n’est pas un simple swap, on ne peut pas voir exactement combien d’$ETH on été vendus pour acheter des $CRV, car c’est une transaction qui achète plusieurs token à la fois.
Nous pouvons voir en effet dans la rubrique “ERC-20 Tokens Transferred” que notre utilisateur 0x6df à reçu (”IN” en rouge):
0.3819 $AAVE
38.13 $CRV
4.214 $UNI
0.0014 $wBTC
0.0041 $YFI
Puis en dernière ligne, “From” et “To” s’inversent, c’est l’utilisateur qui envoi et le contrat 0xafb qui reçoit 0.1 ETH
Comme c’est un achat groupé de 5x30$ par token, le total est de 150$. Ce qui correspond bien au 0.1 $ETH car à ce moment 1 ETH valait 1500$, bien sur le prix des tokens et de l’Ethereum ne cessent jamais de bouger donc il y a des variations de quelques dollars à l’heure de cet article.
Pour savoir le prix d’achat des tokens $CRV de l’utilisateur il nous faudra regarder le prix du $CRV à la date, heure, et minute de la transaction puis le multiplié par le nombre de tokens (38.13….)
Voyons maintenant un autre cas d’utilisation de l’explorer.
Je me rend sur Aave V3, pour déposer des ETH et emprunter des stablecoin (USDC) :

Je “Supply” (prête) 1 ETH à gauche, puis je valide la transaction dans mon wallet a droite.

Maintenant, grâce à mon collateral de 1 ETH, je vais emprunter des USDC.

“Assets to borrow” signifie Actifs à emprunter
Je choisis d’emprunter 1000 USDC puis valide la transaction :

Je valide la transaction dans mon wallet.
L’emprunt est réalisé :

Maintenant, imaginons que 20 minutes après mon emprunt, le site internet de Aave V3 ne fonctionne plus. Pourtant je veux repayé mon emprunt de 1000 USDC pour récupérer mon collateral de 1 ETH (~1800$) car j’ai besoin de mes fonds.

Et bien c’est possible, et très facile. Allons faire un tour dans l’explorer pour voir la situation.

Je recherche mon adresse avec laquelle j’ai réalisé l’emprunt.

Comme l’emprunt a nécessité seulement 2 transactions (déposer + emprunter), nous nous intéressons aux 2 dernières transactions, le reste n’est pas concerné.
La plus ancienne, datant de 23 minutes, est libellée de la méthode “Deposit ETH”, ce qui est coérant car avant d’emprunter nous avons déposer 1 ETH dans le protocole.
La plus récente, datant de 14 minutes, est libellé “Borrow”. En effet, après le dépot de 1 ETH, nous avons directement borrow (=emprunter) des USDC.
Pour repayer les USDC et récupérer mon ETH, je dois faire le chemin inverse que j’ai du faire il y a 20 minutes. C’est a dire, d’abord approuver le contrat de Aave à utiliser mes USDC, intéragir ensuite avec ce contract où j’ai Borrow, puis avec celui ou j’ai Deposit.
Etape 1 : Approuver le contract de Aave à dépenser mes USDC.
Pour ce, nous avons besoin de 2 contract : le contract USDC, et le contrat Borrow de Aave
Le contrat de USDC est le suivant :

Une fois sur la page de l’USDC, allons dans contract :

1 - Ouvrir l’onglet contrat
2 - Ouvrir l’option “write as Proxy”
3 - Connecter son wallet
4 - Intéragir avec la fonction désirée du contract. (Ici “Approve” en l’occurence)
Je connecte mon wallet puis clique sur 1. Approve, l’onglet s’agrandi laissant apparaitre 2 cases : “spender (adress)”, et “amount (uint256)”
L’adresse que l’on doit rentrer dans “spender (adress)”est l’adresse dont nous autorisons l’utilisation de nos USDC
Le nombre que l’on doit rentrer dans “amount (uint256)” et le nombre de token que nous autorisons.

Dans notre cas, on veut autorisé Aave à acquérir nos 1000 USDC pour qu’on puisse ensuite reprendre notre ETH
Pour ce faire, nous avons d’abord besoin de l’adresse du contrat de Aave afin de l’approuver au contrat USDC, il se trouve ici, dans mon historique de transaction, car j’ai intéragis avec pour l’emprunt.

Je clique dessus et copie l’adresse du contrat : 0x794a61358d6845594f94dc1db02a252b5b4814ad

Ensuite, je retourne dans le contrat de USDC et colle l’adresse de Aave dans la case “spender (adress)”
Je met un grand nombre car je choisis d’approve une quantité infini de token, Aave étant un protocole plus que fiable.

Puis on clique sur “Write”

Mon wallet s’ouvre, je verifie les informations : approuver 1 000 000 000… USDC à Aave V3.
Tout est correcte, j’accepte la transaction.
Maintenant que Aave est autorisé en tant que “Spender” de mes USDC, nous pouvons repayé l’emprunt, c’est à dire redonner les 1000 USDC.
Donc nous allons dans le contract de Aave que nous avons Approve juste avant : 0x794…

Comme dans le contrat de l’USDC, on ouvre l’onglet contrat, puis “Write as Proxy” puis “Connect to Web3” pour connecter son wallet. Ensuite, une base d’anglais est nécessaire pour ne pas se tromper de contrat, en descandant dans la liste, nous trouvons “Repay” qui signifie “Repayer”. C’est ce que nous voulons faire.

Le 1er Repay (n°18) demande un argument en bytes32, il est plus facile de remplir les cases de l’option 19. Aave à mis les 2 options pour faire comme bon nous semble.

Voici comment remplir la fonction 19.Repay :
Asset - Je mets l’adresse de l’USDC car c’est l’asset que je repaye.
Amount - Je met le nombre infini, Aave prendra le maximum possible à repayer.
InterestRateMode - Ne connaissant pas le code de Aave, je ne sais pas ce que cette formule signifie, cependant, nous pouvons retrouvé cette valeur dans les logs de la transactions d’emprunt :
Je retourne sur mon addresse dans l’explorer, et rentre dans la transaction d’emprunt :

Puis je clique sur l’onglet “Log” de cette transaction :

Je retrouve ici la formule InterestRateMode, dont la valeur est 2.
Je rentre 2 dans l’option Repay en de InterestRateMode.
La dernière case “onBehalfOf” est simplement mon adresse.

Puis on clique sur “Write” pour générer la transaction.

Mon wallet s’ouvre, j’accepte la transaction. On constate que les 1000 USDC ainsi que les 1000 jetons variableDebtArbUSDC qui sont des jetons a titre indicatifs sont envoyés au contrat de Aave V3.
Maintenant que ma dette est repayée, je peux récupérer mon ETH qui est en collatéral.
Heureusement le site Aave fonctionne de nouveau, mais le principe et la technique seraient les mêmes.

