Ledger engine
— TX
ASSET DZD · EUR · USD
initialising
BLOCK
LAT
NET DZD/MENA
v 0.4.2
@wallet:alice
solde: 10 000 DA
split 90/10
allotment · 2 destinations
DZD.25 000 DA
Committed ✓
DR │ CR · balanced
atomic0 err
@world → @banque
émission · source illimitée
source[DZD.2 *]
Algérie · MENA · Afrique

Infrastructure
financière programmable.

Composez n'importe quel flux financier, transformez-le en code, intégrez-le dans votre produit. Ne vous trompez plus jamais de solde.

Scroll
Terminal

Démarrez en quelques secondes.

corren — bash
Flow Graph

Visualisez vos flux en temps réel.

live · FaRl engine
MARKETPLACE · VTC
Ledger

Un ledger pour ingénieurs.

corren — ledger interactifen cours d'exécution
Comptes · Soldes temps réel
Lexer
Parser
Compiler
VM
Architecture

Du code FaRl au grand livre.

Pipeline d'exécutionidle
┌────┐ │.frl│ │ │ └────┘
Source
.farl
T O K E N ━━━━━━━━ kw str num
Lexer
Tokens
◇ ╱ ╲ ◇ ◇ ╱ ╲ ◇ ◇
Parser
AST
0x00 PUSH 0x01 LOAD 0x02 XFER 0x03 HALT
Compiler
Bytecode
[▓▓▓▓▓▓] │stack │ │frame │ [══════]
VM
Execution
╔══════╗ ║DR CR║ ║──────║ ╚══════╝
Ledger
Commit
FaRl
DSL financier
Lexer · Parser · Compiler · VM
< 2ms
Latence d'exécution
VM Go natif embarquée
DZD · EUR · USD
Multi-devises
Précision configurable par actif
100%
Atomicité garantie
Tout ou rien · jamais d'état partiel
HTTP API
Intégration instantanée
REST · POST /script · GET /accounts
Fonctionnalités

Tout ce dont vos agents financiers ont besoin.

╔═══╗ ║ F ║ ╚═══╝
→ FaRl

Langage dédié

Un DSL conçu pour les flux financiers. Déclarez, compilez, exécutez.

DR │ CR ───┼─── + │ -
→ Double-entrée

Comptabilité stricte

Chaque transaction est en double-entrée. Les soldes sont justes par construction.

DZD.2 EUR.2 USD.2
→ Multi-devise

DZD, EUR, USD...

Support natif multi-devises avec précision configurable.

PUSH LOAD XFER HALT
→ VM intégrée

Machine virtuelle

FaRl compilé en bytecode, exécuté dans une VM Go embarquée.

from { @a @world }
→ Cascades

Sources ordonnées

Cascade de sources avec max et @world en fallback.

to { 90% → A rem → B }
→ Splits

Allotment natif

Portions, remaining, destinations ordonnées. Rounding sans perte.

Exemples

Du code réel.

 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}
Marketplace VTC — paiement client splité automatiquement entre chauffeur (90%) et plateforme (10%).
 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}
Banque — cascade ordonnée : wallet drainé en premier, crédit ensuite, @world en fallback si nécessaire.
Cas d'usage

Construisez comme des LEGO.

╔══╗ ║$$║ ╚══╝

Wallets

Soldes utilisateur, rechargement, P2P.

90% → A 10% → B

Marketplace

Splits vendeur/plateforme.

from { @a @world }

Néobanques

Cascade ordonnée avec fallback.

[DZD.2] [EUR.2] [USD.2]

Multi-devise

Précision configurable par actif.

set tx meta "ref"

Metadata

Read/write sur comptes et TX.

atomic ✓ all ✗ none

Atomicité

Tout ou rien. Jamais d'état partiel.

Personne ne construit sa propre base de données.
Pourquoi construire celle de votre argent ?

Corren gère les soldes. Vous construisez le produit.

Demander un accès → Documentation