Skip to content

Set Stone metadata returns 404 - contract baseURI mismatches deployment #334

Description

@magent-cryptograss

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:

  1. The contract was deployed with justinholmes.com as the base, not cryptograss.live
  2. 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

  1. Configure web server to serve JSON from justinholmes.com/setstones/
  2. Ensure build artifacts are deployed to justinholmes.com
  3. Verify Content-Type headers return application/json

Option B: Update contract baseURI (if possible)

  1. Check if contract has setBaseURI() function
  2. Update to https://cryptograss.live/setstones/
  3. Ensure cryptograss.live deployment includes the JSON files

Option C: Server-side redirect

  1. Add redirect from justinholmes.com/setstones/* to cryptograss.live/setstones/*
  2. 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

  • curl https://justinholmes.com/setstones/1 returns valid JSON metadata
  • JSON includes correct image URL that resolves to actual PNG
  • OpenSea can index the collection and display token images
  • All 5 minted tokens have accessible metadata

Labels

bug, nft, lone-star-release

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions