Skip to content

Instantly share code, notes, and snippets.

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

  • Save Aboudjem/6ed961a62485053986b1ba4ad16679c2 to your computer and use it in GitHub Desktop.

Select an option

Save Aboudjem/6ed961a62485053986b1ba4ad16679c2 to your computer and use it in GitHub Desktop.
Integra PRD: 26-staking (HTML)
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><title>PRD: Staking dApp</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>Staking dApp</h1><div class="meta"><span class="badge badge-owner">Nawar</span><span class="badge badge-week">Week 1</span><span class="badge badge-est">0.5-1 day</span></div><p style="color:#8888AA;font-size:0.9rem">staking.integralayer.com</p></div><div class="container"><div class="section"><h2>Overview</h2><div class=""><p>Staking interface for delegating IRL tokens to Integra validators and earning staking rewards. Uses native Cosmos SDK staking and distribution modules -- no custom contracts. Users browse validators, delegate, track accrued rewards, claim, redelegate, and undelegate. This is P0 infrastructure that every proof-of-stake chain ships on day one. Without it, users are stuck on CLI.</p></div></div>
<div class="section"><h2>Features</h2><div class=""><ul><li><strong>Validator List</strong> — Sortable table of all active validators showing moniker, voting power %, commission rate, uptime, and status (active/jailed)</li></ul><ul><li><strong>Delegate IRL</strong> — Select a validator and stake any amount of IRL tokens via a single transaction</li></ul><ul><li><strong>Undelegate</strong> — Initiate unstaking with the unbonding period clearly displayed before confirmation</li></ul><ul><li><strong>Redelegate</strong> — Move an existing delegation from one validator to another without unbonding</li></ul><ul><li><strong>Claim Rewards</strong> — View pending staking rewards per validator and claim in one click</li></ul><ul><li><strong>Staking Overview Dashboard</strong> — Network-wide stats: total IRL staked, bonding ratio, current APR, number of active validators</li></ul><ul><li><strong>Personal Delegation Summary</strong> — User's total delegated amount, rewards pending, and per-validator breakdown</li></ul><ul><li><strong>Transaction History</strong> — Recent stake/unstake/redelegate/claim actions with tx hashes and timestamps</li></ul><ul><li><strong>APR Display</strong> — Real-time annual percentage rate based on current network inflation and bonding ratio</li></ul><ul><li><strong>Web3Auth Login</strong> — Social account login via @integra/web3auth-provider, no wallet extension required</li></ul><ul><li><strong>Unbonding Tracker</strong> — Shows in-progress unbonding delegations with time remaining until funds are released</li></ul></div></div>
<div class="section"><h2>Functions</h2><div class=""><ul><li><code>MsgDelegate</code> — Stake IRL to a selected validator</li></ul><ul><li><code>MsgUndelegate</code> — Unstake IRL (starts unbonding period)</li></ul><ul><li><code>MsgBeginRedelegate</code> — Move stake between validators without unbonding</li></ul><ul><li><code>MsgWithdrawDelegatorReward</code> — Claim accumulated staking rewards</li></ul><ul><li><code>GET /cosmos/staking/v1beta1/validators</code> — List all validators with commission, tokens, and status</li></ul><ul><li><code>GET /cosmos/staking/v1beta1/delegations/{delegator}</code> — User's active delegations</li></ul><ul><li><code>GET /cosmos/distribution/v1beta1/delegators/{delegator}/rewards</code> — Pending rewards breakdown</li></ul><ul><li><code>GET /cosmos/staking/v1beta1/delegators/{delegator}/unbonding_delegations</code> — In-progress unbonding entries</li></ul></div></div>
<div class="section"><h2>User Flow</h2><div class=""><ul><li>User connects via Web3Auth (social login)</li></ul><ul><li>Staking overview loads: total network staked, APR, user's delegation summary</li></ul><ul><li>User browses the validator list sorted by voting power, commission, or uptime</li></ul><ul><li>User selects a validator and enters an amount to delegate</li></ul><ul><li>User confirms the delegation transaction</li></ul><ul><li>User returns later to check accrued rewards</li></ul><ul><li>User claims rewards in one click</li></ul><ul><li>User can redelegate to a different validator or undelegate (with unbonding countdown)</li></ul></div></div>
<div class="section"><h2>Deliverables</h2><div class="checklist"><ul class="checklist"><li>Validator list page with sorting (voting power, commission, uptime, status)</li></ul><ul class="checklist"><li>Delegation form (select validator, enter amount, confirm tx)</li></ul><ul class="checklist"><li>Undelegation flow with unbonding period display</li></ul><ul class="checklist"><li>Redelegation flow (source validator to destination validator)</li></ul><ul class="checklist"><li>Rewards display and one-click claim</li></ul><ul class="checklist"><li>Staking overview dashboard (network stats + personal summary)</li></ul><ul class="checklist"><li>Transaction history with tx hash links to Explorer</li></ul><ul class="checklist"><li>Unbonding tracker with countdown timers</li></ul><ul class="checklist"><li>Web3Auth integration for social login</li></ul></div></div>
<div class="section"><h2>Integration Points</h2><div class=""><ul><li><strong>Depends on:</strong> Cosmos SDK staking module, Cosmos SDK distribution module, Integra testnet LCD/REST API, @integra/web3auth-provider</li></ul><ul><li><strong>Used by:</strong> Ecosystem Hub (listed under DeFi category), Explorer (delegation txs visible)</li></ul><ul><li><strong>Explorer:</strong> Integra Explorer (all staking txs indexed)</li></ul><ul><li><strong>Note:</strong> 3 active validators on testnet (~33.3% voting power each), token is IRL / airl (18 decimals)</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 delegation (stake any amount)</td><td>+100 XP</td></tr><tr><td>Claim rewards</td><td>+25 XP</td></tr><tr><td>Redelegate to a different validator</td><td>+50 XP</td></tr><tr><td>Maintain active delegation for 7+ days</td><td>+200 XP</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>Unique delegators</td><td>500+</td></tr><tr><td>Total IRL staked via UI</td><td>>50% of circulating supply</td></tr><tr><td>Average delegation txs per day</td><td>100+</td></tr><tr><td>Reward claims per week</td><td>200+</td></tr><tr><td>Users completing all 4 XP actions</td><td>100+</td></tr></tbody></table></div></div>
</div><div class="footer">Integra Testnet PRD — Staking dApp — 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