Files
SHiNE-server/shine-UI/static-sites/arweave-viewer
qandClaude Opus 5.5 2e62616b46 UI v4: новый стиль по макету V3/V4 и доводка экранов
Палитра «Сияние» по умолчанию, новые роли цветов. Лента канала: плоские записи, ряд действий
с равным шагом иконок, дата у записи. Обсуждение со строкой ввода, личный чат, шторки.
Вход и регистрация: стартовый экран (надпись «СИЯНИЕ», сияние мандалы), настройки входа
со статусами серверов, статус логина в одну строку, вход с другого устройства (код, таймер, шаги),
сохранение ключей с переключателями. Корневые разделы – заголовок по центру; фильтр чатов –
переключатель; уведомления – список как в чатах; фото – просмотр на весь экран.
Общее: один зазор под шапкой (--page-top-gap), переключатели высотой с поле ввода,
второстепенные кнопки по одной роли (в том числе на экранах устройств и серверов),
иконки только из ui-icon.js, полоса прокрутки скрыта, среднее тире в текстах интерфейса.

Что нужно от сервера и разработчика – docs/UI-Design/UI-v4-for-dev.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 01:36:52 +03:00
..

SHiNE Arweave Viewer v2 — ANS-104 / Frame v1

Новая версия viewer для формата, где каждый пользовательский блок хранится в Arweave как отдельный ANS-104 DataItem, а data DataItem содержит один SHiNE Frame v1.

Основной файл: index.html.

Быстрый запуск

Через логин (ключ берётся из Solana PDA):

index.html?login=aidarkc&channel=books

Напрямую через blockchain public key, без Solana:

index.html?key=<BASE58_BLOCKCHAIN_PUBLIC_KEY>&channel=books

Дополнительные параметры:

&arweaveGateway=https://arweave.net
&solanaRpc=https://api.mainnet-beta.solana.com

channel можно не передавать. Тогда viewer ищет все DataItem пользователя с App=test5590 и строит список каналов из найденных блоков.

Что делает viewer

  1. Если передан login, вычисляет PDA user_login=<login> программы SHiNEPr1APdAgNBteUyBXcNovaHctpSjUu8oH2ZJdN6 и читает blockchainKey.
  2. Если передан key, использует его напрямую и не обращается к Solana.
  3. Из Ed25519/Solana public key вычисляет Arweave owner address как base64url(SHA-256(pubkey32)).
  4. Делает Arweave GraphQL запрос по owner + App=test5590; channel применяется локально после загрузки авторского блокчейна.
  5. Загружает payload каждого DataItem через gateway /<DataItemId>.
  6. Разбирает payload как SHiNE Frame v1 (frameCode=0x0001, header 56 bytes).
  7. Дедуплицирует повторно опубликованные одинаковые пользовательские блоки по SHA-256 Frame v1.
  8. Восстанавливает канал/сообщения тем же body parser, который использовал старый viewer.

Важно

При фильтрации по конкретному channel viewer получает только блоки с соответствующим тегом c. Поэтому он не заявляет полную проверку глобальной prevHash-цепочки пользователя: между двумя блоками одного канала могут существовать блоки других каналов. SHA-256 каждого загруженного Frame вычисляется локально.

Старый shine-solana-arweave-viewer/ не изменяется; новая версия лежит отдельно в shine-solana-arweave-viewer-v2/.

Проверка данных (v3.3)

Нижняя строка показывает краткий итог доступных проверок. Нажатие на неё или ⋮ → Проверка данных открывает отдельный экран:

  • локально вычисленный SHA-256 каждого SHiNE Frame;
  • prevHash общей цепочки, когда предыдущий глобальный блок загружен;
  • prevLineHash канальной цепочки, когда указанный предыдущий блок загружен;
  • наличие DataItem в выборке Arweave owner соответствующего blockchain key;
  • разрывы «нет данных» отдельно от доказанных несовпадений;
  • честный статус ANS-104 signature: gateway payload/GraphQL не содержит сырой подписи, поэтому она не помечается как локально перепроверенная.

○ нет данных не является ошибкой. ⚠ появляется только при фактическом несовпадении доступных хэшей.