Skip to content

Instantly share code, notes, and snippets.

@Aboudjem
Last active March 30, 2026 08:06
Show Gist options
  • Select an option

  • Save Aboudjem/3965d830e44a4f1c0051e7fc3a883ea4 to your computer and use it in GitHub Desktop.

Select an option

Save Aboudjem/3965d830e44a4f1c0051e7fc3a883ea4 to your computer and use it in GitHub Desktop.
PRD-01: Asset Passport — Full Implementation Spec
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><title>PRD: Asset Passport</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}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)}.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:0.8rem;font-weight:700;color:#8888AA;text-transform:uppercase;letter-spacing:1.5px;margin-bottom:14px;padding-bottom:8px;border-bottom:1px solid #2A2A4A}.section h3{font-size:0.95rem;font-weight:600;color:#E8E8F0;margin:12px 0 6px}.section p{font-size:0.95rem;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-bottom:16px;color:#8888AA;font-size:0.9rem}.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">&larr; Back to Master Plan</a><h1>Asset Passport</h1><div class="meta"><span class="badge badge-owner">Nawar + Kalki</span><span class="badge badge-week">Week 1</span><span class="badge badge-est">1-2 days</span></div><p style="color:#8888AA;font-size:0.9rem">passport.integralayer.com</p></div><div class="container"><div class="section"><h2>Overview</h2><div class=""><p>Asset Passport is the entry point to the Integra ecosystem. Every user's first action is minting a token that represents a real-world asset (property, gold, silver, treasury bonds, or stocks) into their wallet. This token becomes the canonical on-chain identity for that asset, usable across the entire ecosystem -- wrapping, trading, lending, and agent management all start here. Passports are transferable (not soulbound) to enable secondary market trading on the GOB.</p></div></div>
<div class="section"><h2>Features</h2><div class=""><ul><li><strong>Asset Type Selection</strong> -- choose from 5 types: property, gold, silver, treasury bonds, stocks</li></ul><ul><li><strong>One-Click Mint</strong> -- connect wallet and mint a passport in under 30 seconds</li></ul><ul><li><strong>Mock Valuations</strong> -- pre-configured value ranges per type (Property 100K-5M, Gold 1K-100K, Silver 500-50K, Bonds 10K-1M, Stocks 100-500K IRL)</li></ul><ul><li><strong>On-Chain Metadata</strong> -- asset type, mint timestamp, description, and mock valuation stored with the token</li></ul><ul><li><strong>Passport Detail Page</strong> -- view asset type, mint date, token ID, owner, and transfer history</li></ul><ul><li><strong>Token Standard Visibility</strong> -- detail page shows current standard (ERC-721) and available wrap targets (ERC-20, ERC-721, ERC-3643, ERC-1404)</li></ul><ul><li><strong>Post-Wrap Cross-Reference</strong> -- after wrapping, passport page links to the wrapped IRWA token</li></ul><ul><li><strong>Explorer Deep Links</strong> -- every minted passport links to its token page on Integra Explorer with real-time tx status</li></ul><ul><li><strong>Transferable Passports</strong> -- passports can be transferred between wallets, enabling GOB trading</li></ul><ul><li><strong>Web3Auth Login</strong> -- shared @integra/web3auth-provider for seamless wallet connection</li></ul><ul><li><strong>Agent Minting</strong> -- agents can mint passports on behalf of users via AgentAuth contract</li></ul><ul><li><strong>Testnet Faucet Integration</strong> -- users receive IRL tokens to cover mint gas</li></ul><ul><li><strong>XP on Mint</strong> -- XP awarded immediately on successful passport mint</li></ul></div></div>
<div class="section"><h2>Functions</h2><div class=""><ul><li><code>mintPassport</code> -- mint a new Asset Passport with selected asset type and metadata</li></ul><ul><li><code>getPassportMetadata</code> -- retrieve asset type, valuation, description, and mint timestamp for a token ID</li></ul><ul><li><code>transferPassport</code> -- transfer passport ownership to another wallet address</li></ul><ul><li><code>getPassportsByOwner</code> -- list all passports owned by a given wallet address</li></ul><ul><li><code>getWrappedToken</code> -- return the linked IRWA token address/ID if the passport has been wrapped</li></ul><ul><li><code>isWrapped</code> -- check whether a passport has been wrapped</li></ul><ul><li><code>emitXPAction</code> -- emit XP event on successful mint (consumed by XP system listener)</li></ul></div></div>
<div class="section"><h2>User Flow</h2><div class=""><ul><li>User arrives at passport.integralayer.com and connects wallet via Web3Auth</li></ul><ul><li>User selects an asset type from the 5 available categories</li></ul><ul><li>User enters or accepts default metadata (description, mock valuation)</li></ul><ul><li>User confirms the mint transaction (gas paid in testnet IRL from faucet)</li></ul><ul><li>Passport token appears in wallet within 1 block confirmation</li></ul><ul><li>User lands on passport detail page showing metadata, token standard, and Explorer link</li></ul><ul><li>User sees available next steps: wrap this passport into an IRWA token, or mint another</li></ul></div></div>
<div class="section"><h2>Deliverables</h2><div class="checklist"><ul class="checklist"><li>Smart contract deployed and verified on Integra Explorer</li></ul><ul class="checklist"><li>Frontend accessible at passport.integralayer.com</li></ul><ul class="checklist"><li>XP integration (mint action emits points)</li></ul><ul class="checklist"><li>Integra Explorer deep links for every minted token and transaction</li></ul><ul class="checklist"><li>Ecosystem Hub listing</li></ul><ul class="checklist"><li>Faucet integration for testnet IRL distribution</li></ul><ul class="checklist"><li>Agent minting via AgentAuth operational</li></ul><ul class="checklist"><li>Token standard visibility on passport detail page</li></ul></div></div>
<div class="section"><h2>Integration Points</h2><div class=""><ul><li><strong>Depends on:</strong> Testnet chain (active), Faucet (Nawar), Smart Wallet (Nawar), App Domain Router (Adam), XP System listener (Milind + Kalki)</li></ul><ul><li><strong>Used by:</strong> Wrapper (accepts passports as input), GOB (passports tradeable directly), Agent Arena (minting agents), Lending App (wrapped passports as collateral)</li></ul><ul><li><strong>Explorer:</strong> Token pages, tx hashes, owner history on Integra Explorer (github.com/Integra-layer/integra-explorer, branch: feature/INT-424-sync-passport-api-rwa-metadata)</li></ul></div></div>
<div class="section"><h2>XP Rewards</h2><div class=""><table><thead><tr><th>Action</th><th>Points</th></tr></thead><tbody><tr><td>First passport mint</td><td>100</td></tr><tr><td>Additional passport mint</td><td>25</td></tr><tr><td>Agent-assisted mint</td><td>50</td></tr><tr><td>Transfer a passport</td><td>10</td></tr></tbody></table></div></div>
<div class="section"><h2>Success Metrics</h2><div class=""><table><thead><tr><th>Metric</th><th>Target</th></tr></thead><tbody><tr><td>Passports minted during testnet</td><td>5,000+</td></tr><tr><td>Average time to mint (UX)</td><td>< 30 seconds</td></tr><tr><td>Mint-to-wrapper conversion rate</td><td>> 60%</td></tr><tr><td>Zero failed mints from contract bugs</td><td>100% uptime</td></tr></tbody></table></div></div>
</div><div class="footer">Integra Testnet PRD — Asset Passport — 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