Транзакция выполняется только при наличии действительной
подписи от каждого
обязательного подписанта. В процессе локальной разработки вы обычно храните ключ как
Keypair и подписываете напрямую. В
продакшене вопрос стоит иначе: где хранится приватный ключ
и кто вправе авторизовать подпись с его помощью?
Никогда не встраивайте приватные ключи в клиентский код, не включайте их во фронтенд-сборку и не фиксируйте в системе контроля версий. Любой, кто получит ключ, получит полный контроль над средствами этого аккаунта.
Подходы к подписанию
| Подход | Где хранится ключ | Кто подписывает | Лучше всего подходит для |
|---|---|---|---|
| Локальный keypair | Файл или переменная окружения на машине | Ваш код, напрямую | Локальная разработка, тесты, CI |
| Браузерный кошелёк | Кошелёк конечного пользователя (например, Phantom, Solflare) | Конечный пользователь, для каждой транзакции | Фронтенд-dApps, где пользователи сами подписывают транзакции |
| Облачный KMS / HSM | Аппаратно защищённый сервис управления ключами (AWS KMS, GCP KMS, Vault) | Ваш бэкенд запрашивает подпись у сервиса | Бэкенд-сервисы, операции с казначейством, регулируемые среды |
| Управляемые / MPC-кошельки | Распределены или переданы на хранение в инфраструктуру провайдера | Провайдер совместно подписывает в соответствии с вашей политикой | Встроенные кошельки, процессы согласования, институциональное хранение |
Локальный keypair — единственный подход, при котором необработанный ключевой материал находится внутри вашего приложения. В каждом продакшен-подходе ключ хранится в специализированной инфраструктуре, которая подписывает от вашего имени.
Подписание на бэкенде
Когда серверу необходимо подписывать транзакции (для оплаты комиссий, отправки программных транзакций или
управления казначейством), используйте специализированный бэкенд управления ключами вместо обычного
keypair. Фонд Solana поддерживает Keychain —
унифицированную библиотеку подписания (Rust, TypeScript, Python и Go), предоставляющую единый
интерфейс SolanaSigner для всех бэкендов из таблицы выше: Memory,
HashiCorp Vault, AWS KMS, GCP KMS, Fireblocks, Privy, Turnkey, CDP, Crossmint,
Dfns, Para, Openfort, Utila и Fordefi.
Поскольку интерфейс един для всех бэкендов, вы можете вести разработку локально с
ключом в памяти и переключиться на продакшен-бэкенд через конфигурацию, не
переписывая код приложения (бэкенды, которые сами рассылают транзакции, например Crossmint,
вызываются через путь «подписать и отправить»). Keychain совместим с
@solana/kit,
Rust SDK, solders (Python) и solana-go v2
(Go).
Keychain
Унифицированное подписание для локальных ключей, KMS, HSM и управляемых бэкендов кошельков.
Выбор бэкенда
Сравните модели хранения и выберите подходящий бэкенд подписания для вашего приложения.
Полный чеклист для продакшена — управление ключами, безопасность RPC и мониторинг — см. в разделе Готовность к продакшену.
Is this page helpful?