メインコンテンツまでスキップ

仕組み

セッションは 4 段階です。発見、ハンドシェイク、推論、決済。経路のどこも 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 時間あたりの価格を提示、
  • 開始した分ごとに 1 分として数える、
  • 2 分の仕事は 2 分分の支払いで、1 時間分ではありません。

利用者は JobEscrow にテスト USDC を預けてセッションを開きます。終了時:

  1. ワーカーがセッション ID、消費額、レシートハッシュに署名、
  2. settle() が署名を検証して消費額を解放、
  3. 99% がワーカー、1% が財務、
  4. 残りは refund() で利用者へ戻る。

ワーカーはいつでも claim() で未払い残高を引き出せます。

オーケストレーターの置き換え​

旧モデルGenKaKu
サーバーが仕事を割り当てる利用者がコントラクトからワーカーを選ぶ
サーバーがプロンプトを保存直接のピア接続
サーバーが使用量を計測開始済み分の積み上げ+署名レシート
サーバーが支払うオンチェーンでエスクローを解放

中間が減るぶん信頼の前提も小さくなりますが、ゼロではありません。プロンプトをワーカーに 見せることは依然として信頼で、実行するコードも自分で信頼する必要があります。