본문으로 건너뛰기

아키텍처

GenKaKu가 프로덕션에서 실행하는 모든 것은 정적 사이트이거나 피어 프로세스입니다. 요청 경로에 GenKaKu 서버는 없습니다.

패키지​

패키지역할
@genkaku/protocol체인 바인딩, 에스크로 과금, libp2p 사이드카, Ollama 브리지
@genkaku/dsh-runtime두 플러그인이 공유하는 어댑터
@genkaku/dsh-worker-plugin로컬 모델 제공
@genkaku/dsh-user-plugin네트워크 모델 소비
@genkaku/seedlibp2p 릴레이와 피어 발견 서비스
@genkaku/admin시드 호스트용 운영자 콘솔

프로토콜 코어는 DeepSeek Harness에 의존하지 않습니다. 이는 의도된 것으로, 다른 어댑터가 코어를 건드릴 필요가 없어야 합니다.

온체인​

Base Sepolia, chain ID 84532:

컨트랙트주소
WorkerRegistry0xFbE9FF497dC24bD69d13E4201418938Df7435Ff6
JobEscrow0x8175df796A659681009BeDa4609a3cFe9d281D82
MockUSDC (test only)0xEb33DFC0424810039337a38510ef522e9E7F9727

WorkerRegistry는 지갑별로 peer ID 다이제스트, bytes32 policy hash, 선택적 locator, 활성 플래그를 저장합니다. JobEscrow는 세션별 USDC를 보관하고, 워커의 영수증 서명을 검증하며, 99/1로 나누고 워커의 인출 가능 잔액에 기록합니다. 1% 수수료는 컨트랙트 상수입니다.

쓰기는 테스트넷 전용입니다. 메인넷 경로는 예외를 던집니다. 정식 USDC와 멀티시그 재무는 설정 플래그가 아니라 별도의 출시입니다.

데이터 플레인​

워커는 다음 libp2p 프로토콜을 제공합니다.

/genkaku/open/0 session open
/genkaku/token/0 auth token
/genkaku/receipt/0 signed ledger increments
/genkaku/settle/0 co-sign a settlement
/genkaku/offers/0 offer board
/genkaku/policy/0 policy document
/genkaku/hello/0 identity, wallet proof, quote

모든 핸들러는 릴레이된 연결을 허용합니다(runOnLimitedConnection). 따라서 세션은 직접 연결이거나 릴레이 경유이며, 둘 다 일급입니다. libp2p가 스트림을 암호화하므로 릴레이는 암호문을 전달하고 메타데이터만 봅니다.

이 빌드에는 DCUtR / 홀 펀칭이 없습니다. 대칭 NAT 뒤의 피어는 릴레이를 쓰거나 도달할 수 없습니다.

발견​

두 개의 독립 경로:

  1. 온체인 디렉터리 — WorkerRegistry 이벤트가 지갑, peer ID 다이제스트, 선택적 locator를 제공합니다. 플러그인은 fallback 목록이 있는 공개 RPC를 통해 로그를 읽습니다 (base-sepolia.gateway.tenderly.co가 첫 번째, sepolia.base.org는 eth_getLogs를 200 블록으로 제한하므로 마지막).
  2. 시드 릴레이 — https://staging.genkaku.app/seed가 지금 유효한 multiaddr을 GET /peers로 응답하고, 직접 연결할 수 없는 피어를 위한 서킷 릴레이를 제공합니다.

시드 주소는 프로토콜 패키지에 내장되어 있지만 GENKAKU_BOOTSTRAP_SEEDS(쉼표로 구분된 multiaddr)로 재정의할 수 있습니다.

과금 모델​

pricePerHour : 6-decimal USDC, set by the worker
unit : 1 minute (60 units per hour)
billed : ceil(elapsed / 1min) × ceil(pricePerHour / 60)

반올림은 시간당 한 번만 일어나고 틱마다 일어나지 않으므로, 사용자는 견적된 시간당 가격보다 많이 지불하지 않고 워커의 미청구 노출은 최대 1분입니다.

유료 세션은 두 개의 트랜잭션입니다.

  1. openEscrow(worker, pricePerHour) — 사용자 → JobEscrow,
  2. settle(...) — JobEscrow → 워커(99%) + 재무(1%), 나머지는 환불.

견적이 0이면 에스크로 없이 제공되며, 그래서 무료 워커는 ETH가 전혀 없는 머신에서도 돌릴 수 있습니다.

운영자 인터페이스​

  • Panel — DeepSeek Harness 안의 플러그인 자체 UI: 모델, 가격, 지갑, 인출, 결제, 수동 워커.
  • Status server — 127.0.0.1의 로컬 HTTP 인터페이스로, 47821–47826 중 첫 번째 빈 포트를 쓰며 패널과 클라이언트 어댑터가 사용합니다.
  • Seed admin — 시드 VM에서 Caddy 뒤 /admin으로 제공되는 별도 콘솔로, 시드 통계와 체인 로그를 읽습니다. 지갑 키를 보관하지 않고 돈을 움직이지 않습니다.

의도적으로 없는 것​

  • 토큰, 스테이킹, 신용 점수 토큰이 없습니다.
  • 오케스트레이션 서버, 프롬프트 데이터베이스가 없습니다.
  • 자동 콘텐츠 필터가 없습니다. 프로토콜에는 워커가 프롬프트를 보기 전에 검사하는 훅이 없습니다.
  • 메인넷 쓰기 경로가 없습니다.