피드로 돌아가기
Understanding Program Derived Addresses: The Solana Address That Has No Private Key
Dev.toDev.to
Infrastructure

Private Key 없는 PDA 설계를 통한 Stateless 프로그램의 데이터 결정론적 관리

Understanding Program Derived Addresses: The Solana Address That Has No Private Key

Vincent Jande2026년 6월 19일8intermediate

Context

Solana 프로그램의 Stateless 특성으로 인해 데이터는 별도의 Account에 저장해야 하는 구조임. 기존의 Random Public Key 기반 생성 방식은 사용자-주소 매핑을 위한 외부 Lookup Table 관리가 필수적이며, 테이블 유실 시 데이터 접근이 불가능한 취약점이 존재함.

Technical Solution

  • Program ID와 사용자 정의 Seeds를 조합한 결정론적 주소 생성으로 Lookup Table 의존성 제거
  • Ed25519 타원곡선 외부(Off-curve)에 주소를 배치하여 Private Key 존재 가능성을 원천 차단
  • 255부터 역순으로 탐색하는 Bump 메커니즘을 통해 유일하고 재현 가능한 Canonical Bump 주소 확보
  • Anchor 프레임워크의 seeds 및 bump 제약 조건을 활용하여 런타임 시 주소 유효성 검증 자동화
  • invoke_signed 함수를 통해 Private Key 없이 프로그램 코드 로직만으로 PDA 서명 권한 부여
  • Off-curve 설계를 통해 외부 공격자의 서명 탈취를 방지하고 프로그램 기반의 신뢰할 수 있는 Custodian 구조 구현

1. 데이터 매핑 테이블 운영 비용이 높다면 결정론적 주소 생성(PDA) 도입 검토

2. 동일 Seed에 대해 유일한 주소 보장을 위해 반드시 Canonical Bump 사용 여부 확인

3. 자산 보관(Escrow, Vault) 설계 시 Private Key 기반 권한 부여 대신 프로그램 서명(invoke_signed) 방식 적용

원문 읽기