SDK для метаданных ARC-89 готов в Testnet, реестр в MainNet пока не развёрнут
TypeScript-SDK Фонда Algorand для ARC-89 хранит описания активов в box-хранилище приложения-реестра, а не в off-chain файле. Он работает в Testnet, где на 27 октября в реестре было 20 записей; в спецификации строка развёртывания для MainNet по-прежнему значится как TBD.

Разработчик, которому нужно хранить описание актива Algorand в самой сети, а не в файле на хостинге, теперь может воспользоваться пакетом на TypeScript. SDK asa-metadata-registry-ts1 — это клиент для ARC-892, реестра метаданных ASA: одного приложения, в box-хранилище которого хранится по одной записи на каждый актив, с ключом из восьмибайтового ID актива. Стандарт поддерживает и публикует SDK Фонд Algorand3.
Согласно документации, пакет читает запись одним вызовом к ноде или через симуляцию, которая возвращает то, что видит смарт-контракт. Он создаёт, заменяет и удаляет записи, разбивает большие метаданные на части и переносит активы, описанные по более старым стандартам ARC-3, ARC-19 и ARC-69. Релиз, который довёл пакет до этого состояния, невелик: v1.0.0-beta.104, опубликованный 21 октября, содержит одно исправление ошибки и обновление инструмента сборки, которое закрыло уязвимость высокой серьёзности из аудита. Существенное изменение вышло днём раньше: несовместимый v1.0.0-beta.95, который, судя по его примечаниям к релизу, ориентирован на контракты реестра v1.0.0 под AVM 13.
Как запись хранится в сети
Описательные поля Algorand Standard Asset фиксируются при создании: название, единица измерения, общее предложение, количество знаков после запятой и URL. Всё, что видит покупатель — изображение, описание, атрибуты, — приходилось хранить в другом месте: в файле IPFS за URL или в JSON-заметке в транзакции конфигурации. Реестр переносит в состояние сети меньшую, структурированную часть. Каждая запись содержит фиксированный заголовок из 516 байт с флагами обратимости и необратимости и хешем, который связывает содержимое. Чтение идёт через algod, API ноды, либо напрямую из другого смарт-контракта на AVM.
Последний путь заслуживает отдельного внимания. Контракт, который может прочитать запись актива в той же группе, что и перевод этого актива, может учитывать его атрибуты в момент расчётов, а не полагаться на внешний источник данных. AVM 137, вышедшая вместе с Go-Algorand 5.0.08 в августе, добавила опкоды «foreign» для чтения box-ов другого приложения.
Сколько это стоит
Речь идёт не о комиссии, а о депозите. В кулинарной книге SDK создание записи размером 117 байт выводит платёж минимального баланса 72 9009 microALGO, или 0,0729 ALGO. В примере удаления для записи меньшего размера возвращается 37 70010 microALGO. Спецификация рассчитывает сумму как фиксированный сбор плюс ставку за байт, умноженную на размер изменения, по ключу box-а, заголовку и метаданным. Оба параметра доступны клиентам для чтения. Депозит возвращается при удалении записи.
Пробел на месте MainNet
Три места должны были бы указывать на реестр в MainNet, и все три пусты. В таблице развёртывания из спецификации для MainNet стоит «TBD». В файле развёртывания SDK идентификатор приложения для mainnet равен null, с комментарием «mainnet app id is TBD». Открытый issue11, в котором перечислены шаги после развёртывания, заканчивается строкой «Блокируется развёртыванием реестра в MainNet.12»
Автор описывает это как близкое событие. Козимо Басси, публикующий под именем @cusma_b, написал 20 октября, что ARC-89 «приближается к MainNet», а SDK на Python и TypeScript «обновлены до v1.0.013 и близки к релизу». Слитый им pull request к спецификации говорит, что он «закрывает последние пробелы в ARC-89 перед развёртыванием в MainNet14».
Два реестра в Testnet, один из них актуальный
SDK указывает на приложение 77296835415 в Testnet. Это приложение существует в Testnet, не удалено, а его box-хранилище содержало 20 записей метаданных при чтении 27 октября. Страница ARC-89 на Портале разработчика Algorand по-прежнему называет приложение 7533240841617 и называет поле версии записи «Last Modified Round». Спецификация и SDK используют 772968354 и название «Revision». Оба приложения существуют в Testnet, и ни одно не удалено. Разработчик, который следует порталу, пишет код под более старое из них.
Lora18, обозреватель, поставляемый с AlgoKit, как сообщил PXke в августе, читал запись реестра по состоянию на 2.4.019-beta.
Установка по умолчанию — заглушка
При упаковке пакета есть нюанс, который стоит знать до установки. В npm запись пакета в реестре20 показывает, что теги «latest» и «beta» указывают на 0.0.1-beta.0 — релиз от 27 марта, который описывает себя как «asa-metadata-registry-sdk placeholder for Algorand». Рабочий код находится под тегом «main», версия 1.0.0-beta.10. По данным времени публикации npm, между 27 апреля и 20 октября новых версий не появлялось. Репозиторий при этом развивался: на странице релиза beta.5 указано 11521 коммитов в main с момента этого релиза.
Что запись гарантирует, а что нет
Реестр определяет, кто может писать, каким может быть размер записи и можно ли её менять. Право на запись принадлежит адресу менеджера актива, а не его создателю. Менеджер может объявить запись неизменяемой, а спецификация гласит, что сам реестр после развёртывания никогда не должен обновляться. Реестр рассматривает тело метаданных как непрозрачные байты, поэтому потребители должны проверять запись и заявленные в ней флаги, прежде чем им доверять. Ни в спецификации, ни в справочном репозитории, ни в репозитории TypeScript не упоминается аудит безопасности.
Насколько это используется
Использование скромное, но поддаётся измерению. По состоянию на 27 октября npm-пакет зафиксировал 36 загрузок за последнюю неделю и 96 за последний месяц.
- Записи метаданных в TestNet: 20 записи.
- Минимальный баланс для небольшой записи: 72,900 microALGO.
- Загрузки SDK за прошлый месяц: 96 загрузки.
В файле внедрения22 самого стандарта пока не указано ни одного кошелька, инструмента, инфраструктуры или dapp, а один обозреватель находится в разработке. В заголовке спецификации по-прежнему стоит статус «Last Call» с крайним сроком 1 февраля 2026 года.23
Разработчик, который пробует SDK сегодня, фиксирует тег main, указывает приложение 772968354 и работает в Testnet.
Источники
- Release v1.0.0-beta.10 · algorandfoundation/asa-metadata-registry-ts · GitHub4
- github.com1
- ARCs/ARCs/arc-0089.md at main · algorandfoundation/ARCs · GitHub2
- Release v1.0.0-beta.9 · algorandfoundation/asa-metadata-registry-ts · GitHub5
- registry.npmjs.org20
- feat(deployments): add the MainNet registry deployment · Issue #133 · algorandfoundation/asa-metadata-registry-ts1124
- raw.githubusercontent.com: /algorandfoundation/ARCs/main/adoption/arc-0089.yaml22
- ARC-89: AVM 13, global revision tracker, content-only metadata hash, canonical discovery by cusma · Pull Request #481 ·25
- raw.githubusercontent.com: /algorandfoundation/asa-metadata-registry-ts/main/docs/cookbook.md26
- Release v1.0.0 · algorandfoundation/arc89 · GitHub27
- MainNet and TestNet Update: Go-Algorand 5.0.0 - Announcements - Algorand28
- x.com29
- Release v1.0.0-beta.5 · algorandfoundation/asa-metadata-registry-ts · GitHub30
- Issues · algorandfoundation/asa-metadata-registry-ts · GitHub31
18 цифр в этом материале проверено. 2 прочитано напрямую из блокчейна.Все проверки
Источники
- 1asa-metadata-registry-ts github.com↩
- 2ARC-89 github.com↩
- 3Фонд Algorand github.com↩
- 4v1.0.0-beta.10 github.com↩
- 5v1.0.0-beta.9 github.com↩
- 11Открытый issue github.com↩
- 15772968354 lora.algokit.io↩
- 16753324084 lora.algokit.io↩
- 18Lora lora.algokit.io↩
- 20запись пакета в реестре registry.npmjs.org↩
- 22файле внедрения raw.githubusercontent.com↩
- 25ARC-89: AVM 13, global revision tracker, content-only metadata hash, canonical discovery by cusma · Pull Request #481 · github.com↩
- 26raw.githubusercontent.com/algorandfoundation/asa-metadata-registry-ts/main/docs/cookbook.md raw.githubusercontent.com↩
- 27Release v1.0.0 · algorandfoundation/arc89 · GitHub github.com↩
- 28MainNet and TestNet Update: Go-Algorand 5.0.0 - Announcements - Algorand forum.algorand.co↩
- 29x.com/cusma_b/status/2112579605584355771 x.com↩
- 30Release v1.0.0-beta.5 · algorandfoundation/asa-metadata-registry-ts · GitHub github.com↩
- 31Issues · algorandfoundation/asa-metadata-registry-ts · GitHub github.com↩