← 목록
기타 2026-06-19 15KB 읽기 16분

크라우니코인(CRWN) 규제안전 리워드 출시 + 밋업 2회차 예약제

개요

verse.crowny.org(크라우니버스)에 ① 빠델라 밋업을 7/7·7/21 두 회차 예약제로 전환, ② 크라우니코인(CRWN) 을 판매 없이 화장품·솔루션 구매 적립 리워드로만 시작하는 규제안전 출시(백서·엔진·페이지) 구축.

① 밋업 2회차 예약제

  • 회차: 2026-07-07(저녁)·2026-07-21, 각 오후 8:30–10:30 빠델라, 좌석30·주차22
  • server.js silicon 블록을 이벤트 키 구조로 전환: SILICON_EVENTS + loadSilicon(이벤트별 정규화) + siliconEventStats/siliconStats
  • POST /api/silicon/rsvpevent 필수, 회차별 dedup(같은 전화 양 회차 각각 신청 가능), 회차 미선택 400
  • web/silicon.html: 두 회차 카드(회차별 좌석/주차 게이지) + 회차 선택 폼. 4상 판정·실시간 게이지 유지
  • 검증: 분리집계·회차별 dedup·400 통과

② 크라우니코인 CRWN — 규제안전 리워드 출시

핵심 설계: 판매·양도·환전 없는 획득전용 폐쇄형 적립 = 마일리지 성격 → 특정금융정보법 가상자산 비해당, VASP 신고 없이 합법 출발.

  • 리워드지급.한선 (정통 코어): 화장품5%·솔루션7%·구독10%, 1 CRWN=1원 페그, 일일한도 100,000, 4상 지급판정(티 확정/옴 한도초과 이월/타 무효소스/음 환불·중복 이관), 상환가능 판정. hanseonc_high 컴파일·실행 검증, 학습DB 등록
  • 백서 v1.0: CrownyDoc/projects/2026-06-19-크라우니코인-백서.md (요약·배경·토큰개요·발행·효용·기술·규제적합성·거버넌스·로드맵 4Phase·토크노믹스·리스크). 발행상한 7,290,000,000(729×10⁷)
  • server.js CRWN 원장: data/crwn-ledger.json(balances/daily/history/minted/redeemed). API:
  • POST /api/coin/issue {phone,source,amount} — 4상 판정·발행·일일한도·상한·영속
  • GET /api/coin/balance?phone= , POST /api/coin/redeem(폐쇄 차감, 양도 엔드포인트 부재=설계), GET /api/coin/stats
  • web/coin.html: 히어로·왜 리워드로 시작(규제 비교)·적립률·라이브 적립/잔액/상환 시뮬레이터·백서 요약·로드맵. /coin·/whitepaper·/백서·/crwn 라우트
  • 검증: 적립(티 1650/5000)·무효(타)·환불(음)·한도초과(옴 100k까지)·잔액·상환·과다거부·통계 전 경로 통과. 게이트웨이 8443 경유 200
  • 관련 파일

    • /Users/ef/crowny-verse/리워드지급.한선 (정통 코어)
    • /Users/ef/crowny-verse/밋업정원.한선 (밋업 정원 코어, 회차당 동일)
    • /Users/ef/crowny-verse/web/coin.html · web/silicon.html
    • /Users/ef/crowny-verse/server.js (SILICON_·CRWN_ 블록 + /api/silicon/rsvp·/api/coin/)
    • /Users/ef/crowny-verse/data/silicon-rsvp.json · crwn-ledger.json (리셋 상태)
    • /Users/ef/CrownyDoc/projects/2026-06-19-크라우니코인-백서.md

    라이브

    • https://verse.crowny.org/silicon · /coin · /whitepaper

    잔여 이슈

    • 화장품(beauti:9742)·솔루션(solution:9735) 결제 완료 시 /api/coin/issue 실제 호출 연동 미결(현재 시뮬레이터/수동). 두 서비스 결제 훅에서 호출 필요.
    • 일일한도 옴 초과분 "익일 자동 이월" 은 메시지 약속 — 실제 이월 적립 배치(스케줄러) 미구현.
    • 부팅 영속(LaunchAgent) 미설정 — nohup detached.
    • 밋업 대기명단(타) 취소 자동승계, 관리자 명단 뷰 미구현(이전 잔여 이슈와 동일).
    • 백서 규제 적합성은 설계 의도 — 양도성 활성화(Phase 2) 전 외부 법률 검토 필요.

    추가 작업 (셋다 — A·B·C 완료)

    B. 밋업 관리자뷰·취소 자동승계·마감일 (verse)

    • siliconClosed(마감일 경과 자동 마감) + siliconRecompute(도착 ts순 정원 재적용 = 취소 시 대기→좌석·주차대기→주차 자동승계)
    • API: POST /api/silicon/cancel(취소+자동승계), GET /api/silicon/admin(키 인증, 확정/대기 분류, ?format=csv BOM), 회차별 deadline
    • web/silicon-admin.html(/silicon/admin): 키 입력→회차별 명단·취소 버튼·CSV. 공개 페이지에 마감 표시
    • 관리 키: 기본 crowny-verse-2026 (env SILICON_ADMIN_KEY 오버라이드)
    • 검증: 좌석30+대기1 → 확정자 취소 → 대기자 자동 확정 승계, 잘못된키 401, CSV ✓

    C. 부팅 영속 LaunchAgent (verse)

    • ~/Library/LaunchAgents/com.crowny.verse.plist (node server.js, VERSE_PORT=9561, RunAtLoad+KeepAlive, 로그 /tmp/verse.log)
    • launchctl bootstrap 로드, pid launchd 소유. kill→자동 respawn 실증(KeepAlive). 재부팅·크래시 자동기동

    A. 화장품·솔루션 결제 → CRWN 적립 연동

    • solution(standalone server.js): pay-efcard 결제 성공 직후 issueCrwn(buyer_wallet, crwnSource(category), price_fone) 호출(비차단·8s 타임아웃·정직폴백). purchase.reward_crwn 기록. 응답에 reward 포함. 동반 적립소스.한선(crwnSource 1:1) 컴파일·학습
    • beauti(통합 프레임워크 서비스서버.js): /api/구매확정(=/api/purchase-confirm) 라우트 추가. COIN_SOURCE 맵{beauti:화장품}만 적립, verse /api/coin/issue 호출. 데몬(manage.sh) 자가치유 하 beauti 인스턴스만 교체
    • 함정 수정: 한글 라우트(/api/구매확정)는 u.pathname이 퍼센트 인코딩 → 매칭 실패. 핸들러 상단 decodeURIComponent(p) 안전 디코딩 추가(framework·verse 양쪽). /백서·/실리콘밸리도 동시 복구
    • 검증: beauti 구매확정 44,000→2,200·33,000→1,650 CRWN 잔액 반영(ASCII+한글 경로), 게이트웨이 경유 ✓. solution 결선 구문검증(card 실결제만 라이브 트리거)

    관련 파일 (추가)

    • /Users/ef/crowny-verse/web/silicon-admin.html
    • /Users/ef/crowny-solution/server.js (issueCrwn·crwnSource + pay-efcard 훅) + 적립소스.한선
    • /Users/ef/crowny-services/서비스서버.js (/api/구매확정 + decodeURIComponent)
    • ~/Library/LaunchAgents/com.crowny.verse.plist

    잔여 이슈 (갱신)

    • solution pay-efcard 실결제 e2e(card.crowny.org 유효 wallet/authProof)는 미트리거 — 코드 결선·구문은 검증. 1포네=1원 적립기준 가정(명시).
    • 옴 익일 이월 배치, 밋업 첫회차 실제 마감일 확정(현재 deadline=이벤트당일), LaunchAgent는 verse만(beauti/solution은 manage.sh/수동).
    • 다른 화장품 SKU·솔루션 구독 결제 UI에서 account=연락처 전달 필요(현재 buyer_wallet/account 키).

    셋다(2) — ①실결제 e2e ②익일이월 ③마감일 완료

    ① solution 실결제 e2e (검증 완료)

    • card 결제 코어 분석: 은행 잔액 없이 trust 신용 전액 커버 시 transferAmt=0(은행 호출 0), authProof webauthn 미등록=첫결제 허용으로 성립
    • 실행: 결제자 카드발급(은행토큰X) → trust/grant 50000맘 → solution pay-efcard(SOL-701 구독, price_fone 50, webauthn) → 실제 payment_id 발급 + purchase.reward_crwn 5 + verse 잔액 5 CRWN. 전 체인 실증
    • 테스트 잔재: card db TEST-BUYER-CRWN 카드·trust_grant·payment, solution purchases PUR-(클리어 라벨, 무해). verse 원장은 리셋

    ② 옴 일일한도 익일 이월 배치

    • 원장 pending 추가. 옴 시 초과분(full-granted) pending 적립. crwnDrain(account,today)=오늘 한도 잔여만큼 pending 적립(lazy: issue마다 우선 드레인)
    • POST /api/coin/carryover(admin key) 전 계정 배치 + LaunchAgent com.crowny.verse.carryover.plist(매일 00:05 curl). stats.pending 노출
    • 동반 이월.한선(이월적립액=min(보류,max(0,한도-오늘사용))) 컴파일·학습
    • 검증: 옴→pending 50k, 같은날 carryover 0(한도소진), 익일 시뮬→50k 적립 잔액 150k pending 0, 인증 401

    ③ 밋업 마감일 datetime

    • deadline을 모임 시작(8:30pm KST) datetime으로: 2026-07-07T20:30:00+09:00/...21.... siliconClosed=Date.now()>=deadline. deadlineLabel '7/7 20:30'·'7/21 20:30' 페이지 표시(공개·관리자)
    • 신청은 모임 시작 직전까지 열림(당일 오전 가능), 시작 시각 자동 마감

    관련 파일 (추가)

    • /Users/ef/crowny-verse/이월.한선
    • ~/Library/LaunchAgents/com.crowny.verse.carryover.plist
    • server.js: CRWN pending/crwnDrain/carryover, SILICON deadline datetime

    잔여 이슈 (갱신)

    • 실결제 테스트 잔재(card/solution TEST- 레코드) 정리 선택. 1포네=1원 적립기준 가정 유지.
    • beauti/solution 부팅영속은 manage.sh(beauti)/수동(solution) — verse만 LaunchAgent.
    • 마감일·요일은 deadline 1줄 수정으로 조정 가능(현재 8:30pm 시작=마감).

    쉬운 설명 + 게임 세계관 (2026-06-20)

    • web/easy.html 개선: 손글씨 Gaegu → 시스템 한글폰트(Apple SD Gothic Neo/Pretendard/Noto)로 가독성↑, clamp 반응형 폰트, viewport-fit·safe-area, 터치버튼(active 눌림), 모바일 우선. 라우트 /easy·/쉽게·/kids
    • web/world.html 게임 세계관: 크라우니 월드 — 모바일 퀘스트 맵. 6스테이지 노드(마을광장→빠델라→코인상점→저금통언덕→로봇관제소→크라우니타워), 점선 길로 연결. 상태(잠김🔒/도전▶/완료✓), 플레이어 레벨(새내기→마을친구→마을주민→크루🏆), 코인 HUD+진행바, 노드탭→설명시트+코인획득, localStorage 진행저장, 완료 시 컨페티+배지. 퀘스트는 실제 /silicon·/coin 연결. 라우트 /world·/게임·/세계관·/월드·/game
    • 검증: 라우트 200, 게이트웨이 경유 200, 모바일(390px) 스크린샷 확인

    게임 세계관 업그레이드 (2026-06-20)

    • ① 캐릭터 아바타: 8종(🦊🐰🐻🐱🐶🦁🐯🐼) 첫 진입 선택 + HUD 탭으로 변경, 현재 스테이지 노드 위 아바타 bob 애니메이션, localStorage 저장
    • ② 효과음: WebAudio 합성(파일 없음) — 탭/코인/해금/승리 사운드, 🔊/🔇 토글
    • ③ 영어 모드: KO/EN 전체 i18n(UI+9스테이지 문구), EN/한 토글, localStorage 저장
    • ④ 스테이지 6→9 (3×3 세계관): +크라우니 은행🏦·마켓🛒·AI🧠. 레벨 4단(새내기/마을친구/마을주민/크루), 진행바 /9
    • 검증: 라우트·게이트웨이 200, 9스테이지·sfx·i18n·avatar 구조 확인, 아바타 선택 스크린샷

    게임 세계관 풀패키지 (2026-06-20, 5기능)

    • ① 클리어 보상 쿠폰: 12스테이지 완주 시 POST /api/coin/coupon/issue로 1회용 코드 발급(WORLD-XXXX-XXXX, +100 CRWN). coin.html 쿠폰 입력란+/api/coin/coupon/redeem(재사용 409). 게임 win배너→/coin?coupon= 자동입력
    • ② 친구 초대 랭킹: pid(localStorage)+별명, /world?ref=PID 초대링크(navigator.share/clipboard), POST /api/world/sync(초대 1회 집계, 점수=earned+초대50)·GET /api/world/leaderboard(top20 메달). data/world-board.json
    • ③ 캐릭터 꾸미기: 꾸미기 상점 8종 코스메틱(👑🎩🕶️🎀⭐🦄🌈💎, 코인 차감=코인싱크), 보유/장착 persist, 아바타 코너 배지. earned(점수)와 coins(지갑) 분리
    • ④ 배경음악: WebAudio 합성 루프 아르페지오(파일無)+🎵토글, 첫 제스처 시작. 효과음 6종(탭/코인/해금/승리/구매)
    • ⑤ 스테이지 9→12: +에듀📚·플레이🎵·케어💚. 레벨 4단(0/4/8/12), 진행/12
    • 검증: 라우트·게이트웨이 200, 12스테이지·5기능 구조 확인, 쿠폰 발급→사용 e2e(+100), 리더보드 점수/초대, 아바타+별명 스크린샷

    게임 시즌·마을·실연동 (2026-06-21, 3기능)

    • ① 시즌/일일 미션: 일일 출석 보너스(+10, 날짜변경 자동리셋 dailyTick), 일일미션 3종(스테이지/코인30/초대·꾸미기 → 보상받기), 시즌패스 6마일스톤(earned 50~750, 클릭 수령). 🎯 미션 탭+미수령 알림 dot
    • ② 마을 꾸미기: 상점 2탭(캐릭터/마을), 마을 건물 9종(🌳🏠⛲🌸🎡🏰🎠🗼🌈) 코인 구매, 🏡 마을 뷰(하늘·잔디 씬에 보유건물 배치, 건물 N/9). 코인싱크
    • ③ 실제 CRWN 연동 심화: ⚙️ 계정 연결(연락처=CRWN 계정 S.phone), 연결 시 실잔액 라이브 조회(/api/coin/balance) 지갑패널, 클리어 보너스 자동 적립(연결 시 issueCoupon→autoRedeem로 코드 없이 +100 CRWN 바로 지갑에). 미연결은 기존 쿠폰코드 수동 방식
    • 점수(earned)·지갑(coins) 분리 유지. 검증: /world 200, 15 id(12스테이지+3미션), 전 기능 함수 적재, 실잔액 e2e(kid-99 1000 CRWN)

    게임 멀티플레이·이벤트·실구매 (2026-06-21, 4기능)

    • ① 실시간 마을: /api/world/sync에 활동피드(join/clear/crew) + lastSeen, GET /api/world/live(90s내 온라인+피드20). 랭킹 시트 2탭(🏆랭킹/🌐실시간), 실시간탭 4s 폴링(시트 닫으면 stopLive)
    • ② 길드/팀: POST /api/world/guild(create/join/leave, 코드=3byte hex), guild/board(팀 합산점수 랭킹), guild/mine(멤버 상세). 🛡️ 길드 탭(팀생성 이모지선택/코드가입/내팀/팀랭킹/나가기). 검증: 팀점수 160·탈퇴
    • ③ 시즌 한정 이벤트: GET /api/world/event(날짜 active 판정, 여름 빠델라 페스티벌 6/1~7/22, 보상 60🪙+🍦 한정 코스메틱). 맵 상단 이벤트 배너+D-카운트+1회 수령, /silicon 연결
    • ④ 실제 화장품·솔루션 구매 배너: world 코인상점 스테이지·승리화면 realBanner(beauti/solution 링크), coin.html RATES 하단 실구매 버튼 2종. "결제 완료 시 CRWN 자동 적립" 안내(A연동과 연결)
    • 검증: /world·/coin 200, 7신규함수·길드버튼·이벤트배너·실구매배너 적재, 백엔드 e2e(이벤트 active/실시간 2명/길드 생성·가입·보드·탈퇴), 이벤트 배너 렌더 스크린샷

    게임 채팅·시즌정산·푸시·역연동 (2026-06-21, 4기능)

    • ① 길드 채팅: POST/GET /api/world/guild/chat(팀별 chat 60개 캡, 본인 gid). 길드 시트에 채팅창+입력, 3s 폴링(시트 닫으면 stopChat). 검증 e2e 통과
    • ② 시즌 리더보드 보상 정산: WORLD_SEASON(S1, 종료 7/31, 티어 1위300·3위150·10위50). GET /api/world/season(리더보드·내순위·정산여부·내보상), POST settle(admin key, 종료 후에만·force=1 예외), claim(연결계정 시 실 CRWN 적립). 랭킹 시트 🏅시즌 탭(카운트다운·수령). LaunchAgent com.crowny.verse.season.plist 매일 01:10. 검증: 정산 3명·1위 300 CRWN 실적립
    • ③ 푸시 알림: web/sw.js 서비스워커(notificationclick·push 핸들러) + manifest.json(PWA 설치) + world-icon.svg. ⚙️계정에 🔔 알림 토글(Notification.requestPermission). 30s globalPoll → 시즌 보상·길드 새 채팅 알림(showNotification). 진짜 백그라운드 푸시(앱 종료)는 향후 VAPID 서버 필요—현재 포그라운드/SW 알림
    • ④ 실구매→게임 역연동: 연결계정 실 CRWN 잔액 폴링(checkReverse), 증가분 감지 시 게임코인 지급(delta/5, cap200)+🛍️구매인증 코스메틱+알림. coin.html/world 구매배너와 양방향 루프 완성
    • 검증: /world·/sw.js·/manifest.json·/world-icon.svg 200(MIME 정확), 7신규함수·시즌탭·채팅·SW등록 적재, 백엔드 e2e(채팅·시즌정산·실CRWN수령), 렌더 스크린샷