스테이킹 잔여이슈 완료 — v1.1 + 코인서버 복원 수리
개요
2026-07-12 스테이킹서버 1차 구축(P2-1)의 잔여이슈 5건 처리. 게이트웨이 배선·LaunchAgent 2건은 메인 세션이 선완료 확인, 나머지 코드 3건을 이 세션에서 완료.
무엇을 했는지
- 스테이킹서버 v1.1.0 (
/Users/ef/crowny-chain/서버/스테이킹서버.한선)
- 위임자 비례슬래시: 젤드 시 자기지분만이 아니라 전 위임자 각자 활성분의 5%bp 차감 (
검증인위임자목록 +
_슬래시기록(user,addr,amt)), 젤드 anchor 멱등 유지
-
POST /api/withdraw: 언본딩 3에포크 만기분 실인출 확정 (
만기인출가능/
인출실행, withdraw 이벤트).
/api/rewards에
withdrawable 필드 추가
- 격리 검증(:9617+격리 원장): 비례슬래시 정확(1020→969, 자기 50+위임 1), 미만기 인출 거절·만기 인출·이중인출 거절·멱등 전부 PASS
- 배포: STRICT 0경고 → toau 교체 →
launchctl kickstart -k gui/501/org.crowny.stake → 라이브·게이트웨이 경유 1.1.0 확인
- 크라우니코인
_복원() 전체 재생 수리 (/Users/ef/crowny-chain/서버/크라우니코인.한선)
- 증상: 재기동 시 블록 수만 복원, 잔고·발행량·블록리스트 소실(라이브 실측 height=245·supply=0) +
/api/blocks OOB 위험
- 수리:
_WAL줄재생() 신설 — B줄(블록리스트+채굴자잔고+발행량+높이)·T줄(잔고이동+TX수) 전체 재생.
TX데이터에 | 포함(SYNC 블록) → 오른쪽 기준 파싱(마지막 3필드=시각·채굴자·보상). 파일존재() 게이트 제거(글자수 가드)
- 한글 Content-Length 절단 함정 동시 수리:
_CORS·대시보드 응답 CL 생략+Connection:close (한글 ID 잔고 응답 절단 실측 재현→해소)
- 격리 검증(:9618+WAL사본): 245블록·6615발행·12계정 — awk 기대값과 정확 일치. 채굴+전송 후 재기동 회귀 PASS
- 배포: kill → crowny-finance/watchdog.sh 자동 재컴파일+재기동 → 라이브 완전 복원(supply 0→6615)
- 백업:
크라우니코인.한선.bak-복원수정전-20260716관련 파일
/Users/ef/crowny-chain/서버/스테이킹서버.한선 (v1.1.0, 라이브 org.crowny.stake)
/Users/ef/crowny-chain/서버/크라우니코인.한선 (복원 수리, watchdog 감독 :9729)
- 감독:
~/Library/LaunchAgents/org.crowny.stake.plist, /Users/ef/crowny-finance/watchdog.sh (chain=:9729 담당)
잔여 이슈
- 블록/WAL 1023줄 초과 시 배열 상한(추가() silent stop) — 블록리스트 샤딩 필요(코인·스테이킹 공통, 2차)
- 보상은 청구 시점 활성스테이크 기준 근사(포지션별 정밀 계산은 2차)
- org.crowny.staking.slashwatch는 구 crowny-staking(:9975)계 자동감지 — 신 스테이킹서버(:9603)와 이원화 상태, 통합 검토 필요
- 9613 포트는 node 서비스 선점(localhost LISTEN) — 포트 선정 시 lsof 필수 재확인됨