La vie d'un paiement
Ce qui se passe entre l'arrivée de l'argent et le paiement de chacun.
D'un paiement à plusieurs
- 1
Quelqu'un paie le partage
Des jetons arrivent à son adresse, comme pour tout portefeuille.
- 2
La règle le divise
Le contrat calcule chaque part ; personne ne saisit de montant.
- 3
Les vérifications s'appliquent
Les gros versements attendent des signatures ; un partage gelé attend aussi.
- 4
Chacun est payé
Une transaction paie tout le monde et inscrit un reçu.
Les trois règles, calculs à l'appui
Disons que 2 500 tUSDC arrivent.
Pourcentages fixes
Les parts totalisent exactement 100 %.
| Destinataire | Part | Reçoit |
|---|---|---|
| Événements et salles | 40 % | 1 000 tUSDC |
| Formateurs des ateliers | 30 % | 750 tUSDC |
| Bourse du hackathon | 20 % | 500 tUSDC |
| Trésorerie du club | 10 % | 250 tUSDC |
Points de contribution
Chaque part = points ÷ total des points.
| Destinataire | Part | Reçoit |
|---|---|---|
| Léa Tremblay | 34 / 97 | 876,288661 tUSDC |
| Omar Haddad | 28 / 97 | 721,649484 tUSDC |
| Priya Nair | 22 / 97 | 567,010309 tUSDC |
| Jonas Weber | 13 / 97 | 335,051546 tUSDC |
Couvrir un coût d'abord
Un montant fixe d'abord, puis la règle.
| Destinataire | Part | Reçoit |
|---|---|---|
| Loyer commun | — | 350 tUSDC |
| Collectif de maraîchers | 45 % | 967,5 tUSDC |
| Boulangerie Levain & Mie | 25 % | 537,5 tUSDC |
| Torréfacteur du Nord | 20 % | 430 tUSDC |
| Fonds communautaire | 10 % | 215 tUSDC |
Poussières d'arrondi
Les parts sont arrondies vers le bas ; le reste va à la plus grande part, indiqué sur le reçu.
Approbations et gel
Des approbations pour les gros versements
Au-delà d'un seuil, un versement attend assez de signataires, p. ex. 2 sur 3 dès 2 000 tUSDC.
Gel d'urgence
Le propriétaire ou un approbateur peut bloquer les versements. Les paiements sont retenus jusqu'au dégel.
La piste d'audit
Chaque événement, avec heure, auteur, montant et hash de transaction. Exportable en CSV.
Pour les développeurs
La démo tourne dans votre navigateur ; sa couche de données reflète le contrat, prête pour wagmi et viem.
Voir l'interface du contrat
Interface du contrat (esquisse)
interface ISplit {
// Rule: fixed basis points (sum 10_000) or points
function recipients() external view returns (address[] memory, uint256[] memory);
function coverFirst() external view returns (address, uint256);
// Anyone can pay the split like any wallet
receive() external payable;
// Pays every recipient their share of what is waiting.
// Rounds down; the dust goes to the largest share.
function distribute(uint256 amount) external;
// Payouts >= threshold need `required` approvals
function propose(uint256 amount) external returns (uint256 id);
function approve(uint256 id) external; // executes on the last approval
function freeze() external; // owner or approver
function unfreeze() external;
event PaymentReceived(address indexed from, uint256 amount);
event Distributed(uint256 amount, address[] to, uint256[] amounts);
event Frozen(address by);
}La couche de données de la démo
src/lib/demo/types.tspartages, règles et journal, en unités de basesrc/lib/demo/allocate.tsla division exacte, poussières comprisessrc/lib/demo/ops.tspaiement, versement, approbation, gelsrc/lib/demo/chain.tsportefeuille, blocs et échecs simulés