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 Posting | trade와 fee를 설명 없는 delta 하나로 합침 |
| CEX withdrawal과 소유 wallet receipt | 소유권·asset·amount·time 근거가 있을 때만 SELF_TRANSFER Event와 CONFIRMED CONTINUITY | withdrawal을 처분으로, receipt를 새 income으로 처리 |
| EVM swap과 gas | swap leg와 gas Posting을 chain 좌표와 함께 분리 | gas를 취득량에 숨기거나 protocol 의미를 추측 |
| 외부 inbound transfer | income·gift·transfer 등 경제적 근거가 생길 때까지 review material | 모든 inbound를 income으로 자동 분류 |
| Balance delta 또는 account-state snapshot | reconciliation evidence | source movement나 승인 Event 없이 Posting 생성 |
| 미지원 DeFi interaction | native 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와 리포트를 참고한다.