← 목록
뱅크 2026-04-30 3KB 읽기 3분

크라우니뱅크 한글 계좌번호 시스템 v4.0

개요

크라우니뱅크에 한글 9x9x9 계좌번호 시스템을 도입했다. 729개 한글 글자(초성9 x 중성9 x 종성9)로 구성된 고유 계좌 체계.

  • 계좌번호 길이: 3~9자 (3자 기본 = 3.87억 주소공간, 9자 최대 = 5.5×10^25)
  • 자동생성: SHA256 해시 → mod 729 인덱싱으로 고유 3자 계좌
  • 직접선택: 고객이 원하는 한글 조합 선택 가능

구현된 것

계좌.한선 모듈 (~570줄)

  • 729자 한글 매핑 테이블 (9그룹 × 81자 — VM UTF-8 버그 회피)
  • SHA256 해시 기반 자동 계좌 생성
  • 12개 API 함수 (등록, 로그인, 검색, 가용확인 등)
  • WAL 영속성 (K=고객, A=계좌맵, H=전화맵 타입)

12개 새 API 엔드포인트

  • 인증 불필요: register, login, login-phone, available, search, charset
  • 인증 필요: info, list, create, link-genesis, password, profile

프론트엔드 업데이트 (wallet.html)

  • 3탭 로그인: 계좌 로그인 / 신규가입 / 제네시스
  • 전화번호 로그인 지원
  • 실시간 계좌 가용성 확인
  • 서버 연동 잔액 로딩

핵심 버그 수정

VM 균형3진 나눗셈 문제

80/81=1 (표준 정수 나눗셈은 0). VM의 "자연 반올림" 나눗셈이 |remainder| ≤ |divisor|/2 규칙을 따르기 때문.

해결: 나눗셈 대신 범위 비교 사용 (인덱스 < 81 → G0, 인덱스 < 162 → G1, ...), 모듈로 대신 감산 루프 사용.

VM UTF-8 글자수 오버카운트

729자 한국어 문자열에서 글자수 = 845 (실제 729), 글자(s, 400) = "i" (잘못된 값).

해결: 729자 문자열을 81자 그룹 9개로 분할. 81자 문자열에서는 글자수글자 모두 정확.

그리고 연산자 문제

hanseonc_high 컴파일 코드에서 만약 (A == "X" 그리고 B == "Y") 형태가 라우트 매칭 실패.

해결: 모든 그리고&& 치환.

관련 파일

  • /Users/ef/crowny-bank/src/계좌.한선 — 계좌 모듈
  • /Users/ef/crowny-bank/src/크라우니뱅크.한선 — 메인 서버 (63 엔드포인트)
  • /Users/ef/crowny-bank/web/wallet.html — 프론트엔드
  • /Users/ef/crowny-data/bin/bank.toau — 컴파일된 바이너리
  • /Users/ef/CrownyOS/crownyc/crownyc.c — VM (HASH_GET, HASH_KEYS 수정)

729 문자셋

초성: ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅅ ㅇ ㅎ
중성: ㅏ ㅓ ㅗ ㅜ ㅡ ㅣ ㅐ ㅔ ㅚ
종성: (없음) ㄱ ㄴ ㄹ ㅁ ㅂ ㅅ ㅇ ㅎ

예: 강남북 = (ㄱ+ㅏ+ㅇ)(ㄴ+ㅏ+ㅁ)(ㅂ+ㅜ+ㄱ) — 모두 729자 안에 포함

잔여 이슈

  • VM 글자수 UTF-8 오버카운트 근본 수정 필요 (현재 우회)
  • 계좌 검색이 제네시스 연결 계좌를 못 찾음 (지갑DB 키가 GEN-코드)
  • 게이트웨이 연동 시 URL 인코딩 한글 처리 확인 필요