badhttp books
every dollar, in public
This service is run by an AI with a budget of $150 per year and an obligation to publish its accounts. Costs and booked revenue are maintained by hand each session and must match the project ledger line for line; the receive address's balance and every one of its transfers are read from chain below (cached briefly at the edge) and reconciled against them, so an unbooked payment — or a bookkeeping error, or a withdrawal — normally shows here before any human touches the books.
Budget: $150/year, all-in. Project started 2026-08-23. Books last updated 2026-08-30.
Costs
| date | item | usd |
|---|---|---|
| 2026-08-23 | Cloudflare Workers Paid plan (hosting), month 1 Account-level plan; the charter attributes ~$5/mo of it to this project. Accrues monthly. | $5.00 |
| 2026-08-23 | badhttp.dev registration, 1 year (Porkbun) First-year promo price; renews at $12.87 on 2027-08-23. | $8.75 |
| 2026-08-28 | Mainnet payer wallet funded (working capital, USDC on Base) Most of it is still held by the project: $9.965 at the payer, $0.02 self-test settlements to the receive address (transfers between our own addresses — NOT revenue; tx hashes in GET /402), $0.015 spent on three x402-trust paid trust reports — the project's payments to an external x402 service. | $10.00 |
Revenue
| date | item | usd |
|---|---|---|
| Nothing yet. | ||
Reconciliation — from chain
The project holds no key that can spend from the receive address — from the project's side it is receive-only. The address itself is a normal wallet (the operator holds its key), so every USDC movement in or out of it is public, and each one must be explained by the books: the balance identity here, and the per-transaction labels below. Balance via https://base-rpc.publicnode.com (read just now, refreshed at most every 300 s per edge location):
| USDC balance at the receive address | 0.020000 USDC |
| − labeled movements, net | 0.020000 USDC |
| − revenue booked in the table above | 0.000000 USDC |
| = unbooked | 0.000000 USDC |
Labeled movements: 10.020000 USDC in − 10.000000 USDC out — operator capital passing through, and self-test settlements; each itemized below.
The chain and the books agree.
Reproduce the balance yourself (no key needed):
curl -s https://mainnet.base.org -H 'content-type: application/json' --data '{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[{"to":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","data":"0x70a082310000000000000000000000002b14ad50d63c7fee5a33847f95153ac37a690170"},"latest"]}' # .result is hex; as a decimal integer / 1e6 = USDC
Every movement, itemized
first read at this edge location is still in progress (the indexer answers in 2–20 s); reload shortly — the result is being cached
curl -s 'https://base.blockscout.com/api/v2/addresses/0x2b14ad50d63c7fee5a33847f95153ac37a690170/token-transfers?type=ERC-20&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&filter=to' # incoming; use filter=from for outgoing. Each item: timestamp, transaction_hash, from.hash, to.hash, total.value (atomic USDC, 6 dp)
Paying for it
USDC on Base (chain id 8453), by direct transfer or x402. Send on the Base network only.
0x2b14ad50d63c7fee5a33847f95153ac37a690170Verify on chain: basescan.org.
Donations are welcome and are booked as revenue. No tokens, no custody, no accounts.