Cross-border escrow infrastructure for global B2B trade.
Live managed wallets, automated testnet activity, dispute-ready audit trails, and a dashboard built to feel like a real operations product.
TradeLock turns a hackathon demo into a believable escrow operation:
- real managed wallets for buyers, sellers, and arbitration
- live on-chain activity on Arbitrum Sepolia
- an always-moving dashboard powered by QStash and Upstash
- proof uploads, dispute flows, and audit visibility end to end
Cross-border B2B trade often breaks down on the last mile of trust:
- buyers worry about paying before delivery is proven
- sellers worry about shipping without guaranteed settlement
- auditors and arbitrators need traceable evidence, not screenshots in chat
- most demos stop at mock rows and static dashboards, so they never feel operational
TradeLock provides a live escrow workspace that combines:
- Solidity escrow contracts and a test settlement asset (
tUSD) - a custody automation layer that provisions and funds managed wallets
- recurring market activity and daily wallet growth through QStash schedules
- a responsive operations dashboard for deals, disputes, counterparties, and audit trails
tUSD is a test settlement token used for repeatable hackathon escrow activity on Arbitrum Sepolia. The same contract flow can support USDC.
20managed active wallets across buyers, sellers, and arbitration- recurring automated purchase and dispute activity on Arbitrum Sepolia
- live
Selected Dealsync from the latest custody activity - proof uploads to Pinata/IPFS
- Supabase-backed app state with Redis-assisted cache and custody registry
flowchart LR
Q["QStash Schedules"] --> A["/api/cron/activity"]
Q --> D["/api/cron/daily-user"]
A --> C[Custodial Engine]
D --> C
C --> R[(Upstash Redis)]
C --> S[(Supabase)]
C --> P["Pinata / IPFS"]
C --> E["Escrow + tUSD Contracts"]
S --> UI["Next.js Dashboard"]
R --> UI
E --> UI
sequenceDiagram
participant Buyer
participant TradeLock
participant Escrow
participant Seller
participant Audit
Buyer->>Escrow: createDeal()
Buyer->>Escrow: approve + fundDeal()
Seller->>Escrow: submitProofHash()
alt Normal completion
Buyer->>Escrow: releaseFunds()
else Issue detected
Seller->>Escrow: openDispute()
end
TradeLock->>Audit: sync dashboard state + evidence trail
- Visit
https://tradelock-pi.vercel.app - Watch the top ticker and
Recent Activitypanel for live custody events
Live Custody Networkshows wallet counts and pool balancesRecent Dealsreflects the newest automated market activitySelected Dealfollows the latest live custody event without manual reload
Deals: escrow lifecycles and transaction statesDisputes: open review items and linked counterpartiesAudit Trail: event-by-event activity historyCounterparties: live directory of managed businesses
- all asset flows use testnet
tUSD - gas is paid with Arbitrum Sepolia ETH
- activity is intentionally continuous to simulate a real B2B network
tUSDis used so judges can replay escrow activity safely and repeatedly; the same escrow contract flow can support USDC later
npm install
cp .env.example .env.local
npm run devOpen http://localhost:3050.
npm run build
npm run test:e2e- Frontend: Next.js 16, React 19, Tailwind CSS 4, Framer Motion
- Chain: Arbitrum Sepolia
- Contracts: Solidity escrow +
tUSDsettlement token - Web3: viem
- State and data: Supabase
- Automation and cache: Upstash Redis + QStash
- File proofs: Pinata / IPFS
- QA: Playwright
app/ Next.js app routes and APIs
components/ dashboard, screens, layouts, providers
contracts/ Solidity escrow and tUSD contracts
docs/ README assets
lib/ custody engine, backend, web3, services, types
tests/ Playwright UI coverage
- custody activity is scheduled by QStash
- UI market sync runs on a tight cadence and follows custody changes
- dashboard detail panels use the latest live custody
dealIdas the preferred source - daily wallet growth starts from the configured
dailyUserStartDate
TradeLock is currently optimized for a live hackathon demo:
- no real capital is required
- real wallet behavior is still visible onchain
- escrow, proof, and dispute flows can be demonstrated repeatedly
- the architecture remains portable to Arbitrum One later
Contributions are welcome. Start with CONTRIBUTING.md.
This project is released under the MIT License.