NFT Metadata on Robinhood Chain That Never Breaks

An NFT is a pointer. If the thing it points at disappears or changes, the token still exists and means nothing.
Robinhood Chain is marketed around Stock Tokens and DeFi, but it is a general purpose EVM Layer 2. ERC-721 and ERC-1155 contracts deploy unchanged, gas is paid in ETH, and blocks land every 100 milliseconds. Membership passes, loyalty collectibles, event tickets, trading badges and creator drops all fit naturally on a chain whose distribution runs through a very large consumer brokerage.
Every one of those NFTs has the same weak point: the tokenURI. This guide shows how to mint on Robinhood Chain with metadata that stays verifiable and available, using Lighthouse on IPFS and Filecoin.
How NFT Metadata Breaks
An ERC-721 contract stores almost nothing about the item itself. It stores an owner and a tokenURI, and wallets fetch the URI to learn the name, description, image and attributes.
The common failure modes, all avoidable:
| Failure | What happens | Fix |
|---|---|---|
| HTTPS URI on a project server | Server goes down, every NFT shows a blank image | Use ipfs:// URIs |
| Mutable server path | Project swaps images after mint | Content addressing: the CID changes if bytes change |
| Gateway URL baked into the URI | That one gateway goes down or rate limits | Store ipfs://CID, let wallets choose gateways |
| Pinned once, never persisted | The only node holding the data stops pinning it | Pinning plus Filecoin deals |
| Image on IPFS, JSON on a server | Half decentralized, fully breakable | Put both behind CIDs |
IPFS for NFT Metadata: How Token URIs Break covers each case in detail. The short version: both the media and the metadata JSON should be content addressed, and the URI should use the ipfs:// scheme, not a gateway URL.
The Minting Flow

- Upload the media to Lighthouse. Get the image CID.
- Build the metadata JSON referencing
ipfs://<imageCID>. Upload it. Get the metadata CID. - Mint on Robinhood Chain with
tokenURI = ipfs://<metadataCID>. - Lighthouse keeps the data pinned on IPFS and backed by Filecoin storage deals.
Step 1 and 2: Upload media and metadata
import lighthouse from "@lighthouse-web3/sdk";
const apiKey = process.env.LIGHTHOUSE_API_KEY;
// Media first
const image = await lighthouse.upload("./art/founders-pass-001.png", apiKey);
const imageCID = image.data.Hash;
// Metadata references the media by CID, not by gateway URL
const metadata = {
name: "Founders Pass #1",
description: "Early member pass for the Horizon trading community on Robinhood Chain.",
image: `ipfs://${imageCID}`,
attributes: [
{ trait_type: "Tier", value: "Founder" },
{ trait_type: "Chain", value: "Robinhood Chain" },
],
};
const meta = await lighthouse.uploadText(JSON.stringify(metadata), apiKey, "founders-pass-001.json");
const tokenURI = `ipfs://${meta.data.Hash}`;
For a full collection, upload a folder with lighthouse.upload("./metadata-folder", apiKey) and use a single directory CID as your base URI, so token 42 resolves at ipfs://<dirCID>/42.json.
Step 3: The contract
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract FoundersPass is ERC721, Ownable {
string private baseURI; // "ipfs://<directoryCID>/"
uint256 public nextId;
constructor(string memory base) ERC721("Founders Pass", "PASS") Ownable(msg.sender) {
baseURI = base;
}
function mint(address to) external onlyOwner returns (uint256 id) {
id = nextId++;
_safeMint(to, id);
}
function _baseURI() internal view override returns (string memory) {
return baseURI;
}
}
There is deliberately no setBaseURI. Leaving the base URI immutable is a promise to holders that the art cannot be swapped. If your project needs evolving metadata, make that explicit, and consider an IPNS name so the change is a published pointer update rather than a quiet server edit. IPNS or DNSLink? Choosing a Mutable Pointer compares the options.
Step 4: Deploy to Robinhood Chain
forge create src/FoundersPass.sol:FoundersPass \
--rpc-url https://rpc.mainnet.chain.robinhood.com \
--private-key $DEPLOYER_KEY \
--constructor-args "ipfs://<directoryCID>/"
Chain ID 4663 for mainnet, 46630 for testnet. Verify on Blockscout at robinhoodchain.blockscout.com.
Beyond the Image: Unlockable and Token Gated Content
Many consumer NFTs are access passes. The token is public; the thing it unlocks should not be.
Lighthouse encrypts files client side before upload and splits the key across independent nodes with BLS threshold cryptography. You then attach conditions that decide who can decrypt: holding an NFT from a collection, holding an ERC-20 balance, a time window, or any custom contract return value. The unlockable file can be a research report, a high resolution original, a video, or a members only playbook.
// Holder only content: decrypt if the wallet owns at least one pass
const conditions = [
{
id: 1,
chain: CHAIN, // see chain support note below
method: "balanceOf",
standardContractType: "ERC721",
contractAddress: FOUNDERS_PASS,
returnValueTest: { comparator: ">=", value: "1" },
parameters: [":userAddress"],
},
];
await lighthouse.applyAccessCondition(ownerAddress, unlockableCID, signedMessage, conditions, "([1])");
Chain support note. Robinhood Chain is not yet on the published Chains Supported list for condition evaluation. Until it is, you can share encrypted content directly with holder addresses, or request Robinhood Chain support on Discord. Storage and ipfs:// token URIs work on Robinhood Chain today with no dependency on this.
For video unlockables, Serving Video from IPFS Without Buffering covers streaming from Lighthouse gateways. For paid unlocks, Creating a Pay-to-View Model Using Lighthouse Storage shows the pay to view pattern.
NFT Ideas That Fit Robinhood Chain
Trader achievement badges. Soulbound tokens for milestones, with metadata by CID so badge art and criteria cannot be retroactively changed.
Stock Token holder passes. A collectible for early holders of a particular tokenized equity, gating a community research vault.
Event tickets. Mint tickets, store the ticket art and venue details by CID, and unlock recorded sessions for holders after the event.
Agent identity cards. An NFT that represents an AI agent, with its strategy description and track record stored by CID. Pairs with AI Trading Agents on Robinhood Chain Need Verifiable Memory.
Frequently Asked Questions
Can I mint NFTs on Robinhood Chain? Yes. Robinhood Chain is fully EVM compatible, so standard ERC-721 and ERC-1155 contracts deploy with Foundry, Hardhat or any EVM tooling.
Where should NFT metadata be stored?
On content addressed storage such as IPFS, with persistence backed by Filecoin. Use ipfs:// URIs in the token, not gateway URLs or project server URLs.
What happens if my pinning service shuts down? The CID stays valid, and anyone who still holds the data can serve it. With Lighthouse, data is also held in Filecoin storage deals, so it does not depend on one pinning node.
Can I update NFT metadata later? Only if your contract allows it. For deliberate updates, use IPNS or a versioned registry so every change is visible and old versions remain verifiable.
Get Started
Launching a collection on Robinhood Chain? Start on the free tier, 5 GB with no card, or talk to our team.
Stay in Touch
Learn more at the website, docs, or GitHub. Join the community on Discord, X, Telegram, and LinkedIn.






















































































