Dular — Mobile Money Stablecoin Wallet on Fiber Network
Team Profile & Contact
- Applicant: duongja
- GitHub: GitHub - duongja/Dular · GitHub
- Role: Full-stack developer with experience in blockchain development
- Telegram: @craxe21
- Email: [email protected]
Project Description
Problem
1.4 billion people across Africa, Southeast Asia, and Latin America depend on mobile money (M-Pesa, MTN MoMo, Airtel Money) as their primary financial infrastructure. These users face:
- High fees: Cross-border transfers cost 6–9%, eating into remittances that families depend on
- Slow settlement: 1–3 business days for cross-network transfers
- Closed ecosystems: M-Pesa users can’t send directly to MTN MoMo users
- Crypto complexity: Existing stablecoin wallets require understanding hex addresses, gas fees, and blockchain concepts — inaccessible to mobile money users
- Smartphone dependency: Most crypto wallets require smartphones, excluding hundreds of millions of feature phone users
Solution
Dular is a stablecoin wallet that speaks the language of mobile money users. It is built natively on CKB’s Fiber Network and wraps it in interfaces that mobile money users already understand:
-
Phone Number Identity: Users send stablecoins to phone numbers (
+254712345678), not hex addresses. Dular maintains a phone-to-pubkey registry that maps phone numbers to Fiber Network identities. -
M-Pesa On/Off Ramp: Users deposit KES (Kenyan Shillings) via M-Pesa STK Push and receive RUSD stablecoins in their Dular wallet. To cash out, they withdraw RUSD and receive KES back to their M-Pesa. Powered by Safaricom’s Daraja API.
-
USSD Support for Feature Phones: Users dial a shared short code (
*483*XXXX#, works on Safaricom, Airtel, and Telkom) to access their wallet from any phone — no smartphone, no internet, no app download required. Built on Africa’s Talking USSD API with a pre-paid session model (KES 1 per session from the user’s airtime). -
Instant, Near-Zero Fee Payments: Fiber Network’s off-chain payment channels enable millisecond settlement at < 0.001% fees. We demonstrated this with a successful end-to-end 1 RUSD payment through the public testnet relay nodes.
Why CKB / Fiber Network?
CKB’s Fiber Network provides unique advantages:
- Native stablecoin support (UDT): Fiber channels natively support UDT assets like RUSD, no wrapped tokens, no bridges, no extra complexity
- Multi-asset channels: A single channel can carry multiple stablecoin types, enabling future local currency stablecoins (KES, GHS, NGN) without separate infrastructure
- PTLC security: Point Time-Locked Contracts (more advanced than HTLCs) provide stronger privacy and atomicity guarantees
- Low on-chain costs: CKB’s cell model keeps channel open/close transactions inexpensive, critical for users transacting $1–$50 at a time
Expected Deliverables
Code Repository
- GitHub: GitHub - duongja/Dular · GitHub (MIT licensed, already public)
- All code open source throughout development
Deliverable 1: Phone Number Identity Layer
- Phone number → Fiber pubkey mapping service
- Registration flow: verify phone via OTP, link to wallet
- Send-to-phone-number UI in Dular web app
- Contact lookup and resolution
Deliverable 2: M-Pesa On/Off Ramp
- M-Pesa STK Push integration (deposit KES → receive RUSD)
- M-Pesa B2C integration (withdraw RUSD → receive KES)
- Transaction status tracking and receipt generation
- Basic KYC-lite flow (phone number verification)
Deliverable 3: USSD Interface
- USSD menu system for feature phones:
- Check balance
- Send to phone number
- Receive (display invoice)
- Deposit from M-Pesa
- Withdraw to M-Pesa
- Session management and security PIN
Deliverable 4: 30-User Pilot
- Recruit 30 seed users
- Structured testing protocol:
- Week 1: Onboarding and first deposit
- Week 2: Peer-to-peer transfers between pilot users
- Week 3: Cross-corridor transfers and edge cases
- Week 4: Feedback collection, interviews, and iteration
- Documented user feedback report with key insights
- Product improvement recommendations based on real usage
Documentation
- Technical documentation and deployment guide
- USSD menu flow diagrams
- User testing report with data and feedback
- Video demonstration of full user flow
Required Funding: $2,000
Line-Item Cost Breakdown
Infrastructure & API Costs
| Item | Unit Cost | Quantity | Subtotal (KES) | Subtotal (USD) |
|---|---|---|---|---|
Africa’s Talking shared USSD code (*483*XXXX#) — monthly maintenance |
KES 10,000/month | 2 months | KES 20,000 | $154 |
| Africa’s Talking USSD — compulsory infrastructure deposit | KES 5,000 (one-time) | 1 | KES 5,000 | $38 |
| Africa’s Talking USSD — per-session infrastructure fee | KES 0.25/session | ~600 sessions (30 users × 20 sessions) | KES 150 | $1 |
| Africa’s Talking SMS — OTP verification messages | KES 0.80/SMS | ~90 messages (30 users × 3 OTPs) | KES 72 | $1 |
| M-Pesa B2C disbursement fees (production) | ~KES 22/transaction | ~100 withdrawals | KES 2,200 | $17 |
| M-Pesa Daraja production API access | Free | — | — | $0 |
| VPS hosting | ~$10/month | 2.5 months | — | $25 |
| Domain | ~$12/year | 1 | — | $12 |
| Infrastructure subtotal | $248 |
Pilot Costs (Milestone 3)
| Item | Unit Cost | Quantity | Subtotal (USD) |
|---|---|---|---|
| M-Pesa B2C float — seed capital for cash-out during pilot | KES 500/user avg | 30 users | $115 |
| Pilot user incentives — airtime top-up for participation | KES 300/user | 30 users | $70 |
| Google Workspace / Typeform — feedback collection | ~$3/month | 2 months | $6 |
| Pilot subtotal | $191 |
Note: The B2C float is revolving, user deposits fund subsequent withdrawals. The $115 is the initial seed required before deposits accumulate. If unspent float remains at pilot end, it will be documented and rolled into post-grant operations.
Developer Time
| Phase | Hours | Description |
|---|---|---|
| Milestone 1: Phone identity + M-Pesa ramp | 55 hrs | Registry service, OTP flow, send-to-phone UI, Daraja STK Push + B2C integration, end-to-end testing |
| Milestone 2: USSD interface | 55 hrs | Africa’s Talking integration, 5-screen menu system, security PIN, session management, multi-handset QA |
| Milestone 3: Pilot + documentation | 55 hrs | User recruitment, onboarding support, structured testing coordination, feedback analysis, demo video, final docs |
| Total developer time | 165 hrs | 5.5 weeks × ~30 hrs/week |
| Developer time budget | $1,561 | $2,000 − $248 (infra) − $191 (pilot) |
| Effective hourly rate | $9.45/hr |
Why $2,000, Not $1,000
The standard $1,000 ceiling does not cover this project’s scope. Here is why:
- Hard costs alone are $439. USSD code fees ($192), M-Pesa float ($115), pilot incentives ($70), hosting ($37), SMS and transaction fees ($25). These are non-negotiable third-party costs with published rate cards. A $1,000 budget would leave $561 for 165 hours of development — $3.40/hour.
- Three distinct production integrations. This is not one API integration, it is three (phone identity registry, Safaricom Daraja M-Pesa, Africa’s Talking USSD), each with its own auth flow, callback handling, error states, and compliance requirements.
- Real-world pilot with real money. Milestone 3 puts real KES through real M-Pesa on real phones with 30 non-technical users. This is not a testnet demo, it is a production validation that requires float capital, user coordination, and structured feedback collection.
- Working prototype already shipped. This grant does not fund exploration. A verified RUSD payment on Fiber testnet already works. Every dollar goes toward production-ready infrastructure and real user validation.
CKB Disbursement & Exchange Rate Risk
We acknowledge that Spark grants are disbursed in 100% CKB. This does not change the total ask, but it introduces exchange rate risk on the $439 in hard costs that must ultimately be paid in KES or USD (Africa’s Talking invoices in KES, Safaricom in KES, hosting providers in USD).
Mitigation strategy:
-
Prompt conversion of hard-cost portion. Upon each milestone disbursement, we will convert the hard-cost allocation for that milestone to fiat (KES/USD) immediately to lock in purchasing power. Specifically: ~$54 from M1, ~$193 from M2, ~$192 from M3.
-
Line items remain valid. The USD figures in the breakdown represent target purchasing power. The CKB amount per milestone will be calculated at the market rate on the day of disbursement, per standard Spark procedure.
How to Verify
Every milestone produces artifacts a committee member or community reviewer can independently check without trusting the applicant’s word.
Milestone 1: Phone Identity + M-Pesa Ramp
Phone-to-pubkey registry is live:
- Public API endpoint. The registry service will be deployed at a public URL (e.g.
https://api.dular.app/registry). A reviewer can callGET /lookup?phone=+254700000001and receive the associated Fiber pubkey, or a 404 if unregistered. API docs will be published in the repo README. - Registration screen recording. A narrated screen recording (uploaded to GitHub Releases) will show: entering a phone number → receiving OTP on the phone → confirming OTP → the phone-to-pubkey entry appearing in a subsequent API lookup call.
- Source code. The registry service code, OTP verification flow, and database schema will be in the public GitHub repo. A reviewer can clone the repo and run the service locally against a test phone number using the provided seed script.
M-Pesa STK Push and B2C flows actually settle end-to-end:
Dular already holds production Daraja API keys from Safaricom. Pilot users and reviewers with Kenyan M-Pesa accounts will transact with real KES no sandbox, no test money.
- Live production flow. A reviewer with a Kenyan M-Pesa number can use the Dular web app to trigger a real STK Push deposit (small amount, e.g. KES 10 ≈ $0.08), watch the M-Pesa prompt appear on their phone, confirm, and see RUSD credited to their Dular wallet. They can then withdraw RUSD and receive KES back to their M-Pesa. The entire flow uses production Daraja APIs with real settlement.
- End-to-end screen recording. A narrated video will show the full production cycle: initiate STK Push → M-Pesa prompt on phone → payment confirmed → RUSD appears in Dular wallet → initiate withdrawal → M-Pesa B2C payout received. Real M-Pesa confirmation codes and timestamps will be visible.
- CKB testnet transaction hashes. Every deposit (KES → RUSD) and withdrawal (RUSD → KES) triggers Fiber Network activity. The milestone report will include the on-chain CKB testnet transaction hashes for channel funding and settlement. Reviewers can independently verify these on CKB Testnet Explorer , the transactions will show the RUSD UDT script hash matching the public testnet configuration.
- M-Pesa transaction receipts. Screenshots of real M-Pesa confirmation SMS messages (with sensitive details redacted but timestamps and transaction codes visible) will be included in the milestone report.
- Sandbox fallback for non-Kenyan reviewers. Reviewers without a Kenyan phone can follow a provided walkthrough using Safaricom’s official Daraja sandbox (test credentials publicly available at developer.safaricom.co.ke) to independently verify the integration code path. No Kenyan phone number required.
Milestone 2: USSD Interface
Dular will use a shared pre-paid USSD code (*483*XXXX#) from Africa’s Talking, covering Safaricom, Airtel, and Telkom networks.
- Live USSD on real phones. Any reviewer or pilot user with a Kenyan SIM (Safaricom, Airtel, or Telkom) can dial the short code from their phone, including feature phones and interact with the live Dular wallet: check balance, send to a phone number, receive, deposit from M-Pesa, withdraw to M-Pesa. This is the primary verification method.
- screen recording. A video recorded on an actual phone showing the full USSD session: dialing the short code, navigating menus, checking balance, initiating a send-to-phone-number transfer.
- Simulator fallback for non-Kenyan reviewers. Africa’s Talking provides a free USSD simulator usable in-browser, no phone, no account, no SIM required. The milestone deliverable will include the USSD callback URL and a walkthrough: launch simulator → dial short code → navigate full menu tree → observe correct responses. The simulator connects to the same live Dular backend as the real USSD code.
- Session logs. The USSD service will log anonymized session transcripts (menu selections, timestamps, response codes). A sample log bundle will be included in the milestone report.
Milestone 3: 30-User Pilot Data is Real
- Anonymized user directory. A spreadsheet of 30 entries: hashed phone number (SHA-256, so the real number isn’t leaked but the count is verifiable), registration timestamp, Fiber pubkey , and number of transactions completed. A reviewer can cross-reference pubkeys against the Fiber testnet graph to confirm these nodes existed and had open channels.
- On-chain proof of activity. Each pilot user’s Fiber channel produces on-chain funding transactions. The milestone report will list all channel funding tx hashes on CKB testnet. A reviewer can verify on CKB Explorer that ≥30 distinct channels were opened during the pilot period, with the RUSD UDT script hash matching the testnet configuration.
- Fiber Network graph snapshot. A
list_channelsRPC dump from the Dular node at pilot end, showing active channels with pilot user pubkeys. Reviewers running their own Fiber testnet node can independently query the gossip network to confirm these channels were announced. - Signed user feedback. Each pilot user will submit feedback. The raw, timestamped response export (with phone numbers redacted, but preserving response timestamps and unique respondent IDs) will be published. A reviewer can verify that ≥30 unique respondents submitted feedback within the pilot window.
- Demo video. A 5–10 minute narrated video showing: a new pilot user onboarding (phone registration), depositing via M-Pesa, sending RUSD to another pilot user by phone number, and the recipient withdrawing to M-Pesa. This end-to-end flow will be shown from both the sender’s and receiver’s perspective.
Summary: Evidence Checklist per Milestone
| Milestone | Primary (real users) | Fallback (technical reviewers) |
|---|---|---|
| M1: Phone Identity + M-Pesa | Public registry API, live M-Pesa production deposit/withdraw, CKB testnet tx hashes on Explorer, M-Pesa SMS receipts | Daraja sandbox walkthrough for non-Kenyan reviewers |
| M2: USSD Interface | Live *483*XXXX# code dialable from any Kenyan SIM, phone video, session logs |
Africa’s Talking in-browser simulator (no phone needed) |
| M3: 30-User Pilot | ≥30 CKB testnet channel funding txs on Explorer, anonymized user directory with pubkeys, Fiber graph snapshot, timestamped feedback export, end-to-end demo video | — |
All evidence artifacts will be committed to the GitHub repo under a /verification directory and linked in each milestone’s completion report.
Estimated Completion Time: 5.5 Weeks (~1.3 Months)
Week 1–2: Milestone 1: Phone Identity + M-Pesa Ramp
- Phone-to-pubkey registry service and OTP verification
- Send-to-phone-number UI in Dular
- M-Pesa Daraja API integration (STK Push deposits, B2C withdrawals)
- End-to-end flow: deposit KES → send RUSD → withdraw KES
Week 3–4: Milestone 2 — USSD Interface
- Africa’s Talking USSD integration
- Menu system: balance, send, receive, deposit, withdraw
- Security PIN and session management
- Feature phone testing across multiple handsets
Week 4.5–5.5: Milestone 3 — 30-User Pilot + Documentation
- Recruit and onboard 30 seed users
- Structured testing: onboarding → transfers → feedback
- User feedback report with key insights and improvement directions
- Demo video and final project documentation
To-Do List
- Phone number → pubkey registry service
- OTP phone verification flow
- Send-to-phone-number in Dular UI
- M-Pesa STK Push deposit integration
- M-Pesa B2C withdrawal integration
- USSD menu interface for feature phones
- Security PIN system
- Recruit 30 pilot users (Kenya + Ghana)
- Run structured 2-week pilot test
- Collect and document user feedback
- Write project completion report
- Record video demonstration
- Publish all code and documentation
Relevance to CKB Ecosystem
Meeting Actual Needs
- First mobile money bridge in CKB: No project currently connects CKB/Fiber to mobile money rails. Dular creates an entirely new user acquisition channel.
- Real user validation: The 30-user pilot generates structured feedback from a demographic (mobile money users in Africa) that no CKB project has ever reached.
- Fiber Network adoption: Every Dular user runs a Fiber node and opens payment channels, directly growing the network’s liquidity and routing capacity.
CKB’s Unique Technical Advantages
- UDT stablecoins on Fiber: CKB’s native UDT standard allows stablecoins in payment channels without bridges or wrapping
- Multi-asset channels: Fiber’s multi-asset support enables future local currency stablecoins (KES-stable, GHS-stable) on the same infrastructure.
- Cell model efficiency: Low on-chain costs make $1–$50 transactions economically viable, matching mobile money transaction sizes.
- Programmable verification: CKB scripts enable custom logic for phone number verification and on/off ramp settlement contracts.
Web5 Alignment
Dular embodies the Web5 philosophy, organic combination of Web2 and Web3:
- Web2 interface (phone numbers, USSD, M-Pesa) meets Web3 infrastructure (Fiber Network, non-custodial keys)
- Small but real: Not a speculative DeFi protocol, a practical tool for people sending money to their families
- User-centric: Designed around how mobile money users actually behave, not how crypto users think they should
- Human-oriented: Feature phone USSD support ensures nobody is excluded by technology barriers
Existing Progress
Dular is not a concept it is a working prototype with a verified end-to-end payment flow:
- Web app built (Vite + React) with premium dark-mode UI
- Fiber Network RPC integration (node_info, list_channels, open_channel, send_payment, new_invoice)
- RUSD stablecoin channel opened with public testnet relay node
- RUSD payment successfully executed through multi-hop routing (nodeA → relay node1 → relay node2)
- Open source on GitHub: GitHub - duongja/Dular · GitHub
This grant funds the next phase: making it accessible to real mobile money users.
Execution Risk & Mitigation
1. M-Pesa Daraja Production Access
Risk:
Safaricom Daraja production approval can take 4–8 weeks and often requires a Kenyan legal entity or local partner, particularly for B2C disbursements.
Mitigation (Current Status):
This risk is already resolved.
-
Dular already holds production Daraja API credentials for both:
- STK Push (C2B deposits)
- B2C disbursements (withdrawals)
-
Integration is being built directly against live production endpoints, not sandbox.
-
No dependency on pending approvals, third-party aggregators, or partner onboarding.
Implication for execution:
- Milestone 1 can proceed immediately without external blockers
- Real KES transactions (deposit → RUSD → withdrawal) will be executed during development, not deferred to post-build validation
- Timeline is not exposed to Safaricom approval delays
2. User Recruitment & Field Testing Capacity
Risk:
Previous projects have underperformed on real user validation due to weak recruitment pipelines, lack of local context, or reliance on synthetic testers.
Mitigation (On-the-Ground Advantage):
This project is executed locally in Kenya with direct access to the target user base.
-
Geographic presence:
I’m based in Nairobi with day-to-day access to mobile money users across Safaricom, Airtel, and Telkom networks. -
Recruitment approach:
- Direct, in-person onboarding (friends, local networks, small business operators, students)
- No reliance on online-only recruitment or crypto-native users
- Target users are existing mobile money users with no prior crypto experience
-
User profile targeting:
- Frequent M-Pesa users (peer transfers, small business payments, remittances)
- Mix of smartphone and feature phone users (critical for USSD validation)
-
Vernacular & usability support:
- English + Swahili support during onboarding and testing
- Ability to observe real usage behavior and confusion points in context (not just survey responses)
-
Field testing method:
- Assisted first transaction (guided onboarding)
- Followed by independent usage (send/receive/withdraw)
- Real-time troubleshooting and iteration during pilot window
Implication for execution:
- Recruitment of 30 users is low risk and does not depend on external channels
- Feedback quality will be grounded in actual behavior, not hypothetical responses
- USSD flows will be validated on real devices and real network conditions
Post-Spark Program Plans
After successfully completing the pilot, Dular will be positioned to apply for Community Fund DAO funding to:
- Launch local stablecoins: KES-pegged, GHS-pegged, NGN-pegged stablecoins as UDTs on CKB, tradeable through Fiber channels
- Scale to 1,000+ users across multiple East and West African corridors
- Build agent network tools: enable local agents to provide cash-in/cash-out services
- Expand to additional mobile money networks: MTN MoMo (Ghana, Uganda), Airtel Money (across Africa), GCash (Philippines)
Dular: Instant stablecoin payments for mobile money markets, no banks, no borders, no middlemen. Just your phone number.