Composez n'importe quel flux financier, transformez-le en code, intégrez-le dans votre produit. Ne vous trompez plus jamais de solde.
Un DSL conçu pour les flux financiers. Déclarez, compilez, exécutez.
Chaque transaction est en double-entrée. Les soldes sont justes par construction.
Support natif multi-devises avec précision configurable.
FaRl compilé en bytecode, exécuté dans une VM Go embarquée.
Cascade de sources avec max et @world en fallback.
Portions, remaining, destinations ordonnées. Rounding sans perte.
1// Paiement client → compte de vente 2transfer [DZD.2 5000] ( 3 from @client:user 4 to @courses:0587:paiement 5) 6 7// Split : 90% chauffeur, 10% plateforme 8transfer [DZD.2 5000] ( 9 from @courses:0587:paiement 10 to { 11 90/100 to @chauffeur:user 12 10/100 to @plateforme:frais 13 } 14) 15 16set transaction metadata "reference" = "COURSE-0587"
$ corren run market marketplace.farl Lexing... ✓ 18 tokens Parsing... ✓ 2 transfers, 1 set Compiling... ✓ 16 instructions Executing... @client:user → @courses:0587 [DZD.2 5000] @courses:0587 → 90% @chauffeur + 10% @plateforme ✓ 200 {"ok":true}
$ curl -X POST http://localhost:3068/market/script \ -H "Content-Type: application/json" \ -d '{"plain":"transfer [DZD.2 5000] (\n from @client:user\n to @courses:0587:paiement\n)\n\ntransfer [DZD.2 5000] (\n from @courses:0587:paiement\n to {\n 90/100 to @chauffeur:user\n 10/100 to @plateforme:frais\n }\n)","vars":{}}' 200 {"ok":true}
1// Cascade : wallet d'abord, puis crédit, puis @world 2transfer [DZD.2 3000] ( 3 from { 4 @wallet:user // balance: 1000 → utilisé first 5 @credit:user // balance: 2000 → utilisé next 6 @world // fallback illimité 7 } 8 to @commande:0089 9) 10 11// Résultat : 1000 wallet + 2000 credit = 3000
$ corren run bank cascade.farl Lexing... ✓ 14 tokens Parsing... ✓ 1 transfer (cascade source) Executing... @wallet:user → drained 1000 @credit:user → drained 2000 @world → not needed ✓ 200 {"ok":true}
$ curl -X POST http://localhost:3068/bank/script \ -d '{"plain":"transfer [DZD.2 3000] (\n from {\n @wallet:user\n @credit:user\n @world\n }\n to @commande:0089\n)","vars":{}}' 200 {"ok":true}
Soldes utilisateur, rechargement, P2P.
Splits vendeur/plateforme.
Cascade ordonnée avec fallback.
Précision configurable par actif.
Read/write sur comptes et TX.
Tout ou rien. Jamais d'état partiel.
Corren gère les soldes. Vous construisez le produit.