是技術創新還是披著羊皮的狼?NFT 市場火爆背後的安全隱憂

買賣虛擬貨幣

“萬物皆可NFT”是謊言還是真相?去中心化的表面下暗藏了哪些中心化問題?究竟是科技與藝術的碰撞交融,還是一隻披著羊皮的狼?本期文章,我們將會走進NFT的世界,探索去中心化表面下的中心化的真相。

2021年對於幣圈來講註定是一個值得被載入史冊的一年,後疫情時代各國政府為應對經濟衰退而出臺的一系列巨集觀調控政策使得數字經濟突飛猛進,在貨幣寬鬆政策下大量的資金湧入幣圈,從比特幣到以太坊到寵物幣,從DeFi到NFT到metaverse,一個個新的IP被點燃,市場熱情高漲,信心爆棚。區塊鏈的發展站上了嶄新的高度,群星薈萃之間,NFT當屬那顆最閃亮的星。科技賦能業務,技術賦能藝術。Uniswap一雙襪子賣16萬美元,推特創始人五個單詞拍出250萬美元,加密藝術家Beeple在佳士得的NFT拍賣作品獲得975萬美元出價……一夜之間,NFT火爆全網。NFT,這個脫胎於區塊鏈的技術,因其所具有的非同質化特點可以廣泛地應用在通證經濟之中,在新的歷史起點下,將推動智慧財產權保護,加速資產流通性,重塑資產數字化,重新構建數字藝術體系。“萬物皆可NFT”的時代彷彿已經到來。

但是,新事物的產生和發展不是一帆風順的,而是前進性和曲折性的辯證統一。NFT也是如此,從標準的確立到走向市場,是一個充滿矛盾的過程。NFT背後的中心化安全問題一直沒有很好的解決方法:如何確定從鏈上token到鏈下資產的繫結關係,以及如何保證鏈下資產的不可篡改性等問題一直為人們所關注。在本文中,我們就來探討一下這些NFT背後的中心化安全問題。

閱讀建議:本文假設讀者已經對區塊鏈、以太坊、智慧合約、token等概念有一定的瞭解,初次涉獵區塊鏈以及以太坊技術的讀者,可以先行訪問【https://ethereum.org】熟悉基本概念。

NFT是什麼

A non-fungible token (NFT) is a unit of data stored on a digital ledger, called a blockchain, that certifies a digital asset to be unique and therefore not interchangeable.NFTs can be used to represent items such as photos, videos, audio, and other types of digital files. Access to any copy of the original file, however, is not restricted to the buyer of the NFT. While copies of these digital items are available for anyone to obtain, NFTs are tracked on blockchains to provide the owner with a proof of ownership that is separate from copyright.

根據上述來自於維基百科的定義:NFT(非同質化代幣,non-fungible token)是一種被稱為區塊鏈(數位賬本)上的資料單位,每個代幣可以代表一個獨特的數碼資料。由於其不能互換,非同質化代幣可以代表數位檔案,如畫作、聲音、影片、遊戲中的專案或其他形式的創意作品。同質化代幣,即FT(Fungible Token),互相可以替代、可接近無限拆分的token。例如,你手裡有一個比特幣與我手裡的一個比特幣,本質上沒有任何區別,這就是同質化,就是同質化幣。而非同質化代幣,即NFT,則是唯一的、不可拆分的token,如加密貓、token化的數字門票等。也就相當於帶有編號的人民幣,這個世界上不會有兩張編號一樣的人民幣,不會有兩隻一樣的貓,也不會有兩個完全一樣的NFT。

圖一、FT和NFT

關於NFT,簡單來說就是區塊鏈上資產所有權的通證化。以購買一件藝術品為例,當收藏家購買一件藝術品時,他們會簽署一份轉讓所有權的合同,然後收到一份真品證明,以證明他們擁有這件原作。NFT就是以類似的方式運作,在區塊鏈中建立一個不可複製的數字令牌(因此是“非同質化”),並將自動跟蹤底層檔案的整個所有權歷史和銷售價格。任何NFT資產的潛在買家都將確切地看到它是在什麼時候建立,什麼時候被購買和出售,價格多少以及由誰建立。因此,不僅產生正式所有權的整個過程是去中心化的,所有的交易歷史也是透明的,這使估值過程變得更為順暢。並且從數字商品(如存在於虛擬世界中的物品)到物理資產的債權(如服裝或房地產)都可以用NFT表示。在未來幾年,我們將看到NFT在一些全新的應用場景中使用,而它們都只有在區塊鏈上才能實現。

從技術角度來說,NFT是一個通證(token)的概念,它規定了每一個token都有一個id,因此每個token都是獨一無二的,並且token 資訊是儲存在區塊鏈上的,因此可以保證其唯一性、公開性、不可篡改性、安全性。NFT可以起"數字證書"的作用,每一個token對應一份特定資產。除此以外,每一個token還是不可分割的。NFT在通證經濟中有著廣闊的應用前景,目前來講,NFT主要被應用於遊戲以及數字藝術品領域。以太坊ERC-721協議就是NFT的一種實現標準。

ERC-721標準:

interface ERC721 {            event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);            event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);            event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);            function balanceOf(address _owner) external view returns (uint256);            function ownerOf(uint256 _tokenId) external view returns (address);            function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable;            function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;            function transferFrom(address _from, address _to, uint256 _tokenId) external payable;            function approve(address _approved, uint256 _tokenId) external payable;            function setApprovalForAll(address _operator, bool _approved) external;            function getApproved(uint256 _tokenId) external view returns (address);            function isApprovedForAll(address _owner, address _operator) external view returns (bool);        }

可以看到,ERC-721協議規定了3種event和9種function用來實現token的轉移、授權等操作以及對操作的記錄。我們注意到,幾乎所有的函式中都有一個叫做_tokenId的引數,該引數即為NFT token中用於標識每個token唯一確定的“身份證”。

注意:每個token有且僅有一個id,這也是保證NTF每個token都不一樣的唯一憑證。

不同種類的NFT有著不同的實現方式,從NFT與鏈下世界的資訊互動型別可以將NFT分為無繫結型NFT和有繫結型NFT(如圖二所示):

注:這裡的”繫結“指的是鏈上的NFT token與鏈下資產的繫結關係。

圖二、NFT分類

首先是無繫結型NFT,如圖三所示,這一類NFT指的是token的所有資訊只存在於鏈上,沒有其他的鏈下資產(資訊)和鏈上的token所關聯,例如CryptoKitties,該NFT是一個基於以太坊平臺執行的、聚眾雲吸貓的遊戲。使用者在遊戲中可以養大、買賣並繁育“電子寵物”小貓,每隻小貓對應一個NTF token,因此每一隻貓都是獨一無二的。而且每一隻貓的所有資訊都記載在合約中,因此不需要、也沒有鏈下額外的空間去記載貓的資訊。

圖三、無繫結型NFT

最近火爆全網的Loot 也是以太坊鏈上的一個無繫結型NFT,Opensea上介紹Loot說:

Lootisrandomizedadventurergeargeneratedandstoredonchain.Stats,images,andotherfunctionalityareintentionallyomittedforotherstointerpret.FeelfreetouseLootinanywayyouwant.

也就是說,Loot NFT是隨機生成的冒險者裝備,並儲存在區塊鏈上。統計數字、影象和其他功能被有意省略,供他人解釋。通俗一點,Loot 是一種黑色背景,只包含文字的鏈上NFT,任何人都可以參與鑄造,將會隨機獲得一組奇幻冒險家裝備,當然是以文字的形式,這些裝備具有隨機分佈的稀缺特徵。每個Loot都包含 8 種裝備,因此有8行字,每一行代表著一種裝備。總體來說,Loot是一種僅包含文字資訊的鏈上NFT,是的,它只是text文字!

如圖四所示,從Opensea上可以看到token ID 為2790的Loot NFT token的售價為9 ETH(約20萬人民幣)。

圖四、Loot NFT token 資訊

其所代表的資訊在etherscan上透過合約提供的以下介面可以檢視到(查詢結果即為上圖的所示8個片語)。

圖五、Loot合約介面

由於Loot NFT的所有資訊都放在了以太坊鏈上的Loot合約裡,因此,Loot是一個無繫結型NFT,其所有的資訊都放在鏈上。

其次是有繫結型NFT,這類NFT的特點是每一個token都和鏈下的某個資產(一幅畫,一首歌等)有著一一對應的關係,從某種角度來講,這種token可以視為鏈下資產的”證書“。因此這類NFT多用於藝術品的交易等工作。

如圖六所示,這一類的NFT和上面的NFT不同,這種NFT合約內部還儲存了和每一個token一一對應的一個外部連結,因此在這種NFT中,一個token的資訊不僅僅儲存在鏈上,還有一部分是儲存在鏈下的,因此,對於這種NFT,合約中會儲存token對應的外部URI資訊。

圖六、有繫結型NFT

如果合約中所記載的外部連結中沒有再額外指向其他地方的連結,即一個外部連結中包含全部描述對應token的資訊,那麼這種token叫做單級繫結NFT,如圖六所示。如果合約中所記載的外部連結中還有指向其他地方的外部連結,即多個外部連結巢狀迴圈,那麼對於這種token叫做多級繫結NFT。如圖七所示。如果外部連結的巢狀層數是n,我們就叫n級繫結NFT,區塊鏈層處於第0級(level 0)。

圖七、多級繫結NFT

NFT的中心化安全問題

前文我們講過,得益於區塊鏈技術的去中心化和不可篡改等特性,NFT中每一個token的安全性是可以保證的,即合約中token本身的內容(鏈上資料)的唯一性,合法性,所屬權是不可篡改的。但是在有繫結型NFT合約中不僅僅儲存了token本身的內容,如圖六所示的NFT合約,這種NFT合約中還儲存了和token對應的外部URI的資訊,外部URI指向的是token所對應的鏈下資訊。而這種鏈上和鏈下互動的機制中就存在我們開頭所講的中心化安全問題。

雖然合約內部的token id、external URI本身的內容是不可篡改的,但是URI所指向的外部頁面中的內容卻是可以修改的。如圖八所示,如果有人修改了外部連結中的內容,僅僅透過鏈上資料是無法檢測到的,在這種情況下,你的NFT資產隨時可能被別人掉包。也就是說對於上圖六、圖七所示的有繫結型NFT合約來講,是無法保證鏈上資料和鏈下資產的一致性的。這就是NFT中如何保證鏈下資產不可篡改性的中心化安全問題。

圖八、對有繫結型NFT的篡改

有繫結型NFT分為2種:弱繫結型NFT和強繫結型NFT

弱繫結型NFT即為上述所說:無法保證鏈上資料和鏈下資產一致性的NFT,例如圖六、圖七所示的即為弱繫結型NFT。

強繫結型NFT指的是可以保證鏈上資料和鏈下資產的一致性的NFT,也就是說存在某種機制,使得token所對應的鏈下資產無法被篡改,或者對篡改操作可以溯源的NFT。顯然,強繫結型NFT更加安全、可靠,也更符合區塊鏈“去中心化”的設計理念。

為了更好地瞭解當前的NFT生態,我們選取了截止到9月11號為止以太坊上歷史交易量(Transfer Event)最多的10個符合ERC-721標準的NFT合約來進行分析(合約資訊以及分析結果在本文最後的附錄中)。遺憾的是,目前大部分有繫結型NFT都是弱繫結的:10個NFT合約中,除了3個無繫結型NFT,其餘的7個有繫結型NFT中有6個都是弱繫結的。

案例分析:Art Blocks

Art Blocks在上述6個頭部弱繫結NFT中比較活躍且較具代表性,以下我們就以Art Blocks作為案例分析的目標NFT。

Art Blocks 是一個專注於策劃可程式設計生成藝術作品的平臺。這些作品通常使用 p5.js 進行程式設計,p5.js 是一個允許創造性編碼的 JavaScript 庫,指令碼儲存在鏈上。當鑄造新藝術品時,會使用指令碼隨機生成一個獨特的“種子”,從而生成獨特的藝術品。據Opensea(Opensea是目前以太坊網路上規模最大的NFT買賣市場)顯示:截止到9月16號為止,Art Blocks是七天之內成交量最大,歷史上成交總金額第二大的NFT。

圖九、Opensea平臺上NFT 7天成交量排名

如圖十所示,從Opensea上可以看到token ID 為95000658的Art Blocks NFT token的競價高達398.5 ETH(約1千萬人民幣)。

圖十、天價Art Blocks NFT token

那麼這個token背後所代表的是什麼呢,我們在etherscan上透過合約介面去檢視這個token的資訊得到對應的URI為:https://api.artblocks.io/token/95000658。

圖十一、Art Blocks合約介面

如圖十二所示,這個外部連結的內容為一個json格式的檔案,其定義了藝術品相關的資訊,在這個json檔案中,給出了指向圖片藝術品的URI(image欄位)。我們注意到無論是鏈上儲存的token URI 還是鏈下儲存的image URI,這些URI都指向的是Art Blocks這個專案方私有的站點,並且沒有校驗機制。簡而言之,如果專案方私下更改URI內的內容,那麼使用者的NFT收藏品就會被掉包。顯而易見,作為一個多級弱繫結型NFT,Art Blocks是存在中心化安全隱患的。

圖十二、ArtBlocks NFT token的鏈下資訊(level 1)

此外,我們之前也提到過在弱繫結的NFT中,如果有人獲得了你的token所對應的外部連結的控制權,那麼他就可以修改這個連結內的內容,從而可以在神不知鬼不覺的情況下掉包你的NFT token。雖然弱繫結的NFT從某些方面可以省去一些成本、提高開發效率等,但是這些是以犧牲NFT的安全性為前提的。

區塊鏈的初衷之一便是去中心化加上密碼學機制所帶來的安全性和不可篡改性。如果說我們拋棄了這些特性,那麼存在於區塊鏈之上的NFT又和傳統的證書方式有何異處呢?

可以做得更好

目前多數有繫結型的NFT都是弱繫結型NFT,無法有效地保證鏈上的token和鏈下的資料完全一致。而強繫結型NFT,採取了特殊的方法來保證token鏈上鍊下資訊的一致性。強繫結型NFT主要有以下兩種實現方法:

第一種是透過以IPFS為代表的基於區塊鏈、分散式網路儲存實現強繫結機制的NFT:

圖十三、IPFS強繫結型NFT

這種方式透過將檔案存放在不可篡改的區塊鏈或者分散式網路儲存系統上來保證鏈上資訊和鏈下資訊的一致性,例如IPFS或者是Arweave,由於其檔案系統的技術特點可以保證檔案一旦上傳便不可篡改,因此token資訊的一致性不會被破壞。如圖十三所示即為使用IPFS的NFT:這種NFT合約中儲存了每個token對應的外部IPFS URI地址,由於IPFS檔案系統是分散式、點到點、且不可篡改的檔案系統,檔案一旦上傳到IPFS網路中就不可再更改,因此每個token所對應的鏈下資訊也是不可更改的。RARI NFT就採取了這種方式。

採用以IPFS為代表的基於區塊鏈、分散式網路儲存實現強繫結機制的NFT合約的優點是合約中只需要記載token 對應的URI資訊,節省了鏈上儲存空間。缺點是區塊鏈或者分散式網路儲存系統使用起來比較麻煩,對於普通使用者不友好,使用成本較高。

第二種是透過雜湊指標實現強繫結機制的NFT:

雜湊指標,英文為“Hash Pointers”,就是一個指向資料儲存位置,以及該儲存位置裡面的資料的雜湊值的指標。一個普通的指標可以告訴你資料儲存的位置,而雜湊指標不但可以告訴你資料儲存的位置,還可以給你一種方式,讓你驗證資料沒有被篡改過。

圖十四、雜湊指標強繫結型NFT

如圖十四所示,在使用雜湊指標實現強繫結的NFT中,鏈上合約內部儲存了第一層外部連結的雜湊指標,第一層外部連結內儲存了第二層外部連結的雜湊指標......每一級的儲存系統都儲存了指向下一級的雜湊指標,在這種機制下,如果某一層的內容被篡改了,那麼一定可以被追查到被篡改的地方。

採用雜湊指標方式的強繫結型NFT合約的優點是易於使用,外部檔案的儲存不僅僅侷限於區塊鏈或者分散式網路儲存系統,還可以使用http、https等全球資訊網協議。缺點是在每一級的儲存結構中都要儲存下一級連結的雜湊指標,較為浪費空間,尤其在寸土寸金的區塊鏈上,多存一部分的內容的開銷不容小覷。

從安全形度來講,我們建議NFT合約的設計規範應符合以下條件之一:

1. 採用非繫結式NFT,即全部資料都放在鏈上

2. 採用類似基於IPFS機制實現的的強繫結NFT

3. 採用基於雜湊指標實現的強繫結NFT

總結

本文分析了以太坊上的交易量最多的10個NFT合約,這其中大多數合約都是弱繫結型NFT合約,弱繫結合約存在不容忽視的中心化安全問題,從某種程度上講,弱繫結型合約就像是一個披著區塊鏈外皮的中心化證書系統,而中心化的權力機構擁有對NTF的絕對控制權,在這種情況下,你口袋中的NFT不是屬於你自己的,只是別人暫時賦予你它的使用許可權,而且隨時可收回,這在去中心化的世界中不可不謂是一種倒行逆施。

安全工作無小事,天堂地獄一念間。在去中心化的世界中技術應該幫助建立起一個公平公正的框架,而不是那種披著去中心化外皮的傳統中心化體系。目前,NFT的發展方興未艾,一系列的標準有待確立,舊的世界需要被打破,新的秩序急需建立。我們有理由相信,一個真正的去中心化的NFT世界終會到來。

附錄

本文所分析的10個以太坊上的NFT合約

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读