Problem
The Blue Railroad Train Squats contract on Optimism (0xCe09A2d0d0BDE635722D8EF31901b430E651dB52) returns Discord channel URLs for tokenURI() instead of proper ERC721 JSON metadata.
Current state:
- Contract name: "Blue Railroad Train Squats"
- Contract symbol: "TONY"
- Total supply: 3 tokens
tokenURI(1): https://discordapp.com/channels/1126841404056948806/1126841404056948809/1197957710239506543
Impact
- NFT marketplaces cannot parse Discord URLs as metadata
- No images, names, descriptions, or attributes visible anywhere
- Completely invisible on OpenSea, Rarible, and other platforms
- Block explorers show invalid metadata
Background
Blue Railroad Train Squats is an NFT-based exercise challenge where users perform squats to Tony Rice's "Blue Railroad Train" and submit videos via Discord. The current tokenURI implementation appears to store the Discord message URL where the video was submitted, rather than proper NFT metadata.
Proposed Solution
1. Create metadata generation system
Similar to Set Stones, create a metadata generator that produces:
{
"name": "Blue Railroad Train Squats #1",
"description": "A proud blue steam engine charges down the tracks through a pixel art landscape. Part of the Blue Railroad Train collection by CryptoGrass.",
"image": "ipfs://...",
"external_url": "https://cryptograss.live/blue-railroad/1",
"animation_url": "...", // Link to squat video if available
"attributes": [
{"trait_type": "Type", "value": "Steam Locomotive"},
{"trait_type": "Style", "value": "Pixel Art"},
{"trait_type": "Video Verified", "value": "Yes/No"}
]
}
2. Determine metadata hosting strategy
Options:
- Static JSON on cryptograss.live
- IPFS for immutability
- Dynamic API endpoint
3. Update contract or add redirect
- Check if contract has
setBaseURI() or similar
- If immutable, may need redirect server or accept broken state
Files Involved
src/build_logic/generate_blue_railroad_metadata.js - Existing metadata logic (needs audit)
src/abi/blueRailroadABI.js - Contract ABI
src/build_logic/constants.js - Contract address
src/sites/cryptograss.live/js/bazaar/blue_railroad.js - Frontend
src/build_logic/fetch_video_metadata.js - Video metadata fetching
Questions to Answer
- Was the Discord URL storage intentional or a bug during minting?
- Is there a way to update individual token URIs, or only baseURI?
- Where are the actual Blue Railroad images hosted? (mentioned as IPFS in exploration)
- What's the relationship between the Discord video submission and the NFT metadata?
Acceptance Criteria
Labels
bug, nft, lone-star-release
Problem
The Blue Railroad Train Squats contract on Optimism (
0xCe09A2d0d0BDE635722D8EF31901b430E651dB52) returns Discord channel URLs fortokenURI()instead of proper ERC721 JSON metadata.Current state:
tokenURI(1):https://discordapp.com/channels/1126841404056948806/1126841404056948809/1197957710239506543Impact
Background
Blue Railroad Train Squats is an NFT-based exercise challenge where users perform squats to Tony Rice's "Blue Railroad Train" and submit videos via Discord. The current
tokenURIimplementation appears to store the Discord message URL where the video was submitted, rather than proper NFT metadata.Proposed Solution
1. Create metadata generation system
Similar to Set Stones, create a metadata generator that produces:
{ "name": "Blue Railroad Train Squats #1", "description": "A proud blue steam engine charges down the tracks through a pixel art landscape. Part of the Blue Railroad Train collection by CryptoGrass.", "image": "ipfs://...", "external_url": "https://cryptograss.live/blue-railroad/1", "animation_url": "...", // Link to squat video if available "attributes": [ {"trait_type": "Type", "value": "Steam Locomotive"}, {"trait_type": "Style", "value": "Pixel Art"}, {"trait_type": "Video Verified", "value": "Yes/No"} ] }2. Determine metadata hosting strategy
Options:
3. Update contract or add redirect
setBaseURI()or similarFiles Involved
src/build_logic/generate_blue_railroad_metadata.js- Existing metadata logic (needs audit)src/abi/blueRailroadABI.js- Contract ABIsrc/build_logic/constants.js- Contract addresssrc/sites/cryptograss.live/js/bazaar/blue_railroad.js- Frontendsrc/build_logic/fetch_video_metadata.js- Video metadata fetchingQuestions to Answer
Acceptance Criteria
tokenURI(n)returns valid ERC721 JSON metadataLabels
bug,nft,lone-star-release