Skip to content

Overview & Architecture

Aset is an institutional-grade RWA tokenization platform. Investors deposit stablecoins into pools backed by real-world assets (invoice financing, earned wage access, hotel STOs) and earn yield through LP tokens.

🏦 Non-Custodial Architecture

All investor funds flow through Pool Smart Contracts. Aset operates as a facilitator with an operator role on contracts — it never holds investor funds directly. This means no VASP license is required under MiCA (€150K capital threshold avoided). Industry standard: Ondo, Centrifuge, Maple all use this model.

Tech Stack

LayerStackDetails
🖥️ FrontendVite + React + TypeScriptReact Router · Tailwind 4 · RainbowKit · shadcn/ui
⚡ BackendAWS CDK + Lambda (Node.js)API Gateway v2 · CloudFront · Supabase JS
📜 Smart ContractsFoundry + SolidityOpenZeppelin · 6 contracts · Base Chain
🗄️ DatabaseSupabase (PostgreSQL + RLS)Hosted · Row-level security · supabase-js
🔗 ChainBase Sepolia + Base Mainnet+ KAIA (prod) · SIWE auth · wagmi + viem
👤 Auth (Investor)SIWE (Sign-In with Ethereum)JWT via jose · RainbowKit · 30-min timeout
🔑 Auth (Admin)Google OAuthadmin_users.email from Google · wallet_address optional (on-chain ops only)

Chain Deployment

EnvironmentChainNote
🧪 DevBase SepoliaTestnet for all development and staging
🌐 ProdBase Mainnet + KAIADual-chain production deployment

Smart Contract Registry

ContractStandardPurpose
PlatformPoolAccessControl + ReentrancyGuardCore contract — deposits, reserve management, LP mint, yield distribution, redemption, NAV updates. Handles AS_POOL direct investment. FUND_POOL uses PlatformEscrow for hold/release, then Pool for yield.
PlatformLPTokenERC-20 + AccessControlLP token — whitelist-only transfers, auto-yield settlement
PlatformEscrow ⚠️ FUND_POOL ONLYAccessControl + ReentrancyGuardFUND_POOL escrow — holds USDC until FM issues LP tokens. releaseToFund() splits: 10% to PlatformPool (reserve), 90% to fund wallet. Refund safety if LP not issued within timeout. No yield logic.
PlatformPoolFactoryFactory + RegistryUnified factory + registry. createPool(type, config) deploys Pool + LPToken (AS_POOL) or + Escrow + ReceiptNFT (FUND_POOL). Single poolCounter. Auto-grants roles.
PlatformReceiptNFTERC-721Proof of deposit, status tracking (PENDINGLP_VERIFIED / REFUNDED)
PlatformKYCSoulboundNon-transferable ERC-721On-chain KYC status via SumSub — non-transferable identity credential