12 min read

L'activation du format de transaction v1 de Solana est prévue le 9 septembre. Les programmes qui le liront mal ne renverront pas d'erreur, ils renverront zéro.

L'activation du format de transaction v1 de Solana sur son réseau principal est prévue le 9 septembre, annoncée par un seul développeur d'Anza et absente de tout document de la Fondation. Les programmes qui liront ces transactions sans mise à jour ne renverront pas d'erreur : ils renverront zéro.

Un système public qui change la forme de ce qu'il écrit ne peut pas obliger ceux qui le lisent à changer avec lui. La seule chose qu'il décide, c'est comment le lecteur retardataire tombera en panne. Il peut le faire échouer bruyamment, en lui envoyant quelque chose qu'il ne reconnaît pas, et l'erreur remonte dans l'heure. Ou il peut le laisser échouer en silence, en lui envoyant quelque chose qu'il croit reconnaître, où le champ déplacé ne se trouve simplement plus. Le lecteur n'y trouve rien, écrit un zéro, et rien ne s'allume.

Une chaîne ne choisit pas qui la lit, elle choisit comment ils tombent en panne

Le chiffre qu'une institution reçoit de son fournisseur de données, puis inscrit dans un rapport, n'a pas été lu sur la chaîne par elle. Il a été fabriqué par une file de programmes qui ont ouvert un message, cherché un champ, et recopié ce qu'ils y ont trouvé. Ils sont des milliers, appartiennent à des équipes qui ne se connaissent pas, ne signent aucun bloc, et personne ne peut leur imposer un calendrier.

Le zéro est la panne coûteuse, parce qu'elle est légitime. Une erreur remonte : elle interrompt un traitement, elle réveille quelqu'un, elle se corrige le jour même. Un zéro passe le contrôle de cohérence, puisque c'est une valeur que des millions de messages portent réellement, et il entre dans la base, puis dans le rapport, puis dans la décision, sans que personne n'ait de raison d'y revenir.

La différence entre les deux ne tient pas à la qualité du code de celui qui lit. Elle se décide au dessin du format, à la question de savoir si un message annonce sa propre version ou s'il faut la deviner à la forme de son contenu. Quand elle se devine, la règle de devinette doit être réécrite à la main à chaque nouveau format, et rien n'oblige quiconque à l'écrire.

Ce que le format v1 déplace, et où il est réellement arrivé

Solana ajoute un troisième format de transaction, v1, reconnaissable à un octet en tête, 129, placé en position zéro pour être identifié sans rien désérialiser. Ce qu'il change, tel que le décrit la spécification SIMD-0385, tient en quatre lignes.

legacy v0 v1
Taille maximale d'une transaction 1 232 octets 1 232 octets 4 096 octets
Adresses de comptes une trentaine, limitées par la taille 64, via tables de correspondance 64, en clair dans la transaction
Tables de correspondance d'adresses non oui non
Budget de calcul et frais de priorité dans des instructions dans des instructions dans l'en-tête du message, à position fixe

Le déplacement décisif est le dernier. En v1, le budget de calcul et le frais de priorité vivent dans un masque de configuration de quatre octets porté par l'en-tête, et les instructions du programme ComputeBudget sont ignorées pour la configuration, même invalides. Elles ne disparaissent pas de la transaction : elles cessent d'être lues.

Reste l'état réel du calendrier, et il ne correspond pas à ce qui circule. Les mesures CDR sur la porte de fonctionnalité, prises le 5 septembre 2026, donnent une activation sur testnet le 2 septembre et sur devnet le 3. Sur le réseau principal, la porte n'est pas inactive : le compte n'existe pas, et l'appel qui devrait le lire ne renvoie rien. L'activation n'a donc encore rien déclaré, ce qui compte, puisque le mécanisme publié par CDR le 22 août veut qu'une porte se déclare au premier slot d'une epoch et prenne effet une epoch plus tard. La date du 9 septembre, elle, vient d'un message publié le 29 août 2026 par un développeur d'Anza sur un réseau social, et aucun document de la Solana Foundation ni d'Anza consulté le 5 septembre ne la porte : c'est une cible annoncée, appuyée sur une source unique.

Deux réserves à joindre. La page de la Fondation, portant la mention d'une mise à jour en août 2026, affiche déjà le devnet comme actif quand la mesure place son activation au 3 septembre : deux explications tiennent, une mise à jour de page postérieure à son propre horodatage ou une réinitialisation du réseau, et aucune n'est prouvée. Et les sondages CDR qui n'y trouvent aucune transaction v1 portent sur huit blocs finalisés par réseau, le 5 septembre : ils autorisent « aucune dans cet échantillon », jamais « aucune sur la chaîne ». Que le testnet ne porte quasiment aucun trafic applicatif suffit toutefois à poser ce qui compte : la première transaction v1 que rencontrera la plupart des lecteurs de la chaîne sera une transaction de production.

Le réseau s'est fait prendre deux fois avant d'envoyer les autres

La panne silencieuse n'est pas une projection. Elle a eu lieu, deux fois, dans les implémentations de référence du réseau lui-même, et les numéros sont publics.

Le 13 août 2026, yellowstone-grpc, le canal de flux le plus utilisé de l'écosystème, corrige chez lui une conversion qui relisait toute transaction v1 comme une v0, sans erreur. Treize jours plus tard, Anza ouvre l'issue #14873 sur le même défaut dans son propre code d'archivage : les messages v1 y étaient décodés en v0 en jetant silencieusement leur configuration, les deux moitiés du travail ayant été ajoutées dans le même commit sans que le sens lecture soit traité. Correction fusionnée le 28 août, rétroportée le jour même dans les deux branches de production. Quinze jours séparent les deux corrections ; la première tombe vingt-sept jours avant la date d'activation annoncée, la seconde douze.

Le dégât documenté va plus loin qu'un chiffre faux. Anza l'écrit noir sur blanc : un message v1 reconstruit en v0 ne correspond plus aux octets qui ont été signés, sa re-sérialisation produit une empreinte différente, et la signature attachée ne se vérifie plus contre lui. Une archive mal décodée ne rend pas seulement un mauvais chiffre, elle rend une transaction qui ne prouve plus rien.

La Fondation nomme la cause dans sa section destinée aux indexeurs, et la formulation est franche : les flux Geyser et gRPC n'ont aucune barrière de version, il n'existe aucun champ de version au protobuf, et un consommateur périmé n'échoue pas sur une v1, il la relit en silence comme une v0 avec un budget de calcul vide. La correction structurelle, ajouter ce champ pour que l'oubli devienne une erreur de compilation, est proposée dans une issue Anza ouverte le 27 août et toujours ouverte au 5 septembre 2026. Son auteur y résume le dossier : rien n'oblige la règle à être écrite, et le compilateur s'est tu quand le lecteur v1 a été oublié.

Ce qui casse est ce qu'une transaction a demandé, pas ce qu'elle a payé

La couverture décrit correctement le mode de défaillance. Ce qui manque partout, c'est l'endroit où il atterrit, et il est plus étroit que ce qu'on lui prête.

L'adaptateur public qui produit la série de frais de Solana chez DefiLlama, lu le 5 septembre 2026, ne lit aucune instruction ComputeBudget. Il additionne le champ fee des transactions brutes, pose les frais de base à cinq mille lamports par transaction et déduit la part de priorité par soustraction. Il mesure ce qui a été payé. Cette série ne casse donc pas par le chemin du scan des instructions ComputeBudget, et la borne s'arrête là : la manière dont le fournisseur de données en amont traite les lignes v1 n'est publiée nulle part, et c'est l'unique dépendance de cette série. La méthode des autres tableaux de bord de frais de Solana n'étant pas documentée publiquement, rien de ce qui précède ne se généralise à eux.

cryptodeep.io
SIMD-0385 · mesures Crypto Deep Research · 05/09/2026
Où le chiffre se casse, et où il ne se casse pas
À gauche, ce qu'une transaction a payé. À droite, ce qu'elle a demandé. Le format v1 ne déplace que la seconde, et il en change aussi l'unité.
LigneA payéA demandé
Où c'est écrit
A payéLe champ fee de la transaction
A demandéEn v0, une instruction du programme ComputeBudget. En v1, l'en-tête du message, masque de configuration de quatre octets à position fixe
Le v1 déplace
A payéNon
A demandéOui
Qui la lit
A payéL'adaptateur public de la série de frais : somme du champ fee, frais de base posés à 5 000 lamports par transaction, part de priorité par soustraction
A demandéEstimation de priorité, mesure de congestion, plafond de dépense d'un relayeur, garde-fou d'un programme, comparaison historique du coût d'accès au bloc
Unité en v0
A payéLamports prélevés
A demandéMicro-lamports par unité de calcul, un prix
Unité en v1
A payéLamports prélevés, inchangé
A demandéLamports au total, une quantité
Ce qui casse
A payéNe casse pas par le chemin du scan des instructions ComputeBudget
A demandéZéro renvoyé sans erreur chez un lecteur qui n'est pas à jour. Et un prix additionné à un total chez un pipeline à jour qui ne convertit pas
Vérifié le
A payé05/09/2026, adaptateur public lu à sa source
A demandé05/09/2026, SIMD-0385 et page d'upgrade de la Solana Foundation
Le changement d'unité ne dépend d'aucune mise à jour
v0 déclare un frais de priorité en micro-lamports par unité de calcul, donc un prix. v1 déclare un total en lamports, donc une quantité. Additionner les deux sans conversion mélange un prix et un total, dans un pipeline parfaitement à jour.
La colonne de gauche n'est bornée que par le chemin mesuré : la façon dont le fournisseur de données en amont de cette série traite les lignes v1 n'est publiée nulle part, et c'est son unique dépendance. La méthode des autres tableaux de bord de frais de Solana n'étant pas documentée publiquement, rien de ceci ne se généralise à eux. L'activation sur le réseau principal est prévue le 9 septembre 2026, sur une source unique absente de tout document de la Fondation et d'Anza ; au 5 septembre, la porte de fonctionnalité n'existe pas sur le réseau principal.
SIMD-0385, spécification du format de transaction v1 · page d'upgrade de la Solana Foundation, lue le 05/09/2026 · adaptateur public de la série de frais de Solana, lu le 05/09/2026 · mesures Crypto Deep Research sur la porte de fonctionnalité, 05/09/2026.
Snapshot · cryptodeep.io Lecture de spécification, aucun signal d'achat

Le paiement est inscrit dans un champ que le changement de format ne déplace pas, et une chaîne a tout intérêt à ne jamais y toucher. La demande, elle, a changé d'adresse. Et c'est la demande qui alimente tout ce qui parle du marché des frais : estimation de priorité, mesure de congestion, plafond de dépense d'un relayeur, garde-fou d'un programme qui conditionne son exécution au budget qu'il lit, comparaison historique du coût d'accès au bloc. Ces séries-là peuvent devenir fausses sans qu'aucune alarme ne se déclenche, parce que l'attention aura porté sur le revenu.

Deux corruptions distinctes s'y superposent, et les confondre coûte la moitié du sujet. La première vient d'un défaut de mise à jour et rend zéro. La seconde est un changement d'unité et n'épargne personne : v0 déclare un frais de priorité en micro-lamports par unité de calcul, donc un prix, v1 déclare un total en lamports, donc une quantité. Additionner les deux sans conversion revient à mélanger un prix et un total, dans un pipeline parfaitement à jour.

L'enjeu en volume n'est pas théorique. La série de frais de Solana chez DefiLlama, relevée le 5 septembre 2026, porte 249 millions de dollars sur douze mois. C'est le dénominateur qui sert aux multiples de valorisation.

Trois changements de couche basse en trois semaines, et ce qu'ils ont en commun

Le point de comparaison n'est pas une autre chaîne, c'est le même geste ailleurs. L'autre grande chaîne avait averti ses portefeuilles, ses indexeurs et ses estimateurs de frais trois semaines plus tôt qu'un nombre figé depuis 2015 cessait d'être universel, et la réserve tenue alors vaut ici mot pour mot : le nombre ne disparaissait pas, il cessait d'être vrai pour tout le monde, comme les instructions ComputeBudget ne disparaissent pas mais cessent d'être lues. Le 21 août, Solana raccourcissait la durée de ses blocs, et CDR posait le lendemain que le réseau ne devenait pas plus gros, mais plus rapide à se modifier lui-même, avec deux constats qui tiennent toujours : le débit par seconde ne bouge pas, et la mesure réelle donnait alors 366 ms là où la spécification annonçait 350. La durée de slot mesurée le 5 septembre sur le réseau principal, 315 ms sur cent mille slots, est une mesure neuve sur une autre fenêtre.

La qualité de la panne sépare pourtant ce troisième cas des deux premiers. Sur le gas d'Ethereum comme sur la durée de bloc de Solana, un lecteur retardataire obtient un chiffre faux mais plausible, qu'un contrôle de cohérence peut attraper. Ici, il obtient zéro, valeur parfaitement légitime, que rien ne relève.

Le fil qui relie ces épisodes à la lecture publiée par CDR le 1er juin sur SIMD-547 mérite d'être nommé, pour éviter la confusion. Juin portait sur le modèle de frais, quand la rareté de SOL cessait d'être un paramètre figé. Septembre porte sur la mesure des frais et sur son changement d'unité. Ce ne sont pas deux jugements contraires, ce sont deux étages du même objet.

Reste l'antécédent le plus engageant. CDR a mesuré sept chaînes, SOL comprise, et le multiple de revenu qu'il publie pour elle est bâti sur une série de frais douze mois, quand un multiple de revenu vaut ce que vaut la série qui lui sert de dénominateur. Cet article n'en retire rien : il y ajoute le contrôle qui manquait, celui de la robustesse d'une série au changement de format de la chaîne qu'elle mesure. Même chose pour les séries de revenu prises par le bon bout, où un flux ne se juge qu'une fois son émission déduite : la question n'est pas de savoir si ces séries valent quelque chose, mais où elles tiennent et où la dépendance reste ouverte.

Ce qui se jouera le 9 septembre, si la date tient, n'est donc pas la taille des transactions. C'est qu'un format qui ne dit pas sa propre version fait dépendre l'exactitude de milliers de chiffres publics de la lecture attentive d'une page de documentation par des équipes qui ne se connaissent pas. La correction existe, elle tient en un champ, elle n'a pas été retenue. La prochaine fois se prépare exactement de la même façon.

cryptodeep.io
Crypto Deep Research
Une série publique vaut ce que vaut le champ qu'elle lit.
CDR lit les spécifications avant de lire les dépêches.
Recevoir les analyses, gratuitement Accès Insiders disponible pour les dossiers complets.
Analyse exclusive · cryptodeep.io · aucun signal d'achat, aucun conseil en investissement

Questions fréquentes

Le format de transaction v1 est-il actif sur le réseau principal de Solana ?
Non. Au 5 septembre 2026, la porte de fonctionnalité n'existe pas sur le réseau principal : le compte n'est pas seulement inactif, il n'est pas créé, et l'appel qui devrait le lire ne renvoie rien. L'activation est prévue le 9 septembre, date annoncée le 29 août par un développeur d'Anza sur un réseau social et absente de tout document de la Solana Foundation comme d'Anza. Le format est actif sur testnet depuis le 2 septembre et sur devnet depuis le 3, mesures CDR sur la porte elle-même.

Les séries de revenus on-chain de Solana vont-elles devenir fausses ?
La série publique la plus citée mesure ce qui a été payé : son adaptateur, lu le 5 septembre 2026, n'ouvre aucune instruction ComputeBudget et déduit la part de priorité par soustraction. Elle ne casse donc pas par le chemin du scan des instructions ComputeBudget. Ce qui reste ouvert, et c'est sa seule dépendance, est le traitement des lignes v1 par le fournisseur de données en amont, qui n'est publié nulle part. Ce que le changement de format atteint, c'est ce qu'une transaction a demandé.

Un pipeline à jour est-il à l'abri ?
Pas entièrement. La première corruption vient d'un défaut de mise à jour et rend zéro. La seconde ne dépend d'aucune mise à jour : v0 exprime le frais de priorité en micro-lamports par unité de calcul, donc un prix, v1 en lamports au total, donc une quantité. Additionner les deux sans conversion mélange un prix et un total.

Comment un lecteur de la chaîne échoue-t-il bruyamment plutôt qu'en silence ?
Côté RPC, le mode bruyant existe et il est borné : sans le paramètre maxSupportedTransactionVersion réglé sur l'entier 1, getTransaction renvoie l'erreur -32015, getBlock échoue sur le bloc entier sans résultat partiel, et blockSubscribe se bloque au premier slot v1. Côté flux, il n'existe pas : aucun champ de version au protobuf, et un consommateur périmé relit une v1 comme une v0 avec un budget vide. La correction structurelle est proposée dans une issue Anza ouverte le 27 août, toujours ouverte au 5 septembre 2026.