프로덕션 환경에서의 서명

트랜잭션은 모든 필수 서명자의 유효한 서명이 포함된 경우에만 실행됩니다. 로컬 개발 중에는 보통 Keypair로 키를 직접 보유하고 서명합니다. 프로덕션 환경에서는 다른 중요한 질문이 생깁니다: 개인 키는 어디에 저장되며, 누가 해당 키로 서명을 승인할 수 있는가?

클라이언트 측 코드에 개인 키를 삽입하거나, 프론트엔드 번들에 포함하거나, 소스 제어에 커밋하지 마십시오. 키를 획득한 누구든 해당 계정 자금에 대한 완전한 제어권을 갖게 됩니다.

서명 방식

방식키 저장 위치서명 주체적합한 용도
로컬 keypair머신의 파일 또는 환경 변수코드에서 직접 서명로컬 개발, 테스트, CI
브라우저 지갑사용자의 지갑 (예: Phantom, Solflare)사용자가 트랜잭션별로 직접 서명사용자가 직접 트랜잭션에 서명하는 프론트엔드 dApp
클라우드 KMS / HSM하드웨어 기반 키 서비스 (AWS KMS, GCP KMS, Vault)백엔드가 서비스에 서명을 요청백엔드 서비스, 트레저리 운영, 규제 환경
관리형 / MPC 지갑공급자 인프라에 분산 보관 또는 수탁 관리공급자가 정책에 따라 공동 서명임베디드 지갑, 승인 워크플로, 기관 수탁

로컬 keypair는 원시 키 자료를 애플리케이션 내부에 두는 유일한 방식입니다. 모든 프로덕션 방식은 키를 전용 인프라에 보관하고, 해당 인프라에 서명을 위임합니다.

백엔드 서명

서버가 서명해야 하는 경우(수수료 지불, 프로그램 트랜잭션 전송 또는 트레저리 운영 등), 원시 keypair 대신 전용 키 관리 백엔드를 사용하세요. Solana Foundation은 Keychain을 관리하고 있습니다. Keychain은 위 표의 모든 백엔드(Memory, HashiCorp Vault, AWS KMS, GCP KMS, Fireblocks, Privy, Turnkey, CDP, Crossmint, Dfns, Para, Openfort, Utila, Fordefi)에서 하나의 SolanaSigner 인터페이스를 제공하는 통합 서명 라이브러리(Rust, TypeScript, Python, Go)입니다.

인터페이스가 모든 백엔드에서 공통으로 사용되므로, 로컬에서는 인메모리 키로 개발하고 구성만 변경하여 프로덕션 백엔드로 전환할 수 있으며 애플리케이션 코드를 다시 작성할 필요가 없습니다(Crossmint처럼 브로드캐스트를 대신 처리하는 백엔드는 서명 후 전송 경로를 통해 호출됩니다). Keychain은 @solana/kit, Rust SDK, solders(Python), solana-go v2 (Go)와 호환됩니다.

키 관리, RPC 보안, 모니터링 등 전체 프로덕션 체크리스트는 프로덕션 준비를 참고하세요.

Is this page helpful?

목차

페이지 편집