# Invariants
# Principes généraux
La fonction premiÚre de la plateforme est de compenser les paiements en temps réel et de faciliter un rÚglement régulier, au plus tard à la fin du jour de valeur.
La plateforme permet aux participants de compenser immédiatement des fonds au profit de leurs clients tout en limitant les risques et coûts associés.
La plateforme prend en charge des contrÎles par transfert sur la liquidité disponible lorsque cela est nécessaire au premier objectif.
Le hub est optimisé pour le chemin critique.
RĂšglement automatisĂ© intrajournalier ; configurĂ© par schĂ©ma et implĂ©mentation Ă partir des modĂšles de rĂšglement recommandĂ©s pour lâinfrastructure des marchĂ©s financiers.
Le hub prend en charge un traitement de bout en bout automatique (STP).
Le traitement de bout en bout automatique (STP) limite les erreurs humaines dans le transfert et réduit les coûts.
Le caractÚre automatisé du traitement STP accélÚre les transferts de valeur entre clients finaux.
Aucun rapprochement manuel nâest requis : le protocole dâinteraction avec le hub garantit des rĂ©sultats dĂ©terministes.
- Lorsquâun transfert est finalisĂ©, son statut est sans ambiguĂŻtĂ© ; sinon il ne lâest pas et une notification active est envoyĂ©e aux participants.
- Le hub garantit des rĂ©sultats dĂ©terministes pour les transferts et est acceptĂ© par tous les participants comme autoritĂ© finale (« systĂšme dâenregistrement ») du statut des transferts.
- Le déterminisme signifie que chaque transfert est traçable et auditable (selon limites et contraintes), avec un résultat final dans un délai garanti.
- Les transferts par lot sont traités ligne par ligne, avec des résultats déterministes potentiellement distincts pour chaque ligne.
La logique de mise en place de transaction, propre aux cas dâusage, est sĂ©parĂ©e du transfert dâargent sans logique mĂ©tier.
- Les dĂ©tails de transaction et rĂšgles mĂ©tier sont capturĂ©s et convenus comme rĂšgles du systĂšme et guides dâexploitation technique ; ils peuvent ĂȘtre appliquĂ©s pendant le devis par les contreparties et sont portĂ©s entre elles par le Hub.
- La phase dâaccord Ă©tablit un objet de transaction signĂ©, spĂ©cifique au cas dâusage, intĂ©grant tous les dĂ©tails propres Ă la transaction.
- La phase de transfert orchestre la compensation de la valeur de dĂ©tail entre institutions au profit des contreparties (seuls des contrĂŽles de limites systĂšme sâappliquent), sans rĂ©fĂ©rence aux dĂ©tails mĂ©tier de la transaction.
- Aucun traitement supplémentaire propre à la transaction pendant la phase de transfert.
Le hub nâanalyse ni nâagit sur les dĂ©tails de bout en bout de la transaction ; les messages de transfert ne contiennent que les valeurs nĂ©cessaires Ă la compensation et au rĂšglement.
- Les contrĂŽles pendant lâĂ©tape de transfert portent uniquement sur la conformitĂ© aux rĂšgles du systĂšme, les limites, lâauthentification des signatures et la validation de la condition de paiement et de son accomplissement.
- Les transferts engagés pour le rÚglement sont définitifs et garantis de se régler selon les rÚgles du systÚme.
La sémantique de transfert par poussée de crédit est réduite à sa forme la plus simple et normalisée pour tous les types de transaction.
- Cela simplifie lâimplĂ©mentation et lâintĂ©gration des participants : de nombreux types de transaction et cas dâusage rĂ©utilisent le mĂȘme flux sous-jacent de transfert de valeur.
- La complexitĂ© des cas dâusage est Ă©cartĂ©e du chemin critique.
Le hub de services API sur Internet nâest pas un « commutateur de messages ».
- Le hub fournit des services API en temps réel aux participants pour les transferts instantanés par poussée de crédit de détail.
- Services tels que rĂ©solution identifiant â participant, accord de transaction entre participants, soumission de transferts prĂ©parĂ©s et dâavis dâaccomplissement.
- Des services API auxiliaires couvrent lâintĂ©gration, la gestion des positions, le reporting pour rapprochement et dâautres fonctions non temps rĂ©el hors traitement de transfert.
- Tous les messages sont validés par rapport à la spécification API ; les messages non conformes sont rejetés avec un code de raison normalisé interprétable par machine.
Le hub expose des interfaces asynchrones
- Pour maximiser le dĂ©bit et lâefficacitĂ© globale.
- Pour isoler les problĂšmes de connectivitĂ© des nĆuds feuilles afin quâils nâaffectent pas les autres utilisateurs finaux.
- Pour permettre au hub de traiter les demandes selon ses propres priorités sans conserver une connexion active par transfert.
- Pour gérer de nombreux processus longs concurrents via un traitement par lots interne et une répartition de charge.
- Pour disposer dâun mĂ©canisme unique (ex. masse, saisie utilisateur finale, plusieurs sauts).
- Pour mieux refléter le réseau réel : les problÚmes de vitesse ou de fiabilité pour un participant ont un impact minimal sur les autres et sur la disponibilité globale.
LâAPI de transfert est idempotente
- Les demandes dupliquĂ©es peuvent ĂȘtre Ă©mises sans risque par lâĂ©metteur en cas de rĂ©seau dĂ©gradĂ©.
- Les doublons sont reconnus et conduisent au mĂȘme rĂ©sultat (doublons valides) ou sont rejetĂ©s comme doublons (si interdits par la spĂ©cification) avec rĂ©fĂ©rence Ă lâoriginal.
Les enregistrements de transferts finalisĂ©s sont conservĂ©s pendant une pĂ©riode configurable par schĂ©ma pour le rapprochement, la facturation et Ă des fins dâinvestigation ou de litige
- On ne peut pas interroger un « sous-statut » dâun transfert en cours ; lâAPI fournit un rĂ©sultat dĂ©terministe avec notification active dans le dĂ©lai de service garanti.
Les enregistrements des transferts finalisĂ©s sont conservĂ©s sans limite de durĂ©e dans un stockage long pour lâanalyse mĂ©tier par lâopĂ©rateur du systĂšme et les participants (via des interfaces appropriĂ©es)
- La disponibilitĂ© des enregistrements peut ĂȘtre retardĂ©e par rapport Ă la finalitĂ© en ligne pour sĂ©parer tenue des registres et traitement temps rĂ©el des demandes de transfert.
Le hub peut servir de relais pour certains messages inter-participants (p.ex. pendant la phase dâaccord) pour simplifier lâinterconnexion, sans analyser ni stocker (au-delĂ du relais) ni traiter davantage les messages.
- Dans certains flux (p.ex. recherche de partie), un point de contact unique pour router les messages liĂ©s au schĂ©ma peut ĂȘtre souhaitable mĂȘme si le message nâest pas destinĂ© au hub et ne nĂ©cessite pas dâinspection.
Pour garantir la cohĂ©rence arithmĂ©tique du systĂšme, seule lâarithmĂ©tique en virgule fixe est utilisĂ©e.
- Les calculs en virgule flottante peuvent perdre en précision et ne doivent servir à aucun calcul financier.
- Voir la représentation et les formes du type décimal Level One.
- Cette spĂ©cification permet lâĂ©change sans perte de prĂ©cision avec les systĂšmes financiers basĂ©s sur XML.
# Sécurité et sûreté
Les messages API sont confidentiels, à intégrité vérifiable et non répudiables.
- La confidentialité protÚge la vie privée des participants et de leurs clients.
- De nombreuses juridictions imposent des exigences légales ; le hub doit appliquer les bonnes pratiques pour protéger cette confidentialité.
- Des mĂ©canismes dâintĂ©gritĂ© Ă dĂ©tection dâaltĂ©ration garantissent que les messages ne sont pas modifiĂ©s en transit.
- Chaque destinataire doit pouvoir vĂ©rifier de façon fiable que le message nâa pas Ă©tĂ© altĂ©rĂ© en transit.
- La cryptographie Ă clĂ© publique (signature numĂ©rique) est aujourdâhui le meilleur mĂ©canisme connu pour des messages Ă intĂ©gritĂ© vĂ©rifiable.
- La sĂ©curitĂ© de la clĂ© privĂ©e (de signature) de lâĂ©metteur est critique.
- Les rĂšgles du systĂšme doivent prĂ©ciser les responsabilitĂ©s en matiĂšre de gestion des clĂ©s et lâexposition financiĂšre en cas de compromission.
- La non-rĂ©pudiation garantit que le message a bien Ă©tĂ© envoyĂ© par lâĂ©metteur dĂ©clarĂ© et que ce dernier ne peut nier cette provenance.
- Ceci est essentiel pour identifier la partie responsable lors dâaudits et de rĂ©solution de litiges.
Les messages API sont authentifiés dÚs réception avant acceptation ou traitement ultérieur
- Lâauthentification renforce la confiance dans lâidentitĂ© de lâĂ©metteur dĂ©clarĂ©.
- Elle renforce aussi la confiance que le message nâa pas Ă©tĂ© envoyĂ© par une partie non autorisĂ©e.
Les messages authentifiĂ©s ne sont pas acquittĂ©s comme acceptĂ©s tant quâils ne sont pas enregistrĂ©s en toute sĂ©curitĂ© sur un stockage permanent
- LâAPI Mojaloop confĂšre une signification mĂ©tier importante Ă certains codes de rĂ©ponse HTTP Ă diffĂ©rentes Ă©tapes des flux.
- Certaines rĂ©ponses, p.ex. « 202 Accepted », portent des garanties financiĂšres pour les participants et ne doivent ĂȘtre envoyĂ©es que lorsque lâentitĂ© rĂ©ceptrice est assurĂ©e dâavoir effectuĂ© des enregistrements permanents sĂ»rs permettant :
- la reprise systÚme vers un état cohérent aprÚs défaillance(s) de composants distribués ;
- des processus de rĂšglement exacts ;
- lâaudit et la rĂ©solution de litiges.
- Par exemple, un « 202 Accepted » du hub vers le participant bĂ©nĂ©ficiaire Ă rĂ©ception dâun message dâaccomplissement de transfert indique une garantie de rĂšglement de la transaction pour le bĂ©nĂ©ficiaire.
- LâAPI Mojaloop est conçue pour fonctionner en conditions rĂ©seau imparfaites, avec nouvelles tentatives et synchronisation dâĂ©tat intĂ©grĂ©es.
Trois niveaux de sĂ©curitĂ© des communications pour lâintĂ©gritĂ©, la confidentialitĂ© et la non-rĂ©pudiation entre serveur et client API.
- Connexions sĂ©curisĂ©es : mTLS obligatoire entre le hub et les participants autorisĂ©s â confidentialitĂ©, correspondants connus, protection contre lâaltĂ©ration.
- Messages sĂ©curisĂ©s : contenu JSON signĂ© cryptographiquement selon JWS â origine vĂ©rifiable et non rĂ©pudiable par lâĂ©metteur.
- Conditions de transfert sĂ©curisĂ©es : protocole Interledger (ILP) entre payeur et bĂ©nĂ©ficiaire â intĂ©gritĂ© de la condition de paiement et de son accomplissement ; durĂ©e de validitĂ© limitĂ©e de lâinstruction de transfert.
# Caractéristiques opérationnelles
Sur matériel minimal, la base démontrée supporte la compensation de 1 000 transferts par seconde pendant une heure, avec au plus 1 % (étape de transfert) dépassant 1 seconde dans le hub.
- La mesure inclut matériel et logiciel nécessaires, sécurité de production et persistance des données.
- Elle couvre les trois étapes : découverte, accord et transfert.
- Elle exclut la latence introduite par les participants.
- Une heure est une approximation raisonnable dâun pic de demande pour un systĂšme national de paiement.
- Le coût unitaire de montée en charge est inférieur au coût de provisionnement initial.
- 1 000 transferts (compensation) par seconde est un point de départ raisonnable pour un systÚme national.
- 1 % des transferts (compensation) au-delà de 1 seconde est un point de départ raisonnable.
- Les schémas Mojaloop doivent pouvoir démarrer à un coût raisonnable pour une infrastructure financiÚre nationale et évoluer économiquement avec la demande.
Correctement déployé, le hub est hautement disponible et résilient aux défaillances.
Ici « hautement disponible » signifie « capacité à fournir et maintenir un niveau de service acceptable face aux pannes et perturbations ».
Chaque schĂ©ma peut dĂ©finir ce quâest un « niveau acceptable » ; Mojaloop fait des arbitrages contributeurs :
- lorsque les modes de dĂ©faillance le permettent, le service se dĂ©grade pour lâensemble des participants plutĂŽt que certains subissant des coupures totales pendant que dâautres restent servis ;
- pas de point de défaillance unique : dégradation minimale si un composant unique tombe en panne ;
- plusieurs instances actives par composant, réparties derriÚre des répartiteurs de charge ;
- chaque instance peut traiter les demandes de tout client / participant : aucun participant ne perd toute capacitĂ© de transaction Ă la suite de la panne dâun seul composant.
Avec une infrastructure adaptée, des configurations atteignant 99,999 % de disponibilité (« cinq neufs ») sont possibles.
Cela inclut des configurations multi-centres de donnĂ©es gĂ©ographiquement distribuĂ©es actif:actif et actif:passif, services et donnĂ©es rĂ©pliquĂ©s sur des nĆuds physiques censĂ©s Ă©chouer indĂ©pendamment.
Les nĆuds des groupes de rĂ©plication (et/ou grappes) doivent ĂȘtre dans des emplacements physiques distincts (baies et/ou centres de donnĂ©es), alimentations et interconnexions rĂ©seau indĂ©pendantes.
En cas de dĂ©faillances multiples non couvertes par le logiciel Mojaloop, la configuration ou lâinfrastructure, lâAPI Mojaloop permet Ă chaque entitĂ© du schĂ©ma de retrouver un Ă©tat cohĂ©rent, le hub Ă©tant la source de vĂ©ritĂ© ultime aprĂšs restauration complĂšte.
Voir aussi les points sur la résistance à la perte de données.
Les schĂ©mas Mojaloop, en tant quâĂ©lĂ©ments dâinfrastructures nationales, doivent viser une indisponibilitĂ© quasi nulle dans des limites de coĂ»t raisonnables.
Les pannes matĂ©rielles et logicielles sont attendues, mĂȘme sur les composants de la plus haute qualitĂ©. Les bonnes pratiques prĂ©conisent quâelles soient anticipĂ©es et prĂ©vues autant que possible dans la conception du hub pour limiter perte ou dĂ©gradation de service et/ou de donnĂ©es.
Les arbitrages privilĂ©gient la disponibilitĂ© globale et la cohĂ©rence dâĂ©tat par rapport Ă la performance :
- tous les participants peuvent continuer Ă moins grande cadence plutĂŽt que certains ĂȘtre totalement bloquĂ©s ;
- les incohĂ©rences dâĂ©tat entre entitĂ©s du schĂ©ma sont rĂ©cupĂ©rables aprĂšs restauration via lâAPI Mojaloop, avec un rapprochement manuel minimal ; le hub reste la source de vĂ©ritĂ©.
Le hub résiste à la perte de données en cas de défaillances.
Avec une infrastructure adaptĂ©e, le logiciel Mojaloop peut rĂ©pliquer de façon fiable les donnĂ©es sur plusieurs nĆuds de stockage physiques redondants avant traitement.
Les moteurs de base fournis par les mécanismes de déploiement Mojaloop supportent notamment :
- réplication primaire/secondaire asynchrone ;
- réplication primaire/primaire synchrone ;
- réplication par algorithme de consensus par quorum synchrone.
Les mécanismes disponibles dépendent de la couche de stockage et des technologies de base de données employées.
En cas de dĂ©faillances multiples non couvertes, lâAPI Mojaloop permet de retrouver un Ă©tat cohĂ©rent avec une exposition financiĂšre minimale.
Les transferts deviennent contraignants financiĂšrement lorsque le hub a rĂ©pondu avec succĂšs Ă un message dâaccomplissement de transfert du participant bĂ©nĂ©ficiaire â rĂ©ponse Ă©mise seulement aprĂšs persistance du message dâaccomplissement et de son issue dans la base du grand livre.
Les horodatages dâexpiration sur les messages API financiĂšrement significatifs permettent des chemins dâĂ©chec dĂ©terministes et opportuns pour tous les participants, avec mĂ©canismes de nouvelle tentative automatisĂ©s.
Les schémas Mojaloop, en infrastructures nationales, doivent autant que possible, dans des limites de coût raisonnables, éviter toute perte de données.
Les pannes sont attendues, mĂȘme sur les composants de la plus haute qualitĂ©. Les bonnes pratiques prĂ©conisent quâelles soient anticipĂ©es et prĂ©vues dans la conception du hub pour Ă©viter la perte de donnĂ©es.
Les participants ont besoin dâune confiance rapide dans le statut des opĂ©rations financiĂšres sur le systĂšme pour limiter lâexposition et offrir une excellente expĂ©rience client.
# Applicabilité
La présente version de ce document correspond à Mojaloop version 17.0.0 (opens new window).
# Historique du document
| Version | Date | Auteur | Détail |
|---|---|---|---|
| 1.1 | 14 avril 2025 | Paul Makin | Ajout du contrĂŽle de version |
| 1.0 | 5 février 2025 | James Bush | Version initiale |
