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

4.6 KiB
Raw Blame History

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

Пример:

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