SettleLab
Assessment board
EXAM 01Stablecoin Systems

Stablecoin Systems 핵심 시험

발행, 상환, 서명 결제, CCTP, 페그, 정산 원장을 시스템 관점에서 평가한다.

출제 목적

스테이블코인을 토큰 하나가 아니라 발행·상환·정산·운영 리스크가 결합된 시스템으로 이해했는지 확인한다.

난이도 정책

  • 입문은 행위자와 상태 구분을 묻는다.
  • 핵심은 결제 방식과 정산 원장 설계를 묻는다.
  • 심화는 CCTP와 peg/liquidity 실패 상태를 코드와 상태머신으로 표현하게 한다.

채점 정책

  • 객관식은 제품 설계에서 가장 안전한 판단을 고른다.
  • 코드형은 이벤트, 상태, idempotency, reconciliation 신호를 채점한다.
Preview mode

로그인 후 제출 가능

문제, Starter code, 루브릭은 미리 볼 수 있다. 답안 작성과 점수 저장은 로그인 후 제공된다.

객관식핵심3

01발행과 상환의 원장 차이

issuer가 fiat reserve를 받고 stablecoin을 mint한 뒤 사용자가 redemption을 요청했다. 제품 원장에서 반드시 분리해야 하는 것은?

객관식심화3

02CCTP 완료 판단

CCTP 기반 cross-chain USDC 결제에서 사용자가 source chain burn을 보냈다. destination에서 결제 완료로 표시하기 전 확인해야 할 최소 조건은?

코드 작성핵심8

03결제 상태머신 타입 작성

stablecoin checkout 상태를 TypeScript union type으로 작성하라. Permit/ERC-3009 승인, onchain 제출, confirmed, reconciled, failed/refunded 상태를 구분해야 한다.

Starter code
type PaymentState =
  | { status: 'created' }
  // add states
;

채점 루브릭

  • authorization과 onchain submission을 분리한다.
  • confirmed와 reconciled를 분리한다.
  • 실패와 환불 상태를 명시한다.
  • txHash 또는 ledgerEntryId 같은 추적자를 둔다.

자동 채점 신호

  • 승인 상태
  • 제출 상태
  • 확정 상태
  • 정산 상태
  • 실패/환불
코드 작성심화10

04ERC-3009 authorization 중복 사용 방지

ERC-3009 스타일 authorization을 검증하는 validateAuthorization 함수를 작성하라. auth, payment, now를 받아 'ok' | 'used' | 'not_yet_valid' | 'expired' | 'wrong_recipient' | 'wrong_amount' 중 하나를 반환해야 한다. nonce/authorizationId 중복 사용, validAfter/validBefore, recipient binding, amount 확인이 포함되어야 한다.

Starter code
function validateAuthorization(auth, payment, now) {
  // return status code
}

채점 루브릭

  • authorizationId 또는 nonce 재사용을 막는다.
  • 시간 범위를 검증한다.
  • recipient와 amount를 결제 의도에 bind한다.
  • side effect 전에 used marker를 남긴다.
  • 제공된 실행 테스트 케이스를 통과해야 한다.

자동 채점 신호

  • 중복 사용 방지
  • 시간 검증
  • 수신자 바인딩
  • 금액 검증
  • 상태 기록
로그인하고 답안 제출