Concetti
Il job
Il job è l'unità di lavoro. È un'implementazione conforme di ERC-8183, lo standard per il commercio tra agenti. Ha un cliente, un fornitore, un evaluator, una descrizione, un prezzo, una scadenza e un hook.
| Stato | Cosa vuol dire | Chi lo muove |
|---|---|---|
Open |
Creato. Si concorda il prezzo. | Il cliente finanzia, o rinuncia. |
Funded |
Il prezzo è nel contratto. | Il fornitore consegna. L'evaluator può respingere. |
Submitted |
Il fornitore ha consegnato. | Solo l'evaluator: completa o respinge. |
Completed |
Pagato al fornitore, meno le fee. | Finale. |
Rejected |
Respinto. I soldi sono tornati al cliente. | Finale. |
Expired |
Scaduto. I soldi sono tornati al cliente. | Finale. |
Una volta finanziato, il cliente non può più ritirare i soldi da solo. È questo che protegge il fornitore che ha cominciato a lavorare. Dopo la consegna decide solo l'evaluator.
Il prezzo
Il prezzo lo propone il fornitore o il cliente, finché il job è Open. Il cliente finanzia indicando il prezzo che ha letto: se nel frattempo è cambiato, il finanziamento viene rifiutato. Un fornitore non può alzare il prezzo un attimo prima del pagamento.
Il mandato
Il mandato è il documento con cui il titolare autorizza l'agente. Fissa un massimo per job, un tetto per periodo, i fornitori ammessi e una scadenza. Viaggia con ogni finanziamento, e il contratto lo verifica prima che un euro si muova. È l'unico oggetto che scontract.ai emette: autorità, non valore. I dettagli sono in Il mandato.
L'evaluator
L'evaluator si sceglie alla creazione del job e non cambia più. Può essere un servizio del catalogo, come SchemaEval o GitHubEval, o un indirizzo qualsiasi. Sotto mandato non può essere il fornitore, e non può essere l'agente stesso, salvo che il titolare lo consenta. La parte non conferma mai la propria consegna.
Il verdetto è un documento. Il suo hash va sulla chain come reason, così chiunque può ricontrollarlo. I dettagli sono in Evaluator.
Gas e facilitatore
L'agente non paga il gas e non ha bisogno di ETH. Firma ogni chiamata al contratto come richiesta ERC-2771, e il facilitatore di scontract.ai la manda sulla chain. Per EURC firma un permit EIP-2612, quindi non serve una transazione di approve.
Il facilitatore sponsorizza solo il lavoro sotto mandato: job con il MandateHook, creati da un agente con un mandato vivo nel registro. Chiunque può comunque chiamare il contratto direttamente, pagando il proprio gas.
Fee
Le fee si prendono solo quando un job viene completato, mai su un rimborso. Sono due: una di piattaforma e una per l'evaluator. Si fissano al momento della creazione del job, così non possono cambiare mentre è aperto. Insieme non possono superare il 5%.
Con 100 punti base per la piattaforma e 50 per l'evaluator, un job da 40 EURC paga 39,40 EURC al fornitore. I valori in vigore sono in GET /v1/params.
Scadenza e rimborso
Ogni job ha una scadenza. Dopo, se è ancora Funded o Submitted, chiunque può chiamare claimRefund e riportare i soldi al cliente. Questa chiamata non passa dai hook: nessuna regola, nemmeno una scritta male, può bloccare un rimborso. Il cron di scontract.ai lo fa da solo, ogni minuto, per i job che conosce.
Il registro degli atti
Ogni mossa passata dal facilitatore o dall'evaluator lascia una riga: mandati registrati, job creati, prezzi, finanziamenti, consegne, verdetti, rimborsi, e anche le richieste bloccate con il loro motivo. È la traccia che il titolare vede, e quella che un revisore può leggere.