3.0 KiB
3.0 KiB
SHiNE Browser Plugin Wallet
Chrome-compatible Manifest V3 plugin for SHiNE wallet-session login.
Что уже умеет
- создать
wallet-sessionчерезStartTrustedDeviceLogin; - показать код подключения;
- дождаться подтверждения на доверенном устройстве;
- принять
session-onlypayload без передачиdeviceKey/rootKey/blockchainKey; - сохранить
sessionPriv/sessionKey/sessionIdв локальном хранилище plugin; - восстанавливать session через
SessionChallenge -> SessionLogin; - держать wallet-state в
background service worker, а side panel использовать как UI. - принимать не адрес сервера, а логин серверного аккаунта SHiNE и находить точный
https://.../wss://...адрес через его PDA. - внедрять legacy
window.solana/window.phantom.solanaprovider для сайтов. - регистрировать кошелёк как
Wallet Standardwallet для dapp, которые ищут стандартные кошельки.
Как загрузить локально
- Открой
chrome://extensions/ - Включи
Developer mode - Нажми
Load unpacked - Выбери папку
SHiNE-browser-plugin-wallet/ - Нажми на иконку расширения в toolbar: откроется side panel SHiNE Wallet
Ограничения текущего этапа
- plugin пока не держит постоянный фоновый WS-канал без активного действия пользователя, но хранит wallet-state в
background; - на этом этапе реализован только
session-only login; - запросы на подпись будут следующим этапом.
- pairing-пароль, если он используется, должен генерироваться в формате
sha256$<hex>от строкиshine-pairing|loginLower|password. - сторона side panel в Chromium выбирается самим браузером/пользователем; extension не закрепляет панель принудительно слева.
- для совместимости с некоторыми dapp расширение одновременно держит и legacy provider, и Wallet Standard регистрацию.
Сборка 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