手册
IPFS(星际文件系统)元数据、铸币和多次铸币 (Ipfs)
Infura IPFS + Pinata pin、元数据 JSON、mint(tokenId, uri) 和 multipleMint:0.1 ETH × n,750 供应。
NFT Collection 铸币和主网强化
部分 2 的 4
CBD 全明星和自信的大猩猩薄荷表面:WIP 白名单漏斗、IPFS 元数据、占位符→显示管道以及使用 Web3Modal 强化主网钱包。
链子不能容纳图片;来电显示金额
在 Confident Gorillas mint 流中,图像和功能首先写入 IPFS:使用 Infura add API 上传 JSON/文件,使用 Pinata 固定。然后调用合约mint或者multipleMint;价值 0.1 ETH × 个Landing 中的数量选择器 (2–5) 直接连接到 multipleMint(num) 参数。```text traits + image ↓ uploadJSON / uploadFile (Infura IPFS) ↓ pinHash (Pinata) ↓ CID / metadata hash ↓ mint(tokenId, uri) | multipleMint(uri, num) ↓ value = 0.1 ETH × num supply ≤ 750
## 第一次提到的概念```text
📦 IPFS CID
İçeriğin içeriğe dayalı adresi; tokenURI genelde bu hash'e referans verir.
📦 Pinning
CID'nin kaybolmaması için Pinata gibi bir pinning servisinde tutma.
📦 multipleMint
Tek tx'de birden fazla NFT basma; value ve gas maliyeti adetle ölçeklenir.
📦 Mint Price
Confident Gorillas'da 1e17 wei (0.1 ETH) × mint adedi.
```Infura 上传和 Pinata pin 是单独的步骤。如果上传成功并且忘记了 PIN,网关可能会随着时间的推移给出 404。
## 元数据形状
nftContractUtils 设置包含名称、描述、图像(IPFS 哈希)、external_url 和属性(艺术家、背景、身体、眼睛、嘴巴)的元数据。 uploadJSON 返回哈希值;这个哈希值会作为 uri 被 Mint 生成。```text
metadata JSON
name / description / image
attributes[] → traits
↓
uploadJSON → ipfsMetadataHash
```## 薄荷与多重薄荷
单次铸造:mint(tokenId, ipfsMetadataHash) + 0.1 ETH。倍数: multipleMint(ipfsMetadataHash, num) + 0.1 ETH × num。主页选择选择2-5; Minter 容器调用 multiplemintNFT。 UI 中显示剩余的总供应上限为 750。```text
UI qty (2..5)
↓
multipleMint(uri, num)
value = 1e17 * num
gasLimit ≈ 300000 (app default)
```## ADR:IPFS 之前,链之后
结论:元数据和媒体未嵌入链中;首先是 IPFS,然后是链上的 uri 引用。优点:便宜的更新路径(显示)和小的调用数据。风险:固定和网关可能会成为单点 - 需要 Pinata pin + 公共网关备份。```text
ADR-02 Content-addressed mint
Off-chain: Infura add + Pinata pin
On-chain: store URI hash only
Read path: tokenURI → retrieveJSON
```## 失败场景
修复gasPrice:0将导致tx在主网上保持卡住/定价过低的状态。错误的网络(Rinkeby/Infura后备)将不允许您签署主网协议。 ABI 不匹配:如果前端 ABI 和部署的 multipleMint 签名不匹配,则编码会出错。存根地址:在全明星赛中,有四份合约查看同一个地址。```text
Fail matrix
gasPrice=0 → stuck / underpriced
wrong chainId → silent wrong net
ABI skew → encode / revert
stub address → call nowhere useful
本期最令人困惑的对决```text
❌ Image'ı base64 olarak sözleşmeye yaz ✓ Image'ı IPFS'e koy; zincirde yalnızca CID/URI tut
❌ Upload yeter, pin opsiyonel ✓ Upload + pin birlikte; aksi halde içerik unorphan riski
❌ gasPrice: 0 'otomatik' demektir ✓ gasPrice: 0 çoğu mainnet koşulunda underpriced tx üretir
## 您自己的系统清单
1. 铸币前的 CID 是否固定在 Pinata(或同等物)中?
2. 0.1 ETH × num 的价值是否经过 wei 账户验证?
3. UI和合约中是否检查totalSupply + num ≤ 750?
4. 主网的gasPrice / maxFeePerGas 是动态的吗?
5. 部署的 ABI 和前端 ABI 是否来自同一提交?
## 本节中需要记住的事情
1. 铸币管道:traits → IPFS → pin → 合约调用 → value。
2. multipleMint 是链上相当于落地数量选择器的。
3.gasPrice: 0、存根地址和ABI skew是主网的经典三重奏。
> 如果你在链上嵌入元数据,你的铸币成本就会变得昂贵;如果您不固定 CID,您将丢失该集合。
FAQ
Frequently asked questions
什么是 IPFS CID?
内容的上下文地址; tokenURI 通常引用此哈希。
什么是固定?
为了避免丢失 CID,请将其保留在 Pinata 等固定服务上。
“将图像作为 base64 写入合约”是否正确?
将镜像放入IPFS;仅将 CID/URI 保留在链中
本节修复了什么?
此部分将元数据管道连接到 mint tx;下一部分将打开占位符 URI 和所有者显示。在 Confident Gorillas mint 流中,图像和功能首先写入 IPFS:使用 Infura add API 上传 JSON/文件,使用 Pinata 固定。然后调用合约mint或者multipleMint;价值 0.1 ETH × 个Landing 中的数量选择器 (2–5) 直接连接到 multipleMint(num) 参数。
学到的工程原理
- 首先,应该对内容进行寻址,然后将 uri 存储在链上。
- 双重验证UI和合约之间的价格、数量和供应上限。
- 在暂存阶段证明主网交易参数(gas、chainId、地址、ABI)。
继续阅读
继续阅读
系列中的下一个
占位符 URI 和所有者显示行
在 Mint 中,占位符元数据、uridata 映射、reveal(tokenId, uriHash) 和只有所有者才能打开的reveal surface。
系列中的下一个
集合登陆和 WIP 白名单漏斗
CBD 全明星薄荷登陆:#GETINTHEWIP、750 个插槽、折扣漏斗和仅限 MetaMask 的薄荷表面如何结合在一起?
同系列
主网 Web3Modal 和钱包加固
从仅 MetaMask 迁移到 Web3Modal + WalletConnect + Coinbase WalletLink; chainId、gas 和地址强化。