Permission Program
온체인 권한 관리(출시 예정)
Ephemeral Rollups SDK
Private Ephemeral Rollups용 SDK
개요
Private Ephemeral Rollups는 컴플라이언스를 핵심에 둔 Trusted Execution Environment 안에서 permissioned accounts에 대한 세밀한 권한 제어를 가능하게 하는 Ephemeral Rollups입니다. 각 permission account는 멤버 목록과 이들이 수행할 수 있는 작업을 결정하는 특정 플래그를 유지합니다.핵심 개념
- Permission Account: 특정 계정에 대한 접근 제어 규칙을 저장하는 PDA
- Members: 플래그를 통해 특정 권한이 부여된 주소
- Flags: 멤버가 무엇을 할 수 있는지(authority, 로그 보기, 잔액 보기 등)를 정의하는 비트마스크
- Public Permissions: 멤버가
None으로 설정되면 permissioned account가 일시적으로 보이게 됩니다
멤버 플래그
멤버 플래그는 각 멤버에 대한 세밀한 권한을 정의합니다. 플래그는 비트 OR로 결합해 여러 권한을 동시에 부여할 수 있습니다. 플래그 설명:- AUTHORITY: 멤버가 permission 설정을 업데이트하고 위임하며, 다른 멤버를 추가/제거하고 멤버 플래그를 업데이트할 수 있게 합니다.
- TX_LOGS: 멤버가 트랜잭션 실행 로그를 볼 수 있게 합니다.
- TX_BALANCES: 멤버가 계정 잔액 변화를 볼 수 있게 합니다.
- TX_MESSAGE: 멤버가 트랜잭션 메시지 데이터를 볼 수 있게 합니다.
- ACCOUNT_SIGNATURES: 멤버가 계정 서명을 볼 수 있게 합니다
- Rust SDK
- Pinocchio
- Web3.js
- Kit
Ephemeral Permission
EphemeralPermission 계정은 전적으로 Ephemeral Rollup 위에서 동작하며, 렌트는
위임된 PDA가 부담합니다 — Base Layer에 permission account를 생성하거나 위임하거나
commit-and-undelegate할 필요가 없습니다. 전체 라이프사이클은 Create、Update、
Close 세 가지 CPI 작업으로 충분히 다룰 수 있으며, 모두 ER 위의 데이터 계정이
PDA로 서명하고 MagicBlock의 Permission Program
ACLseoPoyC3cBqoUtkbjZ4aDrkurZW86v19pXz2XQnp1을 통해 실행됩니다.DELeGGvXpWV2fqJUhqcF5ZSYMS4JTLjteaAMARRSaeSh을 통해).
위임 후 PDA는 자신의 프로그램 시드로 ER에서 세 가지 permission 작업 모두에 서명하고
ephemeral permission 렌트를 지불합니다 — 따라서 initialize 시점에 미리
충전해 두어야 합니다. 전체 흐름은
퀵스타트
를 참조하세요.
이 공용 검증자들은 개발용으로 지원됩니다. 위임 명령에 해당 ER 검증자를 반드시 추가하세요.
메인넷- 아시아 (as.magicblock.app):
MAS1Dt9qreoRMQ14YQuhg8UTZMMzDdKhmkZMECCzk57 - EU (eu.magicblock.app):
MEUGGrYPxKk17hCr7wpT6s8dtNokZj5U2L57vjYMS8e - 미국 (us.magicblock.app):
MUS3hc9TCw4cGC12vHNoYcCGzJG1txjgQLZWVoeNHNd - TEE (mainnet-tee.magicblock.app):
MTEWGuqxUpYZGFJQcp8tLN7x5v9BSeoFHYWQQ3n3xzo
- 아시아 (devnet-as.magicblock.app):
MAS1Dt9qreoRMQ14YQuhg8UTZMMzDdKhmkZMECCzk57 - EU (devnet-eu.magicblock.app):
MEUGGrYPxKk17hCr7wpT6s8dtNokZj5U2L57vjYMS8e - 미국 (devnet-us.magicblock.app):
MUS3hc9TCw4cGC12vHNoYcCGzJG1txjgQLZWVoeNHNd - TEE (devnet-tee.magicblock.app):
MTEWGuqxUpYZGFJQcp8tLN7x5v9BSeoFHYWQQ3n3xzo
- 로컬 ER (localhost:7799):
mAGicPQYBMvcYveUZA5F5UNNwyHvfYh5xkLS2Fr1mev
1
초기 멤버와 프라이버시 플래그를 가진 새
EphemeralPermission 계정을 ER에
초기화합니다. 멱등 — 이미 존재하면 건너뜁니다.2
프라이버시 플래그를 전환하거나 멤버를 추가 / 제거 / 플래그 변경합니다.
업데이트는 ER에서 즉시 반영됩니다.
3
permission이 더 이상 필요하지 않을 때 ER의
EphemeralPermission 계정을 닫고
렌트를 데이터 PDA에 환불합니다.Ephemeral Permission 작업
- 1. Ephemeral Permission 생성
- 2. Ephemeral Permission 업데이트
- 3. Ephemeral Permission 닫기
CreateEphemeralPermissionCpi로 ER 위에 새로운 EphemeralPermission 계정을
초기화합니다. Payer = 위임된 데이터 PDA로, 자신의 프로그램 시드로 서명하고
initialize 시점에 미리 충전된 lamports로 렌트를 지불합니다.- Anchor
- Rust SDK
- Pinocchio
- Kit
- Web3.js
- ER에서 새로 위임된 PDA의 접근 제어를 부트스트랩
- 공개 모드(
is_private: false, 빈 멤버)로 시작해 나중에 Update로 조이기
모범 사례
- Authority 관리: 항상 최소 한 명의 신뢰할 수 있는 멤버에게
AUTHORITY_FLAG를 부여하세요 - 최소 권한 원칙: 각 멤버에게 필요한 플래그만 부여하세요
- 실시간 업데이트: 위임 해제 없이도 Private Ephemeral Rollup에서 permission을 실시간으로 업데이트해 동적 접근 제어 조정이 가능합니다
- 정리: 사용하지 않는 permission accounts를 위임 해제하고 닫아 SOL을 확보하세요
보안 고려 사항
- 서명자 검증:
AUTHORITY_FLAG를 가진 멤버 또는 permissioned account를 가진 프로그램만 변경을 인가할 수 있습니다 - 공개 계정: 멤버를
None으로 설정하면 계정이 공개적으로 보이게 됩니다 - 기본 Authority: 기본적으로 permissioned account의 소유자가 permission account의 members에 permission authority로 추가됩니다
- 빈 멤버 목록:
members필드가 빈 목록으로 설정되면 permissioned account는 완전히 제한되고 비공개가 됩니다. permission을 수정할 수 있는 것은 소유자뿐입니다 - 접근 감사: 멤버 플래그를 사용해 접근을 감사하고 제어하세요
접근 제어
세밀한 접근 제어
온체인 프라이버시
프라이버시 메커니즘과 개념
인가
인가 프레임워크
컴플라이언스 프레임워크
컴플라이언스 기준 및 가이드라인

