Підписання у продакшні

Транзакція виконується лише тоді, коли вона містить дійсний підпис від кожного обов'язкового підписанта. Під час локальної розробки ви зазвичай тримаєте цей ключ як Keypair і підписуєте напряму. У продакшні головне питання інше: де зберігається приватний ключ і хто має право авторизувати підпис ним?

Ніколи не вбудовуйте приватні ключі у клієнтський код, не включайте їх у фронтенд-збірку та не комітьте до системи контролю версій. Будь-хто, хто отримає ключ, матиме повний контроль над коштами цього акаунта.

Підходи до підписання

ПідхідДе зберігається ключХто підписуєНайкраще для
Локальний keypairФайл або змінна середовища на машиніВаш код, напрямуЛокальна розробка, тести, CI
Браузерний гаманецьГаманець кінцевого користувача (наприклад, Phantom, Solflare)Кінцевий користувач, для кожної транзакціїФронтенд-dApps, де користувачі самостійно підписують транзакції
Хмарний KMS / HSMАпаратно захищений сервіс ключів (AWS KMS, GCP KMS, Vault)Ваш бекенд запитує підпис у сервісуБекенд-сервіси, операції з казначейством, регульовані середовища
Керовані / 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 та моніторинг — дивіться у Production Readiness.

Is this page helpful?

Зміст

Редагувати сторінку