“万物皆可NFT”是谎言还是真相?去中心化的表面下暗藏了哪些中心化问题?究竟是科技与艺术的碰撞交融,还是一只披着羊皮的狼?本期文章,我们将会走进NFT的世界,探索去中心化表面下的中心化的真相。

    作者:逢行(BlockSec Team)

原标题:是技术创新还是披着羊皮的狼?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说:

Loot is randomized adventurer gear generated and stored on chain. Stats, images, and other functionality are intentionally omitted for others to interpret. Feel free to use Loot in any way you want.

也就是说,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合约