什麼是 ERC-721?
ERC-721 是 Ethereum 上用於追蹤獨立編號代幣的一套介面標準。這類代幣通常稱為非同質化代幣(non-fungible token,NFT):同一合約裡的每個編號都能被單獨識別和轉移,不像按數量累計餘額的同質化代幣那樣只關心有多少單位。
ERC 是 Ethereum Request for Comments 的縮寫,指 Ethereum 的應用層標準與約定類別;721 是這項提案的編號。標準讓錢包和應用知道怎樣查詢某個編號由誰持有、怎樣轉移它,以及怎樣授權其他地址代為操作。
獨立編號怎樣標識一個代幣
每個 ERC-721 合約都可以管理很多代幣編號,也就是 tokenId。編號只在這份合約內部有意義,因此在同一網路上識別一個代幣需要同時使用合約地址和編號;跨網路核對時還要加上網路名稱。
例如,A 合約的 7 號代幣和 B 合約的 7 號代幣不是同一個物件。即使兩個代幣顯示相同名稱或圖片,只要合約地址不同,它們的鏈上紀錄就彼此獨立。
編號本身也不保證稀有、真實或有價值。開發者可以採用連續編號、隨機編號或其他分配方式;標準只要求具體編號能夠被區分,不解釋編號背後的商業含義。
持有紀錄怎樣查詢
ERC-721 提供兩種容易混淆的查詢:
ownerOf查詢某個編號目前歸哪個地址;balanceOf查詢某個地址持有多少個該合約的代幣。
這裡的餘額是代幣件數,不是把編號相加,也不表示這些代幣價值相同。若想知道某個地址具體持有哪些編號,僅靠基礎 balanceOf 不夠;應用可以讀取歷史和目前狀態建立索引,或使用合約另外提供的可選列舉功能。
轉移的是指定編號
轉移 ERC-721 代幣時,操作必須指出發送地址、接收地址和具體編號。成功後,合約會更新該編號的持有人,並發出 Transfer 事件,供錢包、區塊瀏覽器和資料服務識別變化。
ERC-721 同時規定普通轉移和安全轉移。transferFrom 直接把指定編號轉給目標地址;safeTransferFrom 在目標是合約時,還會檢查對方是否按約定確認能夠接收 ERC-721 代幣。若沒有正確確認,安全轉移會失敗,從而減少代幣被轉入無法處理它的合約後卡住的情況。
「安全轉移」只檢查接收合約是否支援這套接收流程。它不會判斷接收地址是否屬於預期的人,也不會驗證代幣內容、交易價格或外部專案是否可信。
單個授權與全部授權
持有人可以讓其他地址或應用代為操作代幣,但 ERC-721 把授權分成兩個範圍。
approve 為一個具體編號指定獲准操作的地址;getApproved 查詢該編號目前的單獨授權。代幣發生轉移後,這項單獨授權會被清除。
setApprovalForAll 則把持有人在該合約中的全部代幣交給某個操作方管理;isApprovedForAll 用來查詢這種全量授權。它不只是授權目前已經持有的編號,也可能影響之後取得的同一合約代幣,直到授權被撤銷。
單個編號的授權發生變化時,合約會發出 Approval 事件;全量授權發生變化時,則會發出 ApprovalForAll 事件。錢包和資料服務可以據此更新紀錄,但實際授權仍要以合約目前狀態為準。
全量授權不會立即轉走代幣,但被授權方獲得了很大的操作範圍。使用者需要核對被授權地址和合約地址;僅中斷錢包與網站的連線,通常不會撤銷已經寫入鏈上的授權。
詮釋資料把編號連接到描述資訊
基礎持有與轉移介面只處理編號和地址。ERC-721 的可選詮釋資料擴充可以提供代幣名稱、交易代碼,以及一個返回描述資訊位置的 tokenURI。
這個位置可能指向鏈上資料,也可能指向網站或分散式儲存中的檔案。檔案通常再包含名稱、描述和圖片地址。錢包能否顯示圖片,取決於它是否支援相應格式,也取決於連結和檔案仍然可存取。
所以,NFT 在鏈上存在,不表示圖片本身一定儲存在鏈上。詮釋資料還可能被伺服器更新,或因連結失效而無法讀取。判斷內容能否長期保持,需要查看具體儲存方式和合約是否允許修改位置。
標準怎樣讓應用識別介面
ERC-721 要求合約支援一種介面識別機制。應用可以詢問合約是否宣告支援某組功能,再決定能否按 ERC-721 的方式與它互動。
另一項 Ethereum 介面標準 ERC-165 規定了這套機制,作用類似讓合約回答「我支援哪些介面」。它能幫助應用選擇呼叫方式,但只能反映合約的宣告和實作,不能證明代幣內容真實或程式碼沒有缺陷。
詮釋資料和列舉屬於可選擴充。一個合約可以支援基礎 ERC-721 轉移,卻不提供名稱、圖片連結或完整編號清單。錢包不應把可選功能當成每個 ERC-721 合約都必然具備的能力。
與同質化代幣標準的區別
ERC-20 主要記錄每個地址擁有多少單位;轉帳時填寫數量。ERC-721 主要記錄每個編號歸誰;轉帳時填寫具體編號。
因此,持有 3 個 ERC-721 代幣只說明有 3 個編號,不表示三者可以互換或價值相等。相反,同一種 ERC-20 代幣的等量單位按合約記帳時通常可以互換,不需要逐個編號追蹤。
兩類標準都可以提供轉移和授權,但參數和授權範圍不同。應用不能因為函式名稱相似,就用 ERC-20 的數量邏輯處理 ERC-721 編號。
標準沒有證明鏈外權利
ERC-721 記錄的是合約中的編號、持有人和授權關係。它本身不會確認某張圖片由誰創作,也不會自動授予著作權、門票入場權、實物所有權或其他鏈外權利。
一個專案可以用編號關聯收藏品、遊戲物品、會員憑證或其他物件,但這種關聯是否有效,還取決於發行安排、使用規則、內容來源和適用法律。鏈上持有人變化只證明合約狀態改變,不能單獨證明鏈外機構一定承認相同結果。
相容標準不等於行為完全相同
具體合約可以在基礎介面之外加入鑄造、銷毀、暫停、名單、版稅提示、升級或其他規則。ERC-721 沒有統一規定代幣如何首次建立、供應是否有上限、交易平台必須怎樣收費,也不保證所有應用都會遵循額外資訊。
接入或使用具體代幣時,需要核對網路、合約地址、編號、授權範圍、詮釋資料儲存和管理權限。「ERC-721」只是共同介面,不是對發行方身分、內容真實性、稀有度或市場價值的認證。
常見問題
每個 NFT 都使用這套標準嗎?
不是。其他網路有自己的代幣模型,Ethereum 上也存在其他 NFT 標準或自訂介面。需要先確認網路和具體合約支援的標準。
一個合約只能建立一個 NFT 嗎?
不是。同一 ERC-721 合約可以管理許多獨立編號,每個編號分別記錄持有人和授權狀態。
編號相同就是同一個 NFT 嗎?
不是。編號只在具體合約內唯一。必須把網路、合約地址和編號一起核對。
安全轉移能防止轉錯人嗎?
不能。安全轉移主要檢查接收合約能否按約定接收 ERC-721 代幣,不會判斷地址是否屬於預期收款人。
購買 NFT 就獲得圖片版權嗎?
不一定。ERC-721 不規定著作權或其他鏈外授權。持有人獲得哪些使用權,需要查看專案條款、授權和適用法律。
相關詞條
繼續了解代幣標準、加密代幣、ERC-20和智能合約,或返回加密貨幣術語表。
參考來源
- ERC-721:非同質化代幣標準——編號與持有人查詢、轉移、授權、事件和可選擴充。
- Ethereum.org:ERC-721 介紹——非同質化代幣的用途、合約識別和常用介面。
- ERC-165:標準介面識別——合約宣告和查詢所支援介面的機制。



