빠른 접근
예제 확인:GitHub
SPL Token Anchor 구현
라이브 예제 앱
프라이빗 결제 체험
개요
프라이빗 결제는 ER의 SPL token을 기반으로 하는 프라이버시 사용 사례입니다. 동일한 입금 / 전송 / 출금 프리미티브가 프라이빗 가시성으로 실행되므로 결제 금액, 목적지, 시점이 공개되지 않고 보호됩니다.이 프리미티브를 처음 접한다면 먼저 Ephemeral SPL Token
개요를 읽어보세요. 이 가이드는
eATA / Global Vault / 위임 모델을 이해하고 있다고 가정합니다.
API 레퍼런스
입금, 전송, 출금, 잔액, stealth pool, 인증을 위한 endpoint.
레퍼런스 프로그램
온체인 Ephemeral SPL Token 프로그램.
프라이버시 모델
프라이빗 결제는 다음 요소를 사용합니다:- 프라이빗 가시성 —
visibility: "private"로 Ephemeral Rollup 내부에서 전송을 실행하므로 공개적으로 브로드캐스트되지 않습니다. - Stealth handle — raw public key 대신
alice@magicblock.id같은 읽기 쉬운 이름으로 전송합니다. handle은 stealth pool을 통해 하나 이상의 목적지 key로 해석되어 온체인에서 발신자 → 수신자의 직접 연결을 끊습니다. - 대기열 기반 정산 — 프라이빗 전송은 즉시 연결할 수 있는 직접 이동 대신 프로그램의 transfer queue를 통해 정산할 수 있습니다.
인증
프라이빗 데이터 조회와 stealth-pool 작업에는 bearer token이 필요합니다. 보호된 endpoint를 호출하기 전에 challenge/login 흐름으로 token을 발급받으세요:1
challenge 요청
GET /v1/spl/challenge는 사용자가 서명할 메시지를 반환합니다.2
로그인
POST /v1/spl/login은 서명된 challenge를 bearer token으로 교환합니다.3
보호된 endpoint 호출
GET /v1/spl/private-balance와 POST /v1/spl/stealth-pool에서
Authorization: Bearer <token>을 전송합니다.입금
token을 mint의 Global Vault로 이동하고 입금자의 ephemeral ATA 잔액을 증가시킵니다.POST /v1/spl/deposit— 입금 트랜잭션을 생성합니다. 입금 잔액을 프라이빗하게 유지하려면private: true를 설정하세요.
sendTo 필드(base 또는 ephemeral)가 포함됩니다. 서명한 뒤
POST /v1/transaction/send
또는 자체 RPC로 제출하세요.
프라이빗 전송
POST /v1/spl/transferwithvisibility: "private".
stealth handle을 사용하려면 먼저 초기화하세요:
POST /v1/spl/stealth-pool— handle(UTF-8 255 byte 이하, 정규화되지 않으므로Alice@…≠alice@…)을 1~10개의 목적지 owner key에 매핑하고 필요하면 결제를 분할합니다.GET /v1/spl/stealth-pool?handle=…— handle의 pool이 존재하는지 확인합니다.
handle은 정확한 UTF-8 byte 그대로 저장됩니다.
GET은 pool의 존재 여부만 반환하며
목적지 key는 반환하지 않습니다.출금
잔액을 Global Vault에서 표준 base-layer SPL token account로 되돌립니다.POST /v1/spl/withdraw— 출금 트랜잭션을 생성합니다.
GET /v1/spl/balance— 공개 잔액.GET /v1/spl/private-balance— 프라이빗 잔액(bearer token 필요).
개발자 참고 사항
- 프라이버시는 스펙트럼입니다. Ephemeral SPL token은 연결 가능성을 낮추지만 금액이나 시점을 숨기거나 네트워크 수준의 분석을 막지는 않습니다.
- handle은 정규화되지 않습니다. 대소문자와 공백이 중요하므로 일관되게 표시하고 저장하세요.
- 흐름을 맞추세요. Stealth-handle 전송에는
visibility: "private",fromBalance: "base",toBalance: "base"가 필요합니다(필드 생략 시에도 이 값이 기본값입니다). - 서명한 뒤 전송하세요. Builder endpoint는 미서명 트랜잭션을 반환합니다.
POST /v1/transaction/send로 제출하고 반환된sendTo를 따르세요.
다음 단계
Ephemeral SPL Token — 개요
프라이빗 결제를 뒷받침하는 프리미티브.
SDK 빠른 시작
온체인 / SDK 통합 경로.

