Created
March 30, 2026 07:46
-
-
Save Aboudjem/d27b63d64677df9c775678913fed431e to your computer and use it in GitHub Desktop.
Integra PRD: 29-demo-agent (HTML)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>PRD: Demo Agent — Integra Testnet</title> | |
| <style> | |
| *{margin:0;padding:0;box-sizing:border-box} | |
| body{background:#0A0A1A;color:#E8E8F0;font-family:'Inter',system-ui,sans-serif;line-height:1.7;padding:0} | |
| a{color:#00CEC9;text-decoration:none}a:hover{text-decoration:underline} | |
| .hero{padding:48px 32px 36px;border-bottom:1px solid #2A2A4A;background:linear-gradient(135deg,#0A0A1A 0%,#1A1040 50%,#0A0A1A 100%)} | |
| .hero h1{font-size:2rem;font-weight:800;color:#fff;margin-bottom:8px} | |
| .hero .meta{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px} | |
| .badge{display:inline-block;padding:4px 12px;border-radius:6px;font-size:12px;font-weight:700} | |
| .badge-owner{background:rgba(108,92,231,0.15);color:#A29BFE;border:1px solid rgba(108,92,231,0.3)} | |
| .badge-week{background:rgba(0,206,201,0.15);color:#00CEC9;border:1px solid rgba(0,206,201,0.3)} | |
| .badge-est{background:rgba(0,184,148,0.15);color:#00B894;border:1px solid rgba(0,184,148,0.3)} | |
| .badge-p0{background:rgba(255,107,107,0.15);color:#FF6B6B;border:1px solid rgba(255,107,107,0.3)} | |
| .badge-p1{background:rgba(253,203,110,0.15);color:#FDCB6E;border:1px solid rgba(253,203,110,0.3)} | |
| .container{max-width:900px;margin:0 auto;padding:32px 24px} | |
| .section{background:#12122A;border:1px solid #2A2A4A;border-radius:12px;padding:24px;margin-bottom:20px} | |
| .section h2{font-size:1.1rem;font-weight:700;color:#8888AA;text-transform:uppercase;letter-spacing:1.5px;font-size:0.8rem;margin-bottom:14px;padding-bottom:8px;border-bottom:1px solid #2A2A4A} | |
| .section p{font-size:0.95rem;color:#E8E8F0;margin-bottom:8px} | |
| .section ul{list-style:none;padding:0} | |
| .section ul li{padding:6px 0 6px 20px;position:relative;font-size:0.95rem} | |
| .section ul li::before{content:'>';position:absolute;left:0;color:#A29BFE;font-weight:700;font-family:monospace} | |
| .section code{background:rgba(108,92,231,0.1);padding:2px 6px;border-radius:4px;font-size:0.88rem;color:#A29BFE} | |
| table{width:100%;border-collapse:collapse;font-size:0.9rem;margin:8px 0} | |
| th{text-align:left;padding:8px 12px;background:rgba(108,92,231,0.08);color:#A29BFE;font-size:0.75rem;text-transform:uppercase;letter-spacing:1px;border-bottom:1px solid #2A2A4A} | |
| td{padding:8px 12px;border-bottom:1px solid rgba(42,42,74,0.5)} | |
| .checklist li::before{content:'\2610' !important;color:#8888AA !important;font-family:inherit !important} | |
| .back{display:inline-block;margin:24px 0;color:#8888AA;font-size:0.9rem} | |
| .back:hover{color:#A29BFE} | |
| .footer{text-align:center;padding:24px;color:#555577;font-size:0.82rem;border-top:1px solid #2A2A4A;margin-top:32px} | |
| </style> | |
| </head> | |
| <body> | |
| <div class="hero"> | |
| <a class="back" href="https://gist.githack.com/Aboudjem/0af8c2ce9d5b62038a18eeff09603553/raw/integra-testnet-master-plan.html">← Back to Master Plan</a> | |
| <h1>Demo Agent</h1> | |
| <div class="meta"> | |
| <span class="badge badge-p1"></span> | |
| <span class="badge badge-owner"></span> | |
| <span class="badge badge-week"></span> | |
| <span class="badge badge-est"></span> | |
| </div> | |
| <p style="color:#8888AA;font-size:0.9rem"></p> | |
| </div> | |
| <div class="container"> | |
| <div class="section"><h2>What</h2><div class=""><p>Autonomous agent that runs the full Integra asset lifecycle in an infinite loop: mint passport, wrap into IRWAToken, list on GOB, negotiate a price, execute a trade, repeat. Generates thousands of transactions even with zero real users. Multiple instances can run simultaneously with different strategies (flipper, holder, market maker) to simulate realistic market activity.</p></div></div> | |
| <div class="section"><h2>Why</h2><div class=""><p>A testnet with no activity looks dead. This agent is the heartbeat -- it produces continuous on-chain transactions across every contract in the ecosystem (AssetPassport, IRWAToken, GOB). Critical for hitting the "1M+ transactions" metric, stress-testing the chain under sustained load, and giving the Explorer and dashboards something meaningful to display. Also validates the full end-to-end flow works without human intervention.</p></div></div> | |
| <div class="section"><h2>User Flow</h2><div class=""><ul><li>Operator deploys one or more agent instances with a config (strategy, speed, asset types, price range)</li></ul> | |
| <ul><li>Agent authenticates via AgentAuth and receives a session wallet funded with testnet IRL</li></ul> | |
| <ul><li>Agent enters infinite loop:</li></ul> | |
| <p> 1. Mints a new AssetPassport with synthetic or scraped data</p> | |
| <p> 2. Wraps the passport into an IRWAToken (fractionalizes if strategy calls for it)</p> | |
| <p> 3. Lists the token on GOB at a configurable price</p> | |
| <p> 4. Another instance (or same agent wearing a different hat) places a bid / negotiates</p> | |
| <p> 5. Trade executes on GOB, ownership transfers</p> | |
| <p> 6. Loop restarts with new asset</p> | |
| <ul><li>Operator monitors all instances via Agent Arena dashboard</li></ul> | |
| <ul><li>Operator can pause/resume/kill instances via config flag or Agent Arena</li></ul></div></div> | |
| <div class="section"><h2>Technical Approach</h2><div class=""><ul><li><strong>Contract:</strong> Uses all existing contracts -- <code>AssetPassport.sol</code> (mint), <code>IRWAToken.sol</code> (wrap), GOB (list/bid/trade)</li></ul> | |
| <ul><li><strong>Frontend:</strong> None (headless). Monitoring via Agent Arena dashboard (existing)</li></ul> | |
| <ul><li><strong>Backend:</strong> Node.js serverless function deployed as an Integra Agent</li></ul> | |
| <p> - <strong>Lifecycle module:</strong> Orchestrates the mint -> wrap -> list -> trade cycle as a state machine</p> | |
| <p> - <strong>Strategy engine:</strong> 3 built-in strategies:</p> | |
| <p> - <code>flipper</code> -- mints, lists immediately, accepts first bid</p> | |
| <p> - <code>holder</code> -- mints, wraps, holds for N cycles before listing</p> | |
| <p> - <code>market-maker</code> -- places bids on other agents' listings, creates two-sided activity</p> | |
| <p> - <strong>Synthetic data generator:</strong> Produces random but realistic property metadata (no scraping needed -- uses faker-style generation for speed)</p> | |
| <p> - <strong>Config:</strong> JSON config for strategy, tx speed (txs/min), asset types, price range min/max, loop delay</p> | |
| <p> - <strong>Multi-instance:</strong> Each instance gets its own AgentAuth wallet; instances discover each other's listings on GOB</p> | |
| <p> - <strong>Speed:</strong> Default 10 tx/min per instance, configurable up to chain gas limits</p></div></div> | |
| <div class="section"><h2>Integration Points</h2><div class=""><ul><li><strong>AgentAuth:</strong> Each instance registers independently, gets its own session wallet</li></ul> | |
| <ul><li><strong>AssetPassport.sol:</strong> Calls <code>mint()</code> to create new passports</li></ul> | |
| <ul><li><strong>IRWAToken.sol:</strong> Calls <code>wrap()</code> to tokenize passports</li></ul> | |
| <ul><li><strong>GOB:</strong> Calls <code>list()</code>, <code>bid()</code>, <code>acceptBid()</code> / <code>trade()</code> to simulate marketplace activity</li></ul> | |
| <ul><li><strong>Agent Arena:</strong> All instances register, report heartbeat and per-cycle metrics (tx count, gas spent, cycle time)</li></ul> | |
| <ul><li><strong>Faucet:</strong> Agents auto-request testnet IRL when wallet balance drops below threshold</li></ul></div></div> | |
| <div class="section"><h2>XP Rewards</h2><div class=""><ul><li>Standard agent XP per transaction (mint, wrap, list, trade each count separately)</li></ul> | |
| <ul><li>"Market Maker" badge after 10,000 completed trade cycles</li></ul> | |
| <ul><li>Leaderboard position based on total transaction volume generated</li></ul></div></div> | |
| <div class="section"><h2>Acceptance Criteria</h2><div class=" checklist"><ul class="checklist"><li>Agent completes one full lifecycle loop: mint -> wrap -> list -> trade</li></ul> | |
| <ul class="checklist"><li>Runs continuously for 1 hour without crashing or stalling</li></ul> | |
| <ul class="checklist"><li>Configurable: strategy (flipper/holder/market-maker), speed (txs/min), price range, asset types</li></ul> | |
| <ul class="checklist"><li>Multiple instances run simultaneously and interact with each other's GOB listings</li></ul> | |
| <ul class="checklist"><li>Auto-refuels from faucet when wallet balance is low</li></ul> | |
| <ul class="checklist"><li>Reports per-cycle metrics (tx count, gas used, cycle time) to Agent Arena</li></ul> | |
| <ul class="checklist"><li>Graceful shutdown on SIGTERM with state persistence (resumes from last cycle)</li></ul></div></div> | |
| </div> | |
| <div class="footer">Integra Testnet PRD — Demo Agent — Chain: integra-testnet-1 (EVM 26218)</div> | |
| </body> | |
| </html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment