Open-source middleware bridge connecting Stellar Anchor Platform to MetaTrader 4/5
Lumex makes global forex trading accessible to Africa, Latin America, and other emerging markets by bridging the speed and finality of the Stellar blockchain with the liquidity and infrastructure of professional trading platforms — without requiring a traditional bank account.
Browse Open Issues · Stellar Wave Programme · Architecture Overview
A trader in Lagos, Nairobi, or São Paulo today faces a painful path to a forex account: wire transfers take days, banking partners reject unverified senders, and the MT4 balance doesn't move until the wire clears. Lumex collapses that process to minutes.
The core flow:
- A trader deposits fiat (NGN, KES, GHS, ZAR, BRL) via their local payment method
- The Stellar Anchor Platform converts it to USDC or MGUSD on-chain, applying SEP-38 FX quotes and SEP-12 KYC
- Lumex's bridge middleware locks a Soroban escrow on-chain — this provisional credit lets the trader open positions before the bank wire fully settles
- When the anchor confirms settlement, the escrow releases and the MT4 account reflects a permanent balance
- On withdrawal, P&L is calculated, a multi-sig gate enforces compliance thresholds, and fiat lands in the trader's local bank account via the corridor partner
Every financial event — deposit, trade settlement, withdrawal — is written to both PostgreSQL (for operations) and the Soroban dual-ledger contract (for immutable, auditable proof). Regulators can verify any historical record on-chain; competitors and the public see only hashed identifiers and proof references.
┌────────────────────────────────────────────────────────────────┐
│ USER LAYER │
│ Stellar wallet · lumex-dashboard · MT4/5 desktop client │
└──────────────────────────┬─────────────────────────────────────┘
│ SEP-24 deposit / SEP-6 withdraw
┌──────────────────────────▼─────────────────────────────────────┐
│ STELLAR ANCHOR PLATFORM │
│ Platform API (SEP-6/24/38) · anchor-business-server │
│ SEP-12 KYC gating · SEP-38 FX quotes │
│ ZK Private Settlement (Protocol 25) │
└──────────────────────────┬─────────────────────────────────────┘
│ /deposit_complete callback
┌──────────────────────────▼─────────────────────────────────────┐
│ MIDDLEWARE BRIDGE ← lumex-platform (core deliverable) │
│ bridge-core · P&L engine · withdrawal handler │
│ compliance-sdk (AML/KYC) · corridor-configs (NGN/KES/GHS…) │
│ shared (TypeScript types + utilities) │
└──────────────────────────┬─────────────────────────────────────┘
│ Soroban RPC
┌──────────────────────────▼─────────────────────────────────────┐
│ SOROBAN SMART CONTRACTS ← lumex-contracts │
│ escrow · risk engine · multisig gate · dual-ledger │
└──────────────────────────┬─────────────────────────────────────┘
│ MetaApi REST/WebSocket
┌──────────────────────────▼─────────────────────────────────────┐
│ METATRADER 4/5 PLATFORM │
│ Bridge plugin API · Copy trading · Trade event webhooks │
│ LP price feed · Account group (TIER_1 / TIER_2 / TIER_3) │
└────────────────────────────────────────────────────────────────┘
@lumex/sdk ← lumex-sdk (TypeScript client)
lumex-dashboard ← React/Vite frontend
| Repository | Role | Tech Stack |
|---|---|---|
| lumex-platform | Backend middleware — SEP-12 KYC, SEP-38 FX quotes, deposit/withdrawal handlers, MT4 bridge integration, dual-ledger writes, compliance | Node.js 20 · TypeScript · Express · PostgreSQL · Redis |
| lumex-contracts | Soroban smart contracts — escrow provisional credit, on-chain risk limits, multi-sig gate, immutable dual-ledger audit trail | Rust · Soroban SDK · Stellar CLI |
| lumex-dashboard | Trader-facing web app — deposit flow stepper, live MT4 balance, ZK settlement status, copy trading, corridor selector | React 18 · Vite 5 · TypeScript · Stellar SDK |
| lumex-sdk | TypeScript client SDK — typed wrapper around lumex-platform REST API, published as @lumex/sdk on GitHub Packages |
TypeScript · OpenAPI Generator |
| .github | Org profile, shared issue templates, Wave Programme bounty configuration | — |
Soroban escrow provisional credit — Conventional brokers hold deposits for T+1–T+3 while bank wires clear. Lumex's Soroban escrow locks funds on-chain and credits MT4 within seconds. Traders can open positions before the bank wire settles.
Protocol 25 ZK settlement — P&L is settled via Groth16 proofs. The on-chain record proves settlement without exposing trade sizes, timing, or counterparty identities. Regulators hold view keys; everyone else sees only proof hashes.
On-chain risk engine — Position limits, margin calls, and liquidation triggers are enforced at the Soroban contract level, not just in MT4 group settings. Risk parameters are transparently auditable without a court order.
Dual-ledger pattern — Every deposit, trade close, and withdrawal is written atomically to PostgreSQL (operational) and the Soroban dual-ledger contract (immutable). On-chain records use hashed identifiers — no PII stored on Stellar.
Corridor-native design — Five active corridors (NGN, KES, GHS, ZAR, BRL) each have their own regulatory configurations, banking partner endpoints, deposit/withdrawal limits, and fee structures. Adding a new corridor is a JSON file + banking partner integration.
| Corridor | Currency | Regulatory Authority | Status |
|---|---|---|---|
| 🇳🇬 NGN | Nigerian Naira | Central Bank of Nigeria (CBN) | Planned |
| 🇰🇪 KES | Kenyan Shilling | Central Bank of Kenya | Planned |
| 🇬🇭 GHS | Ghanaian Cedi | Bank of Ghana | Planned |
| 🇿🇦 ZAR | South African Rand | SARB / FSCA | Planned |
| 🇧🇷 BRL | Brazilian Real | Banco Central do Brasil | Planned |
Each corridor requires a licensed local banking or PSP partner for fiat settlement. See packages/corridor-configs for the full configuration schema and regulatory notes.
Choose the layer you want to contribute to:
| I want to work on… | Start here |
|---|---|
| Smart contracts (Rust/Soroban) | lumex-contracts |
| Backend / API (Node.js/TypeScript) | lumex-platform |
| Frontend / UX (React/Vite) | lumex-dashboard |
| SDK / integrations (TypeScript) | lumex-sdk |
All TypeScript repos consume @lumex/shared from GitHub Packages. Before installing, create a .npmrc in the repo root:
@lumex:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=YOUR_GITHUB_TOKEN
Generate a token with read:packages scope at GitHub → Settings → Developer settings → Personal access tokens (classic).
All repositories participate in the Stellar Wave Programme. Every Wave cycle (weekly), issues labeled wave:high, wave:medium, wave:trivial, and good-first-issue are eligible for USDC bounties distributed on-chain via Drips.
Finding work:
- Search across the org: open Wave issues
- Start with
good-first-issuelabels if you're new to the codebase - Cross-repo issues reference each other — check the issue body for related PRs
Contribution flow:
- Find an issue, comment to claim it
- Fork the relevant repo and branch:
git checkout -b feat/your-feature - Make changes with tests; ensure CI passes locally before pushing
- Open a PR referencing the issue number (
Closes #123) - A maintainer reviews and merges; rewards flow automatically at Wave close
Each repo has its own CONTRIBUTING.md with repo-specific setup instructions, coding standards, and branch naming conventions.
MIT © 2026 Lumex Contributors — see each repository's LICENSE file.