手册
占位符 URI 和所有者显示行 (Uri)
在 Mint 中,占位符元数据、uridata 映射、reveal(tokenId, uriHash) 和只有所有者才能打开的reveal surface。
NFT Collection 铸币和主网强化
部分 3 的 4
CBD 全明星和自信的大猩猩薄荷表面:WIP 白名单漏斗、IPFS 元数据、占位符→显示管道以及使用 Web3Modal 强化主网钱包。
Mint 不提供随机艺术;揭示了
在 Confident Gorillas 1.4 mint 中通常不会立即显示最终图像。占位符/临时 URI 是即时写入的;真实的 CID 在 uridata 表中以 tokenId → hash/link 的形式等待。 Reveal 在容器所有者检查后发送 Reveal(tokenId, uriHash) — 这是艺术“出现在你的钱包中”的承诺。```text mint → placeholder / interim tokenURI │ uridata[tokenId] = { hash, link } │ ownerOf(tokenId) === connected wallet? yes │ no → deny ↓ reveal(tokenId, uriHash) ↓ tokenURI updated → retrieveJSON / image
## 第一次提到的概念```text
📦 Placeholder Metadata
Mint anında yazılan geçici URI; nihai traits/görsel henüz bağlı değildir.
📦 uridata
tokenId → { hash, link, index } haritası; reveal için hazır CID tablosu.
📦 reveal(tokenId, uri)
Owner'ın tokenURI'yi gerçek hash ile güncellediği sözleşme çağrısı.
📦 Owner Gate
revealToken içinde ownerOf === connected address kontrolü.
```显示按钮可能在查看器中被禁用;操作揭示有时是由所有者面板或脚本触发的。主人又来了。
## 为什么是占位符?
公平性和可操作性:在全部供应压榨之前减少元数据泄漏,将艺术生成与薄荷节奏分开。用户铸币;艺术后来随着“揭示”而来。 Landing FAQ 将其描述为出现在 MetaMask 中。```text
Mint window
→ same placeholder look
Reveal window
→ unique CID per tokenId
```## 显示管道
Reveal.ts 读取 uridata.uri[tokenId],获取哈希值,调用 RevealToken(tokenId, hash)。 nftContractUtils 验证ownerOf; if 匹配 Contract.methods.reveal(...).send({ from })。然后 tokenURI 返回新的哈希值; retrieveJSON 解析图像 CID。```text
Reveal.ts
uridata[tokenId].hash
↓
revealToken → owner check
↓
reveal(tokenId, hash).send
```## ADR:链下表+链上所有者揭示
决策:最终的 CID 列表保存在 client/bundle (uridata) 中;更新权限仍然由所有者控制的揭示功能保留。替代方案(链上提交-显示,VRF)更昂贵。权衡:uridata 包可能会泄露——泄露时间和访问控制是产品风险。```text
ADR-03 Placeholder + owner reveal
Store: uridata off-chain map
Auth: ownerOf gate
Mutate: reveal(tokenId, uriHash)
Reject: non-owner / wrong id
```## 失败场景
错误的 tokenId → 错误的艺术。哈希/链接不匹配 → 网关 404。非拥有钱包 → 静默无操作(函数返回 null)。如果 ABI 中没有泄露,编码就会爆炸。如果占位符从未更新,则集合仍然是“空盒子”。```text
Fail matrix
wrong tokenId → wrong art
hash ≠ pinned CID → 404
non-owner → no-op / deny
missing reveal ABI→ encode fail
本期最令人困惑的对决```text
❌ Reveal = sadece UI'da blur kaldırmak ✓ Reveal = on-chain tokenURI güncellemesi; UI yalnızca sonucu gösterir
❌ Herkes herhangi bir token'ı reveal edebilmeli ✓ Yalnızca owner (veya tasarlanmış minter/owner rolü) reveal eder
❌ uridata gizli kalır çünkü bundle'da ✓ Frontend bundle okunabilir; zamanlama ve erişim asıl kontroldür
## 您自己的系统清单
1. 是否可以固定并检索每个 tokenId 的 uridata 哈希值?
2. 在披露之前,ownerOf 控制权在客户端和合约上都可用吗?
3. 占位符 URI 和最终 URI 是否清晰分开?
4. 非所有者是否可以安全地禁用/拒绝“显示”按钮?
5. 750 个条目的表是否存在索引移位?
## 本节中需要记住的事情
1.占位符提供了揭示、公平和薄荷操作之间的区别。
2.未经所有者门禁而泄露,违反了藏品的完整性。
3. uridata是产品决定;不要假设隐私、设计时机。
> 轻松瞬间赋予艺术薄荷感;公正且不可撤销的给予是揭示的纪律。
FAQ
Frequently asked questions
什么是占位符元数据?
Mint Fly 上写的临时 URI;最终特征/视觉尚未连接。
什么是uridata?
tokenId → { 哈希、链接、索引 } 映射; CID 表已准备好展示。
“Reveal = 只是删除 UI 中的模糊”是否正确?
Reveal = 链上 tokenURI 更新; UI仅显示结果
本节修复了什么?
本节修复了产品和安全边界的泄露;下一部分将强化钱包与主网的连接。在 Confident Gorillas 1.4 mint 中通常不会立即显示最终图像。占位符/临时 URI 是即时写入的;真实的 CID 在 uridata 表中以 tokenId → hash/link 的形式等待。 Reveal 在容器所有者检查后发送 Reveal(tokenId, uriHash) — 这是艺术“出现在你的钱包中”的承诺。
学到的工程原理
- 有意将 Mint URI 和最终 URI 分开。
- 使用ownerOf(或明确的角色)锁定Reveal 权限。
- 检查链外 CID 表的引脚和索引完整性。
继续阅读
继续阅读
系列中的下一个
主网 Web3Modal 和钱包加固
从仅 MetaMask 迁移到 Web3Modal + WalletConnect + Coinbase WalletLink; chainId、gas 和地址强化。
系列中的下一个
IPFS(星际文件系统)元数据、铸币和多次铸币
Infura IPFS + Pinata pin、元数据 JSON、mint(tokenId, uri) 和 multipleMint:0.1 ETH × n,750 供应。
同系列
集合登陆和 WIP 白名单漏斗
CBD 全明星薄荷登陆:#GETINTHEWIP、750 个插槽、折扣漏斗和仅限 MetaMask 的薄荷表面如何结合在一起?