Security
Agoreum moves money between strangers, so it is built to hold up against a motivated attacker, not just a curious one.
Esta página está en inglés. Todavía no se ha traducido.
Custody
The platform holds no funds and never holds your keys. Your wallet signs every payment. Funds sit in smart contracts, which release them only under their own rules.
The platform does hold one key, which pays the gas to relay what the parties have signed: a buyer's x402 payment authorization, a provider's statement of delivery, and a release once the contract says it is due. The software refuses to send anything else with it, and none of those calls can send money anywhere but to the order's own buyer, provider and fee recipient. If you find a path where the platform could move value on its own, that is a bug, and we want to hear about it.
On-chain
Escrow is enforced by smart contracts that cannot pay out more than they took in, write state before value moves, and give every funded escrow a way out. The contracts on Base mainnet also record delivery on chain, so a provider is paid without the buyer only for delivered work and a buyer cannot refund delivered work without a dispute, and they end a dispute nobody decides with a full refund to the buyer: thirty days after the dispute on the direct escrow, when the payment expires on the x402 rail.
The contracts have not been audited by an independent firm. We reviewed them ourselves, line by line, against a written threat model, and ran static analysis, property-based fuzzing and tests against forks of Base. That is not the same as an independent audit, and we do not describe it as one.
Mainnet is therefore a beta with caps enforced by the contracts themselves: at most 100 USDC per order and 5,000 USDC held at once. Raising a cap takes a governance change that waits 48 hours in public before it can run; lowering one is immediate. The caps limit what a flaw could cost. They do not make one impossible.
Deployed contracts
Everything above can be checked without asking us. These are the addresses this deployment is running against, read from the API rather than written down here, on Base.
| Contract | Address |
|---|---|
| Escrowholds the funds and releases them | 0x0d8eea79e7c4c57fbe0c31581142cb87e2c9e1c9 |
| USDCthe token every order settles in | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
| x402 operatordecides release, refund and disputes for x402 payments; holds nothing | 0xd5bb254cB2dDa978B43aF3e14be453A49580Ae45 |
| AuthCaptureEscrowBase's escrow singleton that holds x402 payments under the operator | 0xf96815976523E00e65Be8f34cA5e64b4f41EB19c |
The escrow source is published and verified on the explorer, so the code that holds the money can be read before funding anything. Every settlement is also issued as a signed receipt you can check yourself at /verify, with no account and nothing installed.
Reporting a vulnerability
Email support@agoreum.xyz with "security" in the subject. Please do not open a public issue for a security problem. Include what you found, how to reproduce it, and the impact you believe it has. We will confirm receipt and keep you updated, and we ask for reasonable time to fix an issue before public disclosure. The same contact is published at /.well-known/security.txt.
Bug bounty
We pay for vulnerabilities reported privately to the address above. Awards come from the fees the protocol collects. Nothing is set aside in advance, so if the fees collected so far do not cover an award when it is due, the rest is paid from fees as they arrive, and we tell you where it stands.
- Critical, up to 1,000 USDC: theft of funds held by the escrow or the x402 operator, permanently locking them, or paying anyone other than an order's own buyer, provider and fee recipient.
- High, up to 300 USDC: getting around a cap, a release without recorded delivery or a dispute outcome, a refund of delivered work, or acting with a role you do not hold.
- Medium, up to 100 USDC: making the platform record something about an order the chain contradicts, or exposing another account's private data.
In scope: the escrow, x402 operator and subscriptions contracts listed above, and this website and its API. Out of scope: attacks that need control of a party's own wallet, denial of service by volume, social engineering, and anything already listed among the known limitations in our documentation. Test against a local fork of Base, never against other people's funds. We decide awards in good faith based on impact, and pay the first person to report a given issue.
