The Internet Financial Protocol.
An open protocol for moving value as seamlessly as the Internet moves information.
Documentation • Whitepaper • Architecture • Roadmap • Contributing
Today's financial infrastructure was never designed for a globally connected, AI-powered world.
International payments remain slow and expensive. Financial systems are fragmented across banks, mobile money providers, blockchains, payment processors, and national borders. Developers integrate dozens of APIs to build products that should work everywhere.
OpenReserve exists to solve this.
OpenReserve is an open financial infrastructure protocol that provides a common settlement layer for people, businesses, governments, banks, fintechs, and AI agents.
Instead of replacing existing financial systems, OpenReserve connects them through a programmable, secure, and interoperable network.
Our mission is simple.
Build the financial equivalent of the Internet Protocol.
Just as TCP/IP standardized communication between computers, OpenReserve aims to standardize the movement of value.
Money should be:
- Instant
- Programmable
- Borderless
- Secure
- Offline-capable
- Interoperable
- Open
Every design decision follows these principles.
- Open by default
- Security before speed
- Developer-first
- Institution-ready
- Offline-first
- AI-native
- Community governed
- Long-term sustainability
Applications
──────────────────────────────────────────────
ORPay
Merchant Apps
Bank APIs
Government Services
AI Agents
Wallets
──────────────────────────────────────────────
Developer Platform
REST API
gRPC
SDKs
CLI
──────────────────────────────────────────────
Smart Contract Layer
Native Contracts
WebAssembly (WASM)
──────────────────────────────────────────────
Settlement Layer
Accounts
Transactions
Asset Management
Treasury
──────────────────────────────────────────────
Consensus Layer
Proof of Stake
BFT Finality
Validator Network
──────────────────────────────────────────────
Networking Layer
Peer Discovery
Gossip Protocol
Block Propagation
──────────────────────────────────────────────
Cryptography
Ed25519
Merkle Trees
BLAKE3
Secure Key Management
Located in /node
Responsible for:
- Distributed ledger
- Consensus
- State management
- Networking
- Validator coordination
- Governance
- Cross-chain communication
Located in /wallet
Features
- BIP39 wallets
- Hardware wallet support
- Multi-signature accounts
- Enterprise custody
- Transaction signing
- Identity abstraction
Located in /apps
A consumer payment application for sending and receiving digital assets.
Features
- QR payments
- Wallet management
- Live burn tracking
- Transaction history
A dedicated indexing engine providing fast blockchain search without impacting validator performance.
Real-time monitoring for
- Network health
- Validator performance
- Whale activity
- Suspicious transactions
- Sybil detection
- Deterministic finality
- Parallel execution
- Concurrent state management
- Byzantine Fault Tolerance
- Double-spend protection
- Hardware Security Module support
- Smart contract isolation
- Ethereum compatibility
- Solana compatibility
- Cross-chain asset bridges
- On-chain proposals
- Treasury management
- Validator voting
What works today is the ledger core. Everything else in this README is design direction.
| Area | Status |
|---|---|
| Accounts, signed transfers (Ed25519), nonces, fee burn | Working |
| Integer amounts (1 ORP = 1,000,000 micro-ORP) | Working |
| Blocks with tx Merkle root and state root, persisted and fsynced | Working |
| Crash recovery (full replay and re-verification on start) | Working |
| Single authorized block producer | Working |
| Replica nodes that re-execute and verify every block | Working |
REST API and orctl CLI wallet |
Working |
| ORPay web wallet: @usernames, QR codes and pay links, 24 recovery words | Working |
| Per-IP rate limits, protected key loading, HTTPS deploy kit with backups | Working |
| Multi-validator BFT consensus (CometBFT), P2P gossip, app-hash agreement | Working |
| On-chain savings pools and milestone escrow with arbitration | Working |
| Partner platform (Gabis, Paynautik, SSLabs...): API keys, checkout, escrow, webhooks | Working |
| Pluggable naira rails (Paystack, Flutterwave), reserve report | Working (test mode) |
| Explorer, health checks, metrics, alerting, fast-restart snapshots | Working |
| PWA and Capacitor iOS/Android projects | Working (store publishing pending) |
| VM, bridge, governance, reserve minting | Prototypes in node/_experimental, not built |
Two consensus modes: a single authorized producer (simple devnets and closed pilots), or a CometBFT validator set where blocks need 2/3+ of voting power and validators agree on the state root after every block. Real money still needs a licensed custody partner and legal sign-off.
- Go 1.26+
- Docker (optional)
make devnet-init # keys + genesis in ./devnet, alice gets 1,000,000 ORP
make run # block producer on :8080Then, in another terminal:
bin/orctl keygen -key bob.json
bin/orctl send -key devnet/alice.json -to $(bin/orctl address -key bob.json) -amount 25.5 -memo "first payment" -wait
bin/orctl balance -key bob.json
bin/orctl history -key bob.json
bin/orctl statusOr run a producer plus a verifying replica in Docker:
make devnet-init
docker compose up --build # producer on :8080, replica on :8081With the node running (make run), start these in two more terminals:
make orpay-backend # usernames + faucet on :4000
make orpay # web app on http://localhost:5173Create a wallet, tap Get 100 test ORP, claim an @username and send a payment. ORPay is non-custodial: keys are generated in the browser, encrypted with your password (PBKDF2 + AES-GCM) and never leave the device. The backend only maps usernames to addresses, and each claim must be signed by the address's key.
See deploy/README.md to run the node and ORPay on your own domain with HTTPS and automatic backups.
make testnet # 4 CometBFT validators, APIs on :8080-:8083
ORP_NODE=http://localhost:8081 bin/orctl status
make testnet-stopAny 3 of the 4 validators keep the chain running; with 2 or fewer it halts
safely (no forks) and resumes when validators return. For separate machines,
generate with bin/orp-testnet -n 4 -docker (or edit each node's
persistent_peers), give each operator one node<i> directory, and run
openreserved -cometbft-home node<i> ... on each.
make test| Method | Path | Description |
|---|---|---|
| GET | /v1/status |
Height, tip, state root, supply, min fee |
| GET | /v1/genesis |
Genesis document |
| GET | /v1/accounts/{addr} |
Balance, nonce and next usable nonce |
| GET | /v1/accounts/{addr}/txs |
Committed transfers for an address |
| GET | /v1/blocks?from=N&limit=L&wait=S |
Block range; wait long-polls for new blocks |
| GET | /v1/blocks/{height} |
One block |
| GET | /v1/txs/{id} |
Transaction and status (pending or committed) |
| POST | /v1/txs |
Submit a signed transaction |
Amounts in the API are integers in micro-ORP. A transaction is signed over a
length-prefixed binary encoding (types.Tx.SignBytes); its ID is the SHA-256
of those bytes.
node/
types/ addresses, amounts, transactions, blocks, signing
ledger/ account state and transfer rules
chain/ genesis, block log, mempool, block production and verification
api/ HTTP API
keys/ key files
cmd/openreserved node binary
cmd/orctl CLI wallet
_experimental/ earlier prototypes (not compiled)
wallet/ wallet prototypes
apps/ ORPay, explorer and analytics prototypes
docs/ whitepaper and design documents
- Whitepaper
- Core Ledger
- Wallet
- Networking
- Consensus
- Smart Contracts
- Explorer
- SDK
- Testnet
- Governance
- Mobile Wallet
- Mainnet
- Cross-chain Bridges
- Institutional APIs
- AI Payments
- Offline Transactions
- Global Ecosystem
- Architecture
- Whitepaper
- Consensus
- Cryptography
- Governance
- SDK
- API Reference
OpenReserve is community-driven.
We welcome
- Developers
- Researchers
- Economists
- Security Engineers
- Documentation Writers
- Designers
Please read
MIT License
We believe value should move across the world as freely as information moves across the Internet.
OpenReserve is building the open financial infrastructure that makes that possible.