Подписание в продакшене

Транзакция выполняется только при наличии действительной подписи от каждого обязательного подписанта. В процессе локальной разработки вы обычно храните ключ как 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).

Полный чеклист для продакшена — управление ключами, безопасность RPC и мониторинг — см. в разделе Готовность к продакшену.

Is this page helpful?

Содержание

Редактировать страницу