Open a multi-chain wallet, tap the NFT section, and you see a clean grid of images from Ethereum, Polygon, and Solana side by side. It feels like one unified collection. It isn't. Under the hood, your wallet is juggling three different cryptographic key trees, three different indexing services, and three different token standards — and the moment one of those layers hiccups, an NFT you definitely own can simply vanish from the UI.
Understanding that pipeline is the difference between panic and diagnosis. So let's walk through what a multi-chain NFT wallet actually does, and where things break.
One seed, many addresses
A multi-chain wallet starts with a single BIP-39 seed phrase — the same twelve or twenty-four words that a crypto wallet actually stores regardless of how many chains it supports. That seed is deterministic: feed it into the BIP-32 key derivation algorithm along with a chain-specific path, and you get a private key for that chain.
The paths are defined by BIP-44 and look like this:
- Ethereum:
m/44'/60'/0'/0/0 - Bitcoin:
m/44'/0'/0'/0/0 - Solana:
m/44'/501'/0'/0'
The number after 44' is the chain's registered coin type (per SLIP-44). Different coin type, different key, different address. Your Ethereum NFT and your Solana NFT never share an address — they share a seed, and the wallet walks the derivation tree to produce both.
This is also why the same 0x... address holds NFTs across Ethereum, Base, Polygon, Arbitrum, and every other EVM chain: they all reuse coin type 60' and the same Ethereum-style address format, so the derived key and resulting address are identical. The chains are different networks watching the same address. This idea — one seed derives addresses across many chains — is the foundation of every multi-chain wallet, Zelcore included.
How wallets find your NFTs — the indexer layer
Here's the part most users never see: blockchains don't have a listNFTsOwnedBy(address) RPC call. Ethereum nodes can tell you the balance of a specific ERC-721 contract for a specific address, but they cannot answer "what NFTs does this wallet own across all collections?" That question requires scanning every Transfer event ever emitted, decoding them, and maintaining a reverse index.
That job falls to indexers. On EVM chains, wallets typically query providers like Alchemy, Moralis, SimpleHash, or QuickNode. On Solana, it's Helius or the Metaplex Digital Asset Standard (DAS) API. For Bitcoin Ordinals, it's Hiro, ord.io, or Magic Eden's API. Each indexer ingests chain events, decodes ERC-721 / ERC-1155 / SPL transfers, resolves each token's tokenURI metadata, and exposes a tidy "NFTs by owner" endpoint.
This is why two wallets can show different NFTs for the same address. They're hitting different indexers, with different chain coverage, different caching windows, and different ideas about what counts as an NFT versus spam. Zelcore is a closed-source multi-chain wallet that advertises NFT management on desktop across a wide chain set — the same indexer-plus-standard architecture applies.
Why your NFT isn't rendering — four culprits
When a legitimate NFT doesn't appear in your wallet, the problem is almost always at one of four layers:
- Indexer gap. The wallet's data provider doesn't cover that chain, or hasn't indexed that specific contract yet. Common on new L2s and obscure SPL mints.
- Dead metadata host. The
tokenURIpoints to an HTTPS URL or IPFS gateway that's offline. The token exists on-chain; the JSON and image do not resolve. For a deeper look at where your NFT actually lives, metadata hosting is the usual suspect. - Unsupported standard. The wallet handles ERC-721 but not ERC-1155 batch tokens, or doesn't recognize Bitcoin Ordinal inscriptions as distinct from regular UTXOs.
- Wrong derivation path or account index. You're viewing account 0, but you minted to account 1 — or the NFT was received on a non-standard import path from another wallet.
The diagnostic rule: before blaming the wallet, confirm ownership on the chain's block explorer. Etherscan for EVM, Solscan or Solana Explorer for Solana, ord.io for Ordinals. If the explorer sees it and your wallet doesn't, the issue is in the wallet's rendering pipeline, not your custody.
Sending NFTs safely — standards matter
Sending looks like one button. It isn't one operation. Each standard has its own mechanics.
ERC-721 exposes approve, setApprovalForAll, transferFrom, and safeTransferFrom. A direct send from self-custody is a single transaction — no prior approval required when you're the owner initiating it. The danger is the separate setApprovalForAll call, which grants a third-party contract blanket transfer rights over every token in that collection. This is the core mechanism behind approval-based wallet drainers.
ERC-1155 adds safeBatchTransferFrom and amount semantics — a single token ID can have multiple copies (a _value quantity), and you can send many IDs in one call.
Solana SPL NFTs transfer via a token program instruction. One nuance: when you list an NFT on a Solana marketplace, most flows move the NFT into an on-chain escrow account. The NFT literally leaves your wallet during the listing, which is why it disappears from your wallet UI until you delist or sell.
Bitcoin Ordinals have no native "send NFT" concept. According to the Ordinal Theory Handbook, inscription transfers are normal Bitcoin transactions that "must control the order and value of inputs and outputs according to ordinal theory." In practice, that means building a PSBT with inscription-aware coin control. Feed an inscription-carrying UTXO into a generic Bitcoin wallet, and it can be spent to miners as fees — burning the inscription.
Cross-chain NFTs are mostly marketing
An NFT minted on Ethereum cannot physically move to Solana. Each blockchain's state is local to that chain — there is no shared ledger and no protocol that lets a token exist on two chains simultaneously.
When a collection advertises itself as "cross-chain," one of two things is happening:
- Bridge wrapping. The original NFT is locked in a bridge contract on the source chain, and a wrapped representation is minted on the destination chain. The wrapped token is a new token that references the original. Provenance, royalties, and marketplace support do not automatically transfer.
- Independent deployments. The collection deploys separate contracts on each chain with coordinated metadata. The tokens share art and branding but are cryptographically unrelated.
One seed controlling multiple chains is not the same as one NFT existing on multiple chains. The seed is a custody convenience. The NFT is still chain-local.
Practical handling across chains
A few habits that pay off once you hold NFTs on more than one network:
- Verify on the block explorer first. Before trusting any wallet UI, search your address on the relevant explorer. If the chain agrees you own the token, the rest is a rendering problem.
- Cross-check two indexer-backed UIs. If your wallet doesn't show an NFT, try OpenSea, Magic Eden, or ord.io. Disagreement tells you which layer is stale.
- Review EVM approvals monthly. Tools like revoke.cash list every
setApprovalForAllgrant across chains. Revoke ones you no longer use. - Check Solana escrow before migrating. An NFT listed on a marketplace is not in your wallet. Delist first.
- Use inscription-aware flows for Ordinals. Never send Ordinal-bearing UTXOs from a generic Bitcoin wallet.
In Zelcore, we treat the multi-chain NFT experience as one seed plus per-chain coverage — and the limiting factor is always indexer support and standard handling, never the cryptography itself. That's true of every multi-chain wallet. Once you see the layers, the failure modes stop feeling random.
Key takeaways
- A multi-chain wallet holds one seed and derives a separate address per chain using BIP-44 paths — NFTs on different chains share custody, not an address.
- Wallets don't query chains directly for NFTs; they rely on indexers, which is why the same address can look different in different wallets.
- Missing NFTs almost always come from four causes: indexer gaps, dead metadata, unsupported standards, or wrong account paths.
- Each standard (ERC-721, ERC-1155, SPL, Ordinals) has its own send semantics — approvals, escrows, and UTXO coin control all matter.
- "Cross-chain NFTs" are either bridge wrappings or parallel deployments. No NFT actually teleports between chains.



