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

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

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

Is this page helpful?

Содержание

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