← 목록

EFcard Phase 1 — card.crowny.org 초안 (2026-04-14)

개요

크라우니 생태계의 포네(FNC)·맘(CRM)·크라우니(CRN)를 일상에서 쓰게 해주는 PWA 결제 도구. 원화 유입 모듈 없음, 100% 크라우니 내부 자산 소비.

핵심 철학

  1. 원화 환전·충전 없음 (규제 회피)
  2. 포네/맘/CRN은 생태계 활동(PoA)으로만 획득
  3. 지인 담보는 Lock만, 차감 절대 없음
  4. 한도 내 미상환 패널티 없음
  5. EFcard 쓸 수 없는 사람 = 담보 없는 외국인 / 대금 미지급자

이번에 한 일

  • /Users/ef/crowny-card/ 프로젝트 스캐폴딩 + CLAUDE.md
  • server.js API 서버 구축 (포트 9450)
  • /api/card, /api/card/issue, /api/card/hanseon-code, /api/card/request
  • /api/pay/scan, /api/pay/confirm, /api/pay/history
  • /api/trust/grant, /api/trust/graph, /api/trust/locks, /api/trust/settle
  • /api/store/products, /api/store/buy
  • PWA 프론트엔드 web/index.html + assets/*
  • 카메라 72vh 스캐너 (BarcodeDetector)
  • 한선코드 crowny://pay?v=1&to=&amt=&asset=&sig=HMAC16
  • 결제확인 모달 + WebAuthn 지문인증 + "결제하겠습니까?" 팝업
  • 잔액바 + 신뢰한도 + 자동충전 토글
  • 한선씨 동반 src/결제로직.한선 — 담보 Lock/Release 로직 1:1 대응
  • market.crowny.org 통합: pay-efcard 액션 (/api/orders/:id/action)
  • crowny-gateway/gateway.yaml 에 card.crowny.org 라우팅 추가
  • 한선코드 규격

    crowny://pay?v=1&to=<wallet>&name=<표시>&amt=<맘>&asset=FNC
                 &memo=<URL인코딩>&nonce=<16hex>&ts=<unix>&sig=<HMAC16>
    

    관련 파일

    잔여 이슈

    첫 결제는 bootstrap 모드(키 미등록이면 통과), 등록 후엔 엄격 검증

    7차 작업 (2026-04-16) — 신뢰한도 결제 검증 + 실시간 알림 + 게이트웨이 수정

    신뢰한도 결제 활성화 (1500명 배포 핵심 요건)

    문제: confirmPayment() 라인 198이 bank_token 필수 → 신규 가입자(USR-{8hex}) 모두 결제 불가 수정: server.js:192-220

    E2E 검증 통과 (6 시나리오)

    #시나리오결과
    1신규 가입 + 자동 500맘 부여
    2300맘 결제 (한도 사용)✅ Lock 300/500
    3250맘 한도 초과 시도✅ 거부 (insufficient-funds-and-credit)
    4200맘 한도 정확히 채움✅ Lock 500/500
    5300맘 상환 → 한도 해제✅ Lock 200/500
    6회수된 한도 재사용

    실시간 가입자 알림 (admin.html)

    게이트웨이 라우팅 수정 (gateway.yaml:205-220)

    문제: static + upstream + spa:true 조합 → 모든 요청이 SPA fallback 으로 떨어짐 (/api/* 까지) 원인: gateway.js:340service.static 있으면 무조건 serveStatic() 호출, upstream 우회 수정: static: /Users/ef/crowny-card/web 라인 제거. 카드 서버의 server.js:698-706 가 정적 파일 라우팅 직접 처리. 결과: 4개 페이지 모두 200 OK
    /                        → 200 (PWA index)
    /admin.html              → 200 (대시보드)
    /share-templates.html    → 200 (발송 템플릿)
    /invite/{CODE}           → 200 (랜딩)
    /api/invite/info/{CODE}  → 200 (JSON)
    

    새 API

    Founder 발급 완료

    잔여 이슈

    6차 작업 (2026-04-16) — 1500명 배포 시스템

    목표: 사용자가 주위 1500명에게 EFcard를 전달할 수 있는 온보딩 시스템 구축.

    구조적 결정

    새 API (server.js)

    자동 신뢰부여 로직

    초대 수락 시 db.trust_grants 에 자동 ACTIVE entry 생성:

    랜딩 페이지 web/invite.html

    E2E 테스트 통과

    이영섭(USR-C469C02F) 가입
    → 초대 코드 E54E69C6 발급 (27회, 500맘)
    → 홍길동(USR-0B5252A1) 코드로 가입
    → 자동 500맘 신뢰부여 ✅
    → /api/invite/tree → 1명 멤버 확인 ✅
    

    3배수 확장 모델 (1500명 도달)

    1 (founder) → 27 (1차) → 27×27=729 (2차) → 1500+ (3차 일부)
    

    5차 작업 (2026-04-16) — 인증 브릿지 + UI 통합

  • 뱅크↔card 인증 브릿지:
  • bankCall(method, path, body, token) — Bearer 토큰 forward
  • /api/card/issuebank_token 파라미터 추가 (발급 시 뱅크 토큰 연결)
  • confirmPayment — payer의 저장 토큰으로 balance 조회 + transfer 실행
  • 헤더 대소문자 이슈 해결: 뱅크 한선씨 VM이 Authorization (대문자) 필수
  • EFcard 결제 버튼 3개 서비스 통합:
  • market.crowny.org — 주문 상세 모달에 "EFcard 결제" 버튼 (pay-efcard 액션)
  • play.crowny.org — 예약 확정 옆에 "EFcard 결제" + doBookEFcard() 함수
  • solution.crowny.org — 5개 솔루션 카드에 "EFcard 결제" 버튼 + payEFcard() 함수
  • gateway 검증: card.crowny.org 라우팅·CORS·healthCheck·캐시 정상 (validate 통과)
  • 4차 작업 (2026-04-15) — Phase 5 완료

  • 라이선스 시스템 (crowny-card 내장):
  • /api/license/products — 4개 SKU 카탈로그 (CROWNYC-DEV/TEAM, SELCORE-ENT, HANSEON-LIFETIME)
  • /api/license/buy — EFcard 결제 → 서명된 라이선스 토큰 발급
  • /api/license/verify — HMAC 서명 + 만료 검증 (오프라인에서도 토큰 단독 검증 가능)
  • /api/license/list?wallet — 내 라이선스
  • 토큰 구조: base64url JSON + HMAC-SHA256 서명 16자
  • payload: license_id|wallet_id|sku|seats|issued_at|expires_at
  • 검증자가 CARD_HMAC_SECRET 공유 시 독립 검증 가능
  • 순환경제 완성: 솔루션 제공자가 받은 포네로 crownyc/셀코어 라이선스 구매 → foundation-license → 다시 생태계 재투입
  • 진행률

    Phase대상상태
    1market P2P 중고
    2크라우니 뷰티 스토어
    3play 티켓
    4솔루션·컨설팅 재결제
    5셀코어/crownyc 라이선스
    6(장기) 외부 카드사 연동💬 선언만

    3차 작업 (2026-04-15)

  • market 스키마 확장: /api/userswallet_id, /api/ordersbuyerWallet/sellerWallet 자동 조회+저장 (users 매칭, body 오버라이드 가능)
  • 솔루션 재결제 루프 (Phase 4): /api/solutions/pay-efcard + /api/solutions/purchases — 받은 포네로 다른 솔루션 구매
  • 한선씨 컴파일 성공: 결제로직.한선 → 329KB TOAU → crownyc 실행 OK
  • 초기 구상에서 외부 HTTP/HMAC 함수 의존 제거, 순수 담보 계산 로직으로 정제
  • 함수: 가용담보합, 담보잠금시도, 담보해제, 한선코드서명/검증, 사용가능여부, 결제시뮬
  • 암호.한선 JSON.한선 표준 라이브러리 사용
  • 2차 작업 (2026-04-14 추가)

    로드맵

    Phase대상상태
    1market.crowny.org 결제 통합✅ 기본 연동 완료
    2크라우니 뷰티 스토어/api/store/buy
    3play.crowny.org 티켓
    4솔루션·컨설팅 재결제
    5셀코어/crownyc 라이선스
    6외부 카드사 연동💬 선언만

    실행

    bashcd /Users/ef/crowny-card && node server.js
    # → http://127.0.0.1:9450
    # gateway 재시작 후 https://card.crowny.org