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

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

Зміст

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