본문으로 건너뛰기

작동 방식

세션은 네 단계입니다. 발견, 핸드셰이크, 추론, 정산. 경로 어디에도 GenKaKu Labs가 운영하는 것은 없습니다.

1. 발견​

워커는 WorkerRegistry에 등록합니다.

  • peer ID — 응답할 libp2p 신원,
  • policy hash — 제공하는 모델과 규칙,
  • 선택적 locator — multiaddr 같은 주소 힌트.

레지스트리는 count()와 isActive(address)를 공개합니다. 앱은 공개 RPC로 읽으며, 신뢰해야 할 디렉터리 API는 없습니다.

locator는 선택 사항입니다. 데스크톱 앱은 publishAddress를 명시적으로 켜지 않는 한 공인 IP를 게시하지 않습니다. 한 번 체인에 올라간 locator는 영구적입니다.

2. 핸드셰이크​

앱은 워커의 peer ID로 libp2p 연결을 엽니다. NAT 통과는 DCUtR을 쓰고, 양쪽이 대칭 NAT 뒤에 있으면 핸드셰이크에만 릴레이를 씁니다. 릴레이는 모델 트래픽을 나르지 않습니다. 128 KiB / 2분 한도로는 LLM 스트림을 감당할 수 없습니다.

hello 교환에서 고정되는 것:

  • peer ID(레지스트리와 일치해야 함),
  • 워커의 지갑 주소,
  • policy hash,
  • 시간당 견적과 과금 방식.

3. 추론​

워커는 Ollama로 모델을 로컬에서 실행하고 직접 연결로 토큰을 스트리밍합니다. 프롬프트는 마켓플레이스에 저장되지 않습니다. 워커 운영자는 자신이 처리하는 트래픽을 볼 수 있습니다.

4. 정산​

과금은 시간당 견적 + 시작된 분 누적입니다.

  • 워커가 시간당 가격을 제시,
  • 시작한 분마다 1분으로 계산,
  • 2분 작업은 1시간이 아니라 2분치를 지불합니다.

사용자는 JobEscrow에 테스트 USDC를 예치해 세션을 엽니다. 종료 시:

  1. 워커가 세션 ID, 지출, 영수증 해시에 서명,
  2. settle()이 서명을 검증하고 지출을 해제,
  3. **99%**는 워커, **1%**는 재무,
  4. 나머지는 refund()로 사용자에게 반환.

워커는 언제든 claim()으로 누적 잔액을 인출할 수 있습니다.

오케스트레이터를 대체하는 것​

기존 모델GenKaKu
서버가 작업을 배정사용자가 컨트랙트에서 워커를 선택
서버가 프롬프트를 저장직접 피어 연결
서버가 사용량을 계량시작된 분 누적 + 서명 영수증
서버가 지급온체인 에스크로 해제

중간이 줄어든 만큼 신뢰 가정도 작아지지만 0은 아닙니다. 프롬프트를 워커에게 보여 주는 것은 여전히 신뢰이고, 실행하는 코드도 직접 신뢰해야 합니다.