합성, 수익형 스테이블코인과 USDe
도입
USDe는 "달러 표시 토큰"이라는 화면만 보면 USDC나 DAI와 비슷해 보인다. 그러나 결제 시스템에 넣을 때 중요한 질문은 완전히 다르다. 은행 예금과 단기 국채를 준비자산으로 둔 fiat-backed 토큰도 아니고, vault 담보와 청산으로 debt를 관리하는 crypto-backed 토큰도 아니다.
Ethena는 USDe를 delta-neutral synthetic dollar로 설명한다. 즉, crypto backing asset을 보유하고 그 가격 변동을 derivatives short position으로 상쇄해 달러 노출에 가깝게 만든다. 그래서 USDe를 평가할 때는 "토큰 가격이 1달러 근처인가"보다 "헤지가 어디서 실행되는가", "funding과 basis가 나빠지면 누가 비용을 부담하는가", "직접 상환이 누구에게 열려 있는가"를 먼저 물어야 한다.
이 강의의 목표는 USDe를 무조건 배제하거나 채택하는 것이 아니다. checkout, merchant settlement, treasury 보유, yield product 중 어느 용도에 허용할지 판단할 수 있도록 리스크 원천을 분리하는 것이다.
학습 목표
- 합성 달러와 수익형 구조의 위험 원천을 분해한다.
- basis, funding, custodian, exchange risk를 구분한다.
- USDe와 sUSDe를 결제 자산, treasury 자산, yield product 관점에서 분리한다.
개념 설명
Adopt
Trial
Assess
Hold
1. USDe는 fiat reserve가 아니라 delta hedge로 달러 노출을 만든다
USDC/PYUSD, DAI/USDS, USDe는 모두 달러 단위로 표시될 수 있지만 안정성을 만드는 장치가 다르다.
| 유형 | 안정성의 핵심 장치 | 결제 시스템에서 먼저 확인할 것 |
|---|---|---|
| USDC/PYUSD 같은 fiat-backed 토큰 | 발행자의 준비자산, 상환 약정, 규제 체계 | issuer, reserve report, redemption rail, chain별 공식 주소 |
| DAI/USDS 같은 crypto-backed 토큰 | vault 담보, oracle, liquidation, governance parameter | collateral ratio, liquidation queue, oracle failure, governance change |
| USDe 같은 synthetic dollar | crypto backing asset과 derivatives short hedge | hedge venue, funding/basis, OES custody, mint/redeem access, secondary liquidity |
USDe에서 온체인 잔고는 전체 구조의 일부다. 토큰 컨트랙트만 확인하면 사용자가 몇 USDe를 보유했는지는 알 수 있지만, hedge가 정상적으로 유지되는지, backing asset이 어느 custody 구조에 있는지, direct redemption이 가능한지는 알 수 없다. 결제 엔지니어는 token balance와 risk state를 분리해서 다뤄야 한다.
2. USDe 메커니즘은 다섯 단계로 읽는다
| 단계 | 무슨 일이 일어나는가 | 결제/정산에서 생기는 질문 |
|---|---|---|
| Mint | 허용된 사용자가 USDT/USDC 등 backing asset을 제공하고 USDe를 받는다. | 우리 고객이 direct mint 자격이 있는가, 아니면 DEX/CEX에서만 매수하는가? |
| Hedge | 프로토콜이 backing asset 가격 변동을 short perpetual/futures로 상쇄한다. | hedge venue 장애, basis 변화, execution cost가 peg와 유동성에 어떤 영향을 주는가? |
| Custody | backing asset은 Off-Exchange Settlement provider 같은 custody 구조에 보관된다. | OES provider 장애가 mint/redeem availability에 어떤 영향을 주는가? |
| Yield | funding/basis spread, liquid stable reward, staked ETH reward가 프로토콜 수익 원천이 된다. | 수익이 고정인지 변동인지, 음수 funding 구간에서 어떤 완충 장치가 있는가? |
| Redeem | whitelisted party가 프로토콜 경로로 상환한다. | secondary market 매도와 direct redemption을 사용자 약관에서 혼동시키지 않았는가? |
이 표는 개발 문서의 allowlist 기준으로 바로 옮길 수 있다. 예를 들어 supportedTokens에 USDe를 추가하더라도 redemptionPath: protocol이라고 쓰면 안 된다. 실제 서비스가 direct redemption 자격을 갖추지 않았다면 redemptionPath: secondary-market처럼 운영 가능한 경로를 명시해야 한다.
3. 수익 원천과 손실 조건을 같은 표에 둔다
수익형 스테이블코인을 다룰 때 가장 위험한 문장은 "수익이 난다"이다. 강의 자료나 상품 설명은 수익 원천과 비용 조건을 한 쌍으로 놓아야 한다.
| 원천 | 좋은 상태 | 나쁜 상태 | 운영자가 볼 신호 |
|---|---|---|---|
| Funding/basis spread | short hedge 포지션이 양의 funding 또는 basis를 얻는다. | funding이 장기간 음수로 바뀌면 revenue가 줄거나 비용이 된다. | funding rate, basis, reserve fund usage, hedge venue별 exposure |
| Liquid stable reward | USDC/USDT 등 liquid stable backing에서 reward가 발생한다. | reward rate가 하락하거나 counterparty 조건이 바뀐다. | backing allocation, reward rate change, custodian report |
| Staked asset reward | staked ETH 등에서 consensus/execution reward가 발생한다. | native asset 기준 수익이 변동하고 가격 변동과 결합된다. | staked asset share, validator reward, ETH-denominated revenue |
| Secondary liquidity | 사용자가 시장에서 USDe를 사고팔 수 있다. | pool imbalance나 market depth 부족으로 slippage가 커진다. | DEX pool depth, CEX order book depth, peg deviation |
여기서 중요한 점은 sUSDe holder에게 표시되는 APY와 checkout에서 필요한 price stability가 같은 지표가 아니라는 것이다. APY는 treasury/yield product의 언어이고, checkout은 환불, 취소, 정산, 표시 가격의 언어다.
4. USDe와 sUSDe를 분리한다
USDe와 sUSDe는 같은 상품군 안에 있지만 앱에서는 다른 자산으로 다뤄야 한다.
| 자산 | 앱에서의 역할 | 결제 UX에서의 주의점 |
|---|---|---|
| USDe | principal synthetic dollar token | 결제 금액, 환불 금액, merchant settlement 금액을 산정할 때 기준 토큰으로 볼 수 있다. 단, direct redemption 가능 여부는 별도 확인한다. |
| sUSDe | reward-bearing staked token | 시간이 지나며 USDe 기준 가치가 변하는 receipt 성격으로 다뤄야 한다. 고정 결제 금액을 표시하는 checkout 자산으로 쓰면 회계와 UX가 꼬인다. |
예를 들어 사용자가 100달러 상품을 구매할 때 sUSDe 수량으로 결제를 허용하면, 결제 시점의 sUSDe:USDe 비율, 환불 시점의 비율, reward 귀속 주체를 모두 정의해야 한다. 따라서 MVP checkout에서는 USDe와 sUSDe를 같은 stablecoin 그룹으로 묶지 말고, paymentAsset과 yieldAsset으로 분리하는 편이 안전하다.
5. Mint/redeem 접근성과 secondary liquidity를 분리한다
Ethena 문서 기준으로 USDe는 permissionless external liquidity pool에서 취득할 수 있고, 직접 mint/redeem은 허용된 관할권의 승인된 party가 KYC/KYB와 whitelisting을 거쳐 수행한다. 이 차이는 제품 문구와 운영 runbook에 그대로 반영돼야 한다.
| 질문 | 이유 |
|---|---|
| 우리 서비스는 direct redemption 자격이 있는가? | 없다면 최종 탈출 경로는 secondary market liquidity다. |
| 환불은 어떤 자산으로 처리하는가? | USDe로 받은 결제를 USDC나 fiat으로 환불하면 price, fee, tax 기록이 달라진다. |
| merchant settlement은 언제 전환하는가? | USDe를 계속 보유할지, USDC/fiat으로 즉시 바꿀지 정책이 필요하다. |
| chain별 liquidity가 충분한가? | 같은 USDe라도 체인별 pool depth와 bridge route가 다르다. |
| 장애 때 출금을 막을 것인가, 가격 경고만 띄울 것인가? | 운영 상태를 product state로 정의해야 한다. |
6. 실패 상태를 제품 상태로 만든다
USDe의 리스크를 안다는 것은 "위험함"이라고 쓰는 데서 끝나지 않는다. 사용자가 결제 화면에서 무엇을 보게 되는지, 운영자가 어떤 버튼을 눌러야 하는지까지 정해야 한다.
| 실패 상태 | 사용자가 보는 현상 | 운영 대응 |
|---|---|---|
| Funding이 장기간 음수 | sUSDe APY 하락, protocol revenue 압박 | yield 문구 갱신, treasury 보유 한도 축소, reserve fund 상태 확인 |
| Hedge venue 장애 | mint/redeem 지연, hedge execution 불확실성 | 신규 USDe 결제 일시 중지, settlement route를 USDC/fiat으로 우회 |
| OES provider 접근성 저하 | backing asset 이동이나 delegation workflow 지연 | custodian status 확인, exposure concentration report 업데이트 |
| DEX/CEX liquidity 부족 | 결제 취소나 환불 시 slippage 확대 | max order size 축소, quote expiry 단축, warning banner 표시 |
| Direct redemption 접근 제한 | protocol 상환이 불가능한 사용자 증가 | 약관과 FAQ에서 secondary market exit만 제공한다고 명시 |
| sUSDe를 USDe처럼 표시 | reward 귀속, 환불 금액, 회계 처리 혼선 | sUSDe 결제 비활성화, treasury/yield product 화면으로 이동 |
코드로 확인하기
위 설계 결정을 코드에서 확인한다. 상태, 서명, 원장 이동, 실패 처리가 어디에 놓이는지 따라 읽으면 앞의 모델이 실제 구현 경계로 내려온다.
백엔드USDe vs sUSDe 분리 가드
USDe(원본)와 sUSDe(reward-bearing ERC-4626 share)를 같은 결제 자산으로 처리하면 회계가 깨진다. 토큰 주소별 정책을 분리한다.
type SyntheticTokenPolicy = { symbol: "USDe" | "sUSDe"; address: `0x${string}`; acceptableFor: Array<"checkout" | "treasury-hold" | "yield-product">; redeemability: "protocol-mint-redeem" | "secondary-market-only" | "vault-share"; warningCopy: string;};export const SYNTHETIC_POLICY: Record<`0x${string}`, SyntheticTokenPolicy> = { "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3": { // USDe symbol: "USDe", address: "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", acceptableFor: ["checkout", "treasury-hold"], redeemability: "secondary-market-only", // mint/redeem 접근 제한 — secondary market exit 명시 warningCopy: "USDe는 synthetic dollar 입니다. 1:1 fiat 상환을 보장하지 않습니다." }, "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497": { // sUSDe symbol: "sUSDe", address: "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", acceptableFor: ["yield-product"], // ← checkout 결제 불가 redeemability: "vault-share", warningCopy: "sUSDe는 yield-bearing share token 입니다. 결제 자산이 아닙니다." }};export function assertPaymentToken(address: `0x${string}`) { const p = SYNTHETIC_POLICY[address]; if (p && !p.acceptableFor.includes("checkout")) { throw new Error(`${p.symbol} cannot be used as checkout asset: ${p.warningCopy}`); }}인덱서Funding rate / basis 모니터링 — exchange feeds 집계
hedge venue별 funding rate를 매 시간 집계해 음수 funding 장기 지속 또는 basis 확대를 알림으로 띄운다.
type FundingSample = { venue: "binance" | "okx" | "bybit" | "bitmex"; symbol: "ETHUSDT-PERP" | "BTCUSDT-PERP"; fundingRate: number; // 8h rate fundingTime: string; // ISO openInterestUsd: number;};export function analyzeFunding(samples: FundingSample[]) { const weighted = samples.reduce( (acc, s) => acc + s.fundingRate * s.openInterestUsd, 0 ) / samples.reduce((acc, s) => acc + s.openInterestUsd, 0); const annualized = weighted * 3 * 365; return { weightedAvgFunding8h: weighted, annualizedPct: annualized * 100, sign: weighted < 0 ? "negative" : "positive", alert: weighted < -0.0005 ? { severity: "warning", reason: "funding below -0.05% (8h) — yield erosion" } : null };}클라이언트결제 화면 문구 — "달러" / "상환" 금지 표현 가드
약관과 FAQ에서 명시한 금지 표현이 마케팅 페이지에 들어가지 않도록 컴파일 타임 검사.
const FORBIDDEN_PHRASES = [ /1\s*:\s*1\s*상환/, /보장된\s*달러/, /원금\s*보장/, /무위험\s*수익/];export function lintCopy(copy: string, context: { tokenSymbol: "USDe" | "sUSDe" }) { const violations: string[] = []; for (const pattern of FORBIDDEN_PHRASES) { if (pattern.test(copy)) { violations.push(`${context.tokenSymbol} 문구에서 금지 표현 발견: ${pattern}`); } } return { ok: violations.length === 0, violations };}강의 포인트
| 관점 | 강의 중 확인할 질문 | 학습 후 남길 증거 |
|---|---|---|
| 구조 이해 | USDe는 어떤 방식으로 달러 노출을 만든다고 설명할 수 있는가? | fiat-backed, crypto-backed, synthetic dollar 비교표 |
| 리스크 분해 | funding, basis, custody, exchange, liquidity risk를 서로 다른 행으로 나눴는가? | 리스크 원천별 운영 지표 목록 |
| 제품 문구 | "달러", "상환", "수익"이라는 단어를 어떤 조건에서만 쓰기로 했는가? | 금지 표현과 허용 표현 표 |
| 회계/UX | USDe와 sUSDe를 같은 결제 자산으로 묶지 않았는가? | principal token과 reward-bearing token 분리 정책 |
실무 예시
백엔드[CLIENT] [OPS] 상황: 결제팀이 "USDe를 crypto checkout에서 받을 수 있게 하자"는 요청을 받았다. 단순 구현은 ERC-20 주소를 allowlist에 넣고 결제 감지 컨트랙트에 추가하는 것이다. 그러나 강의의 기준으로는 먼저 판단표를 만든다.
| 용도 | 기본 판단 | 필요한 조건 |
|---|---|---|
| Checkout payment asset | 제한적으로 검토 | chain별 공식 주소, price source, liquidity depth, refund policy, 장애 시 pause 조건 |
| Merchant settlement asset | 보수적으로 접근 | merchant가 USDe 보유 리스크를 명시적으로 수락하고, USDC/fiat 전환 route가 준비돼야 한다. |
| Treasury holding | 별도 투자 정책 필요 | exposure limit, funding risk monitor, custodian/OES risk review, board-level 승인 |
| Yield product 또는 sUSDe 노출 | 결제 화면과 분리 | APY 표시 기준, reward 귀속, withdrawal delay, suitability 문구 검토 |
이 판단표가 있어야 구현도 단순해진다. token.allowCheckout = true만 저장하지 않고 token.allowedUseCases = ["checkout"], token.settlementPolicy = "convert-to-usdc", token.redemptionPath = "secondary-market"처럼 운영 가능한 사실을 데이터로 남길 수 있다.
흔한 오해와 실패 시나리오
| 오해 | 실제로 확인할 것 |
|---|---|
| USDe가 1달러 근처에서 거래되면 USDC와 같은 리스크라고 본다. | fiat-backed redemption과 synthetic hedge stability는 다른 장치다. |
| sUSDe를 높은 APY가 붙은 stablecoin처럼 checkout에 넣는다. | sUSDe는 reward-bearing token으로 별도 가격 비율과 회계 처리가 필요하다. |
| direct redemption과 market sell을 같은 탈출 경로로 쓴다. | whitelisted redemption 가능 여부와 secondary liquidity를 분리해 문서화한다. |
| funding 수익만 보고 비용 구간을 생략한다. | negative funding, reserve fund, dynamic allocation, liquidity stress를 함께 검토한다. |
실습 과제
- 운영USDe 리스크 원천 분해하기: delta hedge, funding/basis, backing asset, OES custody, exchange venue, mint/redeem access, secondary liquidity를 각각 다른 리스크로 정리한다.
- 백엔드USDe 결제 allowlist 판단표 만들기: USDe를 checkout asset, merchant settlement asset, treasury holding, yield product 중 어디에 허용할지 기준과 금지 문구를 작성한다.
- 백엔드[CLIENT] sUSDe 회계/UX 분리하기: USDe와 sUSDe를 principal token과 reward-bearing receipt token으로 나누고, 결제 금액 표시, 환불, 정산, 수익 인식에서 다르게 처리할 점을 적는다.
완료 기준
- 수익 원천을 3개 이상 구분했다.
- 헤지 실패 상태를 설명했다.
- 상품 설명 문구의 금지 표현을 정리했다.
- mint/redeem 접근성과 secondary market liquidity를 분리해 평가했다.
근거 자료
- 합성 수익형 스테이블코인 USDe: 01-스테이블코인/09-합성-수익형-스테이블코인-USDe.md
- Ethena Docs: USDe Overview: https://docs.ethena.fi/solution-overview/usde-overview
- Ethena Docs: Underlying Derivatives: https://docs.ethena.fi/solution-overview/underlying-derivatives
- Ethena Docs: Custodial Risk: https://docs.ethena.fi/solution-overview/risks/custodial-risk
- Ethena Docs: Funding Risk: https://docs.ethena.fi/solution-overview/risks/funding-risk
- Ethena Docs: Rewards Mechanism Explanation: https://docs.ethena.fi/solution-overview/protocol-revenue-explanation/rewards-mechanism-explanation