Naar de inhoud
ShowcaseprojectBlockchain & Web3
  • 223 tests
  • 100% coverage
  • Slither-analyse

Milestone Escrow

Escrow op basis van mijlpalen voor freelance- en bureauwerk, in ETH of elke standaard-ERC-20

Solidity 0.8.28OpenZeppelin v5ETH / ERC-20Foundry

Wat het is

MilestoneEscrow is één on-chain escrowcontract dat een willekeurig aantal onafhankelijke opdrachten beheert. De opdrachtgever stort bij het aanmaken van een opdracht het hele budget, verdeeld over maximaal 50 mijlpalen, zodat de freelancer vóór de start kan zien dat het geld er is.

Geld beweegt alleen wanneer de opdrachtgever een mijlpaal vrijgeeft, wanneer een neutrale arbiter een geschil beslecht door het nog niet vrijgegeven bedrag in basispunten te verdelen, of wanneer de opdracht wordt geannuleerd en de opdrachtgever zijn geld terugkrijgt. Een kleine protocolfee (hard begrensd op 5% en per opdracht vastgelegd) wordt ingehouden op uitbetalingen aan de freelancer; over terugbetalingen wordt nooit een fee gerekend.

Het zakelijke probleem

Werken op afstand tussen partijen die elkaar niet kennen loopt stuk op een vertrouwenskloof: opdrachtgevers willen niet vooruitbetalen, freelancers willen niet leveren voordat ze betaald zijn. Platformen dichten die kloof, maar rekenen forse fees, kunnen accounts bevriezen en beslissen geschillen op een manier die de partijen niet kunnen inzien.

Zo werkt het

  1. 1

    Aanmaken: de opdrachtgever roept createJob(freelancer, arbiter, token, amounts[]) aan en stort het volledige bedrag in ETH of een ERC-20. De actuele fee wordt in de opdracht vastgelegd.

  2. 2

    Leveren: de freelancer roept requestRelease(jobId, i) aan om aan te geven dat mijlpaal i klaar is.

  3. 3

    Vrijgeven: de opdrachtgever roept releaseMilestone(jobId, i) aan. De freelancer ontvangt het bedrag minus de fee; zodra alle mijlpalen zijn vrijgegeven, is de opdracht afgerond.

  4. 4

    Geschil (optioneel): elk van beide partijen kan een geschil openen, waarmee de opdracht wordt bevroren. De arbiter verdeelt elke nog niet vrijgegeven mijlpaal in basispunten tussen freelancer en opdrachtgever.

  5. 5

    Annuleren (optioneel): de opdrachtgever kan tegen volledige terugbetaling annuleren zolang er nog geen werk is aangemeld of vrijgegeven; de arbiter kan annuleren zolang de opdracht open is.

Beveiligingsmaatregelen

  • nonReentrant op elke functie die waarde verplaatst; state definitief vóór externe calls (checks-effects-interactions)
  • ETH-uitbetalingen bestand tegen griefing: mislukte push-betalingen worden bijgeschreven om later op te nemen
  • Fee-on-transfer-tokens worden geweigerd via een controle van het saldo voor en na de overdracht
  • Fee-cap (5%) en fee-snapshot per opdracht: de owner kan de fee op gefinancierde opdrachten niet verhogen
  • Begrensde loops (max. 50 mijlpalen) en drie gescheiden rollen
  • Ownable2Step; de admin kan nooit aan het geld van opdrachten komen
  • Gefuzzte solvabiliteitsinvariant: het contractsaldo is gelijk aan de som van de nog niet vrijgegeven mijlpalen

Features

  • Willekeurig veel opdrachten in één contract
  • Financiering in ETH of ERC-20
  • Tot 50 mijlpalen per opdracht
  • Vrijgaveverzoeken en geschillen met verdeling door de arbiter in basispunten
  • Annuleren & terugbetalen
  • Snapshot van de protocolfee, begrensd op 5%

Typische use cases

  • Freelancemarktplaatsen en bureauplatformen met non-custodial betalingen
  • B2B-dienstverleningscontracten met facturering per mijlpaal
  • Subsidieprogramma's die in tranches uitbetalen, met een commissie als arbiter

Bekende beperkingen

Van de arbiter wordt verwacht dat die neutraal is: in productie een multisig, een DAO of een gedecentraliseerd scheidsgerecht. Rebasing tokens worden niet ondersteund.

Andere showcasecontracts

Showcase

Token + Vesting + Staking

Een ERC-20 met cap en gasloze approvals, vestingschema's met cliff voor team en investeerders, en stakingbeloningen naar het Synthetix-model.

ERC-20EIP-2612OpenZeppelin v5

223 tests · 100% coverage · Slither‑analyse

Showcase

SigmaNFT Collection

Een eerlijke NFT-launch: allowlist- en publieke fase, limieten per wallet, onveranderlijke maximale supply, ERC-2981-royalty's en een delayed reveal.

ERC-721ERC-2981Merkle proofs

223 tests · 100% coverage · Slither‑analyse

Showcase

Gold-Backed Token (RWA)

Dekking wordt een voorwaarde voor minten: tokens kunnen alleen worden gemint als de gerapporteerde goudreserve de nieuwe totale supply dekt.

ERC-20AccessControlProof of reserve

223 tests · 100% coverage · Slither‑analyse

Standaarden: Solidity 0.8.x, OpenZeppelin, Foundry-tests met fuzzing, statische analyse met Slither, geverifieerde broncode. 223 tests · 100% coverage · Slither-analyse.

Heb je een project in gedachten?

Vertel ons wat je bouwt. Een senior engineer reageert op werkdagen binnen 24 uur, en meestal heb je binnen enkele werkdagen een eerlijke inschatting, een heldere scope en een voorstel met een vaste prijs of mijlpalen.

Liever eerst schrijven? Stuur ons een bericht

Je spreekt direct met Ing. Ismet Mesic, Tech lead.