Files
SHiNE-server/shine-UI/static-sites/arweave-viewer/README.md
T

4.0 KiB
Raw Blame History

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 не содержит сырой подписи, поэтому она не помечается как локально перепроверенная.

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