About Adnet
The verified advertising network — by GeistM, built with Epistery by Rootz.
Adnet is a verified advertising network. Each campaign is a smart contract on Polygon that holds its own budget, publishes its own rates, declares its own payment rule, and credits publishers directly for the engagement it settles. There is no back office holding the money or the numbers. The contract is the back office, and it is public. The counter has been replaced by a receipt.
By contract we mean a blockchain smart contract. Cryptocurrency is involved only in paying network fees to sign events into the contract; the blockchain provides the ledger. This is otherwise unrelated to the crypto industry.
The problem it removes
Digital advertising is the largest unaudited money flow in the consumer economy. Hundreds of billions of dollars pass every year through a stack in which the party counting the results is the same party paid by the count. Advertisers cannot verify what they bought. Publishers cannot prove what they delivered. Both are asked to trust an intermediary whose business is the gap between them.
For every dollar an advertiser spends through the incumbent stack, the publisher receives a fraction; the remainder is consumed by demand-side platforms, exchanges, supply-side platforms, data brokers, verification vendors, and fraud tools — with a large share classified by auditors as unattributable. This is not waste at the edges; it is the design. The advertiser receives impression counts, click rates, and conversion estimates, each defined and measured by the entity that profits from them. The publisher knows its traffic but not what it is worth, how the value was computed, or whether a payment arriving weeks later reflects what happened on its pages.
None of this is a missing feature. It is an interested intermediary occupying a role that belongs to a verifiable record. Remove the party with a reason to lie, and the problem does not need managing — it is gone. That removal is the whole of what Adnet does: not reforming the intermediary, removing it, and putting a public contract in its place.
Evidence, not trust
One principle runs through every layer: the system produces evidence; each participant applies its own policy. The advertiser declares, on-chain, which engagement it is willing to pay for. Epistery states what is verifiably true about the publisher and the context in which an interaction was recorded. Adnet executes and settles. No one in the middle holds a user profile or a thumb on the scale.
Technically: any W3C-compliant browser can uniquely and anonymously sign an event for a publisher to a campaign contract. The contract determines whether it pays the publisher — or even the browser. Scoped to a single view, online advertising becomes an open market in which participants present and trade in factors of trust that are asserted, not assigned.
The campaign is the contract
When an advertiser defines a campaign, the Factory deploys a CampaignContract on
Polygon. The contract holds the budget, the per-view and per-click rates, the promotions, the
destination links, and the campaign's declared payment rule. Once funded it is autonomous: no
operator at GeistM or anywhere else authorizes a payment. The contract is the source of truth —
not a mirror of one. Any cache the Factory keeps is exactly that, a cache, with the contract
winning every disagreement.
What cannot happen in this model:
- No party can redirect or withhold a credited publisher balance —
withdraw()pays the publisher directly. - The budget cannot be spent without corresponding settled engagement — every settlement is capped at the remaining budget.
- The reported numbers cannot diverge from the settled numbers — they are the same numbers.
Two roles, no god role
A campaign has exactly two authoritative roles, sharing administration: the advertiser, who owns and funds it, and the agency, who brings it to market and operates it. In practice Adnet fills the agency role — but it is not a privileged identity baked into the code. Both roles are simply addresses. There is no super-admin and no back door. A publisher is a named payee, not a member of an on-chain allowlist: it earns a balance on the contract and withdraws it.
This matters: the architecture does not ask the market to trust GeistM. It asks the market to trust a contract, and lets GeistM compete for the agency role like anyone else.
Publishers join by declaring themselves
A publisher adopts Adnet by loading the client script and, optionally, pointing a
_adnet.<domain> CNAME at the Factory so Adnet's calls run first-party. The
CNAME is a lax but real delegation: by creating that record the publisher authorizes Adnet to
attribute engagement to its domain. No private key is ever handed over — where a publisher can
sign its own data it does; where it cannot, the agency signs and extends correspondingly less
trust.
Publisher identity is self-declared through a /.well-known/ai manifest and
indexed — not minted — by Epistery Scan. "Verify your
domain" means Scan confirming the declaration is actually served from the domain it claims. Adnet
looks a publisher up in Scan at settlement time; it does not own or issue publisher identity.
Proof of origin
Every attribution system rests on an assertion of where: this view happened on this page, this click left from this site. In the incumbent stack that assertion is unverifiable at its root. Adnet turns the browser's own security model into the publisher's proof.
A modern browser will mint an unextractable private key as silently as it sets a cookie. Epistery does exactly this on every participating page: the key is generated inside the browser's own store, cannot be exported, and is scoped to the origin that minted it — a boundary stricter than the cookie's. One address, one origin, for the life of the key, enforced by the same browser vendors who locked the cookie to its domain.
A signature proves who signed, never where — so the domain itself supplies the proof. When a device key is first exchanged with a publisher's host, the domain's wallet countersigns it: a small, durable origin certificate binding this device address to this domain. Every event the device signs travels with it, and verification is mechanical:
- the signature binds the event to a device — this content, this moment, this key;
- the certificate binds the device to a domain — countersigned by the domain's own wallet;
- the manifest binds the domain to its on-chain identity — the signed
/.well-known/aideclaration; - Scan binds the identity to its history — the rung, the DNS and chain bindings, the observed age and record.
An advertiser auditing a settled batch is not reading a vendor's fraud score; it is walking a chain of signatures from one click down to a domain's whole public standing, and anyone else who walks it reaches the same place.
Fraud becomes a signed liability
Stated honestly: cryptography does not prevent a publisher from fabricating devices. A script in a data center can mint keys all day. Adnet's fraud tooling watches for that chaff at the pattern level — but detection is the lesser tool. The greater one is that the certificate inverts who bears the risk: every fabricated event arrives countersigned by the publisher's own domain wallet. The publisher does not merely commit fraud, it signs it, with the same identity that anchors its Scan standing, its settlement history, and its right to be paid. Reputation here is not a score assigned by a platform; it is capital accumulated in public, and burning it is permanent, attributable, and admissible. The incumbent stack asks can we catch the liar? This one asks the liar to notarize the lie.
Why the data is different in kind
Adnet's data is independently verifiable; the incumbent platforms' data is a representation by an interested party. These are not two grades of the same thing.
- Settlement proof. Every payment is a blockchain transaction; the advertiser confirms, with no relationship to GeistM, that the amount paid matches the events settled.
- The contract is the ledger. Spend against budget and each publisher's balance are on-chain; the numbers reported and the numbers settled are one set of numbers.
- Declared, auditable rules. What an advertiser pays for is a rule on the contract, visible to anyone, with denied events retained as evidence — never silently deleted.
- Per-publisher, per-context attribution. Engagement is anchored to the contract with the publisher's domain and Scan standing, device, browser, referrer, and the view→click impression link.
- No PII, no cross-site profile. Attribution is to a publisher domain and, at most, a best-effort first-party continuity id. Continuity is evidence, never identity.
- Facts, not a score. Scan renders no verdict; the advertiser's rule turns verifiable facts into a payment decision anyone can recompute.
Reach, here, is the count of distinct attributed publisher-scoped participants behind verified engagement. A participant's address exists only on the publisher's domain, so reach cannot be inflated by fusing audiences across sites. A smaller number that is true is worth more than a larger one that cannot be checked.
And attribution stops being adversarial. When a view, a click, and a purchase are each signed by a device provably on a specific domain, attribution is no longer an invoice from an interested party — it is the sponsor's own evidence of what worked, auditable in its books and portable across every agency it will ever hire. The publisher is restored to what it actually is: the party that convened the audience, whose identities exist only on its domain and cannot be claimed, aggregated, or resold by a cross-site graph.
What this is
Advertising's problem was never a shortage of data. It was the absence of a party with no reason to lie. Adnet supplies one — not a company, but a contract. The role the intermediary held — holding the money, holding the count — is now held by a public object that cannot misreport, cannot withhold a credited balance, and cannot be asked to look the other way. The advertiser sees exactly what it paid for. The publisher holds a receipt for exactly what it delivered. The receipt exists whether or not anyone demands it. That is the whole of the idea, and it is enough.