仕組み
セッションは発見、接続、推論、決済の 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 つのチェーン取引です。セッションが終わると:
- ワーカーがセッション ID、消費額、レシートハッシュに対してレシートに署名し、
settle()がその署名を検証して消費額を解放し、- 99% がワーカーへ、1% が財務へ、
- 未消費の残りは利用者へ戻ります。
決済は 2 つ目のチェーン取引なので、有料セッションは利用者に合計 2 つの取引を要求します。エスクローの開始と、決済です。gas は各取引を送る人が支払います。
ワーカーは決済済みの収入をコントラクト内に蓄積し、いつでも claim() できます。引き出しはワーカーのウォレットへ支払われます。
オーケストレーターの置き換え
| 旧モデル | GenKaKu |
|---|---|
| サーバーがジョブを割り当てる | 利用者がコントラクトからワーカーを選ぶ |
| サーバーがプロンプトを保存する | ピア間の直接接続 |
| サーバーが使用量を計測する | 開始済みの分の積み上げと署名済みレシート |
| サーバーが支払う | オンチェーンでエスクローを解放する |
中間が減るぶん信頼の前提も小さくなります。ただしゼロではありません。プロンプトをワーカーに預けること、リレー経由ならメタデータをリレーに預けること、そして自分が実行するコードは、依然として信頼しています。