Перейти к основному содержимому

Как это работает

У сессии четыре шага: обнаружение, соединение, инференс и расчёт. Ни один из них не обслуживает 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. Соединение​

Плагин пользователя открывает libp2p-соединение с peer ID воркера. Обмен hello (/genkaku/hello/0) фиксирует:

  • peer ID (должен совпадать с записью в реестре),
  • адрес кошелька воркера, доказанный подписью, а не заявленный,
  • цену за час и режим биллинга.

Если два пира могут связаться напрямую — одна локальная сеть, публичный IPv4, глобальный IPv6 — токены идут между ними напрямую. Если нет, сессия идёт через публичный seed-релей, доступный по адресу staging.genkaku.app/seed.

Релей пересылает зашифрованный трафик libp2p. Он не может читать промпты или вывод, но его оператор видит метаданные соединения: адреса пиров, время и объём. Считайте сессию через релей приватной по содержимому, но не по тому, кто с кем говорит.

В этой сборке нет обхода NAT (нет DCUtR). Либо пиры доступны для прямого подключения, либо сессию несёт релей.

3. Инференс​

Воркер запускает модель локально через Ollama и передаёт токены обратно по тому же соединению. Маркетплейс никогда не видит промпт; оператор воркера — видит.

Оффер с нулевой ценой вообще не затрагивает блокчейн и обслуживается бесплатно.

4. Расчёт​

Платные сессии используют цену за час с начислением за начатую минуту:

  • воркер объявляет цену за час,
  • каждая начатая минута считается минутой,
  • двухминутная задача оплачивает две минуты, а не час.

Для платной модели пользователь открывает эскроу в JobEscrow до первого токена — это одна транзакция в блокчейне. Когда сессия завершается:

  1. воркер подписывает квитанцию по ID сессии, расходу и хешу квитанции;
  2. settle() проверяет эту подпись и освобождает расход;
  3. 99% получает воркер, 1% — казна;
  4. любой неизрасходованный остаток возвращается пользователю.

Расчёт — вторая транзакция в блокчейне, поэтому платная сессия стоит пользователю двух транзакций: открыть эскроу, затем рассчитаться. Gas платит тот, кто отправляет каждую транзакцию.

Воркер накапливает рассчитанный доход в контракте и может в любой момент вызвать claim(); выплата идёт на кошелёк воркера.

Что заменяет оркестратор​

Старая модельGenKaKu
Сервер распределяет задачиПользователь выбирает воркера из контракта
Сервер хранит промптыПрямое соединение между пирами
Сервер считает потреблениеНачисление по начатым минутам и подписанная квитанция
Сервер платитЭскроу освобождается в блокчейне

Допущений о доверии меньше, потому что посредников меньше. Но они не нулевые: вы по-прежнему доверяете промпт воркеру, метаданные — релею, если сессия идёт через него, и коду, который запускаете.