SHA256
46 lines
2.7 KiB
Markdown
46 lines
2.7 KiB
Markdown
# SHiNE Arweave Viewer v2 — ANS-104 / Frame v1
|
||
|
||
Новая версия viewer для формата, где каждый пользовательский блок хранится в Arweave как отдельный ANS-104 DataItem, а `data` DataItem содержит один `SHiNE Frame v1`.
|
||
|
||
Основной файл: `index.html`.
|
||
|
||
## Быстрый запуск
|
||
|
||
Через логин (ключ берётся из Solana PDA):
|
||
|
||
```text
|
||
index.html?login=aidarkc&channel=books
|
||
```
|
||
|
||
Напрямую через blockchain public key, без Solana:
|
||
|
||
```text
|
||
index.html?key=<BASE58_BLOCKCHAIN_PUBLIC_KEY>&channel=books
|
||
```
|
||
|
||
Дополнительные параметры:
|
||
|
||
```text
|
||
&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` добавляет тег `c=<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/`.
|