Inspiration

I started with a simple question: “How can we demystify CBDCs by showing how their core pieces actually work?”

Most discussions around digital currency architecture are abstract. I wanted something concrete — wallets, minting, transfers, and a visible audit trail. The idea was not to rebuild a full CBDC but to build a teachable replica that shows the flow end-to-end and demonstrates how a public blockchain can help provide tamper-evident logs.

That led to the Mini-CBDC Stack.

⸻

What it does

The system simulates a minimal CBDC pipeline: • Create wallets with a chosen currency • Mint test digital cash (under admin permissions) • Transfer funds between users • Score each transaction using a simple ML-based risk engine • Anchor every transfer to the Polkadot Westend network as an on-chain audit hash

Every step — from mint to transfer — is logged and visible through FastAPI endpoints.

⸻

How we built it

The architecture intentionally stays small and understandable: • FastAPI for all service endpoints • SQLite for the local ledger (ideal for fast prototyping) • Python ML module for transaction-level risk scoring • Polkadot Ledger wrapper to push audit hashes on-chain • A hybrid model: Local Ledger -> Risk Engine -> Polkadot Audit Anchor

We used a thread-safe blockchain logger running in a background executor so that FastAPI doesn’t block on RPC calls. If the blockchain RPC fails, the system automatically generates a fallback hash — ensuring every transaction gets a verifiable anchor.

⸻

Challenges we ran into • Polkadot RPC variations Some functions documented in examples didn’t behave as expected on Westend, leading to retries and workarounds. • Threading vs. signal handling FastAPI workers don’t allow signal-based timeouts, so the blockchain logger had to be rewritten using ThreadPoolExecutor. • Schema migrations Rebuilding the database multiple times to stabilize the wallet schema and remove conflicts between older versions. • Integrating ML safely Ensuring the risk engine didn’t slow down transfers or introduce unwanted side effects.

Each challenge forced the project to become more resilient and cleaner.

⸻

Accomplishments we’re proud of • A complete mint → transfer → risk-score → audit pipeline • A fully stable blockchain logging mechanism that never blocks the API • Clean APIs for wallets, transactions, and ML summaries • A compact backend that others can easily read, modify, and extend

The final build feels like a credible demonstration of how a small CBDC-style system behaves.

⸻

What we learned • A hybrid architecture works extremely well — fast local settlement with a public audit layer • Polkadot is powerful, but developers must handle RPC inconsistencies gracefully • Simple database schemas beat over-engineered ones, especially in hackathon time • Risk scoring becomes more meaningful when logs are consistent and immutable

At a higher level, I learned how blockchain can complement, not replace, traditional settlement layers.

⸻

What’s next for Mini-CBDC Stack • Build a custom Substrate pallet for structured CBDC audit metadata • Improve the ML scoring using network-graph features • Add real-time monitoring dashboards • Offer this as a small developer sandbox for digital-currency experiments

The project hints at a future where fast centralized systems and transparent decentralized audit layers work together.

Built With

  • chatgpt
  • cli
  • fastapi
  • matplotlib
  • numpy
  • python
  • render
  • sqlite
  • streamlit
  • substrate-(polkadot)
  • tools
  • uvicorn
Share this project:

Updates

Submission history