Le SDK de métadonnées ARC-89 est prêt sur Testnet, mais le registre MainNet reste à définir
Le SDK TypeScript de la Fondation Algorand pour ARC-89 stocke les descriptions d'actifs dans le box storage d'une application de registre, plutôt que dans un fichier hébergé hors chaîne. Il fonctionne sur Testnet, où le registre comptait 20 enregistrements au 27 octobre ; l'entrée de déploiement sur MainNet de la spécification affiche toujours « TBD ».

Un développeur qui souhaite que la description d'un actif Algorand soit inscrite sur la chaîne, plutôt que dans un fichier hébergé ailleurs, dispose désormais d'un package TypeScript pour y parvenir. Le SDK asa-metadata-registry-ts1 est un client pour ARC-892, le registre de métadonnées des ASA : une application unique dont le box storage contient un enregistrement par actif, indexé par l'identifiant de l'actif sur huit octets. La Fondation Algorand3 parraine la norme et publie le SDK.
Selon sa documentation, le package lit un enregistrement en un seul appel à un nœud, ou via une simulation qui renvoie ce qu'un smart contract voit. Il crée, remplace et supprime des enregistrements. Il découpe les métadonnées volumineuses en fragments. Il permet aussi de migrer les actifs décrits selon les conventions plus anciennes ARC-3, ARC-19 et ARC-69. La version qui a amené le SDK à cet état est modeste : la v1.0.0-beta.104, publiée le 21 octobre, ne contient qu'une correction de bug et la mise à jour d'un outil de build pour corriger un avis d'audit de sévérité élevée. La version substantielle est arrivée la veille : la v1.0.0-beta.95, une version aux changements incompatibles, cible les contrats v1.0.0 du registre sur l'AVM 13, selon ses notes de version.
Comment un enregistrement est inscrit sur la chaîne
Les champs descriptifs d'un Algorand Standard Asset sont figés à sa création : son nom, son unité, son offre totale, ses décimales et son URL. Tout ce qu'un acheteur consulte devait donc être stocké ailleurs : l'image, la description, les attributs, dans un fichier IPFS derrière l'URL, ou dans une note JSON d'une transaction de configuration. Le registre place plutôt la partie plus petite et structurée dans l'état de la chaîne. Chaque enregistrement comporte un en-tête fixe de 516 octets, avec des indicateurs réversibles et irréversibles, ainsi qu'un hachage qui lie son contenu. La lecture passe par algod, l'API du nœud, ou directement depuis un autre smart contract sur l'AVM.
Ce dernier cheminement mérite qu'on s'y arrête. Un contrat capable de lire l'enregistrement d'un actif dans le même groupe de transactions que celui qui transfère cet actif peut agir sur ses attributs au moment du règlement, sans avoir à faire confiance à un flux externe. L'AVM 137, livrée avec Go-Algorand 5.0.08 en août, a ajouté des opcodes « foreign » permettant de lire les boxes d'une autre application.
Ce que cela coûte
La somme en jeu est un dépôt, et non des frais. Dans le cookbook du SDK, la création d'un enregistrement de 117 octets affiche un paiement au solde minimum de 72 9009 microALGO, soit 0,0729 ALGO. L'exemple de suppression renvoie 37 70010 microALGO pour un enregistrement plus petit. La spécification calcule ce montant comme une charge forfaitaire, plus un tarif par octet multiplié par la taille de la variation, en tenant compte de la clé de box, de l'en-tête et des métadonnées. Elle expose les deux paramètres pour que les clients puissent les lire. Le dépôt est restitué lorsque l'enregistrement est supprimé.
Le vide là où devrait se trouver MainNet
Trois emplacements devraient désigner un registre sur MainNet, et les trois sont vides. La table de déploiement de la spécification indique « TBD » pour MainNet. Le fichier de déploiement du SDK fixe l'identifiant de l'application mainnet à null, avec le commentaire « mainnet app id is TBD ». Une issue ouverte11, qui liste les étapes à suivre après le déploiement, se termine par la ligne « Blocked on the MainNet deployment of the registry.12 »
L'auteur présente la mise en service comme imminente. Cosimo Bassi, qui publie sous le nom @cusma_b, a écrit le 20 octobre qu'ARC-89 « approche de MainNet » et que les SDK Python et TypeScript « ont été mis à jour vers v1.0.013 et sont sur le point d'être publiés ». Une pull request qu'il a fusionnée dans la spécification indique qu'elle « comble les dernières lacunes d'ARC-89 avant le déploiement sur MainNet14 ».
Deux registres Testnet, dont un seul est à jour
Le SDK pointe vers l'application 77296835415 sur Testnet. Cette application existe sur Testnet, n'a pas été supprimée, et son box storage contient 20 enregistrements de métadonnées, relevés le 27 octobre. La page ARC-89 du Portail développeurs Algorand mentionne encore l'application 7533240841617 et désigne le champ de version de l'enregistrement sous le nom « Last Modified Round ». La spécification et le SDK utilisent 772968354 et le nom « Revision ». Les deux applications existent sur Testnet et aucune n'a été supprimée. Un développeur qui suit le portail écrit donc son code pour la plus ancienne.
Lora18, l'explorateur livré avec AlgoKit, a été signalé par PXke en août comme capable de lire un enregistrement du registre à partir de sa version 2.4.019-beta.
L'installation par défaut est un espace réservé
Le package présente une particularité de empaquetage qu'il vaut mieux connaître avant l'installation. Sur npm, la fiche du package20 montre que les étiquettes « latest » et « beta » renvoient toutes deux à la version 0.0.1-beta.0, une publication du 27 mars qui se décrit comme « asa-metadata-registry-sdk placeholder for Algorand ». Le code fonctionnel se trouve sous l'étiquette « main », à la version 1.0.0-beta.10. Selon les dates de publication de npm, aucune version n'est parue entre le 27 avril et le 20 octobre. Le dépôt, lui, évoluait : la page de la version beta.5 indique 11521 commits sur main depuis cette version.
Ce que l'enregistrement garantit et ce qu'il ne garantit pas
Le registre contrôle qui peut écrire, la taille maximale d'un enregistrement et la possibilité de le modifier. L'autorisation revient à l'adresse gestionnaire de l'actif, et non à son créateur. Un gestionnaire peut déclarer un enregistrement immuable, et la spécification précise que le registre lui-même ne doit jamais être mis à jour une fois déployé. Le registre traite le corps des métadonnées comme des octets opaques : les consommateurs doivent donc valider un enregistrement et ses indicateurs avant de s'y fier. Ni la spécification, ni le dépôt de référence, ni le dépôt TypeScript ne mentionnent d'audit de sécurité.
Quelle est l'ampleur de l'usage
L'usage reste faible et mesurable. Au 27 octobre, le package npm avait enregistré 36 téléchargements sur la dernière semaine et 96 sur le dernier mois.
- Metadata records on TestNet: 20 records.
- Minimum balance for a small record: 72,900 microALGO.
- Téléchargements du SDK le mois dernier: 96 downloads.
Le fichier d'adoption22 de la norme ne recense encore aucun portefeuille, outil, infrastructure ou dapp, et un seul explorateur en cours de développement. L'en-tête de la spécification indique toujours « Last Call » avec une échéance fixée au 1er février 2026.23
Un développeur qui essaie le SDK aujourd'hui épingle l'étiquette main, pointe vers l'application 772968354 et travaille sur Testnet.
18 chiffres de cet article sont vérifiés. 2 ont été lus directement sur la chaîne.Voir toutes les vérifications
Sources
- 1github.com/algorandfoundation/asa-metadata-registry-ts github.com↩
- 2ARCs/ARCs/arc-0089.md at main · algorandfoundation/ARCs · GitHub github.com↩
- 3Fondation Algorand github.com↩
- 4Release v1.0.0-beta.10 · algorandfoundation/asa-metadata-registry-ts · GitHub github.com↩
- 5Release v1.0.0-beta.9 · algorandfoundation/asa-metadata-registry-ts · GitHub github.com↩
- 11feat(deployments): add the MainNet registry deployment · Issue #133 · algorandfoundation/asa-metadata-registry-ts github.com↩
- 15772968354 lora.algokit.io↩
- 16753324084 lora.algokit.io↩
- 18Lora lora.algokit.io↩
- 20registry.npmjs.org/@algorandfoundation/asa-metadata-registry-sdk registry.npmjs.org↩
- 22raw.githubusercontent.com/algorandfoundation/ARCs/main/adoption/arc-0089.yaml raw.githubusercontent.com↩
Autres sources (7)
- ARC-89: AVM 13, global revision tracker, content-only metadata hash, canonical discovery by cusma · Pull Request #481 · github.com
- raw.githubusercontent.com/algorandfoundation/asa-metadata-registry-ts/main/docs/cookbook.md raw.githubusercontent.com
- Release v1.0.0 · algorandfoundation/arc89 · GitHub github.com
- MainNet and TestNet Update: Go-Algorand 5.0.0 - Announcements - Algorand forum.algorand.co
- x.com/cusma_b/status/2112579605584355771 x.com
- Release v1.0.0-beta.5 · algorandfoundation/asa-metadata-registry-ts · GitHub github.com
- Issues · algorandfoundation/asa-metadata-registry-ts · GitHub github.com