Синхронизировать регистр логинов и доработать UI каналов

This commit is contained in:
AidarKC
2026-08-19 14:30:29 +04:00
parent e8a4713f6e
commit ce30b77328
29 changed files with 6729 additions and 815 deletions
@@ -0,0 +1,11 @@
# SHiNE Solana Arweave Viewer
Основной рабочий файл:
- `index.html`
Подробное описание работы, параметров и готовых ссылок:
- `КАК_ЭТО_РАБОТАЕТ.md`
Viewer собран как автономный single-file HTML и запускается одним файлом без соседних зависимостей.
File diff suppressed because one or more lines are too long
@@ -0,0 +1,114 @@
# 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`