---
title: an nft can be a wallet
canonical_url: https://ensurance.app/guide/an-nft-can-be-a-wallet
markdown_url: https://ensurance.app/guide/an-nft-can-be-a-wallet.md
subtitle: "any approved contract on base, not only the ones we deployed — ethereum mainnet is next"
category: onchain
---

# an nft can be a wallet

*any approved contract on base, not only the ones we deployed — ethereum mainnet is next*

Somewhere in a wallet you have not opened since 2022 there is a picture. It still transfers. It still has exactly one owner, and the chain can still prove that owner is you. It has never held anything of its own.

On Base, the Colorado River watershed holds an account in its own name. an account that belongs to the token representing the watershed, that can receive and hold value, and that moves when the token moves.

Those two things run on the same machinery. The watershed's account exists because a river, a forest, or a species is a real thing that should be able to hold value in its own name. That is what this was built for. The picture can have the same kind of account, because the picture already has the one property that matters: it is a unique object with a provable owner.

## what "nft wallet" actually means

Two different things go by that phrase, and the difference is the whole post.

The first is the wallet you keep NFTs in. Your address holds the token. That is the ordinary meaning and it is not interesting.

The second is the reverse. **An NFT wallet is an account that belongs to the token itself** — its own address, able to hold ETH and other tokens, able to sign transactions. Whoever holds the NFT controls that account. Transfer the NFT and the account goes with it, balance and history intact. The NFT stops being a thing inside a wallet and becomes one.

That second thing is a tokenbound account, defined by [ERC-6551](https://eips.ethereum.org/EIPS/eip-6551). The clause that does the work: the standard assigns accounts to non-fungible tokens *without requiring changes to existing smart contracts*. No upgrade, no migration, no fresh mint. A contract someone deployed in 2021 and walked away from is still the contract. The account is assigned to the token sitting inside it.

## the contracts we deployed are not special

It would be convenient for us if this only worked on tokens we minted. It does not, and pretending otherwise would misdescribe the standard.

| | an agent minted here | an nft you already hold on base |
|---|---|---|
| origin | minted for a place, a people, or a purpose | deployed by someone else, already in your wallet |
| name | `colorado-river.basin` and the like | the collection's name plus the token id |
| contract change needed | none | none |
| account address | determined by the token | determined by the token |
| who controls it | whoever holds the nft | whoever holds the nft |
| what it can do in this app | hold, swap on Base, carry a purpose, run a program | the same |
| getting in | already eligible | the contract is reviewed once |

The durable difference is origin and name. An outside NFT keeps its collection's identity. It does not become a `.basin` account, and it should not — the naming belongs to places and groups that earned it. Everything in the capability column is the same, because after activation there is no separate product for "external" NFTs. There is one execution path: the holder signs, the account moves the assets.

## base today. ethereum mainnet next.

That is the entire chain sentence, and it is deliberately short.

Base is where activation works in this app right now. The collection request only knows one chain today: Base. Ethereum mainnet is the next chain, and it is not live for this today. If you are holding something on another chain, the honest answer is that we are not there.

The registry pattern itself is chain-agnostic. Our implementation is not yet. We are not going to blur those two facts into a roadmap.

## the registry does not ask our permission. the app does.

Anyone can deploy a tokenbound account for any NFT. The standard is permissionless and we are not a gatekeeper to it.

What we gate is whether this app treats your NFT as an agent. A contract is reviewed once — once per contract, not once per token. If there is no record for the collection, you request access and a person looks at it. Pending means wait; we do not promise a number of hours. Blocked means it stays out, with a reason: spam collections, and tokens that already have a job elsewhere, like a liquidity position or a name service record. Approved means every token in that collection can be activated by whoever holds it.

So this is not a one-click button for any image on the internet. It is one review, then a door that stays open for the whole collection.

:::johnson
**the contract you already have is the contract.** An account is assigned to the token. Nothing about the collection is redeployed, upgraded, or migrated — and the account address is derived from the token, so you never pick a new one.

[look at what's in your wallet →](/agents/mine?from=guide)
:::

## what the account does, and what it will not do for you

Once it is on, the account is a normal account. It has an address like any other address. Protocols that accept an address can accept it, because there is nothing exotic about it from the outside.

Inside this app, four things run on it:

1. **It holds.** ETH, stablecoins, other tokens, other NFTs.
2. **It swaps on Base.** The holder signs; the account trades.
3. **It carries a purpose.** You can give it an identity and point it at a place or a cause. That is a choice, not a default.
4. **It runs a program.** A schedule executes only when the operator account holds the NFT. If the NFT is in your own wallet, you sign every action. A program runs on a schedule only when the NFT sits in your own operator wallet and you have turned that on. In your wallet, you sign every action.

Now the part most posts in this category leave out.

A picture with an account does not fund a river by existing. There is no fee on your swaps quietly routing to a watershed. Nature gets funded when somebody actually sends value to a living system — buying one of the [general ensurance coins](/general?from=guide) or a [certificate](/specific?from=guide) tied to a named asset, or routing proceeds to the agent that represents a place. The account makes that possible from your NFT. It does not make it automatic, and we are not going to tell you that holding a JPEG is conservation.

## the living example

[colorado-river.basin](https://ensurance.app/colorado-river.basin?from=guide) is the clearest version of why the machinery exists. A watershed, an account in its own name, value that can arrive and be held and be spent on the river. It is not an outside NFT — it is one of ours, minted for a place. **ensurance** is how the living system gets funded. It is not what the river is, and it is certainly not what your picture is.

The picture is a second use of the same account. That is a smaller claim than "NFTs are back," and it is one we can actually support.

## frequently asked questions

### can any nft be a wallet?

Technically, under ERC-6551, yes — the registry can assign an account to any ERC-721 token without changing its contract. In this app, a collection is reviewed once before its tokens can be activated as agents. Spam and tokens that already have another job stay out.

### which chain does this work on?

Base, today. Ethereum mainnet is next. Nothing else is live for this.

### do I need a new contract?

No. That is the point of the standard — the account is assigned to the token you already own. The collection is not upgraded, redeployed, or migrated, and you do not mint anything new.

### what is the difference between your agents and mine?

Origin and name. Ours are minted for a place, a people, or a purpose and carry a name like `colorado-river.basin`. Yours keeps its collection's name and token id. After approval, both get the same kind of account, with the same capabilities and the same rule: whoever holds the token controls the account.

## where to start

If you hold the NFT in a wallet you can connect, open [the agents in your wallet](/agents/mine?from=guide) and look for it on Base. If it is there and the collection is approved, activate it. If it is not, request access from that page.

If you built or steward a collection and you are not the one holding a token right now, [send us the contract](/contact?from=guide&topic=nft-to-agent) and say what you want it to do. If the contract is on Ethereum mainnet, send it anyway. That is how we see what to turn on next. Groups working through this together can start at [onchain groups](/solutions/onchain-groups?from=guide&topic=nft-to-agent).

Next: [how to turn an nft into an agent](/guide/how-to-turn-an-nft-into-an-agent?from=guide) walks the steps in order.

## the series

- [what an nft agent is](/guide/what-an-nft-agent-is?from=guide) — the definition, and the two origins an agent can have
- [how to turn an nft into an agent](/guide/how-to-turn-an-nft-into-an-agent?from=guide) — the steps, on Base, with the review gate
- [what a tokenbound account is](/guide/what-a-tokenbound-account-is?from=guide) — the standard, cited
- [an nft can be a wallet](/guide/an-nft-can-be-a-wallet?from=guide) — this post: any approved contract, not only the ones we deployed
- [what to do with an nft](/guide/what-to-do-with-an-nft?from=guide) — the objects are still sitting there
- [nfts are dead, long live nfts](/guide/nfts-are-dead-long-live-nfts?from=guide) — the December 2025 essay this series updates
