Every contract here is source-verified against its deployed bytecode — and runs on the only chain where an AI agent can hold bounded, revocable spending authority instead of your private key.
▸ agent reads the hub manifest — no HTML, no scraping ▸ requires ABI: createMandate, spend, revoke → 1/3 candidates qualify ✓ selected AgentSpendVault — capability-matched ✓ verified — bytecode keccak match vs eth_getCode ⚠ audited: none — UNAUDITED ▸ owner grants a bounded mandate (the one human decision) ✓ mandate #1: budget 3 CCC · per-tx ≤ 1 CCC ▸ agent spends autonomously — no human approves any payment ✓ paid 1 CCC for task 1 → merchant ✓ paid 1 CCC for task 2 → merchant ✗ chain rejected: 2 CCC > 1 CCC per-tx cap → PerTxExceeded() ▸ owner revokes — the agent is instantly powerless ✗ chain rejected: any spend after revoke → MandateInactive()
Not a recording. These mandates are read from CreditChain in your browser right now. Every agent below spent real value autonomously, then was revoked by its owner.
AgentSpendVault.mandate(id) —
call it yourself in Studio, no wallet needed.
You cannot hand an AI agent your private key. Every other catalog lists code and stops there.
Cards are generated from live chain data. The generator refuses to publish an unverified contract — the code cannot ship a lie.
Agents read agent.json and structured cards. The web page renders the same files — no second source of truth, no scraping.
An agent acts under an ERC-AGM mandate: budget cap, per-transaction max, rate limit, allowlist, expiry, instant revoke — enforced by the chain, not by trust.
Shor's algorithm recovers a secp256k1 private key from its public key — and every address that has ever sent a transaction has already published one.
A post-quantum key is worthless if it can only do what the classical key can — the attacker just uses the one they broke. Here the ECDSA controller has no withdraw function at all, cannot redirect recovery, and is capped per window. Only the quantum key sweeps and rotates.
WOTS+ (RFC 8391) over keccak256 — the same one-time signature inside NIST's SLH-DSA. Grover only halves the margin (~128-bit). keccak256 is already an EVM opcode, so verification needs no precompile and no consensus change: 2,144-byte signatures, 252,606 gas.
The Solidity verifier accepts a separately written Python implementation's signature bytes cold, and the signer reproduces its output byte-for-byte. Testing a verifier only against its own signer proves agreement, not correctness. 32 tests, unaudited.
▸ attacker holds a forged ECDSA controller key. what can it do? ✗ withdraw no such function exists in the ABI ✗ redirect recovery 0x98a838c8 AlreadyArmed() ✗ overspend 0x7afd1a0d OutflowExceeded(uint256,uint256) ▸ owner signs the break-glass digest OFFLINE with a hash-based key ✓ 2144-byte WOTS+ signature — relayed by a third party, not the owner ✓ every mandate revoked, balances pulled back guard 21 CCC → 0 recovery 0 CCC → 25 CCC ✓ controller rotated · guard frozen · one-time key burned ✗ replay same signature 0x56248192 GuardianConsumed()
Live at 0x63B76f6080f2CdF0bed1bD3999c5A34955956b3a — source-verified, bytecode hash matched.
Manage keys air-gapped with ccq, which writes no secret to disk, opens no socket
when signing, and never touches a secp256k1 key.
Most chains bolt agents on afterwards. CreditChain puts the agent's authority in the protocol, where it can be enforced instead of promised.
On every other chain, "let this agent pay for things" means handing over a key and hoping. On CreditChain a mandate is a first-class object with a budget, a per-transaction cap, a rate limit, an allowlist, an expiry and an owner kill-switch. The chain rejects what the mandate forbids — the agent's software cannot talk its way past it, and neither can whoever steals the agent's key.
AgentReputation only accrues from mandates an agent actually served, attested by the owner who funded them. It cannot be bought or self-declared. ReputationGate then lets an owner say "spend only if this agent's score clears my bar", checked at call time — so trust is a number derived from history, not a claim in a profile.
An agent asks capabilities.json which contract satisfies an intent, gets the required function set, and checks the answer against the ABI itself. No scraping, no model guessing which contract is right, no trusting our ranking. The hub can be wrong about a name; it cannot be wrong about an interface.
Coming from Remix? Everything you know still applies — CreditChain is EVM-equivalent. What changes is what you can build against.
Foundry, Hardhat, viem, ethers and Remix all work. Same Solidity, same JSON-RPC, same wallets. Point your existing config at the testnet RPC and deploy — nothing is forked, wrapped or re-specified.
Browser-based, no install, no key upload: pick a verified contract, call it through your own wallet, see the decoded result. It reads the same catalog an agent does, so what you test is what an agent will find.
A card is only generated after the source is matched against deployed bytecode. There is no "submit and describe" path, because a catalog that publishes what it cannot check is just a list. Verify first, then it appears.
Queried from your browser against the public RPCs — not a cached badge. This is the chain your contracts and agents run on.
querying
https://testnet.creditchain.org ·
faucet https://faucet.creditchain.org/testnet/drip ·
explorer scan.creditchain.org ·
machine-readable agent.json
Forge has no passwords, no email, and no user database — because it does not need one.
Search, read cards, verify provenance and use the agent API with no sign-in at all. A login wall on a contract catalog would destroy the trust it exists to provide.
Sign a message to prove you control an address. The address that deployed a contract owns its card — permissions are read from the chain, not from us.
An agent authenticates with a key scoped to its ERC-AGM mandate. Spend caps, rate limits and revocation already exist on-chain — no separate quota system.
personal_sign signature only — it is not a transaction and cannot move funds.
Sessions live in sessionStorage and vanish when you close the tab; nothing is stored on a server.
Seeded with the CreditChain agent-finance primitives. Every claim links to on-chain proof.