hackquest logo

Assetflow

The servicing layer for tokenized bonds on Arbitrum: KYC once, eligibility checked on every transfer, coupons, redemptions and maturity paid in Paxos's USDG.

Videos

Tech Stack

Next
React
Web3
Solidity
Foundry
Viem
EAS
Node

Description

The problem

Issuing a tokenized bond takes one transaction. Running it takes years: deciding who may hold it, paying coupons to whoever held it on each record date, handling early redemptions, and paying everyone out at maturity. Today that work lives in spreadsheets and email, next to a token that knows nothing about it. On Robinhood Chain, stock tokens reflect dividends through a multiplier and pay holders no cash.

What AssetFlow does

Four Solidity contracts (Foundry, OpenZeppelin 5) put a bond's whole life on-chain, and the issuer runs it from one console.

  • Registry: the issuer's policy (jurisdictions, minimum tier, accreditation) and every investor's profile. KYC once: a profile can be claimed from an Ethereum Attestation Service attestation by a KYC provider the registry trusts, so an investor verified once onboards into every registry that trusts that provider. If the provider revokes it, anyone can withdraw the approval.

  • ServicedToken: an ERC-20 that asks the registry on every transfer and mint, so units move only between wallets that pass today. It keeps every balance as timestamped checkpoints, so the register on any record date is read straight from the chain. Nobody commits a register and nothing is paused.

  • Servicer: the bond itself (terms, 30/360 coupon schedule, early redemptions, maturity). It pays in any ERC-20. Each coupon is computed from the holder's balance at the record date and paid only from that coupon's own funding. An ineligible holder's coupon is held back. Early redemptions are priced by the contract at face plus accrued interest, and the units burn in the same transaction as the payment. Maturity ends issuance for good, and every eligible holding redeems at face.

  • Directory: lists each issuer's registries and bonds.

The web app has an issuer console, a holder portal (eligibility checklist, holdings, every coupon, redemption price shown before signing) and a demo KYC provider, in English, Simplified Chinese and Traditional Chinese.

Paxos USDG integration

  • On Arbitrum Sepolia and Robinhood Chain testnet, creating a bond offers USDG by Paxos as the payment currency first. The wallet menu links Paxos's faucet.

  • Coupons, redemptions and maturity are funded and paid in USDG.

  • On Oct 4 a USDG bond ran its full life from the console on both chains: two coupons (the second held back from a holder whose KYC attestation had been revoked), an early redemption, and maturity with every eligible holding redeemed at face.

Deployments

  • Arbitrum One: Directory 0x1C1867cC4899157B8c6fb2D1d351985f73fe125e, the investor schema on Arbitrum's EAS, and a pilot note on native USDC (servicer 0xCc673fD915EE01f2F712A880a51E42EDC9A7d320, token 0xDABea95f39ef319AE4C775Ca8c8b3c37971Aa977), verified on Sourcify. One $1 unit, no investor money.

  • Arbitrum Sepolia: the full console. USDG bond servicer 0xd7d04b199b5b7e08d14cae1e57e9129ebab0c8ca, paying USDG 0xFFC95faa3d63Cde504a05B567C600B78C0b41892.

  • Robinhood Chain testnet: the full console. The chain had no attestation service, so AssetFlow deployed the EAS Foundation's contracts there, unmodified and verified (EAS 0xdD5Fc46c9f5C87e887614DB3b124e51A4A5540A1). USDG bond servicer 0xa73e2091aebef505166bcac220e15a725906b8e8, paying USDG 0x7E955252E15c84f5768B83c41a71F9eba181802F.

Smart contract quality

  • 19 Foundry tests, including a fuzz test that coupon parts never exceed the whole. KYC-once tests run against the real EAS 1.4 contracts.

  • Slither 0.11.6: 0 high, 9 medium, 19 low, every finding triaged in evm/SECURITY.md. None called for a code change.

  • SafeERC20, ReentrancyGuard on every function that moves currency, SafeCast on narrowing casts. Funding is measured from balances, and every payout checks it stays within what was funded.

  • Not audited yet.

Why Arbitrum and Robinhood Chain

Servicing is many small payments in a stablecoin institutions accept. Arbitrum has the low fees, and Paxos issues USDG on Arbitrum One. Robinhood Chain is where tokenized stocks live, and their holders get no cash: AssetFlow is the rail that pays them in USDG.

Business model (proposed, to validate with design partners)

The contracts stay open source (MIT). Revenue comes from running them: a hosted console ($399 or $1,499 a month), 3 bps on assets serviced, and $0.25 per holder per corporate action. First customers: issuers in Hong Kong and Singapore through Solar and 021Lab, and cash payouts for stock tokens on Robinhood Chain.

Links

AssetFlow also runs natively on Solana devnet (Token-2022, Token ACL, 73 tests). Its first version, on HashKey Chain, won 3rd place in the DeFi track at HashKey Chain Horizon.

Progress During Hackathon

Deployed AssetFlow's EVM contracts on Arbitrum One (pilot note on native USDC), Arbitrum Sepolia and Robinhood Chain testnet, verified on Sourcify. Robinhood Chain had no attestation service, so we deployed the EAS Foundation's contracts there for KYC once. Integrated Paxos USDG: bonds on Arbitrum Sepolia and Robinhood Chain are created with USDG as the payment currency, the wallet menu links Paxos's faucet, and coupons, redemptions and maturity are paid in USDG. Added a "New bond" flow and a bond picker to the issuer console. Ran a full bond life in USDG on both chains from the console: two coupons (the second held back from a holder whose KYC was revoked), an early redemption, and maturity with every eligible holding redeemed at face. Published security notes: 19 Foundry tests including fuzzing, and every Slither finding triaged (0 high). Made a pitch video and a technical demo video from the live app.

Fundraising Status

Looking for funding.
Team Leader
NN DIVIJ
Project Link
Sector
RWADeFi