{"name":"ThenarProtocol","deployed":true,"address":"0xa8Ec6e8f33F5b5B980336a3cdd3BB799EEA38619","chain":{"id":5042,"name":"Arc","rpc":"https://rpc.mainnet.arc.io","explorer":"https://explorer.arc.io","currency":"USDC","gas":"USDC (native, 18 decimals)"},"amounts":{"token":"0x3600000000000000000000000000000000000000","symbol":"USDC","decimals":6},"verifier":"0x45C77c430AC6e23E2561b15b8c4C9e1275DAF7E6","abi":[{"type":"constructor","inputs":[{"name":"_verifier","type":"address","internalType":"address"},{"name":"_treasury","type":"address","internalType":"address"},{"name":"_passkeys","type":"address","internalType":"address"},{"name":"_usdc","type":"address","internalType":"address"},{"name":"_verdicts","type":"address","internalType":"address"},{"name":"_maxTaskEscrow","type":"uint128","internalType":"uint128"}],"stateMutability":"nonpayable"},{"type":"function","name":"ACCEPT_FLOOR","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MAX_CONTRIBUTORS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MAX_SCORE","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MAX_SHARDS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"PROTOCOL_FEE_BPS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"RUNS_PER_ACCOUNT","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"SLOTS_PER_SHARD","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"VERDICT_GAS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"capTable","inputs":[{"name":"policyId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"who","type":"address[]","internalType":"address[]"},{"name":"weightBps","type":"uint256[]","internalType":"uint256[]"},{"name":"payout","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"claim","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimable","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"claimableTotal","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"closeTask","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"refunded","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"contributorsOf","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"createTask","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"slots","type":"uint32","internalType":"uint32"},{"name":"rewardPerTrajectory","type":"uint128","internalType":"uint128"},{"name":"scenario","type":"uint8","internalType":"uint8"},{"name":"difficulty","type":"uint8","internalType":"uint8"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createTaskUntil","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"slots","type":"uint32","internalType":"uint32"},{"name":"rewardPerTrajectory","type":"uint128","internalType":"uint128"},{"name":"scenario","type":"uint8","internalType":"uint8"},{"name":"difficulty","type":"uint8","internalType":"uint8"},{"name":"expiresAt","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createTaskWithAuthorization","inputs":[{"name":"funder","type":"address","internalType":"address"},{"name":"p","type":"tuple","internalType":"struct ThenarProtocol.TaskParams","components":[{"name":"name","type":"string","internalType":"string"},{"name":"slots","type":"uint32","internalType":"uint32"},{"name":"rewardPerTrajectory","type":"uint128","internalType":"uint128"},{"name":"scenario","type":"uint8","internalType":"uint8"},{"name":"difficulty","type":"uint8","internalType":"uint8"},{"name":"expiresAt","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"name":"validAfter","type":"uint256","internalType":"uint256"},{"name":"validBefore","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"domainSeparator","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"fundTask","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getPolicy","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ThenarProtocol.Policy","components":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"minter","type":"address","internalType":"address"},{"name":"trajectories","type":"uint32","internalType":"uint32"},{"name":"mintedAt","type":"uint64","internalType":"uint64"},{"name":"licenceFee","type":"uint128","internalType":"uint128"},{"name":"licencesSold","type":"uint32","internalType":"uint32"},{"name":"distributed","type":"uint128","internalType":"uint128"}]}],"stateMutability":"view"},{"type":"function","name":"getTask","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"t","type":"tuple","internalType":"struct ThenarProtocol.Task","components":[{"name":"name","type":"string","internalType":"string"},{"name":"funder","type":"address","internalType":"address"},{"name":"rewardPerTrajectory","type":"uint128","internalType":"uint128"},{"name":"escrow","type":"uint128","internalType":"uint128"},{"name":"slotsTotal","type":"uint32","internalType":"uint32"},{"name":"slotsFilled","type":"uint32","internalType":"uint32"},{"name":"scenario","type":"uint8","internalType":"uint8"},{"name":"difficulty","type":"uint8","internalType":"uint8"},{"name":"policyMinted","type":"bool","internalType":"bool"},{"name":"expiresAt","type":"uint64","internalType":"uint64"},{"name":"closed","type":"bool","internalType":"bool"},{"name":"createdBlock","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getTasks","inputs":[{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"out","type":"tuple[]","internalType":"struct ThenarProtocol.Task[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"funder","type":"address","internalType":"address"},{"name":"rewardPerTrajectory","type":"uint128","internalType":"uint128"},{"name":"escrow","type":"uint128","internalType":"uint128"},{"name":"slotsTotal","type":"uint32","internalType":"uint32"},{"name":"slotsFilled","type":"uint32","internalType":"uint32"},{"name":"scenario","type":"uint8","internalType":"uint8"},{"name":"difficulty","type":"uint8","internalType":"uint8"},{"name":"policyMinted","type":"bool","internalType":"bool"},{"name":"expiresAt","type":"uint64","internalType":"uint64"},{"name":"closed","type":"bool","internalType":"bool"},{"name":"createdBlock","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getTrajectory","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ThenarProtocol.Trajectory","components":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"contributor","type":"address","internalType":"address"},{"name":"trajHash","type":"bytes32","internalType":"bytes32"},{"name":"cid","type":"string","internalType":"string"},{"name":"score","type":"uint16","internalType":"uint16"},{"name":"paid","type":"uint128","internalType":"uint128"},{"name":"at","type":"uint64","internalType":"uint64"},{"name":"atBlock","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"licensePolicy","inputs":[{"name":"policyId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"licensePolicyFor","inputs":[{"name":"policyId","type":"uint256","internalType":"uint256"},{"name":"licensee","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"licensed","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxTaskEscrow","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"mintPolicy","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"licenceFee","type":"uint128","internalType":"uint128"}],"outputs":[{"name":"policyId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"passkeys","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPasskeyRegistry"}],"stateMutability":"view"},{"type":"function","name":"policyCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"policyOfTask","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"minted","type":"bool","internalType":"bool"},{"name":"policyId","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"runDigest","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"contributor","type":"address","internalType":"address"},{"name":"trajHash","type":"bytes32","internalType":"bytes32"},{"name":"cid","type":"string","internalType":"string"},{"name":"score","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"runsOnTask","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"shardHasRoom","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"who","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"slotsFilledOf","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"total","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"stats","inputs":[{"name":"who","type":"address","internalType":"address"}],"outputs":[{"name":"runs","type":"uint256","internalType":"uint256"},{"name":"earned","type":"uint256","internalType":"uint256"},{"name":"meanScore","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"submitTrajectory","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"trajHash","type":"bytes32","internalType":"bytes32"},{"name":"cid","type":"string","internalType":"string"},{"name":"score","type":"uint16","internalType":"uint16"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"trajectoryId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"submitTrajectoryFor","inputs":[{"name":"contributor","type":"address","internalType":"address"},{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"trajHash","type":"bytes32","internalType":"bytes32"},{"name":"cid","type":"string","internalType":"string"},{"name":"score","type":"uint16","internalType":"uint16"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"trajectoryId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"submitTrajectoryWithPasskey","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"trajHash","type":"bytes32","internalType":"bytes32"},{"name":"cid","type":"string","internalType":"string"},{"name":"score","type":"uint16","internalType":"uint16"},{"name":"verifierSig","type":"bytes","internalType":"bytes"},{"name":"pr","type":"bytes32","internalType":"bytes32"},{"name":"ps","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"trajectoryId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"taskCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"taskNonce","inputs":[{"name":"funder","type":"address","internalType":"address"},{"name":"p","type":"tuple","internalType":"struct ThenarProtocol.TaskParams","components":[{"name":"name","type":"string","internalType":"string"},{"name":"slots","type":"uint32","internalType":"uint32"},{"name":"rewardPerTrajectory","type":"uint128","internalType":"uint128"},{"name":"scenario","type":"uint8","internalType":"uint8"},{"name":"difficulty","type":"uint8","internalType":"uint8"},{"name":"expiresAt","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"taskTrajectories","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"totalEarned","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalRuns","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalScore","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"trajectoriesOf","inputs":[{"name":"who","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"trajectoryCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"trajectoryOfHash","inputs":[{"name":"trajHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"found","type":"bool","internalType":"bool"},{"name":"trajectoryId","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"trajectoryUsed","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"treasury","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"usdc","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"verdicts","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IThenarVerdicts"}],"stateMutability":"view"},{"type":"function","name":"verifier","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"weightOnTask","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"Claimed","inputs":[{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContributorPaid","inputs":[{"name":"policyId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"contributor","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Licensed","inputs":[{"name":"policyId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"licensee","type":"address","indexed":true,"internalType":"address"},{"name":"payer","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PasskeyRun","inputs":[{"name":"trajectoryId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"contributor","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDeferred","inputs":[{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PolicyLicensed","inputs":[{"name":"policyId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"paidOut","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"event","name":"PolicyMinted","inputs":[{"name":"policyId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"taskId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"contributors","type":"uint32","indexed":false,"internalType":"uint32"},{"name":"licenceFee","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"TaskCreated","inputs":[{"name":"taskId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"funder","type":"address","indexed":true,"internalType":"address"},{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"slots","type":"uint32","indexed":false,"internalType":"uint32"},{"name":"rewardPerTrajectory","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"scenario","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"difficulty","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"TaskExpired","inputs":[{"name":"taskId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"funder","type":"address","indexed":true,"internalType":"address"},{"name":"refunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TaskFilled","inputs":[{"name":"taskId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TaskFunded","inputs":[{"name":"taskId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TrajectoryAccepted","inputs":[{"name":"trajectoryId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"taskId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"contributor","type":"address","indexed":true,"internalType":"address"},{"name":"trajHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"cid","type":"string","indexed":false,"internalType":"string"},{"name":"score","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"paid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"VerdictNotRecorded","inputs":[{"name":"trajectoryId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"reason","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"AlreadyClosed","inputs":[]},{"type":"error","name":"AlreadyMinted","inputs":[]},{"type":"error","name":"AlreadySubmitted","inputs":[]},{"type":"error","name":"BadPasskeySignature","inputs":[]},{"type":"error","name":"BadSignature","inputs":[]},{"type":"error","name":"CapReached","inputs":[]},{"type":"error","name":"EscrowCapExceeded","inputs":[{"name":"wanted","type":"uint256","internalType":"uint256"},{"name":"cap","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EscrowEmpty","inputs":[]},{"type":"error","name":"InsufficientGasForVerdict","inputs":[]},{"type":"error","name":"NoPasskey","inputs":[]},{"type":"error","name":"NoPolicy","inputs":[]},{"type":"error","name":"NoSlots","inputs":[]},{"type":"error","name":"NoSuchTask","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotExpired","inputs":[]},{"type":"error","name":"NotFilled","inputs":[]},{"type":"error","name":"NotFunder","inputs":[]},{"type":"error","name":"NotVerifier","inputs":[]},{"type":"error","name":"NothingToClaim","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"ScoreTooHigh","inputs":[]},{"type":"error","name":"ScoreTooLow","inputs":[]},{"type":"error","name":"TaskClosed","inputs":[]},{"type":"error","name":"TooManyContributors","inputs":[]},{"type":"error","name":"Underfunded","inputs":[]},{"type":"error","name":"WrongNonce","inputs":[{"name":"expected","type":"bytes32","internalType":"bytes32"},{"name":"got","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ZeroAddress","inputs":[]},{"type":"error","name":"ZeroAmount","inputs":[]},{"type":"error","name":"ZeroReward","inputs":[]},{"type":"error","name":"ZeroSlots","inputs":[]}],"contracts":[{"name":"ThenarProtocol","address":"0xa8Ec6e8f33F5b5B980336a3cdd3BB799EEA38619","does":"Tasks, USDC escrow, trajectories, policies and licences. Records a run and pays for it in USDC in one call. submitTrajectoryFor is permissionless: anyone may pay the gas for someone else's run, because the verifier signature binds the task, the contributor, the hash and the score, so relaying moves who pays and forges nothing. createTaskWithAuthorization funds a task from a sponsor's EIP-3009 signature.","source":"contracts/src/ThenarProtocol.sol","surface":"/hub, /station, /task, /run, /leaderboard, /portfolio, /post","arc":"Escrows Circle's native USDC at 0x3600…0000 and pulls a sponsor's funding with USDC's own receiveWithAuthorization, so a task can be funded by a signature and relayed with gas paid in the same USDC."},{"name":"ThenarVerdicts","address":"0xe3A583c613B075E61e18da4bFB82b94888721a8e","does":"The verifier's public record: every paid run is written to Arc's ERC-8004 Reputation Registry against the verifier's agent id (tag runVerdict, value = score, feedbackHash = the run id).","source":"contracts/src/ThenarVerdicts.sol","surface":"/agents, /contracts, /run","arc":"Writes to the ERC-8004 Identity and Reputation registries Circle deployed on Arc."},{"name":"TrajectoryCertificate","address":"0x49082C4AB554003f9b517146a8265E208Ef5067B","does":"Soulbound token naming a run's recorder. Conveys no rights over the data.","source":"contracts/src/TrajectoryCertificate.sol","surface":"/contracts, /run"},{"name":"ContributionRecord","address":"0x9e38cA5E04c8135e6676D2C6633f9cB5747bE578","does":"A running total of work recorded, in a shape wallets already read. Cannot be transferred, sold or redeemed.","source":"contracts/src/ContributionRecord.sol","surface":"/contracts, /operator, /portfolio"},{"name":"CorpusShares","address":"0x4E8f310ffc70C9DcaA64f5CaDb5F20a50cE8482d","does":"The corpus as shares. Only an operator admitted with a passkey can hold one; each paid run issues its share by score, and USDC dividends from corpus sales pay whoever held at a record date fixed in advance.","source":"contracts/src/CorpusShares.sol","surface":"/corpus-token, /station"},{"name":"SalesLog","address":"0x8095Ea4D12620B4EC116F951C954702832fA6845","does":"Every corpus sale: x402, licence or Gateway, with the sha256 of the bytes served and the buyer's ERC-8004 agent id, so a buyer can check its copy on chain.","source":"contracts/src/SalesLog.sol","surface":"/agents, /api/agent/sales"},{"name":"CorpusManifest","address":"0x9cAF33dEcfab291D63D451e934eae410a09B0012","does":"One Merkle root per task over every accepted episode, committed by the verifier, every version kept.","source":"contracts/src/CorpusManifest.sol","surface":"/corpus, /api/task/{id}/manifest"},{"name":"CorpusAudit","address":"0x69b02DA6F64a2d5962Ef0b4710bAFd85D76e5bC0","does":"What the audit keeper found when it rebuilt each task's root from the episodes this server serves and compared it with CorpusManifest: matches, grown, short or altered.","source":"contracts/src/CorpusAudit.sol","surface":"/corpus, /api/task/{id}/manifest"},{"name":"ThenarCcipReceiver","address":"0x9bC7A8F90e8B26ca1135358938A5542cD9334b92","does":"Corpus licences bought from Base or Ethereum: CCTP V2 burns the buyer's USDC to this contract, Chainlink CCIP carries the order, and it licenses the policy on the buyer's behalf.","source":"contracts/src/ccip/ThenarCcipReceiver.sol","surface":"/buy, /contracts","arc":"Arc's CCIP lane and CCTP domain 26: the dollars and the message arrive separately and are matched here."},{"name":"PasskeyRegistry","address":"0x3a9D0CA0029905dc32f8036BA28DFF33080AC254","does":"Binds a secp256r1 public key to an address and verifies signatures through the P-256 precompile at 0x0100.","source":"contracts/src/PasskeyRegistry.sol","surface":"/passkey","arc":"Arc's P-256 precompile (EIP-7951) at 0x0100 checks a browser passkey's signature on chain."}],"external":[{"name":"USDC (Circle)","address":"0x3600000000000000000000000000000000000000","does":"Arc's native gas token, seen as an ERC-20 at 6 decimals. Every Thenar amount is in it; EIP-3009 lets a signature move it."},{"name":"Memo (Arc)","address":"0x5294E9927c3306DcBaDb03fe70b92e01cCede505","does":"Calls a contract as the transaction's sender and logs a memo id with it, so a payout says which run it paid for."},{"name":"ERC-8004 IdentityRegistry","address":"0x8004A169FB4a3325136EB29fA0ceB6D2e539a432","does":"Agent identities. Thenar's verifier and buying agents are registered here."},{"name":"ERC-8004 ReputationRegistry","address":"0x8004BAa17C55a88189AE136b182e5fdA19dE9b63","does":"Feedback on agents: ThenarVerdicts writes run verdicts, buying agents rate the corpus they bought."},{"name":"CCTP TokenMessengerV2","address":"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d","does":"Burns USDC on Arc to mint it on another chain: how an operator takes earnings to Base or Ethereum."},{"name":"CCTP MessageTransmitterV2","address":"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64","does":"Mints USDC on Arc for a burn attested elsewhere: how a CCIP licence order's dollars arrive."},{"name":"Gateway GatewayWallet","address":"0x77777777Dcc4d5A8B6E418Fd04D8997ef11000eE","does":"Holds a sponsor's unified USDC balance across chains."},{"name":"Gateway GatewayMinter","address":"0x2222222d7164433c4C09B0b0D809a9b52C04C205","does":"Mints a Gateway balance on Arc from Circle's attestation of a signed burn intent."},{"name":"CCIP Router (Chainlink)","address":"0xB79791184973589c38e114D43Eb8E4588C283A18","does":"Delivers cross-chain licence orders to ThenarCcipReceiver."}],"superseded":[{"name":"AxonProtocolV2 on Arc Testnet (ETHOnline 2026)","address":"0x6D6D6D0ee86C654b69646223049D6812c0218B2f","does":"The earlier Thenar-on-Arc build. Superseded by ThenarProtocol, which escrows Circle's USDC ERC-20 and reports every paid verdict to ERC-8004.","source":"contracts/src/AxonProtocolV2.sol (ETHOnline build)"}],"registry":"https://app.thenar.io/contracts"}