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

Транзакція виконується лише тоді, коли вона містить дійсний підпис від кожного обов'язкового підписанта. Під час локальної розробки ви зазвичай тримаєте цей ключ як 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 та моніторинг — дивіться у Production Readiness.

Is this page helpful?

Зміст

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