On‑chain ad slots for Sui. Create a slot, bid/lock with SUI, upload a creative, and render it on any site via a tiny SDK.
- Setup
- Copy
.env.example→.envand fill RPC + keys. - Deploy Move package:
pnpm deploy:contracts- Copy printed
SUI_PACKAGE_ID(andSUI_PROTOCOL_IDif shown) into.env.
- Copy printed
- Run
- Install:
pnpm i - Dev all:
pnpm dev(indexer + SDK build:watch + admin + demos)- Admin: http://localhost:5173
- Publisher demo: http://localhost:5174
- Blog demo: http://localhost:5175 (supports
?slotId=0x...etc.)
Flow: Create slot → Purchase (bid/lock) with SUI → Upload/Anchor creative → See it live in demos. Completed modals include quick links.
contracts/sui-ads: Move modulead_market(slots, bids/locks, protocol accounting, cancel/reset; hackathon‑simplified AQT/swap).indexer: Express API + SQLite + Sui event poller (Prisma). Exposes/api/slot/:id/*, wallet overview, finance, mock uploads.packages/sdk: Browser SDK (UMD/ESM).window.Aquads.mount('#slot', { slotId }). Supportsdata-responsiveand rotating creatives.apps/admin: React admin (Create/Purchase/Lock/Cancel/Reset, finance hints)./swapfor SUI→AQT mock swap & deposit.apps/publisher-demo,apps/demo-blog: Vanilla demos embedding SDK.
<script src="/sdk/aquads.umd.js"></script>
<div id="slot" data-slot-id="0x..." data-responsive></div>
<script>window.Aquads.mount('#slot', { slotId: '0x...' })</script>- SUI‑only payments. Protocol fee 6% (hackathon): 4% protocol vault, 2% simulated AQT burn (SUI pool accrual). Legacy
bidpath pays publisher directly. - Mock storage: uploads live in
indexer/uploads/(mock://sha256-...); blog/publisher demos serve them via/uploads/*. - Blog page accepts
?slotId=0x...(andbanner/rect/slot/slot2aliases). Toolbar allows saving IDs to localStorage.
SUI_PACKAGE_ID(required),SUI_PROTOCOL_ID(optional but enables fee accounting),SUI_NETWORK(defaulttestnet).