Files
SHiNE-server/shine-solana-arweave-viewer/КАК_ЭТО_РАБОТАЕТ.md
T

115 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SHiNE Solana Arweave Viewer: как это работает
## Что лежит в папке
Основной и единственный рабочий файл viewer:
- `index.html`
Это автономный single-file viewer:
- весь HTML внутри одного файла;
- все стили внутри этого же файла;
- весь JavaScript внутри этого же файла;
- локальная копия `solana-web3` тоже встроена внутрь этого же файла.
Для запуска viewer достаточно открыть один `index.html`.
## Что делает viewer
Viewer открывается как обычная HTML-страница и работает полностью в браузере.
Он умеет:
- принимать логин пользователя SHiNE;
- принимать `Solana RPC` через форму или через URL-параметр;
- принимать `Arweave gateway` через форму или через URL-параметр;
- сохранять эти значения в `localStorage`;
- вычислять `user_pda` по логину для программы `shine_users`;
- читать `PDA` напрямую из `Solana`;
- распарсивать содержимое записи `shine_users`;
- показывать ключи, лимиты, номер записи, блокчейн пользователя и `Arweave tx id`;
- строить прямую ссылку на `Arweave`, если `tx id` есть в записи.
## Какие URL-параметры поддерживаются
Viewer понимает такие параметры:
- `login`
- `solanaRpc`
- `arweaveGateway`
Пример:
```text
index.html?login=aidartest&solanaRpc=https%3A%2F%2Fsolana-rpc.publicnode.com&arweaveGateway=https%3A%2F%2Farweave.net
```
## Предустановленные адреса
### Solana RPC
- `https://solana-rpc.publicnode.com`
- `https://public.rpc.solanavibestation.com/`
### Arweave gateway
- `https://arweave.net`
## Почему одна из RPC может не работать
Адрес:
- `https://public.rpc.solanavibestation.com/`
может возвращать браузерную ошибку `403` с текстом про `Origin is not whitelisted`.
Это означает, что проблема обычно не в SHiNE viewer, а в CORS-политике самого RPC.
Для HTML-страницы, открытой прямо в браузере, это обычно не лечится со стороны клиента.
Практически для viewer лучше использовать:
- `https://solana-rpc.publicnode.com`
## Ссылки на загруженный файл в Arweave
Основная ссылка:
- `https://isvg77xrihxyzqnjex3j4uldyao7xbsfda4uhoydtigeugovjvza.arweave.net/RKpv_vFB74zBqSX2nlFjwB37hkUYOUO7A5oMShnVTXI`
Та же ссылка с тестовым логином `aidartest`:
- `https://isvg77xrihxyzqnjex3j4uldyao7xbsfda4uhoydtigeugovjvza.arweave.net/RKpv_vFB74zBqSX2nlFjwB37hkUYOUO7A5oMShnVTXI?login=aidartest`
Та же ссылка с тестовым логином `aidartest` и явным рабочим RPC:
- `https://isvg77xrihxyzqnjex3j4uldyao7xbsfda4uhoydtigeugovjvza.arweave.net/RKpv_vFB74zBqSX2nlFjwB37hkUYOUO7A5oMShnVTXI?login=aidartest&solanaRpc=https%3A%2F%2Fsolana-rpc.publicnode.com`
## Что будет, если поставить devnet RPC
Официальный публичный `Solana devnet RPC`:
- `https://api.devnet.solana.com`
Если подставить `devnet` RPC, viewer начнёт читать именно сеть `devnet`, а не `mainnet`.
Но это не означает автоматически, что вся система SHiNE "стала тестовой".
Для реальной работы в `devnet` должны совпасть сразу несколько условий:
- программа `shine_users` должна быть задеплоена в `devnet`;
- в `devnet` должен существовать нужный `PDA` для логина;
- формат записи должен совпадать;
- данные пользователя должны реально лежать в этой тестовой сети.
Если этого нет, viewer просто не найдёт запись.
## Источник по devnet RPC
Официальная документация Solana:
- `https://solana.com/docs/references/clusters`
Там указан devnet endpoint:
- `https://api.devnet.solana.com`