SHiNE-server/SHiNE-browser-plugin-wallet/README.md

2.6 KiB
Raw Blame History

SHiNE Browser Plugin Wallet

Chrome-compatible Manifest V3 plugin for SHiNE wallet-session login.

Что уже умеет

  • создать wallet-session через StartTrustedDeviceLogin;
  • показать код подключения;
  • дождаться подтверждения на доверенном устройстве;
  • принять session-only payload без передачи deviceKey/rootKey/blockchainKey;
  • сохранить sessionPriv/sessionKey/sessionId в локальном хранилище plugin;
  • восстанавливать session через SessionChallenge -> SessionLogin;
  • держать wallet-state в background service worker, а side panel использовать как UI.
  • принимать не адрес сервера, а логин серверного аккаунта SHiNE и находить точный https://... / wss://... адрес через его PDA.

Как загрузить локально

  1. Открой chrome://extensions/
  2. Включи Developer mode
  3. Нажми Load unpacked
  4. Выбери папку SHiNE-browser-plugin-wallet/
  5. Нажми на иконку расширения в toolbar: откроется side panel SHiNE Wallet

Ограничения текущего этапа

  • plugin пока не держит постоянный фоновый WS-канал без активного действия пользователя, но хранит wallet-state в background;
  • на этом этапе реализован только session-only login;
  • запросы на подпись будут следующим этапом.
  • pairing-пароль, если он используется, должен генерироваться в формате sha256$<hex> от строки shine-pairing|loginLower|password.
  • сторона side panel в Chromium выбирается самим браузером/пользователем; extension не закрепляет панель принудительно слева.

Сборка crypto bundle

Для обычной загрузки plugin это не нужно: bundled crypto-файл уже лежит в репозитории.

Если понадобится пересобрать локальный crypto bundle:

npm install
npx esbuild js/lib/vendor/noble-ed25519-entry.js --bundle --format=esm --platform=browser --outfile=js/lib/vendor/noble-ed25519-bundle.js
npx esbuild js/lib/vendor/solana-publickey-entry.js --bundle --format=esm --platform=browser --outfile=js/lib/vendor/solana-publickey-bundle.js