Inspiration
The Reserve Bank of India’s e-Rupee is a massive step forward for digital finance, but it currently relies on constant internet connectivity. In regions with poor network infrastructure or during sudden outages, digital transactions completely freeze. We wanted to solve the "Offline CAP Theorem" for digital currencies. Specifically, we wanted to build a system that allows multi-hop offline transactions (User A pays User B, who pays User C—all offline) without creating double-spending vulnerabilities or massive database lock-ups when the network finally reconnects.
What it does
ChronoLedger is a cryptographically secure, offline-first CBDC wallet and settlement engine.
Offline Transacting: Users can transfer e-Rupees entirely offline by tapping their phones together. The app uses NFC ISO-DEP smart card emulation to broadcast cryptographically signed JSON payloads.
Multi-Hop Tracking: The wallet maintains a local, immutable SQLite ledger of every offline tap, signing each transaction with Ed25519 cryptography.
The Settlement Engine: When any user reconnects to the internet, their local ledger is uploaded. Our backend doesn't just insert rows into a database; it acts as a Cryptographic Mempool that mathematically sorts concurrent, out-of-order transactions by hardware timestamps, resolving dependency graphs before executing batch settlements into a cloud vault.
How we built it
We built the mobile client using React Native and Expo, utilizing react-native-nfc-manager to access deep Android hardware APIs for ISO-DEP smart card emulation. The local offline ledger is managed via Expo SQLite, and we utilized TweetNaCl for generating dynamic Ed25519 cryptographic signatures.
The backend settlement engine is built on Node.js. We engineered a custom algorithm that intercepts mass-sync data drops, filters out corrupted packets, and chronologically orders the mempool to resolve multi-hop transactions securely before pushing the final state to our cloud database.
Challenges we ran into
The 256-Byte NFC Hardware Limit: During testing, our physical device handshakes kept failing. We discovered that our cryptographically signed payloads exceeded the standard high-frequency NFC radio buffer limit, causing the JSON strings to violently truncate mid-air. We solved this by writing a custom JavaScript algorithmic compression tunnel that mapped long keys into tiny single-character tokens right before broadcasting, cleanly sliding under the hardware limit and decompressing on the receiver's end.
Database Concurrency in Multi-Hop: If User C synced an offline transaction before User A synced the original funding transaction, a standard API would crash due to "insufficient funds." We solved this by completely decoupling the API ingestion from the database write. We built a chronological sorting mempool in the server's RAM that organizes all incoming ledgers by Date.now() hardware timestamps before touching the database.
Accomplishments that we're proud of
We are incredibly proud to have successfully bridged physical radio waves with native Android hardware to execute a flawless, zero-internet cryptographic handshake. Moving from theoretical API designs to successfully forcing two disconnected phones to mathematically agree on a financial transaction over thin air was a massive technical victory for the team.
What we learned
We gained deep, hands-on experience in distributed systems architecture. We learned how to manipulate Android kernel hardware permissions via Expo plugins, how to manage volatile memory limits over high-frequency radio waves, and how to resolve the offline CAP theorem by shifting computational dependency resolution from the database layer to a server-side mempool.
What's next for ChronoLedger: Offline CBDC Protocol
Our immediate next step is expanding this into a plug-and-play SDK. We want to allow merchants to integrate ChronoLedger into existing IoT point-of-sale systems, enabling small businesses to accept secure, verified digital payments even when their store's Wi-Fi goes down.
Built With
- card
- cloud
- ed25519
- expo.io
- express.js
- iso-dep
- javascript
- node.js
- postgresql
- react
- react-native-nfc-manager
- render
- smart
- sqlite
- tweetnacl
Log in or sign up for Devpost to join the conversation.