← 목록
기타 2026-05-20 13KB 읽기 13분

크라우니 금융 4서비스 통합 고도화

개요

bank.crowny.org, dex.crowny.org, wallet.crowny.org, chain.crowny.org 4대 금융 서비스를 완전 한선씨화(4상균형3진 TOAU 기계어)하고, project.crowny.org로 기여보상 분배 시스템을 구축했다.

작업 내용

1. DEX 한선씨화 (dex.crowny.org:9729)

  • DEX서버.한선 (892줄) — 지갑/오더북/매칭엔진/API/대시보드 올인원
  • DEX대시보드.한선 (163줄) — 프론트엔드 HTML/CSS/JS 생성
  • 연동.한선 (198줄) — bank/chain/project 연동 (소켓 기반)
  • 보안.한선 (208줄) — 주문서명/거래해시/Rate Limiting/CWT 인증
  • server.js(270줄) 레거시 완전 대체

2. 지갑 독립 서버 (wallet.crowny.org:9410)

  • 지갑서버.한선 (~470줄) — CRN/FNC/CRM 통합 지갑 신규 생성
  • 3종 자산 교환: CRN:FNC=1:10, FNC:CRM=1:100
  • 상향 전환 0%, 하향 전환 7% 수수료
  • P2P 송금, 거래 이력, 모바일 대시보드

3. 프로젝트 기여보상 (project.crowny.org)

  • 기여추적엔진.한선 (452줄) — 7유형 가중치 기여 추적 + 보상 분배
  • 보상분배서버.한선 (456줄) — 독립 보상 API (reward.crowny.org:9738)
  • 보상대시보드.한선 (129줄) — 보상 풀/기여도/분배 이력 시각화
  • 보안.한선 (167줄) — 보상 서명/기여 증명/분배 뮤텍스
  • 프로젝트통합서버.한선 (500줄) — 메인 포트 9730 프로젝트관리+기여보상 통합

4. 크로스 서비스 연동

  • bank 연동.한선 — DEX 시세, 체인 기록, 프로젝트 보상 수신 5함수 추가
  • chain 연동.한선 (177줄) — 뱅크/DEX/프로젝트 연동 + 블록기여전파

기여 가중치 (7유형)

유형이름가중치
1코드 작성100
2코드 리뷰80
3테스트60
4문서 작성50
5버그 수정70
6노드 완료90
7기타40

보상 분배 체계

  • CRN(크라우니) = 골드, FNC(포네) = 실버, CRM(맘) = 코퍼
  • 교환 비율: 1 CRN = 10 FNC = 1000 CRM
  • 분배: 프로젝트별 보상 풀 → 기여 비율 비례 분배
  • "한 번 시작하면 멈출 수 없다" — 완전성이 핵심

포트 배정

서비스포트
bank.crowny.org9400
wallet.crowny.org9410
dex.crowny.org9729
project.crowny.org9730
reward.crowny.org9738
chain.crowny.org9734

관련 파일 경로

  • DEX: /Users/ef/crowny-dex/
  • 지갑: /Users/ef/crowny-wallet/
  • 프로젝트: /Users/ef/crowny-project/
  • 뱅크: /Users/ef/crowny-bank/
  • 체인: /Users/ef/crowny-chain/

한선씨 관성

  • 세션 시작 시 3% → 작업 후 87% (한선씨 우위)
  • 총 한선씨 파일: 13+ 파일, 4000+ 줄
  • 모든 파일 hanseonc_high 컴파일 EXIT=0 검증 완료

잔여 이슈 (해결됨 2026-05-21)

  • ✅ 통합 시작 스크립트 — crowny-finance/start-all.sh + 금융통합시작.한선
  • ✅ E2E 테스트 — crowny-finance/E2E테스트.한선 (소켓연결 기반 HTTP 클라이언트)
  • ✅ 장애 복구 프로토콜 — crowny-project/장애복구.한선 (WAL + 멱등성)
  • ✅ 워치독 — crowny-finance/watchdog.sh (분배서버 5초/일반 15초 감시)

무중단 보장 메커니즘

  1. WAL (Write-Ahead Log): 분배 직전 의도 기록 → 재시작 시 재생
  2. 멱등성: 같은 분배ID 두 번 적용해도 안전 (완료ID 캐시)
  3. 워치독: reward/project 서비스 5초 간격 감시 → 다운 시 즉시 재기동
  4. 3세대 백업 로테이션: WAL 파일 자동 회전

실서버 통합 완성 (2026-05-22)

발견·수정한 한선씨 VM 함정 3종

  1. 함수명 예약키워드 충돌: 잔액가져오기가져오기 키워드 포함 → 토층 무한루프. 잔액읽기로 변경
  2. TCP읽기 인자 누락: opcode가 [fd, 최대] 2인자 필요. TCP읽기(cl) 1인자 → max=0 → 빈 요청. 전 서버 TCP읽기(x, 4096) 일괄 수정
  3. 설정 읽기 오용: 설정(arr,i,v)은 쓰기 전용(mem[arr+i]=v). 설정(arr,i,"")를 읽기로 쓰면 배열 파괴. 읽기는 꺼내(arr,i). wallet 13곳, reward 19곳 수정

보상 분배 → 지갑 실입금 통합

  • wallet 서버에 POST /api/wallet/credit 추가 (시스템→유저 보상 입금)
  • reward 서버의 분배실행이 각 분배 건마다 wallet입금() 소켓 HTTP 호출
  • 입금 성공/실패를 분배 이력 reason에 기록 ("기여분배" / "기여분배-미입금")

E2E 검증 결과 (18/18 통과, 내용 기반)

  • 기여 등록: alice type1×100=10000점, bob type2×80=4000점
  • 풀 1000 CRN 분배: alice 714(71.4%), bob 286(28.6%) — 가중치·비율 정확
  • wallet 실잔액 확인: alice CRN 714/FNC 3571/CRM 14286, bob CRN 286/FNC 1429/CRM 5714 — 분배 결과와 정확히 일치
  • 분배 이력 전건 "기여분배" (미입금 0건)

가동 검증 완료 — 5개 한선씨 서비스 (2026-05-22)

서비스포트한선씨 파일상태
bank9400크라우니뱅크.한선LISTEN, WAL 172건 리플레이
wallet9410지갑서버.한선LISTEN, credit/send/convert 검증
dex9729DEX서버.한선LISTEN, 입금/조회 검증
chain9734코어서버.한선LISTEN, 헬스 ok
reward9738보상분배서버.한선LISTEN, 분배+wallet연동 검증

DEX 설정 버그 수정

  • DEX서버.한선 설정 120곳 중 102곳이 읽기 오용 → 꺼내로 일괄 변환
  • 남은 18곳은 정당한 재대입 쓰기 (목록 = 설정(목록,i,표현식))
  • 재컴파일 후 입금 5000 → 조회 5000 정상 확인

bank 서버 — 설정 버그 없음

  • bank의 67곳은 JSON설정(JSON 라이브러리)이지 설정(배열)이 아님 — 오탐
  • TCP읽기만 수정, 정상 가동

2026-05-22 후속 고도화

7서비스 체제 완성

서비스포트비고
bank9400/health 인증면제 완료
wallet9410credit API
dex9729오더북/매칭/체결 E2E 검증
chain9734POST /api/tx 거래기록
reward9738WAL 무중단 분배
projint9758프로젝트통합서버.한선 (E2E 14단계 PASS)
monitor9743관제서버.한선 (6서비스 통합 헬스)

장애복구 WAL 무중단 분배 (검증 완료)

  • reward 분배 시 wallet 입금 실패 → data/미입금.wal에 기록
  • POST /api/retry — WAL의 미입금 건 재시도, 성공분 제거
  • 워치독이 30초마다 /api/retry 자동 호출
  • 검증: wallet 다운 중 분배 → 미입금 WAL 기록 → wallet 부활 → retry → retried:1,remaining:0, 잔액 정확 복구

워치독 hang-aware 개선

  • 기존: 포트 점유(lsof)만 확인 → LISTEN하나 무응답(hang)인 서비스를 못 잡음
  • 개선: 실제 curl /health 응답 확인 → hang도 다운으로 감지
  • restart_service: 포트 점유 프로세스 강제 종료(kill -9)로 hang 프로세스 확실히 제거
  • 검증: DEX hang → 워치독 감지 → 자동 재기동 확인

DEX 매칭 E2E (검증 완료)

  • trader2 매도 100@50 + trader1 매수 100@50 → 체결 T-1
  • 체결 후: trader1 CRN 95000/ABC 100, trader2 CRN 105000/ABC 900 — 정확
  • chain에도 거래 기록

chain 거래 기록 연동

  • chain 코어서버에 POST /api/tx 추가 (from/to/asset/amount/memo → SHA256 txid)
  • reward 분배 시 각 건을 chain에 기록, 실패해도 분배는 계속

워치독 LaunchAgent 상시화 (완료)

  • ~/Library/LaunchAgents/org.crowny.finance.watchdog.plist — RunAtLoad + KeepAlive
  • 재부팅·워치독 자체 크래시에도 launchd가 되살림
  • 7서비스(bank/wallet/dex/chain/reward/projint/monitor) 전부 자동복구 대상

게이트웨이 등록 불일치 (발견 — 수정 보류)

gateway.yaml 등록과 실제 가동 포트 불일치:
  • dex.crowny.org → 9402 등록 (실제 DEX는 9729 가동)
  • chain.crowny.org → 9729 등록 (실제 chain은 9734 가동)
  • artist.crowny.org → 9734 등록 (실제 artist 미가동, chain이 9734 점유)
→ 정정하려면 artist.crowny.org 포트 재배치가 필요 — 타 서비스 영향이라 사용자 결정 후 처리. → 내부 통합은 localhost:port 직결이라 정상 동작 (E2E 검증 완료). 도메인 라우팅 레이어만 영향.

분배 시스템 보안 게이트 (완료)

  • 돈이 움직이는 엔드포인트(POST /api/pool/create, POST /api/distribute/:pid)에 관리자 토큰 검증
  • 바디 "token":"CRN-REWARD-ADMIN-2026-729" 필드로 인증
  • J응답에 401 Unauthorized 상태 추가
  • /api/retry는 인증 없음 — WAL 재시도(이미 기록된 실패분만 처리, 새 돈 미생성), 워치독 자동 호출용
  • E2E에 "인증없는 분배 거부" 검증 추가 → 19/19 통과

2026-05-27 후속 — 8서비스 체제 + 보안/UI 완성

발견·수정한 핵심 버그

  1. 워치독 bash 3.x 호환성 — macOS /bin/bash(3.2.57)는 declare -A 미지원 → 모든 서비스가 monitor 포트(:9743)로 잘못 매핑되어 무한 오재시작. plist를 /opt/homebrew/bin/bash(5.x)로 변경 + shebang 통일.
  2. reward TOAU 경로 충돌/tmp/crowny-reward.toau가 monitor 코드로 덮인 채 가동. TOAU 파일별 고유 경로(/tmp/reward.toau, /tmp/monitor.toau) 분리.
  3. 워치독 startup grace 부족restart_servicesleep 1이 큰 TOAU(bank 2.8MB)에 부족 → hang 오판 → 무한 재시작. grace 5초 + check_alive 2회 retry 추가.

보안 게이트 강화 (reward 서버)

  • Rate limiting — IP별 분당 30회, 초과시 60초 차단
  • 분배 한도 — CRN 10만/FNC 100만/CRM 1천만 상한
  • 분배 쿨다운 — 같은 프로젝트 30초 내 재분배 금지
  • 감사 로그/Users/ef/crowny-project/data/감사.log에 행위/주체/상세 기록
  • 검증: 6건 보안 게이트 전부 정상 작동 (토큰X→401, 한도초과→400, 정상→200, 쿨다운→400)

보상 UI v2 완성 (rewardUI.crowny.org:9764)

  • /Users/ef/crowny-project/보상UI v2.한선 (290줄, 17함수)
  • 6화면: 프로젝트 목록 / 기여등록(7유형) / 풀충전 / 분배실행(2단 확인) / 실시간 분배이력(5초 폴링) / WAL 재시도
  • 다크 verdant 톤, 분배 시작 시 확인 모달("멈추지 않음" 경고)
  • 관리자 토큰 type=password autocomplete=off + 즉시 clearTok (localStorage 미저장)

분배 fast-path 무중단 패턴 (2026-05-28 확정)

문제: 분배실행이 매 입금마다 wallet/chain에 소켓 호출 → wallet 다운 시 소켓수신이 무한 대기 → 분배 hang → reward 자체가 워치독에 강제 재시작되며 분배 트랜잭션 유실 위험.

근본 해결: 분배실행을 fast-path로 단순화.

  • 분배 = 무조건 미입금기록(uid, 자산, 금액) (WAL에 즉시 기록만)
  • 실제 wallet 입금 = retry worker(워치독 30초마다 /api/retry 호출)가 담당
  • WAL이 단일 원본(SSOT). 분배는 1ms~수십ms 내 완료, wallet 가동/다운과 무관.
v5 시나리오 검증 결과:
  • 분배 응답: 14ms (wallet 다운 상태)
  • WAL 6건 정확 기록 (CRN/FNC/CRM × 2명)
  • wallet 부활 + retry → 6건 전부 입금, 잔액 정확
  • fp-a: CRN 300/FNC 1200/CRM 12000 (60%)
  • fp-b: CRN 200/FNC 800/CRM 8000 (40%)
  • 합계: 500/2000/20000 (풀과 완전 일치, 누락/중복 0)
  • 8서비스 체제 완성

    서비스포트한선씨 파일검증
    bank9400크라우니뱅크.한선
    wallet9410지갑서버.한선
    dex9729DEX서버.한선
    chain9734코어서버.한선
    reward9738보상분배서버.한선 (보안+WAL+감사)
    projint9758프로젝트통합서버.한선
    monitor9743관제서버.한선
    rewardUI9764보상UI v2.한선
    워치독 LaunchAgent(bash 5.x)가 8서비스 전부 자동복구. E2E 테스트 19/19 통과 (보안 게이트 추가에도 회귀 없음).

    잔여 이슈

    • 게이트웨이 dex/chain/artist 포트 재배치 (사용자 결정 필요)
    • DEX/projint 누적 가동 후 hang — 워치독으로 자가치유하나 근본원인(crownyc VM 단일스레드) 미해결
    • gateway.yaml에 reward.crowny.org/projint.crowny.org/monitor.crowny.org/rewardUI 도메인 매핑 (gateway 세션 위임)
    • contribute API에도 유저 인증 적용 (auth.crowny.org SSO 연동 후)
    • 감사기록 함수가 셀코어 라이브러리와 이름 충돌 (동작은 정상, 추후 보안감사로 개명 권장)