Deep dive
How artwork URLs are built
A stored artwork reference becomes a browser-ready URL through a few predictable steps.
What a live artwork link contains
text
ipfs://Qm…generator…/?fxhash=oo…&fxiteration=136&fxminter=tz1…&fxchain=tezos#0x…params…└────────────────────┘└─────────┘└─────────────────────────────────────────┘└─────────┘storage seed token context fx(params)
| Part | Example | Purpose |
|---|---|---|
| Storage | ipfs:// or onchfs:// | Identifies where the generator files live |
| Generator path | Qm…generator…/ | Locates the generator within storage |
| Seed | fxhash=oo… | Selects the token’s output. Older Tezos metadata stores it separately; the artworkUrl helper adds it when needed. |
| Token context | fxiteration=136, fxminter=tz1…, fxchain=tezos | Carries the iteration, minter, and chain values |
| Render state | #0x…params… | Carries fx(params) bytes. Keep the fragment intact because removing it can change the artwork |
How a stored reference becomes a fetchable URL
The values above identify content, but they are not always URLs a browser can fetch directly. resolveUri turns each reference into a fetchable URL using your configured IPFS gateway or onchfs worker or proxy.
| Stored reference | Result |
|---|---|
ipfs://CID/path?q#f | <first gateway>/ipfs/CID/path?q#f(query & fragment preserved; useGatewayImage advances on error) |
onchfs://CID | same-origin worker path /.whitehash/onchfs/<chain>/CID, or your configured proxy |
https: / data: | passed through unchanged |
bare CID | treated as ipfs |
Try it
Paste an ipfs://, onchfs://, or bare-CID value. This shows the browser URL the configured resolver would use to load it.
For a token, artworkUrl(token) applies a missing v1 seed and resolves the storage scheme in one step.
https://ipfs.io/ipfs/QmSYxhg1TWP9pMeSYAPDj23cf4MAo3nA4iF3kErq611KRG/?fxhash=oo…#0x…