Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rodeo-Artist-Data

Artist credits for the Rodeo.club contracts on Base, cross-referenced from every source that has any, in one file anyone can use.

Rodeo was a platform where artists published 24-hour open editions. The company went under and the site went offline on 10 March 2026. The contracts are still on-chain and always will be, but they never carried artist credits — attribution lived only on Rodeo's front end. When the servers went dark, every artist who published there lost the credit for their own work.

Different public sources hold different pieces of the answer — rodeoart.lol, raster.art, OpenSea, ENS, Basenames, Farcaster — and no single one has all of it. This repository is the cross-reference: one row per artist wallet, every name every source has for it, with the source and the date attached. More sources will turn up, and the format is built to take them.

It is a living document. Blanks stay blank until someone fills them in, and filling one in takes a pull request with one changed line.

The files

Path What it is
data/credits.jsonl the dataset. One JSON object per wallet, one line each.
data/credits.csv the same rows flattened to one line per credit, for spreadsheets. Derived — never hand-edit it.
data/coverage.md what each source actually returned, regenerated with the data.
community/credits.jsonl hand-contributed credits. The generator never writes here.
generated/credits.jsonl machine output. The generator overwrites this on every run.

data/credits.jsonl is generated/ plus community/, merged. That split is deliberate: it is why re-running the generator does not eat contributed credits.

A row

{"wallet": "0x0000ce08fa224696a819877070bf378e8b131acf",
 "slugs": ["@aaronjmars.eth"],
 "contracts": ["0xb7e9e023d12e69f484534555e2ccea18079fcf4e"],
 "posts": 1,
 "first_post": "2025-01-09T11:22:43.000Z",
 "last_post": "2025-01-09T11:22:43.000Z",
 "credits": [
   {"source": "rodeoart.lol", "name": "aaronjmars.eth", "kind": "basename",
    "display": "Aaron Elijah Mars", "farcaster": "aaronjmars.eth",
    "observed_at": "2026-08-06"},
   {"source": "ens", "name": "aaronjmars.eth", "forward_verified": true,
    "observed_at": "2026-08-06"},
   {"source": "basename", "name": "aaronjmars.base.eth", "observed_at": "2026-08-06"}],
 "updated_at": "2026-08-06"}

Every source's answer is kept, and none is marked the winner. There is no "best name" field and there will not be one. Which source you trust depends on what you are building, and baking one fall-through order into the data would push our product opinion into everyone else's. It also keeps each upstream source's terms attributable to that source.

Rows are keyed by wallet, because Rodeo deployed one contract per artist (EIP-1167 minimal-proxy clones of a single implementation) and one artist may have deployed several. A contract therefore maps to exactly one artist, and no per-token disambiguation is needed.

credits may contain more than one entry for the same source. That is not a bug — it is Raster crediting two different artists across a wallet's contracts, and you should see that rather than have us pick.

A name of null means that source was asked and had nothing, not that no name exists. A source missing from credits entirely means it was not asked.

A credit marked "placeholder": true is a name that is really just the wallet address in disguise: an OpenSea username auto-minted from the address (0x232d1), a Basename registered as the address (0x70b7.base.eth), a Farcaster id that never resolved to an fname (!23134). They are kept because they are what the source said, but they attribute nobody and the coverage numbers do not count them.

What is actually in here

14,245 artist wallets, 15,323 contracts, 303,781 posts.

wallets
carry a name from at least one source 6,275 (44.1%)
rodeoart.lol could already name 6,169
named here that rodeoart.lol could not name 106
still unnamed, holding 119,857 posts between them 7,970

Full breakdown per source in data/coverage.md.

The honest read: the remaining gap is hard. The 7,970 unnamed wallets are unnamed because they have no presence on any of these platforms — most of them do not have an OpenSea account at all, and the account endpoint returns a flat 404 rather than an empty profile. Raster names 11.1% of all wallets but only 0.5% of the ones rodeoart.lol could not name, and OpenSea 31.7% against 0.8%. Every automated source is far better at the artists who were already findable. That is not a reason to skip the machine pass — it produced the 44% baseline and it is what makes the gap measurable — but closing the rest is going to be people who know, one credit at a time.

A blank is worth re-asking. People set an OpenSea username, register a Basename or get credited on Raster long after the work was minted. Re-asking only the entries that came back empty is cheap, and the first time it was run — three days after the first full pass — it turned up 28 names that had not been there before, 23 of them from Raster. scripts/resolve.py --refresh-empty does exactly that and leaves everything already named alone.

The sources

source What it is Extra fields
rodeoart.lol A public archive of the Rodeo contracts: every factory-deployed contract, every mint event, and an artist directory built on top. Supplies the wallet and contract list this dataset is keyed on. kind, display, farcaster
raster raster.art's human-curated art credits, queried per token. slug, contracts
opensea The OpenSea account profile for the wallet. Generic identity rather than art-specific, so it is broad. display, ens_name
ens Ethereum mainnet reverse resolution. Rodeo was on Base, but the same wallet exists on Ethereum — that hop is where a lot of the names are. forward_verified
basename Base L2 reverse resolution against the Basenames resolver.
farcaster The current fname for the Farcaster id rodeoart.lol tied to the wallet, read from the fname registry. fid
community Contributed by hand, by a named person or project. by, note, evidence

A community credit may also name its own contracts, which is how a Rodeo contract the archive does not cover gets into the file at all.

Every credit may also carry placeholder: true — see above.

arts.haus appears as a community byline rather than as a source. Its credits were themselves pulled from OpenSea, Raster and objkt, so asking it asks a derived copy of what this dataset already queries directly, and its coverage is shaped by one collector's holdings rather than by Rodeo. Only the credits it holds that no upstream source has were imported.

Reading kind

kind is rodeoart.lol's own statement about how it got the label, and it is the most useful field in the file for deciding what to trust:

kind Meaning
handle a real Rodeo handle
basename a Basename or ENS name, resolved through Web3.bio
wallet_placeholder no name. The label is a truncated address.
fid_placeholder no name. Only a Farcaster id was found.

The two placeholder kinds are the gap this dataset exists to close.

Caveats worth knowing

  • ens names are self-asserted. A reverse record is set by the address owner. forward_verified: true means the name resolves back to the same address, which makes it a two-way claim; false means it does not, and you should treat it as weaker.
  • opensea username is an account name, not necessarily an artist name.
  • raster is queried by token, never by wallet. Raster's address() field resolves a claimed collector profile, which is a much narrower thing and credits roughly four times fewer contracts.
  • A missing token is not a missing credit. Only contracts with at least one archived post are in this dataset, so every contract here has a real token behind it. rodeoart.lol reports 7,578 contracts deployed but never used; those have nothing to credit and are not here.
  • The spine is 98.91% of Rodeo, not all of it. A few contracts have no folio behind them, so posts is 0 and slugs is empty even though the contract is real. Those rows exist because someone contributed the credit by hand and named the contract themselves.

Rebuilding it

Python 3.9+, no third-party packages.

cp .env.example .env      # fill in RASTER_API_KEY, OPENSEA_API_KEY, ALCHEMY_API_KEY
python3 scripts/fetch_spine.py            # pull the spine from rodeoart.lol
python3 scripts/resolve.py --source all   # ask every source about every wallet
python3 scripts/build.py                  # write data/

Every fetch is cached in cache/cache.sqlite, so all three are resumable and re-running one costs nothing for what it already has. scripts/resolve.py --source raster runs a single source; --retry-failed picks up the ones that errored. The full run takes a few hours, mostly waiting on rate limits.

To bring an existing build up to date, re-ask only the blanks:

python3 scripts/resolve.py --source all --refresh-empty
python3 scripts/build.py

A refetch that errors keeps whatever was cached, so a re-ask can only add.

On crediting people

The unit of value here is crediting an artist for their work. That is not doxxing anyone. These works were published with credit, under names the artists chose, on a public platform. The credit was lost when a company's servers went dark. Restoring it is the whole point.

If you are an artist and you want your name changed or removed from this file, open an issue or a pull request and it will be done.

Citations

Every source is public and is read as published, not re-derived:

  • rodeoart.lol — factory-deployed contracts, mint events, and the artist directory. Published methodology and totals at rodeoart.lol/integrity.
  • raster.art — per-token art credits, via api.raster.art.
  • OpenSea — account profiles, via the v2 API.
  • ENS and Basenames — read from Ethereum mainnet and Base directly.
  • Farcaster — the fname registry at fnames.farcaster.xyz.

The list is open by design. More sources will exist, and adding one is a function in scripts/resolve.py — see CONTRIBUTING.

License

CC0 1.0 — public domain. Take it, fork it, build on it. Attribution to the upstream sources is recorded per row so you can pass it along, and doing so is the decent thing even though the license does not require it.

About

Artist credits for the Rodeo.club contracts on Base, cross-referenced from every source that has any. Rodeo's contracts never carried credits on-chain; this restores them. CC0.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages