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

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

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

Is this page helpful?

Содержание

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