Sound of AVM publie la v0.9.0 et met en musique le mempool d'Algorand en direct dans le navigateur
Sound of AVM, outil open source qui met en musique le mempool d'Algorand, sort la v0.9.0 : le gossip sans clé de Nodely remplace le polling, de nouveaux visualiseurs débarquent et les presets peuvent être frappés on-chain sous forme de NFT ARC-3.
Un réseau que l'on peut entendre
Algorand scelle un nouveau bloc toutes les quelques secondes, chacun venant figer ce que le réseau vient de faire — un paiement en stablecoin, un transfert d'actif, un appel de smart contract. La plupart des observateurs suivent ce trafic sous la forme de tableaux de hachages qui défilent sur un explorateur de blocs. Sound of AVM1 choisit l'écoute : un synthétiseur qui tourne dans le navigateur et convertit l'activité on-chain en musique, si bien qu'un réseau chargé sonne comme une salle pleine et qu'un réseau calme ressemble à un silence ponctué d'une note de temps à autre. Sa propre description est la plus précise qui soit : « Rien n'est préenregistré ; si vous entendez une note, c'est qu'une transaction vient d'avoir lieu. »
L'application lit le mempool — le vivier de transactions non confirmées en attente du prochain bloc — plutôt que l'historique des blocs : elle entend donc les transactions au moment où elles se propagent, avant le règlement. Chaque instrument prend la forme d'une carte de synthé, qui associe une règle — les transactions qui l'intéressent — à un son à jouer dès que l'une d'elles se présente. Le 26 juillet 2026, le projet a publié la v0.9.0, sa première version numérotée ; son guide intégré offre la prise en main la plus rapide de l'outil : chargez un preset, appuyez sur Start, et la barre d'espace lance ou coupe la musique depuis n'importe quel endroit de la page.
Un synthé par type de transaction
Le premier choix d'un synthé porte sur le type de transaction qu'il écoute. Toute la gamme des transactions Algorand est au menu — pay, axfer, appl, acfg, keyreg, afrz, stpf, hb, group, block — et chacune peut être affinée par sous-types. Un synthé pay peut filtrer sur le montant, l'expéditeur ou le destinataire ; un synthé axfer ajoute l'ID d'actif, l'opt-in, l'opt-out et le clawback; un synthé appl peut surveiller une application précise. C'est dans les filtres que l'outil devient chirurgical :
| Concept | Implication concrète |
|---|---|
| pay — paiements ALGO simples | Une plage de montants transforme la voix en détecteur de baleines : une note grave qui ne retentit que lorsqu'un paiement dépasse, disons, 5,000 ALGO. |
| axfer — transferts d'actifs | Les champs d'actif se cherchent par nom autant que par ID : taper « USDC » suffit pour qu'une voix ne se déclenche que lorsque ce jeton bouge. |
| appl — appels de smart contract | Suivez une application précise, ou les actifs et comptes étrangers que ses appels touchent, sans avoir à lire les journaux de transactions. |
| group — transactions groupées | Associez un synthé à group pour capter un jeton échangé sur un DEX : un swap est un groupe atomique, pas une transaction isolée. |
| block — une note par bloc | La section rythmique : un son déclenché à chaque tour certifié, qui donne à tout le reste une pulsation régulière. |
Le reste relève du design sonore. Cinq moteurs Tone.js2 se cachent derrière les voix — un synthé à voix unique pour des frappes sèches et percussives ; un synthé mono doté de son propre filtre pour les lignes de basse ; un synthé polyphonique pour les nappes qui se superposent ; et des variantes AM et FM pour des timbres métalliques ou de cloche. Un séquenceur à huit pas avance au rythme des transactions plutôt qu'à celui d'une horloge : le tempo du riff est donc celui du réseau — chaîne active, riff rapide. Le guide présente la hauteur comme un acte de composition : « Placez le type de transaction le plus fréquent en bas et le plus rare en haut, et vous obtenez basse et mélodie gratuitement. » Lorsqu'un synthé est déclenché plus vite que sa limite, le Mode tranche : Single laisse tomber le surplus, tandis qu'Aggr comprime la rafale en une seule frappe, plus longue et plus forte.
Du polling à un flux en direct
Le projet est né à l'Algorand Dev Retreat at Home, sous la forme d'un prototype en HTML et JavaScript purs, à partir d'un constat : le flux de transactions d'une chaîne est une forme de rythme. Cette première version interrogeait les transactions en attente toutes les 50 millisecondes via une API publique AlgoNode ou un nœud personnel, transmettait les résultats à Tone.js et demandait aux utilisateurs de ménager l'API gratuite. Brancher un nœud personnel supposait de modifier un en-tête CORS dans la configuration du nœud. Cela fonctionnait, avec des réserves : la précision de la programmation dépendait entièrement de l'intervalle de polling, et les limites de débit de l'API en faisaient un jouet plutôt qu'un outil de surveillance.
La v0.9.0 remplace toute la couche de données. Au lieu d'interroger l'API à intervalles réguliers, l'application ouvre un WebSocket sur la passerelle gossip mainnet de Nodely3 et décode les transactions signées directement dans le navigateur, au fil de leur diffusion par les relais. Le code ne cache rien du compromis : « Chaque transaction arrive au moment où elle se propage, avec son heure d'arrivée réelle — pas de polling, pas de comparaison de compteurs, pas de jeton. »
| Concept | Implication concrète |
|---|---|
| Prototype : polling d'une API publique toutes les 50 ms | Les notes arrivent quantifiées sur l'intervalle de polling, et le projet estimait que les limites de débit du palier gratuit plafonnaient l'écoute continue à environ cinq heures. |
| v0.9.0 : WebSocket gossip Nodely sans clé | Une note retentit au moment où la transaction se propage vers les relais, sans clé d'API ni nœud local. |
| Mise en tampon des groupes atomiques (~300 ms) | Les membres d'une transaction groupée sont rassemblés puis libérés en un seul événement : un swap sonne comme un geste unique plutôt que comme un bégaiement. |
Ce dernier détail compte autant pour l'auditeur que pour la synthèse : le client implémente dans le navigateur une partie du protocole de communication des relais d'Algorand — abonnement au tag de message des transactions, décodage des charges utiles msgpack, et mémorisation des transactions récemment vues sur deux générations, afin qu'une rediffusion par un relais ne déclenche pas deux fois la même note.
Des presets à frapper on-chain
Les configurations se transportent. Un preset est un fichier JSON décrivant chaque synthé et chaque réglage, conservé en local ou exporté pour être partagé ; la v0.9.0 encode en outre les presets et les jetons de preset frappés dans la barre d'adresse, si bien qu'une URL suffit à transmettre un son. Le bouton Wallet n'existe que pour une seule raison : frapper un preset on-chain sous la forme d'un « NFPreset ».
Le mécanisme mérite qu'on s'y arrête, car il exploite directement la machinerie d'émission de jetons d'Algorand. Algorand crée des actifs — les Algorand Standard Assets, ou ASA — sans qu'un smart contract soit nécessaire, et ARC-3 est, parmi eux, la convention applicable aux NFT : l'URL de l'actif pointe vers des métadonnées JSON hébergées sur IPFS, signalées par un suffixe '#arc3'. Un NFPreset est un ASA dont les métadonnées IPFS intègrent le preset sous forme de chaîne base64 compressée dans ses propriétés. En charger un suppose de récupérer les métadonnées de l'actif depuis l'indexeur, de télécharger le fichier depuis IPFS et de le décoder pour retrouver les voix. La feuille de route décrit le mint comme une unique transaction de création d'actif signée par le portefeuille, un marché d'échange de NFPresets étant renvoyé à une future v2.
Le format a déjà été éprouvé on-chain. L'actif « block anxiety » (nom d'unité NFP, offre totale 1) a été créé le 5 août 2025 depuis une adresse alimentée par hampelman.algo, le pseudonyme on-chain du développeur — ce qui correspond aux métadonnées d'exemple figurant dans le document de feuille de route du projet lui-même — et a été suivi de deux autres frappes du même preset, étiquetées NFP2 et NFP23. L'idée est discrètement étrange et plutôt fonctionnelle : un NFT n'est ici pas une image, mais une configuration d'instrument jouable, et en échanger un, c'est échanger du design sonore.
Petit, ouvert et toujours accordé
La version numérotée apporte aussi une série de visualisations qui donnent à voir les mêmes données — Territory, où chaque transaction revendique sa part de l'écran et « repousse le terrain en place », ainsi que Kintsugi Ledger et Music Box, aux côtés des plus anciens Score et Loom. Le bouton Record, censé capturer la sortie audio, n'est pas encore fonctionnel.
Le projet reste honnête sur ses propres limites. Le README d'origine note que « les transactions arrivent trop vite pour Tone.js, qui ne peut donc pas créer un horodatage unique pour chacune d'elles » — c'est la raison d'être du mode agrégé — et le code n'a fait l'objet d'aucun audit formel, ce qui est la norme pour un outil open source de cette envergure. Sa portée reste modeste : huit étoiles sur le dépôt d'origine, dans l'organisation Algorand Developer Retreat, une étoile sur la copie activement maintenue sous le compte personnel du développeur, et un unique article court d'un agrégateur d'actualités Algorand fin juillet 2026, qui décrivait l'ancienne architecture de polling — signe que la refonte n'a pas encore trouvé son public.
C'est le genre de projet qui n'existe que parce qu'un hackathon a permis à un développeur de poursuivre une idée étrange : l'activité d'une blockchain possède un tempo qui mérite d'être entendu. Le code reste ouvert et son mainteneur accueille les suggestions depuis l'époque du prototype. Pour quiconque a déjà trouvé un explorateur de blocs hypnotique de la mauvaise façon, écouter le réseau — des basses pour les baleines, une mélodie pour les événements rares, un synthé block qui tient la mesure — constitue une manière vraiment nouvelle de regarder une chaîne fonctionner.
Sources
Autres sources (7)
- The Sound of AVM — organisation Algorand Developer Retreat (prototype) github.com
- The Sound of AVM — dépôt de développement actif github.com
- Couverture Algorand par PXke algorand.pxke.me
- Verifiably Random: S2:E8 - Inside the open-source coding at the Algorand Dev Retreat algorand.co
- Publication de @algorand.pxke.me — Bluesky bsky.app
- RelayUrl path and query issues · Issue #735 · mikedilger/gossip github.com
- QuickStart | Nodely nodely.io