SEP‑10과 SEP‑24 250528
SEP‑10과 SEP‑24는 모두 Stellar 네트워크상에서 월렛(클라이언트)과 앵커(법정화폐↔스테이블코인 중개자)가 상호작용할 때 지켜야 할 표준(SEP, Stellar Ecosystem Proposal)입니다. 간단히 요약하면 다음과 같습니다.
⸻
SEP‑10: Stellar Web Authentication
“사용자가 해당 Stellar 계정의 주인임을 증명하고, 앵커와의 세션을 안전하게 유지하기 위한 인증 프로토콜” 
1. 챌린지 생성
• 클라이언트(월렛)가 앵커의 /auth(또는 /challenge) 엔드포인트에 자신의 퍼블릭 키를 보내면, 앵커는 “sequence = 0”인 ManageData 연산 하나만 담긴 트랜잭션 XDR(챌린지 트랜잭션)을 생성해 반환합니다.
2. 챌린지 서명 및 제출
• 클라이언트는 이 트랜잭션을 자신의 프라이빗 키(인증 키)로 서명하여 다시 앵커에 제출합니다.
3. 검증 및 토큰 발급
• 앵커는 트랜잭션 서명이 올바른지, 타임바운드가 유효한지, 소스 계좌(sequence = 0) 등이 조건에 맞는지 검증한 뒤, 성공하면 JWT 형식의 인증 토큰을 발급합니다.
4. 이후 요청 인증
• 클라이언트는 이 토큰을 Authorization: Bearer <token> 헤더에 담아 이후 SEP‑6/SEP‑24 등의 앵커 API 요청에 사용합니다.
이를 통해 월렛은 “이 사용자가 해당 계정의 비밀 키를 실제로 소유하고 있다”는 것을 앵커에 안전하게 증명할 수 있습니다.
⸻
SEP‑24: Hosted Deposit and Withdrawal
“앵커가 호스팅하는 WebView(웹뷰)를 통해 사용자의 KYC 등 인터랙티브 절차를 처리하며, 법정화폐↔스테이블코인 전환(on‑ramp/off‑ramp)을 표준화된 흐름으로 지원하는 프로토콜” 
1. 사전 요건: SEP‑10 인증
• SEP‑24의 모든 요청은 먼저 SEP‑10으로 발급받은 유효한 토큰이 필요합니다.
2. 앵커 정보 획득
• .well-known/stellar.toml의 TRANSFER_SERVER_SEP0024 필드로부터 SEP‑24 전송 서버 엔드포인트를 찾습니다.
3. 지원 기능 조회 (GET /info)
• GET {TRANSFER_SERVER_SEP0024}/info 로 입금(deposit), 출금(withdraw) 지원 여부, 사용 가능한 자산, 추가 기능 등을 확인합니다.
4. 입금/출금 요청 및 인터랙티브 URL 수신
• 사용자가 “입금” 또는 “출금” 버튼을 누르면,
POST {TRANSFER_SERVER_SEP0024}/transactions/{deposit|withdraw}/interactive
Authorization: Bearer <SEP‑10 토큰>
Content-Type: application/json
{
"asset_code": "USDC",
"account": "<사용자 Stellar 퍼블릭 키>",
…추가 필드…
}
• 앵커는 처리에 필요한 KYC 폼 등이 담긴 인터랙티브 URL을 응답으로 돌려줍니다.
5. 웹뷰(WebView) 오픈 및 KYC/확인 완료
• 클라이언트는 받은 URL을 웹뷰(또는 팝업)로 열고, 사용자는 앵커가 호스팅하는 화면에서 본인 인증·KYC·은행 계좌 연결 등을 완료합니다.
6. 완료 콜백 & 상태 확인
• 웹뷰가 종료되면(혹은 postMessage 등으로) 콜백이 전달되고, 클라이언트는 GET /transactions?{id} 등을 폴링하여 최종 처리 상태를 조회합니다.
7. (출금의 경우) 추가 Stellar 트랜잭션 서명
• 앵커가 출금 계좌와 금액 등 세부 정보를 주면, 사용자는 Stellar 트랜잭션을 생성·서명하여 앵커에게 제출해 온체인 전송을 완료합니다.
이 과정을 통해 앵커와 월렛 간에 법정화폐와 스테이블코인 간 전환을 안전·효율적으로 처리할 수 있습니다.
⸻
이처럼 SEP‑10은 사용자 인증, SEP‑24는 인증된 사용자에 대한 인터랙티브 입·출금 플로우를 표준화한 프로토콜입니다. 각 SEP를 구현하면 지갑·앵커·거래소 간 통합된 스테이블코인 온·오프 램핑 인프라를 갖출 수 있습니다.