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
- Если передан
login, вычисляет PDAuser_login=<login>программыSHiNEPr1APdAgNBteUyBXcNovaHctpSjUu8oH2ZJdN6и читаетblockchainKey. - Если передан
key, использует его напрямую и не обращается к Solana. - Из Ed25519/Solana public key вычисляет Arweave owner address как
base64url(SHA-256(pubkey32)). - Делает Arweave GraphQL запрос по owner +
App=test5590; при наличииchannelдобавляет тегc=<channel>. - Загружает payload каждого DataItem через gateway
/<DataItemId>. - Разбирает payload как SHiNE Frame v1 (
frameCode=0x0001, header 56 bytes). - Дедуплицирует повторно опубликованные одинаковые пользовательские блоки по SHA-256 Frame v1.
- Восстанавливает канал/сообщения тем же body parser, который использовал старый viewer.
Важно
При фильтрации по конкретному channel viewer получает только блоки с соответствующим тегом c. Поэтому он не заявляет полную проверку глобальной prevHash-цепочки пользователя: между двумя блоками одного канала могут существовать блоки других каналов. SHA-256 каждого загруженного Frame вычисляется локально.
Старый shine-solana-arweave-viewer/ не изменяется; новая версия лежит отдельно в shine-solana-arweave-viewer-v2/.