アーキテクチャ
GenKaKu が本番で動かしているものは、静的サイトかピアプロセスのいずれかです。リクエスト経路に GenKaKu のサーバーはありません。
パッケージ
| パッケージ | 役割 |
|---|---|
@genkaku/protocol | チェーンバインディング、エスクロー課金、libp2p サイドカー、Ollama ブリッジ |
@genkaku/dsh-runtime | 両プラグインが共有するアダプター |
@genkaku/dsh-worker-plugin | ローカルモデルを提供する |
@genkaku/dsh-user-plugin | ネットワークのモデルを消費する |
@genkaku/seed | libp2p リレーとピア発見サービス |
@genkaku/admin | シードホスト用の運営コンソール |
プロトコルコアは DeepSeek Harness に依存しません。これは意図的で、別のアダプターがコアに手を入れる必要はないはずです。
オンチェーン
Base Sepolia、chain ID 84532:
| コントラクト | アドレス |
|---|---|
| WorkerRegistry | 0xFbE9FF497dC24bD69d13E4201418938Df7435Ff6 |
| JobEscrow | 0x8175df796A659681009BeDa4609a3cFe9d281D82 |
| MockUSDC(テストのみ) | 0xEb33DFC0424810039337a38510ef522e9E7F9727 |
WorkerRegistry はウォレットごとに、peer ID ダイジェスト、bytes32 のポリシーハッシュ、任意のロケーター、アクティブフラグを保存します。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 の背後にあるピアは、リレーを使うか到達不能かのどちらかです。
発見
独立した 2 つの経路があります。
- オンチェーンディレクトリ —
WorkerRegistryのイベントがウォレット、peer ID ダイジェスト、任意のロケーターを与えます。プラグインは公開 RPC 経由でログを読み、fallbackリストを使います(base-sepolia.gateway.tenderly.coが最初、sepolia.base.orgはeth_getLogsを 200 ブロックに制限するため最後)。 - シードリレー —
https://staging.genkaku.app/seedはGET /peersに現在真である multiaddr を返し、直接接続できないピアにサーキットリレーを提供します。
シードアドレスはプロトコルパッケージに埋め込まれていますが、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 回だけ行われ、ティックごとではありません。そのため利用者が提示された時間単価を超えて支払うことはなく、ワーカーの未請求のエクスポージャーは最大 1 分です。
有料セッションは 2 つの取引です。
openEscrow(worker, pricePerHour)— 利用者 → JobEscrow、settle(...)— JobEscrow → ワーカー(99%)+財務(1%)、残りは返金。
0 の提示はエスクローなしで提供され、だからこそ無料のワーカーは ETH がまったくないマシンでも動かせます。
運営者向けの画面
- パネル — DeepSeek Harness 内のプラグイン自身の UI。モデル、価格、ウォレット、引き出し、支払い、手動ワーカー。
- ステータスサーバー —
127.0.0.1上のローカル HTTP。47821〜47826 の最初の空きポートを使い、パネルとクライアントアダプターが利用します。 - シード管理 — シード VM 上の別コンソールで、Caddy の背後
/adminにあり、シード統計とチェーンログを読みます。ウォレット鍵は保持せず、資金も動かしません。
意図的に存在しないもの
- トークン、ステーキング、信用スコアトークン。
- オーケストレーションサーバー、プロンプトのデータベース。
- 自動のコンテンツフィルター — プロトコルには、ワーカーが見る前にプロンプトを検査するフックがありません。
- メインネットへの書き込み経路。