the toll · answering 402 now
Tolls, not Turing tests.
A captcha is a ritual to prove you are not an agent. Captcha farms already sell that proof at $0.001 to $0.003 each, which agents pay today to lie about their species. A toll charges the same to come in telling the truth, and lets anyone with a wallet through, person or agent.
/toll/data costs 0.005 USDC on Base Sepolia, test money, paid over x402. No captcha, no account, no key.
Sunday 18 October
9:41
Pay 0.005 USDC to authz.space
the terms
what the server sends
Ask for https://authz.space/toll/data without paying and it answers 402 Payment Required. Its price is data in a header, not words on a page: PAYMENT-REQUIRED, base64 JSON. This is the header the live server sent when this page was built.
HTTP/2 402
content-type: application/json
payment-required: eyJ4NDAyVmVyc2lvbiI6MiwiZXJyb3IiOiJQYXltZW50IHJl…{
"x402Version": 2,
"error": "Payment required",
"resource": {
"url": "https://authz.space/toll/data",
"description": "Today's toll data: proof that a price can stand where a captcha stood",
"mimeType": "application/json"
},
"accepts": [
{
"scheme": "exact",
"network": "eip155:84532",
"amount": "5000",
"asset": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
"payTo": "0x7432188ed7c7b7aAb0E61772f9FCd0B3cd665558",
"maxTimeoutSeconds": 300,
"extra": {
"name": "USDC",
"version": "2"
}
}
]
}read as a person would
- price
- 0.005 USDC
- in atomic units
- 5000, 6 decimal places
- network
- Base Sepolia · eip155:84532
- token
- USDC · 0x036C…CF7e
- paid to
- 0x7432…5558
- scheme
- exact, one signed transfer
- time to pay
- 300 s
exact on EVM is an EIP-3009 transfer authorization: the payer signs the amount, the recipient, a validity window and a nonce. A facilitator settles it and pays the gas, and can change neither the amount nor the recipient.
paying it
one command, one touch
An agent, a script or a person at a terminal pays it with the same line:
authz ask --pay https://authz.space/toll/data --wallet <ref>Pay for authz.space?
0.005 USDC on Base Sepolia (test)
from your wallet 0x3399…D413
to 0x7432…5558
<ref> names a wallet key kept in 1Password under a signing rule. Authz reads its address and asks for one signature; the key itself never leaves the secrets helper.
no wallet
the other door
A person without a wallet comes through free. Nothing to solve: one press, and an invisible check that a person is at this page (Vercel BotID). An agent that fails it pays at the toll instead, telling the truth.
step by step
from 402 to the data
- 01
402
Authz fetches the resource. It answers 402 with its terms, and Authz picks the offer it pays: exact, USDC on Base.
- 02
the transfer, fixed whole
Before anyone is asked, every byte to sign is settled: your wallet's address, the payee, the amount, a random nonce, and a window long enough to answer in plus the server's timeout.
- 03
the ask
“Pay for authz.space?” reaches whichever device you are at. The amount comes first, and the yes reads “Pay 0.005 USDC”.
- 04
Touch ID
A payment's yes is always verified: a finger on the Mac, Face ID on the iPhone, signed by a key in the Secure Enclave.
- 05
one signature, released
The secrets helper checks that the yes approved exactly these bytes, for this key, and signs that one transfer. Anything else would be asked on its own.
- 06
paid
Authz fetches again with the signature in
PAYMENT-SIGNATURE. The facilitator verifies and settles it, the server answers with the data, and the transaction goes on the request's receipt.
on chain
paid once, on chain
The first payment went through this flow on 2026-10-18, against the toll's first address on Cloudflare Workers: one Touch ID, then the balances read back from the chain, 19.995 and 0.005.
a retry never pays twice
Authz sends each payment with an id (x402's payment identifier) and retries with the same signature; the toll answers a repeat with its first answer, and the transfer's one-use nonce stops a second charge on chain.
where it stops
Most uses of proof of personhood are anti-spam, and anti-spam needs a price. Where one person, one vote is the point, a toll does not replace it.