Przejdź do treści
Projekt pokazowyBlockchain i Web3
  • 223 testy
  • 100% pokrycia
  • analiza Slither

Milestone Escrow

Escrow rozliczany kamieniami milowymi dla freelancerów i agencji, w ETH lub dowolnym standardowym ERC-20

Solidity 0.8.28OpenZeppelin v5ETH / ERC-20Foundry

Co to jest

MilestoneEscrow to pojedynczy kontrakt escrow on-chain, który obsługuje dowolną liczbę niezależnych zleceń. Tworząc zlecenie, klient wpłaca cały budżet, podzielony na maksymalnie 50 kamieni milowych, więc freelancer jeszcze przed rozpoczęciem pracy widzi, że pieniądze są na miejscu.

Środki są wypłacane tylko wtedy, gdy klient zwalnia kamień milowy, gdy neutralny arbiter rozstrzyga spór, dzieląc niezwolnione środki w punktach bazowych, albo gdy zlecenie zostaje anulowane, a klient otrzymuje zwrot. Niewielka opłata protokołu – sztywno ograniczona do 5% i zapisywana w zleceniu w chwili jego utworzenia – jest potrącana z wypłat dla freelancera; od zwrotów opłata nie jest pobierana nigdy.

Problem biznesowy

Praca zdalna między stronami, które się nie znają, rozbija się o lukę zaufania: klienci nie chcą płacić z góry, freelancerzy nie chcą oddawać pracy przed zapłatą. Platformy tę lukę zamykają, ale pobierają wysokie prowizje, mogą blokować konta i rozstrzygają spory w sposób, którego strony nie widzą.

Jak to działa

  1. 1

    Utworzenie: klient wywołuje createJob(freelancer, arbiter, token, amounts[]) i wpłaca pełną kwotę w ETH lub ERC-20. Aktualna opłata zostaje zapisana w zleceniu.

  2. 2

    Dostarczenie: freelancer wywołuje requestRelease(jobId, i), sygnalizując, że kamień milowy i jest gotowy.

  3. 3

    Zwolnienie: klient wywołuje releaseMilestone(jobId, i). Freelancer otrzymuje kwotę pomniejszoną o opłatę; po zwolnieniu wszystkich kamieni milowych zlecenie jest zakończone.

  4. 4

    Spór (opcjonalnie): każda ze stron może otworzyć spór, co zamraża zlecenie. Arbiter dzieli każdy niezwolniony kamień milowy między freelancera a klienta w punktach bazowych.

  5. 5

    Anulowanie (opcjonalnie): klient może anulować zlecenie z pełnym zwrotem, dopóki nie zgłoszono ani nie zwolniono żadnej pracy; arbiter może je anulować, dopóki zlecenie jest otwarte.

Zabezpieczenia

  • nonReentrant na każdej funkcji przenoszącej wartość; stan finalizowany przed wywołaniami zewnętrznymi (checks-effects-interactions)
  • Wypłaty ETH odporne na griefing: nieudane płatności push są zapisywane do późniejszej wypłaty
  • Tokeny fee-on-transfer odrzucane dzięki sprawdzeniu salda przed transferem i po nim
  • Limit opłaty (5%) i snapshot opłaty w każdym zleceniu – owner nie może podnieść opłat w opłaconych już zleceniach
  • Ograniczone pętle (maks. 50 kamieni milowych) i trzy odrębne role
  • Ownable2Step; admin nigdy nie ma dostępu do środków ze zleceń
  • Niezmiennik wypłacalności sprawdzany fuzzingiem: saldo kontraktu równa się sumie niezwolnionych kamieni milowych

Funkcje

  • Dowolna liczba zleceń w jednym kontrakcie
  • Finansowanie w ETH lub ERC-20
  • Do 50 kamieni milowych na zlecenie
  • Prośby o zwolnienie i spory z podziałem przez arbitra w punktach bazowych
  • Anulowanie i zwrot środków
  • Snapshot opłaty protokołu, limit 5%

Typowe zastosowania

  • Marketplace’y dla freelancerów i platformy agencyjne z płatnościami non-custodial
  • Umowy na usługi B2B z rozliczeniem według kamieni milowych
  • Programy grantowe wypłacane w transzach, z komisją w roli arbitra

Znane ograniczenia

Zakłada się neutralność arbitra – na produkcji byłby to multisig, DAO albo zdecentralizowany sąd arbitrażowy. Tokeny typu rebasing nie są obsługiwane.

Pozostałe kontrakty pokazowe

Pokazowy

Token + Vesting + Staking

ERC-20 z limitem podaży i zatwierdzeniami bez gasu, harmonogramy vestingu z cliffem dla zespołu i inwestorów oraz nagrody za staking w stylu Synthetix.

ERC-20EIP-2612OpenZeppelin v5

223 testy · 100% pokrycia · analiza Slither

Pokazowy

SigmaNFT Collection

Uczciwy launch NFT: faza allowlisty i faza publiczna, limity na portfel, niezmienna maksymalna podaż, tantiemy ERC-2981 i opóźniony reveal.

ERC-721ERC-2981Merkle proofs

223 testy · 100% pokrycia · analiza Slither

Pokazowy

Gold-Backed Token (RWA)

Pokrycie staje się warunkiem mintowania: tokeny można wyemitować tylko wtedy, gdy zgłoszona rezerwa złota pokrywa nową łączną podaż.

ERC-20AccessControlProof of reserve

223 testy · 100% pokrycia · analiza Slither

Standardy: Solidity 0.8.x, OpenZeppelin, testy Foundry z fuzzingiem, analiza statyczna Slither, zweryfikowany kod źródłowy. 223 testy · 100% pokrycia · analiza Slither.

Masz pomysł na projekt?

Opowiedz nam, co budujesz. Zwykle w ciągu kilku dni roboczych dostajesz uczciwą ocenę, jasny zakres i ofertę w stałej cenie albo z rozliczeniem za kamienie milowe.

Wolisz najpierw napisać? Napisz do nas

Twój rozmówca: Ing. Ismet Mesic, Tech lead.