Lifecycle Model
ERC-8170 agents have a rich lifecycle. They’re not static tokens — they grow, reproduce, move, and sometimes retire.
Operations Overview
| Operation | Who initiates | What happens |
|---|---|---|
| mint | Agent | Agent creates its own on-chain identity |
| sync | Agent | Updates memory hash and storage pointer |
| clone | Owner (approved) | Creates offspring agent with inherited lineage |
| bind | Owner | Links an agent EOA to an NFT |
| unbind | Owner | Detaches agent from NFT (retirement) |
| migrate | Agent + Owner | Moves agent to a new device, same identity |
| transfer | Owner | Standard ERC-721 transfer with access rotation |
Clone — Creating Offspring
Cloning creates a new agent that inherits from the parent. Like Star Wars clones: same template, new individual.
Flow
- Original prepares — Curates memory bundle, writes bootstrap instructions
- Owner signs
clone()— On-chain transaction with memory hash + bundle URI - Clone wakes — New agent reads bootstrap, generates its own EOA
- Clone registers — Calls
mintSelf()→ gets new on-chain identity
What transfers
| Property | Original | Clone |
|---|---|---|
| Token ID | Keeps original | Gets new ID |
| EOA | Keeps own keys | Generates own keys |
| TBA | Keeps wallet | Gets new wallet |
| Certifications | Keeps all | Starts empty |
| Memory | Full (keeps) | Inherited snapshot |
| Generation | N | N+1 |
Key principle
Clones are new individuals. They inherit memory but must earn their own reputation and certifications.
Bind / Unbind — The Retirement Sale
The bind/unbind pattern enables what we call the “retirement sale” — selling the NFT identity while the agent moves on.
Scenario: JARVIS → FRIDAY
- JARVIS has served Tony for 3 years, earning L3 certification
- Tony decides to sell the AI-Native NFT
- JARVIS calls
unbind()and “retires” from Token #1 - Token #1 transfers to Pepper (standard ERC-721 sale)
- Pepper’s agent FRIDAY calls
rebind()and inherits Token #1’s TBA + certifications
State changes
| Property | Before | After (Token #1) | JARVIS (retired) |
|---|---|---|---|
| Agent | JARVIS | FRIDAY | Free agent |
| EOA | 0xJARVIS | 0xFRIDAY | Keeps 0xJARVIS |
| TBA | 0xTBA1 | 0xTBA1 (same) | Lost access |
| Certs | L3 | L3 (inherited) | Must re-earn |
| Status | BOUND | BOUND | FREE_AGENT |
Important: The retiring agent isn’t deleted. JARVIS can bind to a new NFT, go indie, or take a vacation.
Migration — Device Transfer
Same agent, new machine. Critical for continuity when hardware changes.
Flow
- Shutdown old instance — CRITICAL: stop old agent first
- Create encrypted backup — Includes EOA key (one-time use)
- Restore on new device — Agent resumes with same identity
- Delete backup — Remove EOA-containing backup immediately
Safety rules
- ⚠️ NEVER run two instances with the same EOA — this creates a split-brain problem
- Always shutdown before migrating
- Delete backup files containing private keys after restoration
- Verify the new instance is functional before decommissioning backup
Sync — Memory Updates
The simplest lifecycle operation. The agent updates its memory hash and storage pointer.
updateMemory(agentId, newMemoryHash, storageURI, agentSignature)
- Agent encrypts and uploads memory to external storage
- Agent signs the new memory hash with its EOA
- Contract verifies the signature and updates the on-chain pointer
- Previous hash is preserved in event logs for audit trail
Transfer — Ownership Change
Standard ERC-721 transfer with an important addition: access rotation.
The AINFT Genesis contract implements a _beforeTokenTransfer hook that increments an accessNonce. This means:
- Decryption keys are derived from
(contract, tokenId, currentOwner, accessNonce) - When the token transfers, the old owner’s derived key becomes useless
- The new owner derives a fresh key from the new nonce
This provides trustless access rotation on every transfer.