Problem
The Set Stone contract on Arbitrum (0x39269b3FddFc9bf0626e5CFe4424aa51A77f7678) has a baseURI of https://justinholmes.com/setstones/ but no metadata is being served at that location.
Current state:
- Contract
baseURI(): https://justinholmes.com/setstones/
- Contract
tokenURI(1): https://justinholmes.com/setstones/1
- Actual response: 404 Not Found
- Stones minted: 5
Root Cause Analysis
The build system generates JSON metadata to {outputDir}/setstones/{tokenId} (see src/build_logic/setstone_utils.js:217), but:
- The contract was deployed with
justinholmes.com as the base, not cryptograss.live
- Even
https://cryptograss.live/setstones/1 returns 404 - the JSON isn't being deployed to production
The metadata generation code exists and produces valid ERC721 metadata:
const metadata = {
name: `Set Stone for show ${showId}`,
external_url: `https://justinholmes.com/cryptograss/bazaar/setstones/${showId}.html`,
description: `Set Stone from artist with id=${show.artist_id} and show on ${show.blockheight}`,
image: `https://cryptograss.live/assets/images/setstones/${set.shape}-${color1}-${color2}-${color3}.png`,
attributes: [...]
};
Impact
- OpenSea, Rarible, and other marketplaces cannot display Set Stone NFTs properly
- No images, names, or attributes visible on marketplaces
- NFT explorers (Arbiscan) show broken metadata
Proposed Solutions
Option A: Fix deployment to match contract
- Configure web server to serve JSON from
justinholmes.com/setstones/
- Ensure build artifacts are deployed to justinholmes.com
- Verify Content-Type headers return
application/json
Option B: Update contract baseURI (if possible)
- Check if contract has
setBaseURI() function
- Update to
https://cryptograss.live/setstones/
- Ensure cryptograss.live deployment includes the JSON files
Option C: Server-side redirect
- Add redirect from
justinholmes.com/setstones/* to cryptograss.live/setstones/*
- Ensure cryptograss.live serves the JSON
Files Involved
src/build_logic/setstone_utils.js:183-217 - Metadata generation
src/build_logic/primary_builder.js:356 - Build invocation
src/build_logic/constants.js - Contract address
src/abi/setStoneABI.js - Contract ABI (check for setBaseURI)
Acceptance Criteria
Labels
bug, nft, lone-star-release
Problem
The Set Stone contract on Arbitrum (
0x39269b3FddFc9bf0626e5CFe4424aa51A77f7678) has abaseURIofhttps://justinholmes.com/setstones/but no metadata is being served at that location.Current state:
baseURI():https://justinholmes.com/setstones/tokenURI(1):https://justinholmes.com/setstones/1Root Cause Analysis
The build system generates JSON metadata to
{outputDir}/setstones/{tokenId}(seesrc/build_logic/setstone_utils.js:217), but:justinholmes.comas the base, notcryptograss.livehttps://cryptograss.live/setstones/1returns 404 - the JSON isn't being deployed to productionThe metadata generation code exists and produces valid ERC721 metadata:
Impact
Proposed Solutions
Option A: Fix deployment to match contract
justinholmes.com/setstones/application/jsonOption B: Update contract baseURI (if possible)
setBaseURI()functionhttps://cryptograss.live/setstones/Option C: Server-side redirect
justinholmes.com/setstones/*tocryptograss.live/setstones/*Files Involved
src/build_logic/setstone_utils.js:183-217- Metadata generationsrc/build_logic/primary_builder.js:356- Build invocationsrc/build_logic/constants.js- Contract addresssrc/abi/setStoneABI.js- Contract ABI (check for setBaseURI)Acceptance Criteria
curl https://justinholmes.com/setstones/1returns valid JSON metadataimageURL that resolves to actual PNGLabels
bug,nft,lone-star-release