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