VIFC sandbox · ERC-3643 · Sepolia 11155111

Supply chain finance for the whole chain.
Not just the top.

A deep-tier supply-chain finance protocol for Vietnamese exporters. Tokenized receivables, oracle-verified invoices, zero-knowledge linkage, and a cascade engine that splits an anchor's payment across every supplier upstream, atomically, on delivery, without asking the anchor buyer to open its ERP.

Tier-3 cash gap
120–150days
Informal rates
24–36% p.a.
HDBank VCF reach
Tier-1only
Protocol reaches
Tier-Ndeep
01

Vietnam exports USD 786B. Its tier-3 suppliers borrow at 3% a month.

Dr. Nguyen Van Than · VINASME Chairman
If enterprises cannot access bank capital quickly, they are forced to resort to black credit at very high cost, leading to bankruptcy risk.
Cafebiz, 2026
HDBank Corporate Banking, 2025
A small supplier's cash flow structurally originates from the anchor buyer, but the bank cannot see the invoice trail two tiers up.
VnEconomy, 2025
Factoring-to-trade ratio, 2022
  • Vietnam0.15%
  • Global avg3%
  • Korea5%
  • Mexico8%
Deng 2025 · FCI 2024
65%of B2B sales on credit
39%of invoices overdue
40%textile delays >180 days (2023)
9%SMEs access formal credit
Atradius 2025 · Coface 2024 · VnEconomy 2025
The centralized SCF ceiling
Anchor → Tier-1served
Tier-1 → Tier-2invisible
Tier-2 → Tier-3invisible

HDBank VCF: 4,202 suppliers, all tier-1. The ceiling is a governance problem, not a technology problem.

02

The mechanism, in ten moves.

From a printed invoice in Bac Ninh to an atomic DvP settlement on Sepolia, every state change, in order. Numbers are real, from the deployed contracts.

  1. 00

    Identity & compliance

    Suppliers, banks, and SBV receive ONCHAINID contracts with KYC, AML, and (for banks) SBV_LICENSE claims. Every token transfer runs through six compliance modules: MaxHolders, MaturityLock, SBVLicense, DisputeFreeze, ClaimExpiry, CascadeSettlement.

  2. 01

    Oracle-verified invoice

    Supplier submits an e-invoice reference. Chainlink Functions pings MISA, the DON reaches consensus, and InvoiceVerified is emitted. No verified invoice, no token.

  3. 02

    Receivable minted

    ReceivableMinter is the only address with the Agent role. It claims the verification event and mints an ERC-3643 token keyed to the supplier. State machine starts at Minted.

  4. 03

    Sealed-bid auction

    Supplier lists on the Marketplace. Banks commit a keccak256(amount,rate,nonce), then reveal. Winner takes the highest advance, tiebreak on lowest rate. No front-running.

  5. 04

    Atomic DvP

    One transaction: VND moves from bank → supplier, token moves supplier → bank, state flips to Funded. If any ERC-3643 check fails, the whole thing reverts. Bank keeps VND. Supplier keeps token.

  6. 05

    Linkage coordination

    Each supplier requests linkage to their customer's token. Tier-1 confirms the anchor buyer as anchor. The chain is now on-chain: #11 → #10 → #9 → Anchor.

  7. 06

    ZK commitments

    Poseidon2-hashed commitments published to ZKLinkageRegistry. On Hyperledger Besu this replaces cleartext linkage; competitors in the consortium can't read each other's supply chains.

  8. 07

    UltraHonk proofs

    Off-chain in Noir. Tier-1 proves membership in the anchor Merkle tree (root 0x1bdb95…). Each deeper tier folds its parent's proof into its own. Banks see a single ZK-verified badge, nothing else.

  9. 08

    Anchor pays off-chain

    The anchor buyer settles with tier-1 via normal banking rails. A MockPaymentOracle (Chainlink in production) detects the credit and fires a PaymentDetected event keyed to token #9.

  10. 09

    Cascade distributes

    A CascadeEngine clone (EIP-1167 minimal proxy) computes tranches, marks itself distributed, and waits. Each recipient (bank, upstream supplier, protocol fee) calls release()and pulls their share. Token state → SettledBurned.

03

One protocol, four sides of the desk.

For tier-2 & tier-3 suppliers

Turn a confirmed PO into cash in one block.

You keep making casings for the anchor buyer. We turn your unpaid invoice into an ERC-3643 token, list it to three banks, and wire VND to your account the moment a bid clears. No property collateral. No branch visits.

  • T+0 factoring once your invoice is verified on MISA
  • Rates visible before you list, sealed-bid, no haggling
  • Credit history accumulates across banks, portably
  • Custodial wallet at launch with your bank as recovery
Walk the supplier flow →
04

Deployed, verified, live.

Twenty-five contracts across five layers on Sepolia. No handwaving; every address below is verified on Etherscan.

LayerContractAddressRole
IdentityIdentityRegistry0x346B7694E250F762A0884829a4d5d4eafA619858Wallet ↔ ONCHAINID mapping
IdentityClaimTopicsRegistry0xF1e4e720ae8e3DbfC8638ac4623DEddF7Dd8d1EdKYC / AML / SBV_LICENSE topics
IdentityTrustedIssuersRegistry0x67af3FdFbf8Fa2E8F9eD38130020E4F46eBB96E7Authorized claim issuers
TokenReceivableToken (T-REX)0xc9Ef49a0AAA70702880A0A9DB93B69C1d6B688F6ERC-3643 receivable state machine
TokenModularCompliance0x7aeC0B8b0c0AA88e506b89C632a70B432aEC6B37Pluggable compliance module bus
ComplianceMaxHoldersModule0xca8f76ec95C51b3F6bC582062Aa9Bd17D65cDEf1Caps distinct holders
ComplianceMaturityLockModule0xF336aCB7E95620748b789B64418b43068CD0bF8fNo transfer pre-maturity
ComplianceSBVLicenseModule0xF009201C546b4721A0443f93FFc44F1AD5b0dB41Recipient must hold SBV claim
ComplianceDisputeFreezeModule0x2E65064cc32af9Ff3df44C4c0dAe9aD2E5405dE4Freeze disputed receivables
ComplianceClaimExpiryModule0xF36E5b6154DcD5775f586eAE723BB9D69CA51246Enforce claim expiry
ComplianceCascadeSettlementModule0x6ac6097e64548C2A8590FEB23Ec3Efbe09171e6ABlocks transfer until cascade set
OracleReceivableVerifier0xEE0799FAB69a8b12f7BF2636969aE58Bb160843fChainlink Functions consumer (MISA)
OracleReceivableMinter0x37f50c5fecc4ea64d706Da46C87cA469A5B24462Agent-role minter (dedup by invoice)
OracleMockPaymentOracle0x9E30B030fBda769159cd336722c13d2e06199ee6Simulated anchor-payment detector
ProtocolMarketplace0x89C171fA74EbF13C0eFc105093E8Ff12d0B4ECCESealed-bid auction + atomic DvP
ProtocolLinkageRegistry0xcDf0be24141203254a0abDC8CEa83D79Df76f630Cleartext multi-tier linkage
ProtocolCascadeEngineFactory0xB4BF24Debe783be6aE101B0F19016c56793d8D9DEIP-1167 clone factory
ProtocolMockVND0xd12607Bd58F48059F19B74Bc2FD21a0f36941EEeERC-20 stablecoin (₫)
ProtocolSyndicationVault0xE35A548190E03F58A83A7710e35F2f5f641e355eERC-4626 multi-bank vault
ZKHonkVerifier0xf12a8D073EE838943f25228B06950f6a62757D5eUltraHonk verifier (Aztec/Barretenberg)
ZKZKLinkageRegistry0x2AD4147fF8a8c769717365a2F3CC5fEeD0DDa58aPrivacy-preserving linkage proofs
ZKZKTranscriptLib0x2928FBA6dbE6CC1D07a63bA970a3B0b770A67e52Fiat-Shamir transcript library

Stack

  • Solidity 0.8.24 · Hardhat
  • ERC-3643 T-REX base (Tokeny fork)
  • Chainlink Functions + Automation
  • Noir 0.37 · Barretenberg UltraHonk
  • EIP-1167 minimal proxies for cascade clones

Frontend

  • Next.js 15 · TypeScript · Tailwind 4
  • Wagmi v2 · Viem · RainbowKit
  • ShadCN + custom PKOS design tokens
  • Supabase for indexer snapshots

Target infra

  • VIFC sandbox · Hyperledger Besu
  • QBFT consensus · 4–6 validator set
  • Free-gas permissioned chain
  • Optional CCIP bridge for public-chain settlement

Seven minutes. End-to-end. On mainnet-equivalent.

Three suppliers, two banks, one anchor. Watch an invoice become a token become an auction become a funded advance become a three-way cascade. On real contracts, with real gas.

Chain ID 11155111 · Deployer 0x1f0c…53C5 · Last demo settlement: block 8,842,193 · 23:14 UTC