크라우니 리모트 v1.5 — 작업폴더 공유 동기화 추가
#2 동일 블록체인 작업폴더 공유 (가장 큰 미구현) → ✅ 구현 완료.
무엇을 추가했나
1. 서버 sync 엔드포인트 4개 (한선씨)
| t | 의미 | 흐름 |
|---|---|---|
manifest | 저장소 전체 파일 매니페스트 (path/sha/size/mt) | 클라 ← 서버 |
up | Base64 인코드 본문 업로드 + SHA 회신 | 클라 → 서버 |
dn | 파일 다운로드 + mtime 보존 | 클라 ← 서버 |
del | 파일 삭제 | 클라 → 서버 |
/Users/ef/crowny-remote/server/리모트서버.한선 (큐브 7042 → 10337).
매니페스트 스크립트: 매니페스트.sh — find + shasum + stat → JSON.2. sync 클라이언트 — crowny-sync (Python + 한선씨 동반)
bashcrowny-sync push # 로컬 → 서버 (newer/신규)
crowny-sync pull # 서버 → 로컬 (newer/신규)
crowny-sync sync # push + pull
crowny-sync status # 차이 보고
crowny-sync watch # fswatch 자동 push (없으면 폴링)
한선씨 측 클라이언트 모듈(리모트싱크.한선)도 작성 — 학습DB 정통 유지. 다만 한선씨 클라이언트 소켓 송수신 NIO 한계로 실제 작동은 Python이 담당 (사용자 명시 "안정성 우선" 반영).
3. 환경변수 기반 다중 디바이스
bashCROWNY_REMOTE_DEV=CR-CROWNY-03 CROWNY_REMOTE_PW=mac3 \
CROWNY_BLOCKCHAIN_DIR=/Users/ef/crowny-blockchain \
crowny-sync sync
9명이 각자의 CR-CROWNY-NN ID로 같은 작업폴더 공유.
E2E 시뮬레이션 (2대 맥)
Step 1: 맥A push
↑ chain/genesis.txt (32B)
↑ chain/block-2.txt (13B)
↑ wallet/me.json (22B)
→ 서버 저장소에 3파일
Step 2: 맥B pull (빈 폴더)
↓ chain/genesis.txt
↓ chain/block-2.txt
↓ wallet/me.json
→ 맥B에 3파일 그대로 도착
Step 3: 맥B에서 block-2.txt + me.json 수정 → push
↑ chain/block-2.txt (44B, 수정본)
↑ wallet/me.json (35B, 수정본)
[동일 1] genesis.txt skip
Step 4: 맥A pull
↓ chain/block-2.txt (맥B 수정 흡수)
↓ wallet/me.json (맥B 수정 흡수)
최종 맥A:
block-2.txt = "BLOCK 2 UPDATED by CR-CROWNY-02 at 19:48:54" ★ 맥B 수정본!
wallet/me.json = {"version":2, "addr":"0xCROWNY02"} ★
서버 로그 발췌:
MANIFEST CR-CROWNY-01 ← 맥A 첫 push
UP CR-CROWNY-01 chain/genesis.txt
UP CR-CROWNY-01 chain/block-2.txt
UP CR-CROWNY-01 wallet/me.json
REG OK CR-CROWNY-02 ← 맥B 등록
LOGIN OK CR-CROWNY-02
MANIFEST CR-CROWNY-02
DN CR-CROWNY-02 chain/genesis.txt
DN CR-CROWNY-02 chain/block-2.txt
DN CR-CROWNY-02 wallet/me.json
...
UP CR-CROWNY-02 chain/block-2.txt ← 맥B 수정 push
UP CR-CROWNY-02 wallet/me.json
DN CR-CROWNY-01 chain/block-2.txt ← 맥A 흡수
DN CR-CROWNY-01 wallet/me.json
자동 워처 검증
워처 띄움 → 작업폴더에 파일 2개 생성 → 폴링으로 자동 push:
서버 로그:
UP CR-CROWNY-09 chain/new-block.txt
UP CR-CROWNY-09 chain/block-3.txt
fswatch 있으면 즉시 트리거, 없으면 3초 폴링.
점검표 갱신 (74% → 85%)
| # | 항목 | 이전 | 현재 |
|---|---|---|---|
| 2 | 동일 작업폴더 공유 | ❌ 0% | ✅ 95% ★ |
| 1 | 9대 동시 부하 | 🟡 30% | 🟡 50% (sync 흐름까지 검증) |
| 나머지 10개 | 변동 없음 | — | — |
남은 V2 항목
| V2 항목 | 비고 |
|---|---|
| 인터랙티브 PTY (vim/ssh/htop) | 한선씨 측 NIO 폴링 해결, 또는 C pty_call 도입 |
| 충돌 해결 정교화 | 현재 last-write-wins. CRDT/merge로 |
| 락 (편집 동시성) | t:lock/t:unlock 추가 |
| AES 채널 암호화 | AES.한선 통합 |
| 9대 실환경 부하 | 동시 push/pull 큐 + 성능 |
| 큰 파일 chunking | 현재 헤더 4GB 한계 + 메모리 일괄. 청크 분할 |
실행 한 줄
bash# 9개 맥에서 각자 띄우기 (각 맥마다 CR-CROWNY-NN 다르게)
export CROWNY_REMOTE_DEV=CR-CROWNY-01
export CROWNY_REMOTE_PW=mypass1
export CROWNY_BLOCKCHAIN_DIR=/Users/ef/crowny-blockchain
/Users/ef/crowny-remote/sync/crowny-sync watch & # 변경 시 자동 push
/Users/ef/crowny-remote/sync/crowny-sync sync # 수동 양방향
디렉토리
/Users/ef/crowny-remote/sync/
├── crowny-sync (실 작동 클라이언트, Python — 안정성)
├── 리모트싱크.한선 (한선씨 동반 모듈, 학습 정통)
├── 리모트싱크.toau (컴파일 산출)
└── 매니페스트.sh (find + shasum + stat → JSON)
/Users/ef/crowny-remote/server/
├── 리모트서버.한선 (+ sync 4 엔드포인트)
├── 매니페스트.sh (서버 측)
└── 저장소/ (9명 공유 거울)
학습 등록
manifest_엔드포인트_파일동기화Base64_파일업다운로드_저장9맥_작업폴더_공유_워처