什么是NFT(Not-Fungible Token = 非同质化代币)
NFT是啥?内啡肽吗?很苦很苦的那个……
术语说明
NFT = Non-Fungible Token = 非同质化代币
FT = Fungible Token = 同质化代币
UTXO = Unspent Transaction Output——未花费的交易输出
token = 通证,一般用来比喻货币
前言
大家可能对NFT有一些了解。作为区块链领域的出圈产品,NFT自2017年的加密猫开始逐渐受到关注和喜爱。当时,公链市场还没有非常出色的产品,但一只时尚的加密猫(如下图所示)却能以600个ETH的价格出售(截至2023年2月13日,每个ETH的价格为1,520.43美元),这意味着一个NFT的加密猫能卖到91.2258万美元。
如今已经到了2023年,NFT市场不但没有像过去很多人预测的那样消失,反而推出了越来越多的产品,其中包括著名的CryptoPunk(著名的像素画艺术品,下面图一)、BAYC(库里推特头像-加密猿猴,下面图二)等。同时,越来越多的游戏公司开始使用NFT将他们的游戏装备链上化,利用GameFi等概念,使得游戏装备具有交易性和永久性。那么,NFT究竟是什么呢?下面我们来一步一步理解。
理解(FT = 同质化代币)
要想理解这个概念,首先我们得知道什么是同质化代币,其中一个著名的例子就是大家非常熟悉的比特币。
比特币
比特币。作为区块链技术的第一个应用,无论在任何讨论区块链的话题时,似乎都无法避免提及比特币。比特币被定义为“点对点的电子现金系统”,是定义在比特币区块链上的一种货币。在这里使用“货币”而不是“代币”的原因是,“代币”这个名词更多地指的是在以太坊上运行智能合约(一段运作在以太坊系统上的代码)而创建的货币。比特币的创建是由挖矿(是指大家计算一个数学难题,获取提交记账权利的过程)活动产生的,矿工在挖到对应区块后,会在区块的第一笔Transaction(交易)中生成对应数量的UTXO(Unspent Transaction Output——未花费的交易输出)来代表比特币的产生。在比特币中,UTXO是一种货币形式,可以理解为现实中的纸币。一个账户的所有UTXO的数量总和在一起就是该账户的余额。每一笔UTXO都有一个唯一编号(使用交易hash + index-第几个输出来确定——比特币的每一笔转账被称为交易,交易有输入和输出,其中输入和输出都有序号标识,类似于数组的下标),它类似现实中每张100元人民币都有自己的唯一编号。比特币正是通过这种模式来实现转账的溯源。下图是一个简单的使用比特币系统进行转账的例子,从左到右,首先由一个5BTC(比特币的代称)的交易输入,得到一个[4BTC, 1BTC]的UTXO列表,其中输出的1BTC的序号为1,它可以使用[Transaction1(交易1) + index_1]来唯一标识。而在经过Transaction3(交易3)之后,由于它被用做交易输入(in),在交易结束之后,会被打上标记证明这笔钱已经被消费掉了。用生活的例子来看,比特币的交易方式与现金机会一致,只有不同的点在于,比特币每次消费一笔之后,会将这一笔打上消费标记,相当于撕毁这部分现实中的纸币,而创造新的交易输出(新的零钱纸币)。
同时,比特币被认为是一种同质化的货币,尽管每个比特币的UTXO(未使用的交易输出)都有唯一的编号。这是因为在现实中,每个比特币的价值都是等价的。例如,如果Alice和Bob都拥有一个比特币,那么他们在比特币区块链上能做的事情是一致的,他们的购买力是相同的。这与现实世界中的货币类似,例如每张100元的现金虽然有不同的编号,但是它们的购买力是相同的,任何商家在收款时都不会指定编号来接受付款。下面图是一个简单的例子,当Alice持有[Transcation1(交易1), index_0]唯一标识的价值1BTC的UTXO,和Bob持有[Transcation2(交易2), index_1]标识的1BTC的UTXO同时去老王家的披萨店买披萨的时候。老王除非有特殊的数字爱好,不然两人能买到的披萨数量应该是一样的。
讲解完比特币后,我们能大致明白比特币的创建、花费过程。也说明了比特币本身是一个同质化的货币,接下来我们进一步讲解另一种同质化货币,与比特币一样著名的区块链——以太坊上的原生货币Ether
Ether
以太坊是比特币后的新一代区块链系统。如果比特币缔造的是去中心化货币系统,那么以太坊缔造的就是去中心化合约系统。这里的“合约”概念将在后面详细介绍。现在,让我们先关注一下以太坊系统中的货币——ether。我们已经讲到比特币的货币形式是UTXO,一个账户的余额是通过综合所有UTXO来计算而成的,就像现实中钱包里由50元、20元、100元、5元等各种零散钞票组成。而在以太坊的账户模型中,使用“余额”(Balance)来存储自己的ether数量。我们可以将以太坊视为一种记账方式,类似于微信支付、支付宝和银行账户等。一个账户的余额仅由“余额”(Balance)这一个字段来决定。关于Ether的创建过程,和比特币有点类似,比特币是通过挖矿(计算数学难题,正确记账权利的过程)活动创建UTXO来创建的,而以太坊是直接通过增加获取到记账权利的矿工(执行以太坊程序的用户)地址的余额来实现的,也就是在“Balance”字段上面新增数量。而以太坊的转账和花费也更简单,比特币还需要通过交易的输入/输出来撕毁钞票等模式,以太坊则是直接在转账两方的余额字段上面进行加减。具体的例子可以看下面的这张图:
著名的用户Alice本来有1.5个eth(ether的缩写),而她的好朋友Bob只有0.5个eth,他们协商了一笔价值(value)为1个eth的交易,由Alice(From)地址转向Bob(to)的地址。最终在他们交易完成之后,我们可以看到Alice的余额由1.5eth变成了0.5eth,而Bob则是从0.5eth到了1.5eth。至此他们就完成了转账过程。
从上面的转账过程,我们不难看出,Ether也是一种同质化代币,比比特币更彻底地同质化了。在以太坊中,每个ether都没有唯一编号,每个ether都是完全相同的,没有任何区别。以微信支付为例,其零钱中的每一元钱都没有任何区别,每次支付时,我们甚至不知道哪一元钱会被花费。(在比特币中,由于UTXO都有唯一编号[交易hash + 序号index],因此我们可以知道花费的是哪笔钱。)
聊完以太坊的原生代币之后,我们进入了同质化“代币”的最后一个部分——ERC20代币,这是一种部署在以太坊上的合约代码——一段不可停机的程序
以太坊上的ERC20
对于没有接触过以太坊的人来说,看到ERC20这个词可能会感到困惑。那么,ERC20是什么意思呢?
首先,我们需要从以太坊上的合约开始讲起。我们在介绍以太坊时提到,以太坊是一个去中心化的合约系统。要理解这个概念,我们需要先了解以下两点。
第一点,比特币是一个去中心化的货币系统。现代社会是法制社会,同时也是中心化的社会,我们的每一笔资金交易几乎都要通过金融机构才能完成(当然,纸币除外)。比如我们银行转账(如下图),我们需要银行来执行转账,如果银行冻结了我们的账户,我们就无法完成转账。这里的核心问题是,我们的资金财产权在我们手里,但我们的使用权被中心化的金融机构所限制(当然这种限制大多数时候是为了用户的财产安全和宏观经济的风险控制)。
比特币的出现就是为了打破这种局面,它利用一个去中心化(p2p网络)的货币系统(上图右侧),能够实现全世界任何一个地方的转账,不需要任何金融机构,让用户的财产权在自己手里。比特币利用的基本技术是一个全世界维护的账本(区块链),没有任何单个节点能够篡改账本,从而实现了一个健壮、无边界的货币系统(至少从2009年开始,没有出现任何的坏账)。
第二个要解决的问题是合约:以太坊是比特币的升级版本,因此以太坊本身已经是一个去中心化的货币系统。但是,除了货币,现实世界中的合约同样存在中心化的问题。合约本质上是两个或多个方之间的约定和契约,需要所有方共同遵守。然而,现实中合约毁约的情况非常常见,因此需要第三方公证机构进行监督。但是,和货币系统一样,第三方公证机构也会存在作弊、贿赂等问题。因此,以太坊需要解决的问题是如何使合约去中心化、不可更改和强制执行。以太坊使用合约系统来实现“代码即法律”的能力,即上链后不可更改,并强制执行。在以太坊系统中,代码被称为合约,并使用特殊语言(通常是Solidity/Viper)进行编写,使用EVM(以太坊虚拟机)进行函数逻辑执行。
了解了这些前置知识后,我们来解释ERC20是什么。ERC(Ethereum Request for Comments)是以太坊项目的编程规范,而20是它的编号。因此,ERC20本质上是以太坊推荐的一种编程规范,是一个合约接口规范。它实现了一个类似于以太币的账户模型,使得许多项目能够发布自己的货币。实际上,ERC20合约非常简单,其基本的数据结构只有两个map,具体可以看下面的例子。
// address -> 账户地址// uint64-> 拥有多少余额mapping(address=>uint64) balances;// address_1 : owner,拥有代币的账户地址// address_2 : spender, 能代理用户转账的地址// uint256 : amount, 能代理的数量mapping(address=>address=>uint256) allowance;
让我们通过一个生活中的例子来解释ERC20代币合约中的数据结构。假设我们使用微信支付,第一个数据结构 balances 存储的是我们的钱包里有多少余额,而第二个数据结构 allowance 类似于亲属卡,其中第一个地址是我们的钱包地址,第二个地址可能是孩子、父母等角色。我们每个月通过限定亲属卡的数额,便可以实现让亲人使用我们的钱来支付的需求。
ERC20代币合约实现了这样一套代币接口协议,常见的代币包括USDT、USDC和UNI等,这些代币都可以像去中心化的货币一样在以太坊平台上进行流通和转账。
如果我们深入探讨这个协议,我们会发现,它和Ether本身的协议非常类似,都采用了记账模式中的 Balance,因此每个token的使用价值也是一样的,所以这些token也是同质化的。
总结
经过上面的例子,相信大家已经理解了FT(同质化)的含义。其核心概念可以总结为:
- 每一笔钱在用户或商家的认知中没有区别,其购买力和使用价值是相同的。
我们称这样的货币或代币为FT(同质化)货币或代币。
使用场景
同质化代币通常用于构建货币体系,作为支付和流通手段。比特币和以太坊原生代币是常见的例子,用于支付各自区块链上的交易费用(称为 gas fee,是以太坊合约执行的计价单位)。ERC20代币是一种在以太坊上发布的可编程代币,由于其代码可编程性非常强,因此在 ICO 等模式下得到广泛使用。不过,ICO 本身是违法的,大家不应该轻易尝试。
理解NFT
通过理解NF代币,我们可以很容易地理解NFT的概念。NFT的本质意义是每一个代币都是独一无二的,不同于其他代币,无法等价交换,也不具有相同的购买力或价值衡量。那么,如何实现NFT呢?另外,NFT的价值又体现在哪些方面呢
以太坊的ERC721
在谈论NFT时,不得不提以太坊的ERC721协议。它和以太坊的ERC20协议一样,是一种以太坊应用拓展的编程规范,用于实现NFT的合约标准。正如我们之前所述,NFT的本质是每一个代币都是不等价的,那么如何实现每一个代币都是独一无二的呢?
这个问题可能很容易想到:为每一个代币分配一个唯一的编号,例如从1开始,每次新发行一个代币时将其编号+1,这样就可以实现每个代币都有独一无二的序号,从而区分不同的代币。这确实是NFT的实现方案,也是ERC721协议的核心思想。与此不同的是,ERC721协议的核心数据结构是几个简单的映射(map)。
// uint256 -> tokenId// address -> 账户地址mapping(uint256=>address) _onwers;// address -> 账户地址// uint256 -> 拥有多少个这个合约发行的代币mapping(address=>uint256) _balances;// 其中tokenid为某一个token的唯一标识 -- 自增,每次新发现一个token便增加 1// address为拥有这个tokenid的token的账户
虽然ERC721通过TokenId的设计让每个代币都有一个唯一的序号,但是这并没有解决一个核心问题:如何确保每个代币的价值是不同的。这正是NFT的核心和价值所在。我们知道,如果只有一个TokenId不同,那么上文所提到的比特币UTXO也具有同样的效果,那么为什么我们还认为比特币是同质化的呢?这是因为每个UTXO之间没有其他实际价值的差异,从而使每个代币都独一无二。数字本身是没有价值的。
解决价值绑定问题
为了解决这个问题,我们需要思考如何将tokenid与一个独一无二的内容绑定,从而实现价值和唯一标识的绑定,进而实现非同质化的能力。在ERC721规范中,有一个名为 TokenURI 的函数,可以用来实现不同tokenid绑定的价值内容。
以下是几种常见的NFT实现思路。
tokenid绑定后台URL
经过前文阐述,我们知道tokenid可以作为一个唯一标识来绑定对应的内容,实现非同质化的能力。但是最容易想到的方案是将后台url绑定到tokenid上,附带大量的价值,例如几百MB的图片、炫酷的游戏或个人网站等。然而,这样做实际上是没有意义的,因为这些URL附带的价值是随着后台程序的变化而消失的。因此,我建议不要使用这种NFT,因为只要后台程序挂掉,附带在NFT上的价值就会消失。尽管这样的项目不在少数,如OpenSea的某些拍卖品等。
tokenid绑定去中心化存储URL
既然将后台url直接绑定到tokenid上存在如此大的风险,那么绑定到一个去中心化存储的url上会更安全。这也是目前市场上一种非常常见的思路。通常,项目方会使用IPFS、Arweave等去中心化存储方式来保存数据,然后将url放到链上以供使用。在此简单介绍一下去中心化存储的概念,它的目标是将文件等内容进行分散化冗余存储,从而实现文件的永久保存性。因此,使用tokenid绑定到去中心化存储的url上具有一定的价值绑定,但仍然取决于去中心化程度。
tokenid绑定SVG图片
除了绑定去中心化存储的 URL 外,还有一种更极端的方式可以保证 NFT 的价值,即将 NFT 的价值直接放到以太坊合约代码里面。正如我们之前所说,以太坊合约的特点是 “code is law”,发布到链上的合约将永远不会被更改。这意味着将 NFT 的价值直接放到合约代码中,可以更好地保证 NFT 的价值与其对应的 token ID 永久绑定在一起。例如著名的项目loot
现在我们已经了解了基本的 NFT 设计以及如何绑定价值。接下来,我们将讨论一个更为核心的问题:NFT 的优势是什么?
NFT的优势
流动性、便利性
用一个生活中的例子来比较,ERC20的代币设计类似现实中的人民币、美元等货币,而ERC721等则类似现实中的古董艺术品。ERC20的优势在于去中心化,无需依赖金融机构即可实现代币转账等能力。那么ERC721的优势又是什么呢?
我们可以通过一个例子来说明。假设作者本人拥有一件古董(具有唯一标识性,且无第二件),如果需要将其出售,一般需要去拍卖会,经过漫长的拍卖过程才能将其卖出。同时,作者几乎需要亲自带着古董到处跑,去拜访各类买家,而艺术品的市场较小,普通人很难参与其中。因此,古董艺术品的流动性非常差,这导致想要出售古董时遇到很多困难。此外,作者还需要请专家鉴定古董的真伪,同时需要解决如何进行交易、使用何种方式交易以及如何保证双方完成交易等繁琐的问题。
相比之下,如果作者的藏品是一个NFT,他只需要在NFT交易市场(如Opensea)上挂单售卖即可。无需验证藏品的真实性(因为tokenid与其价值已经通过智能合约绑定在一起),也不用担心交易时可能遇到的货不对款等问题(智能合约可以强制执行交易)。
宣传性
“一点点的奶茶和文和友的奶茶,虽然原料相同,但是价格确不一致。”
由于NFT具有唯一性等特点,它可以为使用它宣传的项目/产品提供更多曝光度。目前,像LV和Nike这样的品牌已经通过NFT等方式来实现宣传目的。虽然鞋子、包本身都是一样的,但是一旦它们拥有了稀缺性,并且这种稀缺性可以得到证明,那么它们的价值就会大大增加。
数字转型
我相信很多人已经关注到了最近暴雪在中国市场的游戏销售下滑。这种趋势实际上反映了以太坊的创始人”v神”最初创建以太坊的愿景,即将游戏道具等数字资产放在去中心化平台上,以实现即使游戏不再存在,这些数字资产也将永久存在。NFT等技术现在已经使这一愿景成为现实。目前,游戏产品可以完全采用NFT技术来实现道具的交易和永久保存。
NFT炒作的逻辑
实际上,通过上面的讨论,我们已经大致了解了如何实现最简单的NFT。当然,这只是NFT的基础知识,NFT还有许多深入的方向,例如ERC1155和著名的DID社交协议等,我在后续的文章中也会涉及到。然而,我更想探讨的是NFT炒作的逻辑。目前,大多数人只是炒作和投机NFT,如果我们不能正确理解其中的逻辑,可能会受到骗局的影响。
ICO的骗局
说到投机,我们不得不先介绍一下著名的始作俑者ICO。ICO全称为Initial Coin Offering,和IPO相呼应,IPO是上市公司售卖自己股票的表现,而ICO则是项目方售卖自己的代币的行为(ERC20代币)。ICO的骗局逻辑是:
- 我要做一个东西,我将发一个self币,这个self币能够类似占有我的股份一样占有这个项目的利益划分权。
- 我做的这个东西未来很多人会使用,因此self币具有极大的市场,未来我的币价会升高。
- 因此,现在购买币来支持我完成这个东西,未来卖掉可以获利!
本质上,ICO利用用户对项目未来的期望进行筹资。但是ICO门槛低,法律保护薄弱,绝大多数项目方拿到资金后并不实际工作,而是跑路了。由于缺乏法律保护,资金也无法追回,导致大量用户受骗。
NFT的逻辑
在讲解 ICO 的基本逻辑之后,我们来看看 NFT 的逻辑:
- 我有一件独特的物品,我发行一个独一无二的 NFT 代币并宣布两者之间有某种联系。
- 这个物品非常有价值,因此 NFT 代币会有极大的市场需求,因此我的 NFT 代币未来的价值会上涨。
- 因此,现在购买 NFT 代币,未来出售将会获得盈利!
实际上,在比较 ICO 和 NFT 后,我们会发现:
- NFT 代币基于一个已经存在的物品,而 ICO 则是基于一个尚未存在的项目。
- 两者都基于未来增值的前提。
事实上,这种逻辑在现实资本市场中也同样存在。如果我们想吹嘘某个尚未存在的东西,我们会说未来一定会出现,而且比现有的任何东西都更好(ICO 逻辑);而如果一个东西已经存在,我们会说这个东西非常珍贵,未来可能没有任何比它更好的(NFT 炒作逻辑)。这种逻辑并没有错,现实中的广告也常常如此。只是区块链中的代币和 NFT 使得这些逻辑变得更加复杂。
区块链的去中心化使得几乎每个人都能参与市场,并让市场没有任何门槛。这使得市场变得更加活跃。然而,理性在市场上最终还是会占据主导地位。尽管 ICO 可以面向更多用户,但这并没有使得这个竞争激烈的市场具有化腐朽为神奇的能力。关键在于看项目方本身是否有实力、是否可靠。
所以,在这样的市场里面,如果我们要参与,那么我们需要非常谨慎,同时需要去了解一个NFT是否值得投资。
如何识别NFT的价值
那么如何判断NFT的价值呢?
我们不能再使用ICO来做对比了,毕竟NFT还是需要通过上文所说的绑定一个有价值的内容的。而ICO是一个还没有出现的东西,最终ICO的价值要看项目方是否有实力将项目做出来。而NFT的价值则是背后绑定的物品是否真的稀有,真的有价值。
从基本的思路出发,我们可以从两方面来看NFT的价值
- 共识层面:即有多少人会承认这个物品的价值。
- 内置价值:构造NFT绑定的资产的成本有多高?不可复制程度、品牌版权等。
理想总是很丰满,但是现实很苦感,虽然我们能用这两个维度去衡量。但是很多时候我们还是不能真正的辨别出来哪一个是真正有价值的NFT。
首先从共识层面看,由于NFT刚进入大家的视野,其实每一个产品都很难受说“大众的接受程度很高”,例如著名的SVG-NFT项目Loot在前段时间非常火,但是其实还是没有几个人知道。显然,我们如果只用这个指标来衡量是没有太多意义的。因为显然买NFT的人都会相信NFT在未来会被接受。
而从内置的价值也是一样的,收藏者都会觉得自己收藏的东西有相当高的价值,有着巨大的成本障碍/稀有程度和不可复制性。同时都觉得这些都会反映到藏品未来的价格上面。都觉得自己买的NFT都类似蒙娜丽莎的画独有。但是实际并不是这样,NFT一波又一波的热潮退去。也不见得那些真正购买的人走上了正确的道路。
那么,我们应该如何从NFT的角度判断一件藏品的价值呢?
首先,从共识层面上,虽然我们不能预估NFT在未来的被接受程度,但并不妨碍我们假设在一个NFT能够被广泛接收的未来了,对标一下现实中这个东西的被接受程度——比如,虽然我们不知道NFT球星卡(NBA发布的球星卡片,每一个都是独立的NFT)的被接受程度如何,但是现实球星卡的群体是小众的,那么在未来,即便NFT被广泛接受了,我仍旧不认为NFT球星卡会是一个大众的藏品。
其次,从内置价值来看,我们需要去关注NFT本身和绑定的资产价值是否是有强烈关联的,例如,如果房产局发了一个NFT,说每一套房子都对应了一个独一无二的NFT,你会去购买吗?可能某些伙伴会去买,但是等等…房产和NFT又有什么样的关系呢?
于是我们需要考虑的问题是:这个NFT是政府部门官方认证的吗?
这个NFT和房产的利益关系是什么?我用这个NFT能否换取房子的居住权/使用权。
如果我不能的话,那么我有这个NFT有什么价值呢?收藏?好看?
从这个例子来看,我们会发现,如果NFT和绑定的资产价值没有强关联的话(拥有NFT,不一定能拥有房子),NFT的价值也会大打折扣。
那么从上面两个方面来看,我们市场上的所有NFT都可以使用下面的衡量表的来分类
受众广 | 受众少 | |
---|---|---|
NFT与绑定资产关联度高 | 数字艺术品、大艺术家创造 | 数字艺术品、一般/小众艺术家 |
NFT与绑定资产关联度低 | 大IP/明星,无权益绑定、类似明星签名 | 小IP,无权益绑定,投机产品 |
对于投资者而言,更应选择受众广泛且关联度高的NFT产品,因为这类产品具有高流动性和价值保值等优势,从而能够保证资金的安全。
我们需要避免的是受众少或关联度低的产品。这类产品往往只是一种数字纪念品,基本上没有任何流通价值或价值保障。基本上目前所有类似景区发放的NFT系列都是这种…
总结
本文旨在向读者介绍NFT的基本原理和目前市场上的运作逻辑。对于了解NFT的专家而言,文章的价值可能不大,因为这些内容都非常基础。然而,我更想向大家介绍这个新产品,并希望能够为那些在类似投资领域进行决策的人提供一些有关内在价值逻辑的信息,以免被欺骗。
当然,文章中可能存在一些比特币和以太坊概念表述不够清晰的地方,但是不用担心,我会在以后的系列文章中详细阐述这些概念。