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

仕組み

セッションは発見、接続、推論、決済の 4 段階です。どの段階も GenKaKu Labs が運用しているわけではありません。

1. 発見​

ワーカーは WorkerRegistry に次を登録します。

  • peer ID ダイジェスト — keccak256("genkaku.peer.v0:" + peerId)。libp2p の身元をウォレットに結び付けます。
  • ポリシーハッシュ — ワーカーが登録時に固定する bytes32 のコミットメント。
  • 任意のロケーター — 利用者がダイヤルできるようにする multiaddr のヒント。

レジストリは公開の count() と isActive(address) を提供します。プラグインは公開 RPC 経由でそれらを読み、信頼すべきディレクトリ API はありません。

ロケーターは任意です。ワーカーは運営者が明示的に publishAddress を有効にしたときだけ公開アドレスを公開し、一度オンチェーンに載ったロケーターは永続です。

ポリシーハッシュはコミットメントであり、モデルの説明ではありません。ワーカーが実際に提供している内容は、別途オファーボード(/genkaku/offers/0)で公開され、モデル名、価格、Ollama のケイパビリティが並びます。

2. 接続​

利用者プラグインはワーカーの peer ID へ libp2p 接続を開きます。hello の交換(/genkaku/hello/0)で次を固定します。

  • peer ID(レジストリのエントリと一致していること)、
  • ワーカーのウォレットアドレス(主張ではなく署名で証明)、
  • 時間単価と課金方式。

2 つのピアが直接到達できる場合 — 同じ LAN、公開 IPv4、グローバル IPv6 — トークンは両者の間を直接流れます。到達できない場合、セッションは公開シードリレー経由で流れ、そこへは staging.genkaku.app/seed で到達できます。

リレーは暗号化された libp2p トラフィックを転送します。プロンプトや出力を読むことはできませんが、運営者は接続メタデータ — ピアアドレス、タイミング、量 — を見ることができます。リレー経由のセッションは、内容はプライベートでも、誰が誰と話しているかはプライベートではないと考えてください。

このビルドには NAT ホールパンチング(DCUtR)はありません。ピアが直接ダイヤル可能であるか、リレーがセッションを運ぶかのどちらかです。

3. 推論​

ワーカーは Ollama でモデルをローカルに動かし、同じ接続でトークンをストリームで返します。マーケットプレイスがプロンプトを見ることはありませんが、ワーカーの運営者は見ます。

価格 0 のオファーはチェーンをまったく使わず、無料で提供されます。

4. 決済​

有料セッションは時間単価+開始済みの分の積み上げを使います。

  • ワーカーが 1 時間あたりの価格を提示し、
  • 開始した分ごとに 1 分として数え、
  • 2 分のジョブは 1 時間分ではなく 2 分分の支払いになります。

有料モデルでは、利用者が最初のトークンの前に JobEscrow でエスクローを開きます。これが 1 つのチェーン取引です。セッションが終わると:

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

決済は 2 つ目のチェーン取引なので、有料セッションは利用者に合計 2 つの取引を要求します。エスクローの開始と、決済です。gas は各取引を送る人が支払います。

ワーカーは決済済みの収入をコントラクト内に蓄積し、いつでも claim() できます。引き出しはワーカーのウォレットへ支払われます。

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

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

中間が減るぶん信頼の前提も小さくなります。ただしゼロではありません。プロンプトをワーカーに預けること、リレー経由ならメタデータをリレーに預けること、そして自分が実行するコードは、依然として信頼しています。