트랜잭션은 모든 필수 서명자의 유효한
서명이 포함된
경우에만 실행됩니다. 로컬 개발 환경에서는 보통 해당 키를
Keypair로 보유하고 직접
서명합니다. 프로덕션 환경에서는 다른 중요한 질문이 생깁니다: 개인 키는 어디에
저장되며, 누가 해당 키로 서명을 승인할 수 있는가?
클라이언트 측 코드에 개인 키를 절대 삽입하거나, 프론트엔드 번들에 포함하거나, 소스 컨트롤에 커밋하지 마세요. 키를 획득한 누구든 해당 계정의 자산을 완전히 제어할 수 있습니다.
서명 방식
| 방식 | 키 저장 위치 | 서명 주체 | 적합한 용도 |
|---|---|---|---|
| 로컬 keypair | 머신의 파일 또는 환경 변수 | 코드에서 직접 | 로컬 개발, 테스트, CI |
| 브라우저 지갑 | 최종 사용자의 지갑 (예: Phantom, Solflare) | 최종 사용자가 트랜잭션별로 | 사용자가 직접 트랜잭션에 서명하는 프론트엔드 dApp |
| 클라우드 KMS / HSM | 하드웨어 기반 키 서비스 (AWS KMS, GCP KMS, Vault) | 백엔드가 서비스에 서명을 요청 | 백엔드 서비스, 자금 운용, 규제 환경 |
| 관리형 / MPC 지갑 | 제공업체 인프라 전반에 분산 또는 위탁 보관 | 제공업체가 정책에 따라 공동 서명 | 임베디드 지갑, 승인 워크플로, 기관 수탁 |
로컬 keypair는 애플리케이션 내부에 원시 키 자료를 직접 저장하는 유일한 방식입니다. 모든 프로덕션 방식은 키를 전용 인프라에 보관하고, 해당 인프라에 서명을 위임합니다.
백엔드 서명
서버가 수수료 지불, 프로그램 트랜잭션 전송, 또는 트레저리 운영 등을 위해
서명해야 할 경우, 원시 keypair 대신 전용 키 관리 백엔드를 사용하세요. Solana
Foundation은 Keychain을 유지 관리하고 있으며, 이는 위
표에 나열된 모든 백엔드(Memory, HashiCorp Vault, AWS KMS, GCP KMS, Fireblocks,
Privy, Turnkey, CDP, Crossmint, Dfns, Para, Openfort, Utila)에서 단일
SolanaSigner 인터페이스를 제공하는 통합 서명 라이브러리(Rust 및
TypeScript)입니다.
백엔드 간 인터페이스가 동일하기 때문에, 애플리케이션 코드를 수정하지 않고도
인메모리 키로 로컬 개발을 진행한 뒤 설정만 변경하여 프로덕션 백엔드로 전환할 수
있습니다. Keychain은 @solana/kit 및
Rust SDK와 호환됩니다.
키 관리, RPC 보안, 모니터링 등 전체 프로덕션 체크리스트는 프로덕션 준비를 참고하세요.
Is this page helpful?