跳到主要内容

運作方式

一次工作階段有四個步驟:發現、連線、推論與結算。沒有任何一個步驟由 GenKaKu Labs 營運。

1. 發現​

Worker 在 WorkerRegistry 註冊:

  • peer ID digest — keccak256("genkaku.peer.v0:" + peerId),把它的 libp2p 身分綁定到它的錢包,
  • policy hash — worker 在註冊時釘住的一個 bytes32 承諾,
  • 選填的 locator — 一個 multiaddr 提示,讓使用者可以撥接它。

註冊表公開 count() 與 isActive(address)。外掛透過公開 RPC 讀取它們;沒有需要信任的目錄 API。

Locator 是選填的。只有營運者明確開啟 publishAddress 時,worker 才會公開它的公網位址; 而一旦寫入鏈上,公開的 locator 就是永久的。

Policy hash 是一個承諾,不是模型的描述。Worker 實際提供什麼,會另外發佈在它的 offer 板(/genkaku/offers/0)上,列出模型名稱、價格與 Ollama 能力。

2. 連線​

User 外掛向 worker 的 peer ID 建立 libp2p 連線。hello 交換(/genkaku/hello/0)會釘住:

  • peer ID(必須與註冊表中的記錄一致),
  • worker 的錢包位址,由簽章證明,而不是口頭宣稱,
  • 每小時報價與計費模式。

如果兩個節點能直接互相觸及——同一個 LAN、一個公網 IPv4、一個全域 IPv6——token 就會直接在 兩者之間傳輸。如果不行,工作階段會經由公開的 seed relay 進行,它位於 staging.genkaku.app/seed。

Relay 轉發的是加密的 libp2p 流量。它讀不到提示詞或輸出,但它的營運者可以看到連線中繼 資料:節點位址、時間與流量。把經過 relay 的工作階段視為內容私密,但「誰在和誰通話」並非 私密。

這個版本沒有 NAT 穿透(沒有 DCUtR)。要嘛兩個節點可以直接撥接,要嘛由 relay 承載工作階段。

3. 推論​

Worker 用 Ollama 在本機執行模型,並透過同一條連線串流 token。市集永遠看不到提示詞;worker 營運者看得到。

報價為零的 offer 完全跳過鏈,免費提供服務。

4. 結算​

付費工作階段採用每小時報價、按已開始分鐘累計:

  • worker 公告每小時價格,
  • 每個已開始的分鐘算一分鐘,
  • 兩分鐘的工作付兩分鐘,不是一小時。

對於付費模型,使用者在第一個 token 之前於 JobEscrow 開啟託管,這是一筆鏈上交易。工作階段 結束時:

  1. worker 對工作階段 ID、花費與收據雜湊簽章;
  2. settle() 驗證該簽章並釋出花費;
  3. 99% 給 worker,1% 給金庫;
  4. 任何未花費的餘額回到使用者。

結算是第二筆鏈上交易,所以一次付費工作階段總共讓使用者付出兩筆交易:開啟託管,然後結算。 Gas 由送出各筆交易的人支付。

Worker 把已結算的收入累積在合約裡,可以隨時 claim();提領會付到 worker 的錢包。

取代 orchestrator 的部分​

舊模式GenKaKu
伺服器派工使用者從合約挑選 worker
伺服器儲存提示詞直接點對點連線
伺服器計量用量已開始分鐘累計、簽章收據
伺服器付款鏈上釋放託管

中間的東西變少,信任假設也變小。但它們不是零:你仍然要信任 worker 看到提示詞,如果你的 工作階段經過 relay,也要信任 relay 看到的中繼資料,還要信任你自己執行的程式碼。