Aller au contenu
MilestoneMint

Le séquestre, un jalon à la fois

Un petit contrat par entente détient le budget et ne verse que selon ses règles.

Trois rôles

  • Financeur

    Bloque le budget et rédige le plan.

  • Prestataire

    Livre chaque jalon et reçoit sa part.

  • Valideurs

    Valident ; k sur n doivent signer (une multisignature).

La vie d'un jalon

L'argent ne bouge que sur les deux flèches épaisses.

annulationremisedemande de modificationsnouvelle remisesignatures suffisantesBloquéRembourséEn revueModifications demandéesVersé

L'argent bloqué ou en revue est toujours en séquestre.

Trois façons de valider

  • Le financeur approuve

    Une seule signature. Idéal pour les petites primes.

  • k valideurs sur n

    La signature qui atteint k verse aussi la part.

  • Vérification automatique

    Un oracle (un service qui transmet un fait public) la confirme. Pas encore ? On réessaie plus tard.

Un exemple concret

Une subvention de 6 000 tUSDC, validée par 2 mentors sur 3.

JalonPartMontant
Spécification et RFC2 valideurs sur 315 %900 tUSDC
Cache local et moteur de synchro2 valideurs sur 335 %2 100 tUSDC
Interface de résolution des conflits2 valideurs sur 330 %1 800 tUSDC
Documentation et versionVérification automatique : version publiée20 %1 200 tUSDC

Les parts totalisent exactement 100 % ; le dernier jalon prend l'arrondi.

Échéances, rappels et remboursements

  • Passé son échéance, un jalon apparaît en retard ; le financeur peut envoyer un rappel.
  • Annuler rembourse tout ce qui n'est pas versé, même un jalon en revue.

Pour les développeurs

La couche de données de la démo reproduit le contrat, une fonction par changement d'état.

Voir l'interface du contrat
FonctionCe qu'elle faitÉquivalent dans la démo
lockFunds()Déployer l'entente et déposer le budgetlockAgreement()
submit()Le prestataire déclare un jalon livrésubmitMilestone()
approve()Une signature ; verse quand la règle est remplieapproveMilestone()
requestChanges()Renvoyer un jalon, l'argent reste bloquérequestChanges()
checkAndRelease()Interroger l'oracle ; verser si la condition est rempliereleaseByCheck()
cancel()Rembourser au financeur chaque jalon non versécancelAndRefund()

Voyez-le en action

Lancer la démo