SHA256
115 lines
4.6 KiB
Markdown
115 lines
4.6 KiB
Markdown
# 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`
|