YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

๐Ÿชช refugee_digital_identity

Blockchain Self-Sovereign Identity for the Unbanked

ZK-proof credentials + micro-savings wallet โ€” accessible with just a phone number

Score Domain Novelty Feasibility Impact Author License Chain Standard


๐ŸŒ The Problem

1.4 billion adults worldwide are completely excluded from financial services.

For refugees and displaced persons, it's worse:

  • Fleeing conflict = losing all documents (passport, ID, birth certificate)
  • No documents โ†’ no bank account โ†’ no job โ†’ no housing โ†’ no legal status
  • Aid organisations cannot verify identity โ†’ cash transfers go missing
  • 84 million forcibly displaced people as of 2022 (UNHCR)
  • In Algeria: 100,000+ refugees (mostly sub-Saharan), with no formal identity

The compounding tragedy: A refugee may have been a doctor, engineer, or teacher โ€” but without verifiable credentials, they cannot prove it. Their human capital is invisible.


โœ… The Solution

A Self-Sovereign Identity (SSI) system that:

  1. Creates a DID โ€” a W3C-standard Decentralised Identifier anchored on Polygon
  2. Issues Verifiable Credentials โ€” attested by NGOs, UNHCR, local organisations
  3. Proves without revealing โ€” Zero-Knowledge Proofs: prove "I am over 18" without revealing your birthdate
  4. Holds micro-savings โ€” a non-custodial wallet linked to the DID
  5. Works offline โ€” credentials cached on device, verified via QR code
  6. Phone-number bootstrap โ€” no email, no internet required to start
Person arrives (no documents)
        โ†“  NGO verifies face + biometrics
DID created on Polygon (W3C DID standard)
        โ†“  Verifiable Credentials issued
Credential wallet (phone)
        โ†“  ZK-proof generated locally
Verifier checks proof (no raw data exposed)
        โ†“  Access granted
Bank account / job / housing / aid

๐Ÿงฎ Core Cryptography

W3C DID Document

{
  "id": "did:polygon:0x7f3a...c291",
  "verificationMethod": [{
    "id": "did:polygon:0x7f3a...c291#key-1",
    "type": "EcdsaSecp256k1VerificationKey2019",
    "publicKeyHex": "04a3f2..."
  }],
  "authentication": ["did:polygon:0x7f3a...c291#key-1"]
}

Verifiable Credential (W3C VC Data Model)

{
  "@context": ["https://www.w3.org/2018/credentials/v1"],
  "type": ["VerifiableCredential", "RefugeeIdentityCredential"],
  "issuer": "did:polygon:unhcr-algeria-0x...",
  "credentialSubject": {
    "id": "did:polygon:0x7f3a...c291",
    "name": "Ahmad",
    "nationality": "Syrian",
    "registrationDate": "2026-03-06",
    "skills": ["medicine", "arabic", "french"]
  },
  "proof": { "type": "EcdsaSecp256k1Signature2019", "jws": "eyJ..." }
}

Zero-Knowledge Age Proof (Schnorr-based)

Prover knows: birthdate b, commitment C = Hash(b || r)
Prove:        b < current_date - 18_years
Without:      revealing b or r

Protocol:
  1. Prover: v โ† random nonce, R = g^v (commitment)
  2. Prover: c = Hash(R || statement)  (Fiat-Shamir)
  3. Prover: s = v - cยทsecret mod q
  4. Verifier: check g^s ยท PK^c = R  (verify without seeing secret)

Micro-Savings Wallet

Balance stored on Polygon (ERC-20 stablecoin โ€” USDC/cUSD)
Transactions: gasless (sponsored by NGO/operator)
Recovery: social recovery via 3-of-5 trusted guardians
Min deposit: $0.01 โ€” no minimum balance requirement

๐Ÿ—๏ธ Architecture

refugee_digital_identity/
โ”œโ”€โ”€ core/
โ”‚   โ”œโ”€โ”€ did_document.py        # W3C DID creation + resolution
โ”‚   โ”œโ”€โ”€ verifiable_credential.py # VC issuance + verification
โ”‚   โ””โ”€โ”€ identity_registry.py   # On-chain DID registry (Polygon sim)
โ”œโ”€โ”€ blockchain/
โ”‚   โ”œโ”€โ”€ polygon_client.py      # Polygon interaction (simulated)
โ”‚   โ””โ”€โ”€ smart_contract.py      # DID registry contract logic
โ”œโ”€โ”€ zkp/
โ”‚   โ”œโ”€โ”€ schnorr_proof.py       # Schnorr ZK-proof (age, nationality)
โ”‚   โ””โ”€โ”€ zk_verifier.py         # Proof verification (no raw data)
โ”œโ”€โ”€ wallet/
โ”‚   โ”œโ”€โ”€ micro_wallet.py        # Non-custodial micro-savings wallet
โ”‚   โ””โ”€โ”€ social_recovery.py     # Guardian-based key recovery
โ””โ”€โ”€ examples/
    โ””โ”€โ”€ refugee_onboarding.py  # Full Ahmad onboarding demo

โšก Quick Start

from refugee_digital_identity import SSISystem

ssi = SSISystem(chain="polygon")

# Onboard a new person (no documents required โ€” biometric only)
person = ssi.onboard(
    name           = "Ahmad",
    phone          = "+213-XXX-XXX",   # phone number as bootstrap
    biometric_hash = "sha256:a3f2...", # face hash (never stored raw)
    issuer_did     = "did:polygon:unhcr-algeria",
)

print(f"DID created  : {person.did}")
print(f"Wallet addr  : {person.wallet_address}")

# Issue a skill credential
credential = ssi.issue_credential(
    subject_did = person.did,
    claims      = {"skill": "medicine", "verified_by": "WHO-Algeria"},
    issuer_did  = "did:polygon:who-algeria",
)

# Generate ZK-proof of age (over 18) โ€” reveals nothing else
proof = ssi.prove_over_18(person.did, birthyear=1990)
print(f"ZK proof     : {proof.is_valid}")
print(f"Reveals age? : {proof.reveals_birthdate}")   # False

# Deposit micro-savings
ssi.deposit(person.did, amount_usd=5.00)
print(f"Balance      : ${ssi.balance(person.did):.2f}")

๐ŸŒ Global Impact

Population Count
Forcibly displaced worldwide 84 million
Stateless persons 10 million
Unbanked adults 1.4 billion
Refugees in Algeria ~100,000

What this unlocks for each person:

  • Formal employment (verifiable skills/education)
  • Bank account access (KYC via VC)
  • Healthcare (medical history portable)
  • Housing (rental with verified identity)
  • Education enrollment (credential portability)
  • Aid receipt (auditable, no leakage)

๐Ÿ—บ๏ธ Roadmap

  • v1.0 โ€” W3C DID creation + Polygon anchoring
  • v1.0 โ€” Verifiable Credential issuance + verification
  • v1.0 โ€” Schnorr ZK-proof (age, nationality)
  • v1.0 โ€” Micro-savings wallet (ERC-20 sim)
  • v1.0 โ€” Social recovery (3-of-5 guardians)
  • v1.1 โ€” Real Polygon testnet deployment
  • v1.2 โ€” UNHCR registration integration
  • v1.3 โ€” Arabic + French + Tamazight UI
  • v2.0 โ€” Cross-border credential portability (EU, Canada)

๐Ÿ“„ License

MIT License โ€” Copyright (c) 2026 swordenkisk github.com/swordenkisk/refugee_digital_identity

Idea score: 88.8/100 โ€” Novelty: 96 | Feasibility: 79 | Impact: 89 From ideas_database.db โ€” swordenkisk ๐Ÿ‡ฉ๐Ÿ‡ฟ March 2026

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support