본문으로 건너뛰기

Event, Posting, Valuation

계획

CUE와 PostgreSQL 계약은 있고 검증도 통과한다. 이 record를 만드는 domain runtime은 아직 없다.

책임 경계

Observation은 source 또는 chain execution에서 읽은 내용을 기록한다. Transfer가 income인지, 두 leg가 swap인지, 거래소 출금과 wallet 입금이 같은 self-transfer인지 그 자체로 판단하지 않는다.

개발할 runtime은 이 판단을 versioned record로 남긴다.

Observation → InterpretationHypothesis → InterpretationDecision
→ InterpretedEvent revision → FlowLeg · AssetPosting · FlowRelation
→ Valuation
  • AssetPosting은 어떤 소유 account의 어떤 asset이 얼마나 증감했는지 기록한다.
  • FlowRelation은 확인된 continuity를 포함해 두 leg가 연결된 근거를 기록한다.
  • Valuation은 화폐 측정값과 사용한 정확한 증거·policy를 기록한다.

역할을 나누면 해석이 바뀌어도 source fact는 그대로 둘 수 있다.

MVP 동작

입력 시나리오필요한 출력하면 안 되는 것
CEX trade fill처분 자산, 취득 자산, 대가, 별도 증거가 있는 fee Postingtrade와 fee를 설명 없는 delta 하나로 합침
CEX withdrawal과 소유 wallet receipt소유권·asset·amount·time 근거가 있을 때만 SELF_TRANSFER Event와 CONFIRMED CONTINUITYwithdrawal을 처분으로, receipt를 새 income으로 처리
EVM swap과 gasswap leg와 gas Posting을 chain 좌표와 함께 분리gas를 취득량에 숨기거나 protocol 의미를 추측
외부 inbound transferincome·gift·transfer 등 경제적 근거가 생길 때까지 review material모든 inbound를 income으로 자동 분류
Balance delta 또는 account-state snapshotreconciliation evidencesource movement나 승인 Event 없이 Posting 생성
미지원 DeFi interactionnative evidence를 보존한 UNSUPPORTED 또는 review-required모르는 protocol pattern을 확정 Event로 생성

근거가 부족한 경우

근거 부족은 그대로 드러난다

소유권, 좌표, asset identity, amount, relation 근거가 부족하면 해석을 자동 확정하지 않는다. Hypothesis와 terminal decision을 기록하고 unresolved 또는 review-required 상태로 남긴다.

거래소 withdrawal과 wallet receipt가 모두 확인되고 적용 가능한 OwnershipAssertion이 있으면 self-transfer continuity를 만들 수 있다. Destination이 확인되지 않으면 OUT Posting만 남기고 destination leg는 MISSING으로 둔다. arrival Posting과 basis carry는 만들지 않는다. 근거가 추가되면 이전 결과를 지우지 않고 새 revision을 만든다.

Valuation 규칙

KRW FAIR_VALUE에는 PRICE 선택과 필요 시 FX 선택이 필요하다. 각 선택은 source artifact, 비교 policy, tolerance를 고정한다.

  • 필수 근거가 없으면 valuation은 incomplete로 남는다.
  • tolerance 밖의 source conflict는 명시적 resolution이 필요하다.
  • fallback을 적용하면 이유와 사용한 evidence를 함께 기록한다.
  • assetQuantity × PRICE × FX는 exact integer ratio로 계산한다.
  • 반올림은 최종 KRW 최소 단위에서 한 번만 한다.
  • COST_BASIS는 원래 KRW 취득 증거를 따르며 사용하지 않은 시장 가격을 만들어내지 않는다.

개발 경계

Component현재 상태
CUE type과 invariant구현됨
Ledger·valuation persistence client구현됨
Hypothesis generation·decision runtime계획
Event revision·Posting projection runtime계획
Price/FX 수집·valuation runtime계획
위 6개 MVP case의 golden fixture계획

Tax inventory와 report 생성은 승인된 Posting과 Valuation에 의존한다. 세무 inventory와 리포트를 참고한다.