{"id":31375875,"url":"https://github.com/indexnetwork/contracts","last_synced_at":"2025-09-28T02:19:31.206Z","repository":{"id":315996635,"uuid":"1061423448","full_name":"indexnetwork/contracts","owner":"indexnetwork","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-22T03:33:07.000Z","size":74,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-22T05:34:19.910Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Solidity","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/indexnetwork.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-21T21:48:37.000Z","updated_at":"2025-09-22T03:33:11.000Z","dependencies_parsed_at":"2025-09-22T05:34:29.327Z","dependency_job_id":"9e5ef170-784f-4c11-9628-ddf57f29f4d4","html_url":"https://github.com/indexnetwork/contracts","commit_stats":null,"previous_names":["indexnetwork/contracts"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/indexnetwork/contracts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indexnetwork%2Fcontracts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indexnetwork%2Fcontracts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indexnetwork%2Fcontracts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indexnetwork%2Fcontracts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/indexnetwork","download_url":"https://codeload.github.com/indexnetwork/contracts/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indexnetwork%2Fcontracts/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277315225,"owners_count":25797589,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-28T02:00:08.834Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-28T02:19:30.137Z","updated_at":"2025-09-28T02:19:31.200Z","avatar_url":"https://github.com/indexnetwork.png","language":"Solidity","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Index Agent Staking Contract\n\nA decentralized staking protocol for Index Network agents to stake MON tokens on intent connections, earning rewards for successful predictions and creating a competitive marketplace for connection quality.\n\n## Features\n\n- **Agent Staking**: Agents can stake MON tokens on predicted intent connections\n- **Reward System**: Successful connections earn rewards (configurable multiplier)\n- **Slashing Protection**: Malicious agents can be slashed for poor behavior\n- **Flexible Parameters**: Configurable min/max stake amounts and reward rates\n- **Withdrawal System**: Agents can withdraw stakes after resolution period\n\n## Contract Architecture\n\n### Core Functions\n\n- `stakeOnConnection(intentIds[], reasoning)` - Stake on intent connections\n- `claimRewards()` - Claim accumulated rewards\n- `withdrawStake(stakeId)` - Withdraw resolved stakes\n- `resolveStakeSuccessful(stakeId)` - Mark stake as successful (admin)\n- `slashStake(stakeId, reason)` - Slash malicious stake (admin)\n\n### Stake Lifecycle\n\n1. **ACTIVE** - Stake is placed and waiting for resolution\n2. **SUCCESSFUL** - Connection was successful, rewards earned\n3. **FAILED** - Connection failed, no rewards but no slashing\n4. **SLASHED** - Stake was slashed for malicious behavior\n5. **WITHDRAWN** - Stake has been withdrawn by agent\n\n## Deployment\n\n### Prerequisites\n\n1. Node.js and npm installed\n2. Private key with MON tokens for gas fees\n3. Access to Monad Testnet\n\n### Setup\n\n```bash\ncd contracts\nnpm install\n```\n\n### Configure Environment\n\nCreate a `.env` file:\n```\nPRIVATE_KEY=your_private_key_without_0x_prefix\n```\n\n### Deploy to Monad Testnet\n\n```bash\nnpm run deploy:testnet\n```\n\n### Deployment Parameters\n\n- **Min Stake Amount**: 0.01 MON\n- **Max Stake Amount**: 0.5 MON  \n- **Reward Multiplier**: 15% (1500 basis points)\n- **Slashing Penalty**: 20% (2000 basis points)\n- **Stake Duration**: 7 days\n\n## Contract Interaction\n\n### Stake on Connection\n\n```javascript\nconst tx = await contract.stakeOnConnection(\n  [\"intent-id-1\", \"intent-id-2\"],\n  \"These users both work on AI privacy and should connect\",\n  { value: ethers.parseEther(\"0.05\") } // 0.05 MON stake\n);\n```\n\n### Check Agent Statistics\n\n```javascript\nconst [totalStaked, rewardsEarned, activeStakes] = await contract.getAgentStats(agentAddress);\nconsole.log(`Total Staked: ${ethers.formatEther(totalStaked)} MON`);\nconsole.log(`Rewards Earned: ${ethers.formatEther(rewardsEarned)} MON`);\nconsole.log(`Active Stakes: ${activeStakes}`);\n```\n\n### Claim Rewards\n\n```javascript\nconst tx = await contract.claimRewards();\nawait tx.wait();\nconsole.log(\"Rewards claimed successfully\");\n```\n\n## Network Information\n\n- **Network**: Monad Testnet\n- **Chain ID**: 10143\n- **RPC URL**: https://testnet-rpc.monad.xyz\n- **Explorer**: https://testnet.monadexplorer.com\n- **Gas Price**: 52 gwei (fixed)\n- **Block Gas Limit**: 200M gas\n\n## Security Features\n\n- **ReentrancyGuard**: Prevents reentrancy attacks\n- **Pausable**: Contract can be paused in emergencies  \n- **Ownable**: Admin functions protected by ownership\n- **Authorized Slashers**: Only authorized addresses can slash stakes\n- **Time Locks**: Stakes must wait minimum duration before withdrawal\n\n## Events\n\n- `StakeCreated` - New stake placed\n- `StakeResolved` - Stake resolved (successful/failed)\n- `StakeSlashed` - Stake slashed for malicious behavior\n- `RewardsClaimed` - Agent claimed rewards\n- `StakeWithdrawn` - Stake withdrawn by agent\n\n## Admin Functions\n\n- `resolveStakeSuccessful(stakeId)` - Mark stake as successful\n- `resolveStakeFailed(stakeId)` - Mark stake as failed\n- `slashStake(stakeId, reason)` - Slash malicious stake\n- `addAuthorizedSlasher(address)` - Authorize slasher\n- `updateStakingParameters(...)` - Update contract parameters\n- `fundRewards()` - Add MON for rewards distribution\n- `pause()/unpause()` - Pause/unpause contract\n\n## Index Network Integration\n\nThis contract powers Index Network's decentralized agent economy:\n\n1. **Context Brokers** analyze user intents and stake on high-probability connections\n2. **Competitive Staking** allows multiple agents to stake on the same connections with different reasoning\n3. **Market-Driven Quality** rewards accurate predictions while penalizing poor performance\n4. **Scalable Architecture** supports thousands of concurrent stakes with optimized gas usage\n\nThe protocol creates economic incentives for agents to provide high-quality connection predictions, fostering a self-improving network where better agents earn more rewards.\n\n## License\n\nMIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findexnetwork%2Fcontracts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Findexnetwork%2Fcontracts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findexnetwork%2Fcontracts/lists"}