# 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`