Skip to content

Commit 044cf34

Browse files
Merge pull request #183 from thisisobate/session-14
2 parents 85a30f2 + a354542 commit 044cf34

2 files changed

Lines changed: 309 additions & 0 deletions

File tree

  • website/docs/working-group/sessions/q1-2026/14-CIP-68 NFT-Standard
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
title: "Session 14: CIP-68 NFT Standard"
3+
sidebar_label: Session
4+
sidebar_position: 1
5+
slug: /working-group/q1-2026/sessions/14-cip-68-nft-standard/session
6+
---
7+
8+
# Session 14: Recording
9+
10+
## 🎥 CIP-68 NFT Standard
11+
12+
<iframe
13+
src="https://www.youtube.com/embed/v4eeyg_i9LI?si=oxO60BgZJxQG5SQA"
14+
title="Session 14: CIP-68 NFT Standard"
15+
width="100%"
16+
height="480"
17+
allow="autoplay"
18+
allowfullscreen
19+
style={{border: 0, borderRadius: '12px', boxShadow: '0 16px 40px rgba(1, 40, 170, 0.18)'}}
20+
/>
21+
22+
---
23+
24+
*This document is part of the Q1 2026 Developer Experience Working Group session "CIP-68 NFT Standard".*
Lines changed: 285 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,285 @@
1+
---
2+
title: "Session 14: CIP-68 NFT Standard"
3+
sidebar_label: Session
4+
sidebar_position: 1
5+
slug: /working-group/q1-2026/sessions/14-cip-68-nft-standard/session-notes
6+
---
7+
8+
# CIP-68 NFT Standard — Lecture Notes
9+
10+
## 1. Background
11+
12+
Early Cardano NFTs followed **CIP-25**, where metadata was stored in the minting transaction.
13+
14+
### Limitations of CIP-25
15+
16+
- Metadata becomes **immutable after mint**
17+
- **Smart contracts cannot read metadata**
18+
- Difficult to build **dynamic or evolving NFTs**
19+
- Requires **off-chain infrastructure** for interpretation
20+
21+
To solve these limitations, Cardano introduced **CIP-68**, a modern NFT architecture enabling **programmable assets**.
22+
23+
---
24+
25+
# 2. Core Idea of CIP-68
26+
27+
CIP-68 separates **NFT ownership** from **metadata storage**.
28+
29+
Instead of minting a single token, a project mints **two tokens**:
30+
31+
### User NFT
32+
- Held in a user's wallet
33+
- Represents the actual NFT
34+
35+
### Reference NFT
36+
- Stored in a smart contract UTxO
37+
- Contains metadata in the **datum**
38+
39+
This structure allows metadata to be **read by smart contracts and updated if allowed by the script**.
40+
41+
---
42+
43+
# 3. Token Labels
44+
45+
CIP-68 uses labels defined in **CIP-67** to distinguish token types.
46+
47+
| Label | Purpose |
48+
|------|------|
49+
| 100 | Reference NFT (metadata holder) |
50+
| 222 | User NFT |
51+
| 333 | Fungible Token |
52+
| 444 | Rich Fungible Token |
53+
54+
Example:
55+
56+
```
57+
(222)DragonSword
58+
(100)DragonSword
59+
```
60+
61+
Both tokens share:
62+
- the same policy ID
63+
- the same asset name
64+
- but use different labels.
65+
66+
# 4. Metadata Storage
67+
68+
Metadata is stored inside a datum attached to the UTxO holding the reference NFT.
69+
70+
Example structure:
71+
72+
```
73+
datum = [
74+
metadata,
75+
version,
76+
extra
77+
]
78+
```
79+
80+
Example metadata:
81+
82+
```
83+
{
84+
"name": "Dragon Sword",
85+
"image": "ipfs://Qm123...",
86+
"description": "Legendary weapon",
87+
"attributes": {
88+
"damage": 120,
89+
"rarity": "legendary"
90+
}
91+
}
92+
```
93+
94+
Advantages:
95+
- Metadata lives on-chain
96+
- Smart contracts can read and validate metadata
97+
- Metadata can be updated under controlled conditions
98+
99+
100+
# 5. Metadata Lookup Process
101+
102+
When a wallet encounters an NFT:
103+
104+
`policyID.(222)DragonSword`
105+
106+
The system derives the reference token:
107+
108+
`policyID.(100)DragonSword`
109+
110+
Then:
111+
112+
- 1. Locate the UTxO containing the reference NFT
113+
114+
- 2. Read the datum attached to that UTxO
115+
116+
- 3. Decode the metadata
117+
118+
This process ensures deterministic metadata discovery.
119+
120+
121+
# 6. Smart NFT Capabilities
122+
123+
CIP-68 enables programmable NFTs.
124+
125+
Examples:
126+
127+
**Dynamic NFTs**
128+
129+
NFT attributes evolve over time.
130+
131+
```
132+
level
133+
skills
134+
appearance
135+
```
136+
**Membership NFTs**
137+
138+
```
139+
tier
140+
expiration date
141+
privileges
142+
```
143+
144+
**Reputation NFTs**
145+
146+
```
147+
DAO participation
148+
achievements
149+
contributions
150+
```
151+
152+
**DeFi Position NFTs**
153+
154+
NFTs representing:
155+
156+
```
157+
liquidity positions
158+
loans
159+
staking records
160+
```
161+
162+
# 7. Development Stack
163+
164+
Typical Cardano NFT development stack:
165+
166+
**Smart Contracts**
167+
168+
- Plutus V2
169+
- Aiken
170+
- Helios
171+
172+
**SDKs**
173+
- Lucid
174+
- MeshJS
175+
- Cardano Serialization Library
176+
177+
**Infrastructure**
178+
179+
- Blockfrost
180+
- Ogmios
181+
- Kupo
182+
183+
**Storage**
184+
185+
- IPFS
186+
- Arweave
187+
188+
189+
# 8. Minting Flow
190+
191+
Modern NFT minting using CIP-68 follows these steps.
192+
193+
1. Create Minting Policy
194+
195+
Defines mint conditions.
196+
197+
**Examples:**
198+
199+
- one-time mint
200+
- time-locked mint
201+
- DAO-controlled mint
202+
203+
2. Mint Two Tokens
204+
205+
For each NFT:
206+
207+
```
208+
(222)UserNFT
209+
(100)ReferenceNFT
210+
```
211+
212+
3. Lock Reference NFT
213+
214+
Send the reference NFT to a script address.
215+
Attach metadata inside the datum.
216+
217+
4. Distribute User NFT
218+
219+
The user token (222) is sent to the buyer’s wallet.
220+
Wallets and marketplaces retrieve metadata from the reference NFT.
221+
222+
223+
# 9. Best Practices
224+
225+
When designing NFT projects:
226+
227+
**Decide Metadata Type:**
228+
- immutable
229+
- semi-dynamic
230+
- fully dynamic
231+
232+
**Separate Components**
233+
234+
Recommended architecture:
235+
236+
- mint policy
237+
- metadata contract
238+
- application logic contract
239+
240+
**Secure Metadata Updates**
241+
242+
Ensure only authorized scripts can update metadata.
243+
244+
**Store Media Off-Chain**
245+
246+
Images and large files should be stored on:
247+
248+
- IPFS
249+
- Arweave
250+
251+
The blockchain should store references and hashes.
252+
253+
# 10. When to Use CIP-68
254+
255+
Use CIP-68 when NFTs require:
256+
257+
- dynamic metadata
258+
- smart contract interaction
259+
- on-chain logic
260+
- evolving assets
261+
262+
Examples:
263+
264+
- games
265+
- DAO memberships
266+
- DeFi positions
267+
- identity systems
268+
269+
For simple static art collections, CIP-25 may still be sufficient.
270+
271+
# 11. Summary
272+
273+
CIP-68 introduces programmable NFTs to Cardano by:
274+
275+
- separating ownership from metadata
276+
- storing metadata on-chain
277+
- enabling smart contract interaction
278+
279+
This architecture forms the foundation for:
280+
- dynamic NFTs
281+
- decentralized identity
282+
- on-chain gaming assets
283+
- financial NFTs
284+
285+
CIP-68 is now considered the modern standard for advanced NFT development on Cardano.

0 commit comments

Comments
 (0)