Monorepo for Aesthetic.Computer aesthetic.computer
README.md

whistlegraph/codes #

The WhistlegraphCodes ERC-721 — the token surface of the Funding Codes architecture (RFC: papers/arxiv-funding-codes/, proposal: reports/whistlegraph-org-funding-codes.md).

The code IS the token: a bare lowercase string (imab, grow, ppl) packs left-aligned into a bytes32 and that word is the tokenId. Same string = URL slug (whistlegraph.org/imab) = ENS subname (imab.whistlegraph.eth). No $ sigil — that belongs to KidLisp and its Tezos story.

Layout #

  • src/WhistlegraphCodes.sol — self-contained ERC-721 + EIP-2981 (10% default royalty), owner-published codes, payable mint, mintTo for first-edition claims and the reserve set, ownerOfCode(string) for funding-code drop tooling. No external dependencies; every line reviewable.
  • test/WhistlegraphCodes.t.sol — 21 Foundry tests (bijection, publish/ mint/payment, transfers/approvals, safe-receiver, royalties, withdraw, interfaces, owner handoff). forge test — all green as of scaffold.
  • script/Deploy.s.sol, script/PublishTen.s.sol — deployment + seeding the Ten Whistlegraphs codes (imab l8ly grow idni ppl wiyh lonr sdog w0w puzz).
  • lib/forge-std — vendored plain clone (NOT a submodule; keep it out of the AC repo index).

Deploy path #

  1. Base Sepolia rehearsal: forge script script/Deploy.s.sol --rpc-url https://sepolia.base.org --broadcast with PRIVATE_KEY from the vault wallet export (never stored here). Mint a couple of codes, check them on the testnet explorer.
  2. Base mainnet: same with https://mainnet.base.org; deployer should be whistlegraph.eth (0x238c9c645c6EE83d4323A2449C706940321a0cBf), which becomes owner + royalty receiver.
  3. PublishTen at the chosen price; verify on Basescan (forge verify-contract).

OrgStar — the patronage sibling #

src/OrgStar.sol — the ORGSTARS open edition (RFC: ORGSTARS-RFC.md). Same house style: self-contained, no libraries, ERC-721 + EIP-2981. Flat price, no cap, no utility; a star does nothing but shine.

The art is fully on-chain — tokenURI returns a base64 data URI wrapping an SVG built from the minting wallet, so there is no host to rot the way rdp.whistlegraph.com did, and no IPFS pin to keep alive. The birth wallet is recorded at mint and never changes, so a star keeps its face after it trades.

whistlegraph.org/stars draws the same sky from mint logs using the same FNV-1a hash of the same lowercase 0x… string. test_StarHashMatchesThePage pins the three reference values the page produces — if that test ever fails, the sky and the chain have drifted apart.

  • test/OrgStar.t.sol — 24 Foundry tests (minting, open edition, birth-wallet permanence, page/chain hash agreement, self-contained art, constellation year boundaries, transfers/approvals, safe-receiver, royalties, withdraw, interfaces, owner handoff). forge test — 46 green across both suites.
  • script/DeployStar.s.sol — STAR_PRICE (default 0.01 ether), prints the address and deploy block to paste into stars.html.
  • Runtime size 11,745 B — roughly 3M gas, about $0.04 on Base at the 0.005 gwei base fee measured 2026-09-01.

After deploying, set contract and deployBlock in the CHAINS block of system/public/whistlegraph.org/stars.html. Until then the page renders an honest empty sky and says the contract is not deployed.

Still to build (next passes) #

  • tokenURI endpoint: https://whistlegraph.org/api/codes/{code} serving ERC-721 metadata JSON from the site's graphs.json (1,084 coded works)
  • Mint page on whistlegraph.org/{code}: wallet-connect + mint(code) with priceOf read. Static JS; the site is static files on lith.
  • ENS: url/avatar records on whistlegraph.eth (mainnet gas needed), then per-code subnames — evaluate a CCIP-read offchain resolver served by lith so subnames are free.
  • Funding-code drops: per-release claim + 0xSplits wiring (separate contracts; this one stays minimal).

Human steps before mainnet #

  • Fund whistlegraph.eth: ~$50 ETH mainnet gas (ENS) + ~$20 on Base (deploys + publishes).
  • builderscore.xyz signup with the same wallet (Base Builder Rewards).
  • Per-transaction approval on every broadcast — nothing signs unattended.