Vai al contenuto
Progetto showcaseBlockchain & Web3
  • 223 test
  • copertura 100%
  • analisi Slither

Milestone Escrow

Escrow a milestone per il lavoro di freelance e agenzie, in ETH o in qualsiasi ERC-20 standard

Solidity 0.8.28OpenZeppelin v5ETH / ERC-20Foundry

Che cos'è

MilestoneEscrow è un unico contratto di escrow on-chain che gestisce un numero qualsiasi di incarichi indipendenti. Alla creazione di un incarico il committente versa l'intero budget, suddiviso in un massimo di 50 milestone, così il freelancer vede che il denaro c'è prima di iniziare a lavorare.

I fondi si muovono solo quando il committente rilascia una milestone, quando un arbitro neutrale risolve una controversia ripartendo in punti base i fondi non ancora rilasciati, oppure quando l'incarico viene annullato e il committente rimborsato. Una piccola commissione di protocollo (con un tetto fisso del 5% e fissata tramite snapshot per ogni incarico) viene trattenuta dai pagamenti al freelancer; sui rimborsi non si applica mai alcuna commissione.

Il problema di business

Il lavoro da remoto tra parti che non si conoscono si scontra con un deficit di fiducia: i committenti non vogliono pagare in anticipo, i freelancer non vogliono consegnare prima di essere pagati. Le piattaforme colmano questo vuoto, ma applicano commissioni elevate, possono bloccare gli account e decidono le controversie in modi che le parti non possono vedere.

Come funziona

  1. 1

    Creazione: il committente chiama createJob(freelancer, arbiter, token, amounts[]) e versa l'intera somma in ETH o in un ERC-20. La commissione corrente viene fissata nell'incarico tramite snapshot.

  2. 2

    Consegna: il freelancer chiama requestRelease(jobId, i) per segnalare che la milestone i è completata.

  3. 3

    Rilascio: il committente chiama releaseMilestone(jobId, i). Il freelancer riceve l'importo al netto della commissione; una volta rilasciate tutte le milestone, l'incarico è concluso.

  4. 4

    Controversia (facoltativa): ciascuna delle parti può aprire una controversia, che congela l'incarico. L'arbitro ripartisce in punti base ogni milestone non ancora rilasciata tra freelancer e committente.

  5. 5

    Annullamento (facoltativo): il committente può annullare con rimborso integrale finché nessun lavoro è stato richiesto o rilasciato; l'arbitro può annullare finché l'incarico è aperto.

Misure di sicurezza

  • nonReentrant su ogni funzione che muove valore; stato finalizzato prima delle chiamate esterne (checks-effects-interactions)
  • Pagamenti in ETH resistenti al griefing: i pagamenti push falliti vengono accreditati per un prelievo successivo
  • Token fee-on-transfer rifiutati tramite controllo del saldo prima e dopo il trasferimento
  • Tetto alla commissione (5%) e snapshot della commissione per incarico: l'owner non può aumentare le commissioni sugli incarichi già finanziati
  • Cicli limitati (max. 50 milestone) e tre ruoli distinti
  • Ownable2Step; l'admin non può mai toccare i fondi degli incarichi
  • Invariante di solvibilità verificato con fuzzing: il saldo del contratto è pari alla somma delle milestone non rilasciate

Funzionalità

  • Un numero qualsiasi di incarichi in un solo contratto
  • Versamento in ETH o ERC-20
  • Fino a 50 milestone per incarico
  • Richieste di rilascio e controversie con ripartizione dell'arbitro in punti base
  • Annullamento e rimborso
  • Snapshot della commissione di protocollo, con tetto al 5%

Casi d'uso tipici

  • Marketplace per freelance e piattaforme per agenzie con pagamenti non-custodial
  • Contratti di servizi B2B con fatturazione a milestone
  • Programmi di grant che erogano a tranche, con un comitato come arbitro

Limiti noti

Si confida nella neutralità dell'arbitro: in produzione un multisig, una DAO o un tribunale decentralizzato. I token rebasing non sono supportati.

Altri contratti showcase

Showcase

Token + Vesting + Staking

Un ERC-20 con cap e approvazioni gasless, piani di vesting con cliff per team e investitori e ricompense di staking sul modello Synthetix.

ERC-20EIP-2612OpenZeppelin v5

223 test · copertura 100% · analisi Slither

Showcase

SigmaNFT Collection

Un lancio NFT equo: fasi allowlist e pubblica, limiti per wallet, supply massima immutabile, royalty ERC-2981 e reveal differito.

ERC-721ERC-2981Merkle proofs

223 test · copertura 100% · analisi Slither

Showcase

Gold-Backed Token (RWA)

La copertura diventa una precondizione del mint: i token possono essere coniati solo se la riserva d'oro dichiarata copre la nuova supply totale.

ERC-20AccessControlProof of reserve

223 test · copertura 100% · analisi Slither

Standard: Solidity 0.8.x, OpenZeppelin, test Foundry con fuzzing, analisi statica con Slither, codice sorgente verificato. 223 test · copertura 100% · analisi Slither.

Avete un progetto in mente?

Raccontateci che cosa state costruendo. Uno sviluppatore senior vi risponde entro 24 ore nei giorni lavorativi; l'offerta scritta, a prezzo fisso o a milestone, arriva di norma entro pochi giorni lavorativi.

Preferite prima scriverci? Scriveteci

Parlerete direttamente con Ing. Ismet Mesic, Tech lead.