피드로 돌아가기
Dev.toBackend
원문 읽기
Bit-for-bit 재현성을 보장하는 Deterministic Unit of Account 설계
Don’t trust me, verify me: openunit, a unit of account you can recompute byte-for-byte
AI 요약
Context
경제 지표 산출 과정의 불투명성과 기관에 대한 의존성으로 인한 신뢰 문제 발생. 기존 시스템은 계산 로직의 폐쇄성과 플랫폼별 부동 소수점 처리 방식의 차이로 인해 독립적인 검증이 불가능한 한계를 가짐.
Technical Solution
- Python 표준 라이브러리만 사용한 Zero-dependency 모듈 설계를 통한 환경 의존성 제거
decimal.Decimal(Precision 50, ROUND_HALF_EVEN) 도입을 통한 플랫폼 간 부동 소수점 오차 원천 차단datetime및time모듈 호출을 금지하는 Determinism Guard 구현으로 실행 시점의 가변성 제거- 정렬된 키와 공백 제거를 적용한 Canonical JSON 직렬화로 입력 데이터의 Byte-level 동일성 확보
- SHA-256 해시 체인과 Bitcoin 블록체인 기반 OpenTimestamps 연동을 통한 데이터 위변조 방지 및 무결성 증명
- 엔진과 완전히 분리된 독립적 구현체(
verify_independent.py)를 통한 Cross-implementation 검증 체계 구축
실천 포인트
- 부동 소수점 오차가 치명적인 금융/검증 시스템 설계 시 `float` 대신 `Decimal` 사용 검토 - 해시 기반 데이터 무결성 검증 시 정렬된 키(Sorted Keys)를 사용하는 Canonical JSON 포맷 적용 - 결정론적 빌드/실행 보장을 위해 런타임 시 시스템 시간 및 외부 상태 의존성 제거 테스트 수행 - 핵심 로직의 검증을 위해 상호 독립적인 두 가지 이상의 구현체로 교차 검증 수행