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