Skip to content
MilestoneMint

Escrow, one milestone at a time

One small contract per agreement holds the budget and pays only by its rules.

Three roles

  • Funder

    Locks the budget and writes the plan.

  • Builder

    Delivers each milestone and gets paid.

  • Reviewers

    Sign off; k of n must agree (a multi-signature).

The life of a milestone

Money only moves on the two thick arrows.

funder cancelssubmitrequest changesresubmitenough signaturesLockedRefundedIn reviewChanges requestedReleased

Locked and in-review money is still in escrow.

Three ways to sign off

  • Funder approves

    One signature. Best for small bounties.

  • k of n reviewers

    The signature that reaches k also releases the share.

  • Automatic check

    An oracle (a service reporting a public fact) confirms it. Not met? Run it again later.

A worked example

A 6,000 tUSDC grant, signed off by 2 of 3 mentors.

MilestoneShareAmount
Design spec and RFC2 of 3 reviewers15%900 tUSDC
Local cache and sync engine2 of 3 reviewers35%2,100 tUSDC
Conflict resolution UI2 of 3 reviewers30%1,800 tUSDC
Docs and releaseAutomatic check: release published20%1,200 tUSDC

Shares add up to exactly 100%; the last milestone takes any rounding leftover.

Deadlines, reminders and refunds

  • Past its deadline, a milestone shows as overdue; the funder can send a reminder.
  • Cancelling refunds everything unreleased, even a milestone in review.

For developers

The demo's data layer mirrors the contract one function per state change.

Show the contract interface
FunctionWhat it doesDemo equivalent
lockFunds()Deploy the agreement and deposit the budgetlockAgreement()
submit()Builder marks a milestone deliveredsubmitMilestone()
approve()One signature; releases when the rule is metapproveMilestone()
requestChanges()Send a milestone back, money stays lockedrequestChanges()
checkAndRelease()Ask the oracle; release if the condition is metreleaseByCheck()
cancel()Refund every unreleased milestone to the fundercancelAndRefund()

See it move

Launch the demo