Транзакция выполняется только при наличии действительной
подписи от каждого
обязательного подписанта. В процессе локальной разработки вы обычно храните ключ как
Keypair и подписываете напрямую. В
продакшене вопрос стоит иначе: где хранится приватный ключ
и кто вправе авторизовать подпись с его помощью?
Никогда не встраивайте приватные ключи в клиентский код, не включайте их во фронтенд-сборку и не фиксируйте в системе контроля версий. Любой, кто получит ключ, получит полный контроль над средствами этого аккаунта.
Подходы к подписанию
| Подход | Где хранится ключ | Кто подписывает | Лучше всего подходит для |
|---|---|---|---|
| Локальный keypair | Файл или переменная окружения на машине | Ваш код, напрямую | Локальная разработка, тесты, CI |
| Браузерный кошелёк | Кошелёк конечного пользователя (например, Phantom, Solflare) | Конечный пользователь, для каждой транзакции | Фронтенд-dApps, где пользователи сами подписывают транзакции |
| Облачный KMS / HSM | Аппаратно защищённый сервис управления ключами (AWS KMS, GCP KMS, Vault) | Ваш бэкенд запрашивает подпись у сервиса | Бэкенд-сервисы, операции с казначейством, регулируемые среды |
| Управляемые / MPC-кошельки | Распределены или переданы на хранение в инфраструктуру провайдера | Провайдер совместно подписывает в соответствии с вашей политикой | Встроенные кошельки, процессы согласования, институциональное хранение |
Локальный keypair — единственный подход, при котором необработанный ключевой материал находится внутри вашего приложения. В каждом продакшен-подходе ключ хранится в специализированной инфраструктуре, которая подписывает от вашего имени.
Подписание на бэкенде
Когда серверу нужно подписывать транзакции (оплачивать комиссии, отправлять транзакции программ или
управлять казначейством), используйте специализированный бэкенд для управления ключами, а не «сырой»
keypair. Solana Foundation поддерживает 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?