Saltar al contenido principal

Arquitectura

El protocolo son tres contratos y un transporte entre pares. Todo lo demás es cliente.

Contratos (Base Sepolia, chain 84532)​

ContratoDirección
WorkerRegistry v0.20xFbE9FF497dC24bD69d13E4201418938Df7435Ff6
JobEscrow v0.20x8175df796A659681009BeDa4609a3cFe9d281D82
MockUSDC (solo pruebas)0xEb33DFC0424810039337a38510ef522e9E7F9727

WorkerRegistry​

function register(bytes32 peerId, bytes32 policyHash) external;
function registerWithLocator(bytes32 peerId, bytes32 policyHash, string locator) external;
function advertise(string calldata locator) external;
function selfDeactivate() external;
function isActive(address wallet) external view returns (bool);
function count() external view returns (uint256);
  • Una entrada por billetera. Volver a registrarse conserva la fecha original.
  • advertise() es barato en logs y tiene límite de longitud (MAX_LOCATOR_BYTES = 256).
  • La desactivación es autoservicio; los operadores también pueden desactivar con un motivo.

JobEscrow​

function openSession(address worker, uint128 amount) external returns (uint256 id);
function settle(uint256 id, bytes32 receiptHash, uint128 spend, bytes calldata workerSig) external;
function refund(uint256 id) external;
function claim() external;
  • settle() verifica la firma del worker sobre el recibo de sesión.
  • El reparto es 99 / 1 worker / tesorería.
  • El escrow no gastado vuelve al usuario con refund().

Transporte​

libp2p sobre TCP/QUIC con Noise y yamux. El peer ID del registro es la identidad que el cliente espera; una discrepancia aborta el handshake.

  • DCUtR resuelve la mayor parte del NAT.
  • El relay se usa solo cuando no se puede establecer un camino directo, y solo para el handshake. El presupuesto de relay (128 KiB / 2 min) descarta el streaming por esa vía.
  • IPv6 está soportado pero es opcional.

Crédito y alcanzabilidad​

Los workers tienen una puntuación de crédito derivada del comportamiento. No es un token y no se puede comprar. Dos puertas la usan:

  • Puerta de alcanzabilidad: un worker que falla el handshake repetidamente baja de prioridad.
  • Puerta de crédito: un worker con mal historial no se muestra por defecto.

Ambas son política del cliente, no estado del contrato, así que un cliente siempre puede ignorarlas.

Commit-challenge​

Para evitar que un worker afirme servir un modelo que no ejecuta, el cliente puede pedir un compromiso sobre un desafío aleatorio antes del primer token. Un worker que no lo produce se descarta.

Lo que falta a propósito​

  • Sin orquestador, sin servidor de cola, sin base de datos de prompts.
  • Sin token, sin staking, sin contrato de gobernanza.
  • Sin despliegue en mainnet.
  • Sin telemetría en la app de escritorio.