Sound of AVM v0.9.0 превращает живой мемпул Algorand в музыку прямо в браузере
Открытый сонификатор мемпула Algorand Sound of AVM выпускает v0.9.0: gossip-канал Nodely без ключей приходит на смену опросу API, появляются новые визуализации, а пресеты можно минтить в сети как NFT стандарта ARC-3.
Сеть, которую можно услышать
Algorand закрывает новый блок каждые несколько секунд, и в каждом таком блоке запечатано всё, что сеть только что сделала: платёж стейблкоином, перевод актива, вызов смарт-контракта. Большинство наблюдает за этим потоком как за прокручивающимися таблицами хешей в обозревателе блоков. Sound of AVM1 вместо этого слушает: браузерный синтезатор превращает живую активность в сети в музыку, поэтому загруженная сеть звучит как шумная комната, а спокойная — как тишина с редкими нотами. Точнее всего проект описывает себя сам: «Ничего не записано заранее; если вы слышите ноту, значит, только что прошла транзакция».
Приложение читает мемпул — пул неподтверждённых транзакций, ожидающих следующего блока, — а не историю блоков, поэтому слышит транзакции в момент их распространения, ещё до расчётов. Каждый инструмент — это карточка синтезатора, где правило (какие транзакции ему интересны) соединено со звуком, который играет при поступлении такой транзакции. 26 июля 2026 года проект выпустил v0.9.0 — первый релиз с номером версии; встроенное руководство даёт самый быстрый способ освоиться: загрузите пресет, нажмите Start, а пробел останавливает и снова запускает музыку из любого места страницы.
Один синтезатор на каждый тип транзакции
Первое, что выбирает синтезатор, — тип транзакции, за которой он следит. В меню представлен весь набор транзакций Algorand — pay, axfer, appl, acfg, keyreg, afrz, stpf, hb, group, block — и каждую можно сузить по подтипам. Синтезатор pay умеет фильтровать по сумме, отправителю или получателю; у axfer добавляются ID актива, opt-in, opt-out и clawback; синтезатор appl может следить за конкретным приложением. Именно в фильтрах инструмент становится по-настоящему точным:
| Концепция | Что это значит на практике |
|---|---|
| pay — обычные платежи в ALGO | Диапазон сумм превращает голос в детектор китов: низкая нота звучит только тогда, когда платёж превышает, скажем, 5,000 ALGO. |
| axfer — переводы активов | Список активов ищет и по названию, и по ID, так что достаточно набрать «USDC», чтобы голос звучал только при движении этого токена. |
| appl — вызовы смарт-контрактов | Можно следить за одним приложением или за сторонними активами и счетами, которых касаются его вызовы, не читая логи транзакций. |
| group — групповые транзакции | Свяжите синтезатор с group, чтобы поймать обмен токена на DEX, ведь своп — это атомарная группа, а не отдельная транзакция. |
| block — одна нота на блок | Ритм-секция: звук срабатывает раз за сертифицированный раунд и задаёт устойчивый бит всему остальному. |
Всё остальное — звуковой дизайн. Под голосами работают пять движков Tone.js2: одноголосный синтезатор для коротких перкуссионных ударов, монофонический со своим фильтром для басовых линий, полифонический для накладывающихся пэдов и варианты AM и FM для металлических или колокольных тембров. Восьмишаговый секвенсор продвигается не по часам, а по транзакциям, поэтому темп риффа задаёт сама сеть: загруженный блокчейн — быстрый рифф. Руководство предлагает думать о высоте тона как о композиции: «Поставьте самый частый тип транзакций вниз, а самый редкий — вверх, и бас с мелодией получите бесплатно». Когда синтезатор срабатывает чаще, чем позволяет его предел, исход определяет режим Mode: Single отбрасывает лишнее, а Aggr сворачивает всплеск в один более длинный и громкий удар.
От опроса API к живому потоку
Проект начался на Algorand Dev Retreat at Home как прототип на чистом HTML и JavaScript; его породило наблюдение, что поток транзакций блокчейна — это своего рода ритм. Та первая версия каждые 50 миллисекунд опрашивала ожидающие транзакции через публичный API AlgoNode или собственный узел, передавала результаты в Tone.js и просила пользователей бережно относиться к бесплатному API. Чтобы подключить собственный узел, нужно было переключить заголовок CORS в его конфигурации. Работало это с оговорками: точность привязки ко времени зависела от интервала опроса, а ограничения на частоту запросов превращали инструмент скорее в игрушку, чем в монитор.
В v0.9.0 весь слой данных заменён. Вместо опроса приложение открывает WebSocket к gossip-шлюзу mainnet от Nodely3 и декодирует подписанные транзакции прямо в браузере по мере того, как их рассылают релеи. В коде об этом сказано прямо: «Каждая транзакция приходит по мере распространения, со своим реальным временем прибытия — никакого опроса, никакого сравнения счётчиков, никаких токенов».
| Концепция | Что это значит на практике |
|---|---|
| Прототип: опрос публичного API каждые 50 мс | Ноты приходят квантованными по интервалу опроса, а по оценке проекта ограничения бесплатного тарифа позволяли слушать непрерывно примерно пять часов. |
| v0.9.0: gossip-WebSocket Nodely без ключей | Нота звучит, когда транзакция расходится по релеям; ни API-ключа, ни локального узла не нужно. |
| Буферизация атомарных групп (~300 мс) | Участники групповой транзакции собираются и сбрасываются одним событием, поэтому своп звучит как единый жест, а не как заикание. |
Последняя деталь важна для слушателя не меньше, чем сам синтез: клиент реализует в браузере часть протокола обмена релеев Algorand — подписывается на тег сообщений о транзакциях, декодирует их msgpack-полезную нагрузку и помнит недавно увиденные транзакции на протяжении двух поколений, чтобы повторная рассылка от релея не заставляла ноту звучать дважды.
Пресеты, которые можно минтить прямо в сети
Раскладки переносимы. Пресет — это JSON-файл с описанием всех синтезаторов и настроек; его можно сохранить локально или выгрузить, чтобы поделиться. В v0.9.0 пресеты и выпущенные токены-пресеты также кодируются в адресной строке, так что для передачи звука достаточно ссылки. Кнопка Wallet нужна ровно для одного: чтобы минтить пресет в сети как «NFPreset».
Механизм стоит разобрать подробнее, ведь он напрямую задействует встроенную токенную машинерию Algorand. Algorand выпускает активы — Algorand Standard Assets, или ASA — не прибегая к смарт-контракту, и ARC-3 — это принятая для таких NFT конвенция: URL актива указывает на JSON-метаданные, размещённые в IPFS, с суффиксом «#arc3». NFPreset — это ASA, в метаданных IPFS которого пресет встроен в свойства в виде сжатой строки base64. Загрузка такого пресета означает: получить метаданные актива из индексатора, забрать файл из IPFS и декодировать его обратно в голоса. В дорожной карте минт описан как одна транзакция создания актива, подписанная кошельком; торговая площадка для обмена NFPresets отложена до будущей v2.
Формат уже опробован в сети. Актив «block anxiety» (unit name — NFP, общий объём выпуска — 1) был создан 5 августа 2025 года с адреса, который пополнил hampelman.algo, сетевой псевдоним разработчика, — метаданные совпадают с примером из дорожной карты самого проекта. Затем последовали ещё два минта того же пресета с метками NFP2 и NFP23. Замысел тихо странный и вполне рабочий: NFT здесь — не картинка, а играбельная конфигурация инструментов, и торговля таким токеном — это торговля звуковым дизайном.
Маленький, открытый и всё ещё настроен
Нумерованный релиз принёс и ряд визуализаций, которые рисуют те же данные картинками: Territory, где каждая транзакция отвоёвывает свою долю экрана и «вытесняет стоящую рядом территорию», а также Kintsugi Ledger и Music Box — в дополнение к появившимся ранее Score и Loom. Кнопка Record, предназначенная для записи звука на выходе, пока не подключена.
Проект честно говорит о своих ограничениях. В исходном README сказано: «Транзакции приходят слишком быстро для Tone.js, и он не успевает присвоить каждой уникальную метку времени» — отсюда и агрегированный режим. Формального аудита кодовой базы нет — обычное дело для открытого инструмента такого масштаба. Охват у него скромный: восемь звёзд у исходного репозитория в организации Algorand Developer Retreat, одна — у активно поддерживаемой копии в личном аккаунте разработчика и единственная короткая заметка новостного агрегатора об Algorand в конце июля 2026 года, где описывалась прежняя архитектура с опросом. Похоже, обновление пока не нашло своей аудитории.
Такие проекты появляются только потому, что хакатон позволил одному разработчику пойти за странной идеей: у активности блокчейна есть темп, который стоит услышать. Код по-прежнему открыт, и мейнтейнер приветствует предложения ещё со времён прототипа. Для тех, кого обозреватель блоков завораживал не тем, чем нужно, послушать сеть — бас для китов, мелодия для редких событий, синтезатор блоков, отбивающий ритм, — действительно новый способ наблюдать за работой блокчейна.
Источники
- Sound of AVM1
- The Sound of AVM — Algorand Developer Retreat organization (prototype)4
- The Sound of AVM — active development repository5
- PXke Algorand coverage
- Verifiably Random: S2:E8 - Inside the open-source coding at the Algorand Dev Retreat6
- Post by @algorand.pxke.me — Bluesky7
- RelayUrl path and query issues · Issue #735 · mikedilger/gossip8
- QuickStart | Nodely9
Источники
- 1Sound of AVM soundofavm.online↩
- 2Tone.js tonejs.github.io↩
- 3Nodely nodely.io↩
- 4The Sound of AVM — Algorand Developer Retreat organization (prototype) github.com↩
- 5The Sound of AVM — active development repository github.com↩
- 6Verifiably Random: S2:E8 - Inside the open-source coding at the Algorand Dev Retreat algorand.co↩
- 7Post by @algorand.pxke.me — Bluesky bsky.app↩
- 8RelayUrl path and query issues · Issue #735 · mikedilger/gossip github.com↩
- 9QuickStart | Nodely nodely.io↩