Last active
March 30, 2026 08:06
-
-
Save Aboudjem/3965d830e44a4f1c0051e7fc3a883ea4 to your computer and use it in GitHub Desktop.
PRD-01: Asset Passport — Full Implementation Spec
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: 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">← 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