25. Anti-patterns

발견 즉시 immediate stop
절대 안 되는 5 가지 storage 오류
  1. Forbidden 의 plaintext storage — private key / MPC share / recovery passphrase 를 DB column 에
  2. Append-only 의 silent rewrite — "잘못된 audit_event 를 UPDATE"
  3. Mutable 의 derived value 를 canonical 로 — balance cache 를 ledger truth 로
  4. Runtime 의 persistence — MPC partial signature 를 Redis 에
  5. External 의 cache 를 fresh state 로 가정 — Chain RPC cache 를 canonical 로

도메인 별 anti-patterns

Anti-pattern왜 안 좋은가
users.role mutable + history 없음누가 / 언제 / 왜 role 바뀌었는지 추적 불가
workspaces.owner_user_id mutableOwner identity = workspace identity, 변경은 Transfer Owner 절차만
audit_events 의 row UPDATE / DELETEhash chain 영구 손상 — high-severity violation
balance 를 FLOAT 또는 DOUBLEfloating-point error — wei 단위 손실 가능
음수 balance 허용overdraft = architectural violation
transactions.raw_payload_cbor UPDATE서명된 payload 변조 — TEE / SGX 의 의미 무력화
transactions.tx_hash mutablechain ↔ DB binding 깨짐
approval_decisions.verdict UPDATE사후 verdict 변경 = policy engine 무력화
signing_events 의 partial_sig_hash mutable사후 재서명 가능 — zero-trust 무력화
Console 에 "approve" 버튼 추가 (정책 우회)governance separation 무력화 — Owner / Quorum 흐름 우회
TEE / SGX 없는 checkpoint (단순 SHA-256)운영자가 hash 재계산 가능 — checkpoint 무력화
Reorg 처리 시 chain_events 이전 row UPDATEappend-only 위반
Finality threshold 무시 (1 confirmation 에서 ledger 반영)reorg risk
Reconciliation Service 에 write 권한권한 분리 위반
Mismatch 자동 정정 (사람 결정 없이)audit defense 약화
API credential plaintext DB 저장forbidden storage 위반
Recovery passphrase hash 저장passphrase 자체가 forbidden — hash 도 brute-force 가능성
Online machine 에서 Workspace Keys Recovery 실행Fireblocks 명시 SPOC 경고 — private key "considered exposed and compromised"
이 문서가 다루지 않는 것
  • SQL DDL 통째로 dump — 본 문서는 reasoning
  • ORM 매핑 — 언어 / framework 의존
  • MPC 프로토콜 detail — cryptography tutorial 회피 (MPC-CMP 의 라운드 구조는 본 문서 범위 외)
  • 특정 MySQL 버전 / storage engine 추천 — 운영 환경 의존
  • TPS / latency / capacity 수치 — institution scale 의존
  • Fireblocks vendor 추천 — 본 문서는 Fireblocks 의 구조를 mirror 한 architecture reference