-
bitcoin $75771.540085 USD
-1.86% -
ethereum $2399.709795 USD
-3.26% -
tether $0.999204 USD
-0.06% -
bnb $712.217256 USD
-0.77% -
xrp $1.292312 USD
-7.62% -
usd-coin $0.999959 USD
0.00% -
solana $97.051620 USD
-3.70% -
tron $0.334571 USD
-0.90% -
zcash $1186.253570 USD
3.75% -
hyperliquid $77.520171 USD
-1.88% -
dogecoin $0.079968 USD
-3.28% -
monero $508.293198 USD
-1.02% -
unus-sed-leo $8.883426 USD
-0.86% -
chainlink $10.791602 USD
-5.36% -
cardano $0.194877 USD
-4.63%
如何寫出NFT智能合約? (堅固性基礎知識)
ERC-721 is Ethereum’s NFT standard, ensuring uniqueness via `tokenId`, enforcing ownership with `ownerOf`/`transferFrom`, and supporting metadata through `tokenURI`.
2026/02/27 05:40
了解 ERC-721 標準
1. ERC-721是廣泛採用的以太坊代幣標準,專為不可取代代幣設計。
2.定義了ownerOf 、 transferFrom 、 approve等核心函數來管理唯一的資產所有權。
3. 每個 ERC-721 合約必須實作IERC721介面並發出標準化事件,例如Transfer和Approval 。
4. 透過tokenURI函數的元資料支援允許將每個 NFT 連結到包含名稱、描述和圖像 URL 的 JSON 檔案。
5. 此標準透過為同一合約中的每個代幣分配不同的uint256 tokenId來強制執行唯一性。
設定開發環境
1. 安裝 Node.js 和 npm 來管理相依性並執行 Hardhat 或 Truffle 等本機工具。
2. 使用npm init初始化一個新項目,並使用npm install @openzeppelin/contracts安裝 OpenZeppelin Contracts。
3. 使用npx Hardhat配置 Hardhat 項目,選擇範例項目選項來產生樣板檔案。
4. 在contracts/下方建立一個Solidity文件,命名為MyNFT.sol ,並匯入OpenZeppelin的ERC721實作。
5. 使用 Hardhat Network 設定本地測試網絡,或透過 Alchemy 或 Infura API 金鑰連接到公共測試網絡(如 Sepolia)。
編寫核心合約邏輯
1. 聲明合約MyNFT 為 ERC721、ERC721URIStorage來繼承基本功能和元資料儲存。
2. 定義一個建構函數,將名稱和符號參數傳遞給父 ERC721 建構函數並設定所有者位址。
3. 實作一個mint函數,該函數使用_safeMint將新的 tokenId 指派給指定位址,並透過_setTokenURI儲存其 URI。
4. 使用 OpenZeppelin 的Ownable修飾符新增存取控制,以便只有合約所有者才能呼叫mint 。
5. 透過使用私有uint256變數追蹤總供應量並在超出上限時恢復來強制執行鑄幣限制。
測試和部署注意事項
1. 使用 Hardhat 內建的ethers函式庫以 JavaScript 或 TypeScript 編寫測試腳本來模擬鑄造、轉移和查詢代幣。
2. 透過斷言檢查ownerOf返回正確的位址和tokenURI與預期的元資料路徑匹配來驗證行為。
3. 設定網路憑證後,使用 Hardhat 的npx hardhat run scripts/deploy.js --network sepolia指令部署合約。
4. 使用 Etherscan 的驗證工具提交原始程式碼、編譯器版本和建構函式參數以實現公開透明。
5. 將所有令牌 URI 儲存在 IPFS 或 Arweave 等去中心化基礎架構上,以確保元資料永久、防篡改的可用性。
常見問題解答
Q:鑄造後我可以更改 tokenURI 嗎?答:是的,如果您的合約繼承了ERC721URIStorage並且您實作了一個具有適當存取控制的函數來呼叫_setTokenURI 。
Q:如果同一個合約中兩個代幣具有相同的 tokenId,會發生什麼情況?答:不可能-ERC-721要求每個tokenId在合約內全域唯一;重複的分配將被恢復。
Q:我需要寫自己的supportsInterface函數嗎?答:否 — OpenZeppelin 的ERC721實作包含一個相容的supportsInterface ,它為 0x80ac58cd (ERC-721) 和 0x5b5e139f (ERC-721Metadata) 傳回 true。
Q:在不檢查核准狀態的情況下使用transferFrom是否安全?答:OpenZeppelin ERC721實作在內部處理所有核准驗證;如果使用正確,直接呼叫transferFrom是安全的。
免責聲明:info@kdj.com
所提供的資訊並非交易建議。 kDJ.com對任何基於本文提供的資訊進行的投資不承擔任何責任。加密貨幣波動性較大,建議您充分研究後謹慎投資!
如果您認為本網站使用的內容侵犯了您的版權,請立即聯絡我們(info@kdj.com),我們將及時刪除。
- 加密稅法案:數位資產面臨新的稅收規則,但清晰度仍然難以捉摸
- 2026-09-17 09:10:02
- MemeToro 透過人工智慧和公平啟動智能合約徹底改變了 BNB 鏈上 Memecoin 的發布
- 2026-09-17 09:10:01
- 聯準會一致升息表明鷹派決心,比特幣和以太幣將面臨持續波動
- 2026-09-17 09:20:02
- 安全地進行加密貨幣預售:購買加密貨幣、信任錢包安全和驗證合約的基本技巧
- 2026-09-17 08:50:02
- CLARITY 法案遭遇挫折,加密貨幣規則轉向監管機構,5 種加密貨幣成為焦點
- 2026-09-17 08:55:01
- 專欄在穩定幣發卡領域挑戰萬事達卡,Circle 推出 Arc 獲得大力支持
- 2026-09-17 09:00:02
相關知識
什麼是 NFT 生態系代幣?為什麼NFT計畫要推出自己的代幣?
2026-08-25 21:59:57
定義和核心功能1. NFT 生態系統代幣是由在更廣泛的不可替代代幣空間內運行的平台、市場或協議發行的本機實用程式或治理代幣。 2. 這些代幣通常建構在標準化智慧合約框架上,例如以太坊上的 ERC-20 或 Solana 上的 SPL,從而實現與去中心化交易所和借貸協議等 DeFi 基礎設施的互通性。...
什麼是 NFT 實用程式?除了數位資產還能得到什麼?
2026-08-21 09:40:07
Bitcoin 減半機制1. Bitcoin 的協議強制執行固定的發行時間表,其中大約每 210,000 個區塊,區塊獎勵就會減少一半。 2. 該事件大約每四年發生一次,直接減少每個區塊新進入流通的 BTC 數量。 3.截至2020年減半,礦工每區塊獲得6.25 BTC;下一次減少將使其達到 3.1...
什麼是動態 NFT? NFT 的影像或元資料會隨著時間的推移而改變嗎?
2026-08-31 18:20:08
定義及核心機制1. 動態 NFT 是一種不可取代的代幣,其元資料在鑄造後可以透過程式設計可變。 2. 與引用 IPFS 或集中式伺服器上託管的不可變 JSON 檔案的靜態 NFT 不同,動態 NFT 指向由可更新智慧合約控制的 URI 端點。 3. 可以重寫ERC-721或ERC-1155合約中的t...
什麼是 NFT 掉落?如何在新的 NFT 系列售罄之前找到它們?
2026-08-23 02:40:00
Bitcoin 減半機制1. Bitcoin 的協議強制執行固定的發行時間表,其中大約每 210,000 個區塊,區塊獎勵就會減少一半。 2. 該事件大約每四年發生一次,直接減少了新進入流通的 BTC 數量。 3.截至2020年減半,礦工每區塊獲得6.25 BTC;下次減少將達到 3.125 BTC...
什麼是免費的 NFT 鑄幣廠?扣除 Gas 費後「免費」真的免費嗎?
2026-08-22 10:00:29
市場波動模式1. Bitcoin 在 ETF 批准公告或重大交易所中斷等高流動性事件期間,24 小時視窗內價格波動通常超過 5%。 2. 當第 2 層升級提案進入最終治理投票階段時,以太坊的波動性指數會飆升,特別是在多個競爭性匯總同時獲得開發人員支持的情況下。 3. 穩定幣脫鉤事件(例如 2023 ...
什麼是 NFT 鑄幣通證?為什麼有些項目在鑄造之前需要一個?
2026-08-29 09:00:30
Bitcoin 減半機制1. Bitcoin 的協議強制規定 2,100 萬枚代幣的固定供應上限,並透過區塊獎勵引入新單位。 2. 每 21 萬個區塊(大約每四年),區塊獎勵就會減少一半,這個過程稱為減半。 3. 最近一次減半發生在 2024 年 4 月,每個區塊的獎勵從 6.25 BTC 減少到3...
什麼是 NFT 生態系代幣?為什麼NFT計畫要推出自己的代幣?
2026-08-25 21:59:57
定義和核心功能1. NFT 生態系統代幣是由在更廣泛的不可替代代幣空間內運行的平台、市場或協議發行的本機實用程式或治理代幣。 2. 這些代幣通常建構在標準化智慧合約框架上,例如以太坊上的 ERC-20 或 Solana 上的 SPL,從而實現與去中心化交易所和借貸協議等 DeFi 基礎設施的互通性。...
什麼是 NFT 實用程式?除了數位資產還能得到什麼?
2026-08-21 09:40:07
Bitcoin 減半機制1. Bitcoin 的協議強制執行固定的發行時間表,其中大約每 210,000 個區塊,區塊獎勵就會減少一半。 2. 該事件大約每四年發生一次,直接減少每個區塊新進入流通的 BTC 數量。 3.截至2020年減半,礦工每區塊獲得6.25 BTC;下一次減少將使其達到 3.1...
什麼是動態 NFT? NFT 的影像或元資料會隨著時間的推移而改變嗎?
2026-08-31 18:20:08
定義及核心機制1. 動態 NFT 是一種不可取代的代幣,其元資料在鑄造後可以透過程式設計可變。 2. 與引用 IPFS 或集中式伺服器上託管的不可變 JSON 檔案的靜態 NFT 不同,動態 NFT 指向由可更新智慧合約控制的 URI 端點。 3. 可以重寫ERC-721或ERC-1155合約中的t...
什麼是 NFT 掉落?如何在新的 NFT 系列售罄之前找到它們?
2026-08-23 02:40:00
Bitcoin 減半機制1. Bitcoin 的協議強制執行固定的發行時間表,其中大約每 210,000 個區塊,區塊獎勵就會減少一半。 2. 該事件大約每四年發生一次,直接減少了新進入流通的 BTC 數量。 3.截至2020年減半,礦工每區塊獲得6.25 BTC;下次減少將達到 3.125 BTC...
什麼是免費的 NFT 鑄幣廠?扣除 Gas 費後「免費」真的免費嗎?
2026-08-22 10:00:29
市場波動模式1. Bitcoin 在 ETF 批准公告或重大交易所中斷等高流動性事件期間,24 小時視窗內價格波動通常超過 5%。 2. 當第 2 層升級提案進入最終治理投票階段時,以太坊的波動性指數會飆升,特別是在多個競爭性匯總同時獲得開發人員支持的情況下。 3. 穩定幣脫鉤事件(例如 2023 ...
什麼是 NFT 鑄幣通證?為什麼有些項目在鑄造之前需要一個?
2026-08-29 09:00:30
Bitcoin 減半機制1. Bitcoin 的協議強制規定 2,100 萬枚代幣的固定供應上限,並透過區塊獎勵引入新單位。 2. 每 21 萬個區塊(大約每四年),區塊獎勵就會減少一半,這個過程稱為減半。 3. 最近一次減半發生在 2024 年 4 月,每個區塊的獎勵從 6.25 BTC 減少到3...
看所有文章














