Транзакція виконується лише тоді, коли вона містить дійсний
підпис від кожного
обов'язкового підписанта. Під час локальної розробки ви зазвичай тримаєте цей ключ як
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).
Keychain
Уніфіковане підписання для локальних ключів, KMS, HSM та керованих гаманців-бекендів.
Вибір бекенду
Порівняйте моделі зберігання та оберіть відповідний бекенд підписання для вашого додатку.
Повний чекліст для продакшну — керування ключами, безпека RPC та моніторинг — дивіться у Production Readiness.
Is this page helpful?