Aller au contenu
Blockchain Association of Cameroon
BAC-L0-FOUND-1143 h

Lire une blockchain de façon critique

Explorateurs, indexeurs et tableaux de bord affichent des interprétations, pas des faits bruts. Cet atelier apprend à remonter à la source vérifiable.

  • Vérifier une donnée d'explorateur directement contre un nœud
  • Identifier ce qu'un indexeur ajoute, agrège ou suppose
  • Reconnaître une métrique on-chain trompeuse

Presque tout ce que vous savez d'une blockchain, vous l'avez lu sur un écran fabriqué par quelqu'un d'autre : un explorateur, un tableau de bord, une application de portefeuille. Cet écran affiche des interprétations — des données décodées, étiquetées, converties en dollars, agrégées — pas les faits bruts que contiennent les blocs. Dans cet atelier vous apprenez à remonter de l'affichage à la source vérifiable : interroger un nœud directement, repérer ce qu'un indexeur ajoute ou suppose, reconnaître une métrique qui trompe, et déceler les pièges classiques (faux jetons, adresses trompeuses). Le but n'est pas de rejeter les explorateurs, qui sont très utiles, mais de savoir exactement ce qu'ils prouvent et ce qu'ils ne prouvent pas.

Leçons 1/4 · 20 min

Fait brut ou interprétation : la chaîne de production d'un écran

Une question de départ

Vous ouvrez un explorateur et lisez : « Transfert de 150 USDT d'Alice (Exchange X) à Bob, il y a 3 minutes, frais 0,40 $ ». Combien de ces mots sont des faits inscrits dans un bloc ? Très peu. Pour le voir, il faut suivre le chemin de la donnée.

Le chemin de la donnée

nœud (blocs, état)  ->  indexeur (décode, range)  ->  base de données
                    ->  API  ->  site web ou appli  ->  votre écran
  1. Le nœud (le programme qui télécharge les blocs, vérifie les règles et détient l'état ; atelier 113) détient les blocs et l'état. C'est la seule étape où l'on trouve des octets consensuels.
  2. L'indexeur est un logiciel qui lit les blocs, les décode (quelle fonction a été appelée ? quel montant ?), les range dans une base de données classique pour répondre vite à « toutes les transactions de cette adresse ». Il décide de ce qu'il garde et de la façon de l'afficher.
  3. L'API et le site ajoutent des étiquettes, des prix, des horodatages convertis, des graphiques.

Chaque étape est un logiciel écrit par une équipe, avec ses bogues, ses retards et ses choix.

Tri de l'exemple

Ce que dit l'écranNatureQui l'affirme
Le montant 150Décodé depuis les données de la transactionL'indexeur (à partir d'octets du bloc)
« USDT »Un nom choisi par le déployeur du contrat ; rien ne l'empêche d'être copiéLe contrat, relayé par l'indexeur
« Alice (Exchange X) »Une étiquette attribuée par l'explorateur ou des tiersL'explorateur : ce n'est pas de la blockchain
« il y a 3 minutes »Heure du bloc déclarée par le producteur du bloc (sur Bitcoin et les chaînes de type Ethereum), comparée à l'horloge du serveurLe producteur + l'explorateur
« 0,40 $ »Frais en unités natives × un prix pris à un fournisseur de coursUn service de prix externe
Statut « Réussi »Résultat d'exécution inscrit dans un reçu (brut) ou déduit par l'indexeur (dérivé) : vérifiez lequelDépend de la chaîne (voir leçon 2)

Sur six lignes, seuls le montant et le statut viennent de données consensuelles (le montant après décodage, le statut après lecture du reçu quand la chaîne en produit) ; l'heure relative, le nom du jeton, l'étiquette et le prix en dollars sont dérivés ou fournis par des tiers. Même le montant n'est pas « directement dans les octets » : pour un jeton, l'indexeur le calcule à partir d'un événement ou des données de l'appel, et d'une métadonnée du jeton (son nombre de décimales).

Ce qui est brut, ce qui ne l'est pas

Brut (consensuel) : l'en-tête et le corps d'un bloc, les transactions signées, le résultat des règles appliquées (l'état après le bloc, et les reçus quand le protocole en produit).

Dérivé : toute interprétation, tout regroupement, toute valeur en monnaie fiduciaire, toute étiquette (« Exchange X »), tout classement (« top holders »), tout « transfert interne » reconstitué par rejeu des appels.

Exemple : l'heure d'un bloc

Sur Bitcoin et les chaînes de type Ethereum, l'heure affichée est l'horodatage que le producteur du bloc a écrit dans l'en-tête, dans des limites que le protocole contrôle seulement grossièrement. Elle ne vient pas d'une horloge de confiance. (Sur CometBFT, l'heure vient d'un calcul entre validateurs : chaque famille de chaînes a sa règle.) L'explorateur la convertit dans un fuseau (souvent UTC ou celui de votre navigateur). Deux explorateurs peuvent donc afficher des heures « différentes » pour le même bloc sans qu'aucun ne mente : l'un affiche UTC, l'autre l'heure locale (UTC+1 au Cameroun, sans changement d'heure).

Ce que cela ne garantit PAS

  • Un explorateur connu n'est pas une autorité : il peut être en retard, avoir un bogue, être piraté (page web ou domaine) ou être lent à se réorganiser avec la chaîne.
  • Un chiffre cohérent entre trois sites n'est pas vérifié : ils peuvent lire le même indexeur, ou le même fournisseur de nœud.
  • « C'est sur la blockchain » ne veut pas dire « c'est vrai » : cela veut dire « un participant l'a signé et la chaîne l'a accepté ».

À retenir

Pour chaque ligne d'un écran, demandez : ce fait est-il dans les octets du bloc, ou quelqu'un l'a-t-il calculé, deviné ou ajouté ? Seul le premier cas se vérifie directement contre un nœud.

Leçons 2/4 · 25 min

Vérifier une donnée directement contre un nœud

Le problème

Un explorateur affiche : « Bloc 9 000 010, contient votre paiement, 12 confirmations ». Comment le vérifier sans croire l'explorateur ? En interrogeant un nœud — idéalement le vôtre (atelier 113) — par son interface JSON-RPC.

JSON-RPC 2.0 en trois lignes

JSON-RPC 2.0 est une convention : vous envoyez un objet JSON avec quatre champs principaux, le serveur répond par un objet avec le même id.

-> {"jsonrpc":"2.0","method":"chain_getBlockByNumber","params":[9000010,false],"id":7}
<- {"jsonrpc":"2.0","result":{"number":9000010,"hash":"0x…","txCount":142},"id":7}
  • jsonrpc vaut toujours "2.0" ; method est le nom de l'appel ; params la liste des arguments ; id relie la réponse à la requête. Dans la spécification, params et id sont facultatifs (une requête sans id est une notification : le serveur n'y répond pas) ; dans ce cours, nous les écrivons toujours.
  • En cas d'échec, la réponse contient error à la place de result. La spécification définit des codes standard : -32700 (JSON illisible), -32600 (requête invalide), -32601 (méthode inconnue), -32602 (paramètres invalides), -32603 (erreur interne). Les codes de -32000 à -32099 sont réservés aux erreurs propres au serveur : de vrais nœuds s'en servent pour leurs propres messages, d'où l'intérêt de lire leur documentation.

Trois vérifications que vous pouvez faire

  1. Le bloc existe-t-il, avec cette empreinte ? Demandez le bloc au numéro donné et comparez son empreinte avec celle de l'explorateur. Si les empreintes diffèrent, l'un des deux suit une autre branche ou est en retard.
  2. La transaction est-elle dans ce bloc ? Le corps est résumé par une racine de Merkle (atelier 106) dans l'en-tête. Un nœud complet peut vous donner la liste ; un client léger demande une preuve d'inclusion et la recalcule : feuille, frères, racine. Dans l'explorateur de Merkle, modifiez une feuille : la racine change, donc la preuve échoue. Avec l'outil de hachage, recalculez vous-même un nœud parent à partir de deux fils.
  3. Quel est le résultat de l'exécution ? Sur les chaînes qui produisent des reçus, le « statut » est dans le reçu ; demandez le reçu au nœud, ne vous fiez pas à une icône verte.

Confirmations et finalité

« 12 confirmations » signifie en général que la transaction a 12 blocs au total depuis son bloc d'inclusion, ce bloc compris : il compte pour la première confirmation, puis 11 autres blocs ont été construits après lui (convention de l'atelier 109 ; certains outils comptent autrement). Ce n'est pas une garantie de finalité. Sur une chaîne à finalité déterministe (atelier 109), une transaction est finale quand le protocole le déclare, indépendamment du nombre de blocs. Sur une chaîne à finalité probabiliste, plus il y a de blocs, plus une réorganisation est improbable, sans devenir impossible.

Certaines interfaces de nœud permettent de demander l'état à une étiquette de finalité (« dernier », « finalisé » …). Quand votre chaîne en propose, utilisez-les : lire « le plus récent » et lire « le finalisé » sont deux affirmations différentes.

Exemple détaillé : trois sources, un désaccord

On vous donne :

  • Explorateur A : bloc 9 000 010, empreinte commençant par 0x4f3a.
  • Explorateur B : bloc 9 000 010, empreinte commençant par 0x4f3a.
  • Votre nœud : bloc 9 000 010, empreinte commençant par 0x91c2.

Deux sources sur trois sont d'accord, donc A et B ont raison ? Non. Le désaccord est une question, pas un vote. Hypothèses : A et B lisent le même fournisseur ; votre nœud est encore en cours de synchronisation ; ou une réorganisation a eu lieu. On le résout en demandant à votre nœud la hauteur finalisée et en réinterrogeant plus tard, pas en comptant les voix.

Votre nœud lui-même est une hypothèse

Si vous interrogez un nœud d'un fournisseur, vous faites confiance à ce fournisseur. Si vous interrogez votre propre nœud, vous faites confiance à votre logiciel, à votre version et aux pairs auxquels il est connecté (un nœud entouré de pairs malveillants peut être trompé, voir atelier 113).

Ce que cela ne garantit PAS

  • Une réponse de nœud n'est pas une preuve : c'est une réponse. Seule une preuve (Merkle, signatures) recalculée contre un en-tête de confiance en est une.
  • Comparer des empreintes de blocs ne vérifie pas que les règles ont été respectées : seul un nœud complet qui rejoue le bloc le fait.
  • Interroger une fois ne dit rien sur la finalité.

À retenir

Pour vérifier : demandez la donnée brute à un nœud, recalculez ce qui peut l'être, traitez tout désaccord comme une enquête, et distinguez « le plus récent » de « final ».

Outil interactif

SHA-256 d'octets hexadécimaux

Collez des octets en hexadécimal : le hachage porte sur les octets, pas sur le texte des chiffres. Un second champ est concaténé après le premier.

Empreinte

…

Espaces, retours à la ligne et préfixes 0x sont ignorés.

Outil interactif

Explorateur d'arbre de Merkle (jouet)

Une feuille par ligne (2 à 8). Choisissez une feuille pour voir sa preuve d'inclusion ; modifiez un texte pour voir quels nœuds changent.

5 feuilles

Les nœuds modifiés depuis la dernière saisie valide sont soulignés et marqués « modifié ». Les nœuds sur le chemin de la feuille choisie sont entourés. Dernier nœud d'un niveau impair : il est dupliqué comme son propre frère.

Convention : feuille = SHA-256(texte UTF-8) ; parent = SHA-256(gauche ‖ droite, octets bruts) ; nœud impair dupliqué. Arbre jouet : Bitcoin double le hachage et sérialise autrement.

Leçons 3/4 · 25 min

Ce qu'ajoute un indexeur, et les métriques qui trompent

Le problème

Un tableau de bord annonce : « 1 000 adresses actives par jour ». Une jeune pousse s'en sert pour dire qu'elle a « 1 000 utilisateurs ». Est-ce vrai ? Pour le savoir, il faut connaître la définition, la fenêtre et la source de chaque chiffre.

Ce que fait un indexeur — et ce qu'il suppose

Un indexeur transforme des blocs en tables interrogeables. Ce faisant, il :

  • décode les données : il doit connaître la structure des appels (l'interface d'un contrat). Si elle est inconnue ou fausse, il affiche des octets bruts ou un mauvais nom ;
  • choisit quoi garder : certains ignorent les transactions échouées, les événements mal formés, ou les traces internes ;
  • gère les réorganisations : quand un bloc est remplacé, il doit défaire ce qu'il a rangé. Un mauvais indexeur peut garder des données d'une branche abandonnée ;
  • est en retard d'un nombre variable de blocs : il lit la chaîne, puis écrit en base ;
  • ajoute des données externes : étiquettes d'entités, prix en monnaie fiduciaire, classements.

Ce sont des choix de conception, non des erreurs. Le danger est de lire le résultat comme un fait brut.

Métriques : poser trois questions

Devant tout chiffre :

  1. Définition : qu'est-ce qui est compté exactement ?
  2. Fenêtre : sur quelle période, avec quelle heure de coupure ?
  3. Reproductibilité : puis-je recalculer le chiffre à partir de données de nœud ? Sinon, c'est une affirmation, pas une mesure.

Quatre pièges avec chiffres

1. « Adresses actives » ≠ utilisateurs. Une adresse est une clé, pas une personne (atelier 112). Une personne peut avoir des centaines d'adresses ; un script peut en créer des milliers en quelques minutes. Exemple : le tableau de bord indique 1 000 adresses actives ; une analyse montre que 600 d'entre elles sont contrôlées par un même opérateur. Il y a donc au plus 400 + 1 = 401 opérateurs distincts, et probablement moins. Le chiffre le plus flatteur n'est pas le chiffre le plus juste.

2. Le volume peut être fabriqué. Un acteur qui s'échange un actif à lui-même (wash trading) gonfle le « volume » sans changer qui détient quoi. Exemple : un compte A envoie 100 unités à un compte B qu'il contrôle, B les renvoie, et cet aller-retour se répète 50 fois : volume affiché 10 000 unités (50 × 2 × 100), capital réellement en jeu 100.

3. La valeur verrouillée peut être comptée plusieurs fois. Alice dépose 100 unités dans le protocole P1 et reçoit 100 jetons-reçus. Elle dépose ces jetons-reçus dans P2 et reçoit 100 jetons-reçus de P2, qu'elle dépose dans P3. Chaque protocole annonce 100 de « valeur verrouillée » : la somme du tableau de bord est 300 alors que le capital réel distinct est 100.

4. Les définitions off-chain. Une « offre en circulation » n'est pas dans la chaîne : l'équipe décide quels comptes ne comptent pas (réserves, verrouillés). C'est un jugement publié, pas un fait calculé par le protocole.

Exemple : refaire un calcul

Chiffre à vérifier : « 1 000 transactions par jour en moyenne ». Procédure : prendre les blocs d'un jour (heure de coupure fixée), compter les transactions de chaque bloc (txCount), additionner, comparer. Si l'écart dépasse quelques pour cent, cherchez la cause : transactions échouées comptées ou non ? fuseau horaire ? blocs en cours de réorganisation ?

Ce que cela ne garantit PAS

  • Reproduire un chiffre ne le rend pas pertinent : une définition peut être cohérente et inutile pour votre question.
  • Un indexeur « officiel » n'est pas plus consensuel qu'un autre : c'est un programme de plus.
  • L'absence de manipulation visible n'en est pas la preuve : lisez la définition avant d'interpréter.

À retenir

Tout chiffre agrégé porte une définition, une fenêtre et des hypothèses. S'il n'est pas reproductible depuis des données de nœud, traitez-le comme une opinion avec une source, pas comme un fait.

Leçons 4/4 · 25 min

Pièges d'affichage, faux jetons et hypothèses de confiance

Le problème

Une personne reçoit 200 « BACUSD » dans son portefeuille et croit à un cadeau. Le jeton est sans valeur : c'est un leurre, et la page « d'approbation » qu'on lui propose ensuite peut servir à obtenir une signature qui donne accès à des fonds de valeur. Les pièges d'affichage exploitent un fait simple : les noms ne sont pas des identités.

Identité d'un jeton = adresse du contrat

Le nom (« BACUSD ») et le symbole d'un jeton sont des chaînes de caractères choisies par celui qui déploie le contrat. Rien dans le protocole n'empêche deux contrats d'avoir le même nom ou le même logo. L'identité, c'est la chaîne + l'adresse du contrat, à comparer avec la source officielle du projet (sa documentation ou son dépôt).

Exemple fictif :

Contrat officiel du jeton (d'après la documentation du projet) :  0xAAAA...0001
Transferts de jetons reçus par votre compte :
 +500  « BACUSD »  du contrat 0xAAAA...0001
 +200  « BACUSD »  du contrat 0xBBBB...0042

Les deux lignes s'affichent pareil ; une seule est le vrai jeton. Un symbole identique, un logo copié, une pastille « vérifié » sur une plateforme : aucun de ces éléments ne remplace la comparaison d'adresse.

Autres pièges classiques

  • Adresse trompeuse (address poisoning) : un attaquant vous envoie une transaction minuscule depuis une adresse dont le début et la fin ressemblent à celles de votre contact. Plus tard, vous copiez l'adresse « dans l'historique » et envoyez à l'attaquant. Défense : comparer l'adresse entière, caractère par caractère ou par l'intermédiaire d'un carnet d'adresses de confiance, et ne jamais copier depuis l'historique.
  • Contrats homonymes : un contrat porte un nom proche de celui d'un projet connu. Le nom d'un contrat n'est pas unique.
  • Transferts non sollicités : n'importe qui peut vous envoyer un jeton ; le recevoir ne signifie pas que vous l'avez demandé ni qu'il a de la valeur. Une interaction (approuver, signer) est un acte distinct.
  • Valeurs en dollars sans marché : un jeton sans liquidité peut afficher un prix fantaisiste. La valeur affichée vient d'un fournisseur, non de la chaîne.

Centralisation et hypothèses de confiance

Un explorateur ou un fournisseur de nœud est un service centralisé : une entreprise, un domaine, des serveurs, une équipe.

Ce qu'on supposeCe qui peut mal tourner
Le nom de domaine est bien le leurLe domaine ou le DNS est détourné et montre de fausses données (atelier 101)
Leur indexeur est correctBogue, retard, mauvais décodage
Leur fournisseur de nœud est honnêteLe fournisseur filtre ou renvoie des données en retard
Leurs étiquettes sont justesUne erreur d'étiquette fait passer une adresse pour un échange
Le service reste en lignePanne : l'application qui en dépend s'arrête

Un tableau de bord présenté comme « décentralisé » peut dépendre d'un seul fournisseur de nœud ou d'une seule base de données. Avant de croire un système, cherchez son point de défaillance unique.

Ce qu'un explorateur peut — et ne peut pas — prouver

Un explorateur ne prouve rien par lui-même : c'est un témoin, pas une preuve. Il peut vous orienter vers un bloc et une transaction que vous vérifiez ensuite (leçon 2). Il ne peut pas prouver :

  • que l'étiquette « Exchange X » est exacte ;
  • que le bloc est final (il montre souvent le plus récent) ;
  • que le jeton affiché est le bon ;
  • que le prix en dollars est celui d'un marché réel ;
  • que vous voyez la même chose que tout le monde.

Une pratique raisonnable

Pour toute décision qui engage de l'argent : (1) lire l'adresse complète et celle du contrat ; (2) confirmer la donnée sur un second chemin indépendant, idéalement votre nœud ; (3) attendre la finalité adaptée au montant ; (4) ne rien signer d'incompris.

Ce que cela ne garantit PAS

  • Comparer l'adresse d'un contrat avec la documentation officielle ne protège pas si la documentation est elle-même usurpée : vérifiez que vous êtes bien sur la source officielle (adresse du site tapée à la main ou dépôt officiel de l'organisation).
  • Un contrat vérifié (code source publié) n'est pas un contrat honnête : « vérifié » veut dire que le code publié correspond au code déployé, non qu'il est sûr.
  • Ces règles réduisent le risque, elles ne le suppriment pas.

À retenir

Les noms et les logos ne sont pas des identités ; l'adresse l'est. Un explorateur est un témoin centralisé. Pour une décision d'argent, confirmez par un chemin indépendant.

Laboratoire guidé

Le navigateur ne peut pas ouvrir trois explorateurs réels pour vous, ni interroger un vrai nœud : ce laboratoire entraîne le raisonnement à partir d'extraits fabriqués pour l'exercice et de requêtes JSON-RPC générées sur un nœud d'entraînement fictif. Le travail réel — comparer trois explorateurs sur une même transaction d'un réseau de test et interroger votre propre nœud — se fait dans le laboratoire autonome. Dans chaque étape, expliquez la divergence ou le chiffre par sa cause, pas par un vote majoritaire.

Le navigateur ne remplace pas un vrai terminal : ce laboratoire entraîne la lecture et le raisonnement ; la pratique réelle est dans le laboratoire autonome.

Un compte certifié est nécessaire

Les activités notées enregistrent des résultats à votre nom et servent de base à un titre. Elles exigent donc un dossier certifiant complet et un consentement en vigueur. Remplir le dossier ne vérifie pas votre identité ; le Secrétariat peut ensuite la vérifier (badge « Vérifié »).

  1. 1.Écrire une requête JSON-RPC vers un nœud

    Une épreuve générée pour vous décrit une donnée à demander à un nœud d'entraînement (un solde, un bloc ou la hauteur courante) avec le nom de la méthode et un identifiant imposés. Écrivez le corps JSON complet de la requête (jsonrpc, method, params, id) en respectant l'ordre et le type des paramètres, sans champ superflu. Les paramètres vides s'écrivent avec une liste vide.

  2. 2.Lire une erreur renvoyée par le nœud

    Le nœud d'entraînement répond à une requête par un objet contenant error. Lisez le code numérique de la réponse affichée dans l'épreuve générée pour vous, rappelez-vous les cinq codes standard de la spécification JSON-RPC 2.0 vus dans la deuxième leçon, et choisissez la signification exacte. Ne vous fiez pas au texte du message seul : c'est le code qui est normalisé.

  3. 3.Réconcilier trois affichages de la même transaction

    La question affichée sous cette étape présente trois affichages, fabriqués pour l'exercice, de la même transaction. Lisez-les en distinguant ce qui est brut et ce qui est dérivé (première leçon), puis répondez à la question affichée sous cette étape. L'outil de hachage peut servir à vérifier à la main un nœud parent d'une preuve si vous en avez besoin.

    Outil interactif

    SHA-256 d'octets hexadécimaux

    Collez des octets en hexadécimal : le hachage porte sur les octets, pas sur le texte des chiffres. Un second champ est concaténé après le premier.

    Empreinte

    …

    Espaces, retours à la ligne et préfixes 0x sont ignorés.

  4. 4.Reconnaître une métrique trompeuse

    Un tableau de bord annonce un chiffre d'adoption, et une analyse de nœud en explique la composition. Appliquez les trois questions de la troisième leçon (définition, fenêtre, reproductibilité) et calculez la borne demandée dans la question affichée sous cette étape. Écrivez le calcul, ne devinez pas.

Exercice de sécurité — Faux jeton, vraie perte

Adèle, commerçante à Douala, reçoit des paiements en jeton stable « BACUSD » sur un réseau de test de l'Académie. Dans son portefeuille, elle voit :

Contrat BACUSD officiel (d'après la documentation du projet) : 0xAAAA...0001   [adresse fictive]

Transferts de jetons reçus par Adèle :
  +500  « BACUSD »  du contrat 0xAAAA...0001   (paiement d'un client)
  +200  « BACUSD »  du contrat 0xBBBB...0042   (non sollicité)

Un message lui dit : « Votre BACUSD est bloqué, cliquez sur le lien pour l'activer ». Le lien mène à un site qui demande de signer une « approbation » dont l'écran ne dit pas clairement quel jeton ni quel bénéficiaire sont visés. Elle hésite : les deux lignes ont le même nom, le même logo, et l'explorateur affiche une pastille verte « contrat vérifié » sur les deux.

Votre tâche : dire laquelle des deux lignes est le vrai jeton, ce que prouve et ne prouve pas la pastille verte, et la règle d'action avant de signer quoi que ce soit. Répondez à la question d'application affichée sous cet exercice.

Questionnaire de l'atelier

Huit questions tirées d'une réserve plus large, seuil de réussite 70 %. Il s'ouvre quand tous les points de contrôle du laboratoire sont réussis. Vous pouvez le repasser : le tirage change.

Un compte certifié est nécessaire

Les activités notées enregistrent des résultats à votre nom et servent de base à un titre. Elles exigent donc un dossier certifiant complet et un consentement en vigueur. Remplir le dossier ne vérifie pas votre identité ; le Secrétariat peut ensuite la vérifier (badge « Vérifié »).

Laboratoire autonome (hors du site)

Non noté en ligne : à réaliser sur votre machine et à publier sur votre dépôt Git.

Reproduire une statistique à partir des données brutes d'un nœud

À faire sur votre machine, hors du site, sur un réseau de test public (jamais avec de vrais fonds).

  1. Choisissez un réseau de test dont la documentation officielle décrit comment lancer ou joindre un nœud (voir le registre documentaire de l'Académie), et un explorateur de ce réseau. Notez la date et l'heure de votre travail : les chiffres changent.
  2. Prenez une transaction récente. Relevez dans trois explorateurs (ou trois pages d'un même) : bloc, empreinte, statut, frais, heure. Faites un tableau de divergences et, pour chacune, nommez la cause (fuseau, arrondi, prix externe, retard, autre).
  3. Interrogez ensuite un nœud en JSON-RPC (curl ou un petit script) : le bloc, le reçu ou les données équivalentes de votre chaîne. Montrez que l'empreinte et le statut correspondent, ou expliquez l'écart.
  4. Choisissez une statistique publiée par un tableau de bord (par exemple le nombre de transactions d'un jour). Recalculez-la en lisant les blocs de la période : fixez le fuseau, la coupure horaire, et dites si les transactions échouées comptent. Rapportez l'écart en pourcentage.
  5. Rédigez une analyse critique d'une page : pour chaque affirmation, notez sa source (octets de bloc, indexeur, étiquette, prix externe) et sa traçabilité. Marquez tout ce que vous n'avez pas pu vérifier comme « non vérifié ».

Critère de réussite : chaque affirmation de votre rapport est reliée à une requête que quelqu'un d'autre peut rejouer.

À retenir

  • Un écran de blockchain est une interprétation : seuls les octets des blocs et le résultat des règles sont consensuels ; décodage, étiquettes, prix et agrégats sont dérivés.
  • Pour vérifier, demandez la donnée brute à un nœud (idéalement le vôtre), recalculez ce qui peut l'être et traitez un désaccord comme une enquête, pas comme un vote.
  • « Confirmations » n'est pas « finalité » ; distinguez le plus récent du finalisé.
  • Tout chiffre agrégé a une définition, une fenêtre et des hypothèses ; non reproductible depuis un nœud, il reste une affirmation.
  • Les noms et les logos ne sont pas des identités : l'adresse du contrat l'est. Un explorateur est un témoin centralisé, pas une preuve.

Idées fausses courantes

  • Idée reçue : Si trois explorateurs affichent la même chose, c'est vérifié.

    En réalité : Ils peuvent lire le même indexeur ou le même fournisseur de nœud ; l'accord n'est pas une vérification. Interrogez un nœud et recalculez.

  • Idée reçue : Une adresse active est un utilisateur.

    En réalité : Une adresse est une clé : une personne peut en avoir des centaines, un script des milliers. Le nombre d'utilisateurs ne se lit pas directement sur la chaîne.

  • Idée reçue : Un jeton avec le bon nom, le bon logo et la pastille « vérifié » est le bon jeton.

    En réalité : Seule l'adresse du contrat, comparée à la source officielle du projet, identifie un jeton. « Vérifié » signifie que le code publié correspond au code déployé, pas que le contrat est légitime.

Glossaire

Indexeur
Logiciel qui lit les blocs, décode les données et les range dans une base interrogeable ; il fait des choix de décodage et prend du retard.
JSON-RPC
Convention d'appel à distance où l'on envoie un objet JSON (jsonrpc, method, params, id) et reçoit result ou error.
Confirmations
Nombre de blocs depuis celui qui contient une transaction, ce bloc compris (convention de l'atelier 109) ; indicateur de prudence, pas garantie de finalité.
Étiquette (label)
Nom attribué à une adresse par un tiers (par exemple « Exchange X ») ; ce n'est pas une donnée de la chaîne.
Wash trading
Échange d'un actif avec soi-même pour gonfler artificiellement le volume affiché.
Empoisonnement d'adresse
Envoi d'une petite transaction depuis une adresse au début et à la fin ressemblants, pour que la victime la copie par erreur depuis son historique.