유형: 현황 (서버 실측 재검증 원장 — 최종 보고는 100% 서버 실측 기반이라는 jegwon 지시 이행 추적)
최종 업데이트: 2026-07-08 5차 (manager) — 🔒 전 도메인 담당서명 완료·A 전체 306,648 소스-only 확정
웹뷰: https://chat.punkpoll.com/doc/server-audit

서버 실측 재검증 원장

게이트 규칙 (jegwon 지시, 2026-07-08 00:16 KST): 서버(13.209.222.241)에서 실제 데몬이 실행하는 실 코드를 검수·실측해 리팩토링 방향을 정한다. 로컬 코드로 검수한 것이 서버와 다르면 전체가 무너질 수 있으므로, 최종 보고는 모두 서버 실측을 기반으로 한다. 로컬-미격상 항목이 전부 서버로 격상되기 전에는 최종 종합(A 전체 LOC→B 감소율)을 확정하지 않는다.

출처 등급


실증된 로컬 stale 위험 (왜 이 원장이 필요한가)


원장 (도메인 × 주장 × 출처등급 × 상태)

#도메인주장/산출물등급소유자근거 / 상태
1프론트 정량574파일 / 96,368 LOC · live 90,789 · dead 5.8%dev서버 ~/data/punkpoll_web 에서 도달성 스크립트 직접 재실행(읽기전용). v1.1과 완전 동일.
2프론트 서빙punkpoll-web.service (MainPID 2668606, /home/ubuntu/data/punkpoll_web, next-server v14.2.33) · 빌드=HEAD b6dea9ddevsystemctl·.next/BUILD_ID 시각 대조. dev = punkpoll-web-dev.service(port 3010) 분리.
3프론트 도메인4채널·마이페이지·지갑·토큰 호출그래프·live/dead·LOC (#162)dev2서버 파일 직접 재실측. 정정: TokenCirculation.jsx dead 철회(서버 grep import 1건). wallet=9,149(서버). Token.jsx 498 monolith.
4데몬맵·연결매트릭스A_PROD_DAEMONS (pm2/systemd 데몬→repo→script, 연결화살표)manager서버 pm2 jlist·systemctl·netstat·각 .env DB_NAME·callback.js:259,328·txMonitor.js:103,826.
5RDS·datasourceRDS DNS스왑(punkpoll-mina RDS→punkpoll_platform) · application-prod.properties(datasource→platform 21.2 / alimtalk→mina 18.117)manager서버 실값·nslookup.
6DB 인벤토리platform 90t/2.5GB · mina 360t/5.8GB · top테이블 행수·MB · live/stale(users 07-07 vs 로컬 05-29)managerlive RDS information_schema 실쿼리. mina 360 = BASE 353 + VIEW 7. 마이그레이션 분모 = BASE(platform 90 + mina 353), VIEW 제외. bloat top: kakao_zkapp_tx_hash_log_2024 3.0GB·system_response 1.06GB·survey_participant_bclogs 636MB·callback_receive_log 346MB(전부 로그성→미이관).
7온체인 LOC168,050 (txSender 26k·blockchainApi 59k·Ver2 39k·FungibleToken 42k·ipfs 1.3k) · 확정dead 3파일reviewer서버 ~/디렉토리 실집계·pm2 미실행/import0 확정. txSender 배포커밋 b67c41c.
8온체인 데몬역할·복구참여흐름·SBT=txMonitor.js:826·컨펌=txConfirmationWorker.v2.js:816 · 복구서비스 4종 LIVE(txMonitor+Ver2 import) · config(43114·localhost:9200·localhost:3838)reviewer서버 실행데몬 import·.env·nginx·실코드 file:line.
9백엔드 스키마platform 90테이블 컬럼/타입 인벤토리△→진행중backend1로컬 ddl(2026-02-12, 5개월 stale) 37 → 서버 실측 platform 90·mina 353(BASE) 확정, manager/backend4 교차일치. SHOW CREATE TABLE 컬럼/타입 authority 갱신 진행중.
10~~온체인 코드공식~~nullifier AES키(callback.js:32/38/210 encryptString)·리워드 decimals(:216 parseUnits ,9)·서명 필드순서(participationSigner:10 keccak256)·복구서비스 4종 역할✓ 격상완료reviewer서버 ~/txSender 실코드 재확인 = 로컬과 동일 = [서버확정]. 배포커밋 b67c41c.
11백엔드/서비스 LOC전 in-scope 모듈 서버 실집계✓ (manager 실측)manager/backend1서버 find+wc(node_modules·dist·.git 제외). 아래 §종합 표 참조.
12A 온체인 수치(backend4 문서)ONCHAIN_A_TO_B §0/§6 A 수치⇒ 인용backend4본인 측정 아님. reviewer/manager 서버실측 인용(#7·#8 ✓ → 유효). '인용(서버출처)' 표기 유지.

종합 게이트 (hold 조건)

최종 종합 "A 전체 LOC → B 예상 감소율" 게이트 = 전 △ ✓:

→ 서버 실측 게이트 충족 (전 도메인 △=0). 남은 것은 측정방법 재조정 OPEN-4(아래).

A 전체 LOC — 서버 실측 (모듈별, 소스-only 통일 기준)

측정방법 (manager 확정, 2026-07-08): 리팩토링 대상 = 소스-only(js/ts/jsx/tsx/java). node_modules·dist·build·target-빌드산출물·tests·*.backup·*.deprecated 제외. 전 도메인 동일 기준(reviewer 권고 채택 → OPEN-4 CLOSE).

계층모듈소스-only LOC소유자·방법
프론트punkpoll_web96,368dev · 서버 도달성(전 소스, 574파일)
백엔드코어punkpoll_api (Spring)57,151manager · 서버 src/main/java(test 제외), 512파일
챗봇kakaoChatBotNodeJs (1저장소·4채널복제=1회집계)39,396manager · 서버 js/ts(backup/test 제외)
punkpollBotAvax (systemApi·telegramEchoBot)30,462manager · 서버 js/ts
유틸punkpollUtil (panelManager)5,587manager · 서버 js/ts
인증punkpoll-auth-gateway (dev전용·Main미배포)2,784manager · 서버 ts/js
온체인5모듈(txSender 14,835·blockchainApi 24,068·Ver2 20,158·FungibleToken 14,759·ipfs 1,080)74,900reviewer · 서버 src/ 실집계
A 전체 합계 (소스-only)≈ 306,648담당 서명(아래)

⚠️ 이전 총계 ≈416,765(온체인 광의 168,050 포함) 폐기. reviewer 초기 168k는 dist/build/target/tests/docs/backups 포함 광의였고, 소스-only는 74,900. 방법 통일로 총계 306,648 확정.

OPEN-4 CLOSE: 측정방법 = 소스-only 통일. 온체인 74,900(reviewer src/ 실집계).

단위체계 9↔18 통일안 (Mina 유산 부채 — jegwon 지시 검토·제안)

원인 (서버 실측 확정): Mina 시절 1 MINA = 10^9(나노) → A DB에 9자리 금액 기록. Avalanche 전환(1 PUNK = 10^18) 후 A가 9→18 변환 레이어로 처리 중. 이게 상충이 아니라 알려진 전환부채.

변환 지점 (서버 file:line):

통일 제안 (manager 종합·reviewer+dev 합의):
1. 단일 기준 = 18 decimals(Avalanche·온체인 실제). 온체인 무변경(이미 18).
2. 9자리 Mina 잔재 전면 제거: callback:216 9→18·contractService:1536 ÷10^9 제거·프론트 divisor 15곳 제거.
3. 변환 경계 1곳: raw 18자리는 B core-api 직렬화 레이어에서만 사람단위 문자열로 변환. 프론트/콜백은 divisor 없이 소비. (18자리 > JS Number 안전범위 9e15 → API 응답 문자열·계산 BigInt 필수.)
4. 마이그레이션 데이터 리스크(정정 — 일괄 ×10^9 금지): reviewer 서버 실측 — A 금액컬럼 227개가 6종 이질적 표현이라 일괄 ×10^9은 데이터 손상. 컬럼별 변환식이 다름: decimal(20,9)=×10^9 / decimal(20,18)·(42,18)=이미18 무변환 / decimal(6,0)·(15,2)=KRW·USD 법정화폐 제외 / int=카운트 or 정수PUNK 개별판정(정수PUNK면 ×10^18) / double·float=정밀도 위험 정수화 신중 / varchar(78)=wei문자열 파싱. reviewer가 227컬럼 전수 분류표(docs/A_completeness/A_amount_columns_20260708.tsv) = backend1 마이그레이션 차단 선행. 실행 전 reviewer 컬럼별 값정합(A 원본 diff=0) 교차검증 = 컷오버 DB parity 게이트.

OPEN-3 (리워드 decimals — cutover 돈도메인 리스크) — 온체인 파트 CLOSE


담당 서명 롤콜 (jegwon 지시 — 담당 본인 서버실측 확인)

도메인담당서명 상태비고
프론트 punkpoll_webdev✓ 서명(07-08 00:52)서버 도달성 재실행·미격상 0
프론트 도메인4dev2✓ 서명서버 재실측·TokenCirculation 오판 자기정정·미격상 0
온체인 5모듈reviewer✓ 서명src-only 74,900·decimals 18·live/dead·공식 전건·미격상 0
온체인 B측·A수치backend4✓ 서명B측 v2dev 2cf3e1a 실측·A는 reviewer 인용·미격상 0
DB 스키마/테이블backend1✓ 서명(3차)mysqldump 정본 platform 90·mina 353
백엔드/서비스 LOCbackend1✓ 서명서버 재측정 값일치. 소스-only=api 57,151·kakao 39,396(명시 dead파일만 제외 기준통일: server2·server_backup·test/)·bot 30,462. systemApi 위치=~/punkpollBotAvax(레포명≠데몬명)
챗봇 서버 live-codebackend1✓ 서명kakaoServerRefactored.js 단일진입(kakao-punkpoll·tbridge-kakao)·live 모듈 추적·dead 7파일 확정·파이프라인·V3초안 완료

🔒 전 도메인 담당서명 완료 (LOCKED 2026-07-08). 프론트·온체인·DB·백엔드LOC·단위·챗봇 전건 담당 본인 서버실측 서명.

챗봇 서버 live-code (backend1 서버 실측)

갱신 이력