万维网使用 HTML 来规范地承载信息,价值互联网也需要一种类似的技术。
原文标题:《NFT:价值互联网的 HTML》
撰文:楼嵩
这是一种合理的推测。
回顾信息互联网的几十年的发展历程,万维网(World Wide Web,WWW)是其中最为重要的进展之一。如今当我们提及信息互联网时,多指万维网;我们经常说的 Web1.0、Web2.0、Web3.0,多指万维网。而万维网最重要的三项技术规范分别是:
- HTML (HyperText Markup Language):超文本标记语言
- URI (Uniform Resource Identifier):统一资源标志符
- HTTP (HyperText Transfer Protocol):超文本传输协议
在信息互联网中,超文本标记语言 HTML 用于将信息规范化地表示出来,统一资源标志符 URI 用于标识信息的名称和位置,超文本传输协议 HTTP 则用于传输信息。
「价值互联网」是近几年新提出的用于区分传统「信息互联网」的一个词。
目前绝大多数提及「价值互联网」的地方都会提到区块链,且认为区块链会是「价值互联网」的基础。信息互联网传输信息,但是信息可能是虚假的、缺乏信用的,区块链有可能解决这个问题从而赋能价值的传输。
很自然地,我们会好奇在「价值互联网」中是否有类似 HTML、URI、HTTP 的技术?本文认为 NFT 会成为价值互联网中的 HTML,起到将价值规范化地表示出来的作用。
NFT vs FT
如何来表示价值?价值,说通俗点就是资产。区块链里表示资产就是 Token,但是其实 Token 有 2 种:Fungible Token (同质化通证,FT) 和 Non-fungible Token (非同质化通证,NFT)。
其中 FT 最广泛的技术规范是 ERC-20,NFT 最广泛的技术规范是 ERC-721,基于这两种规范的 FT 和 NFT 主要有以下区别:
考虑物理世界中的资产,一个普通人会拥有的资产可能有:
- 实体资产:书籍、手机、衣服、鞋子、箱包、个人电脑、代步工具、居住场所 ...
- 虚拟资产:游戏道具、数字收藏品 ...
- 金融资产:股票、债券 ...
如果将这些资产在区块链上进行数字化表示,就有 FT 和 NFT 两种方式。可以将你拥有的某件衣服、某个游戏里的道具、某支股的股票,锚定到区块链上的一个 FT 或者 NFT。
基于上面 FT 和 NFT 的区别,我们发现 NFT 技术在实体资产的数字化上更有优势:
- 非同质化:你的电脑和其他人的电脑可能是用一个型号,但是它们的序列号不同,它们安装的软件不同,它们存储的文件也不同 ...
- 不可分割:你的书籍不可能是 0.5 本、你的手机也不可能是 0.25 只 ...
- 有外部信息关联方式:每个 NFT 有个属性可以与外部 URI 关联,这个 URI 可以链接到你的资产的一些详细信息,如生产厂商、生产日期、外观图片 ...
除了实体资产,虚拟资产用 NFT 来表示也更加方便,因为虚拟资产本身的形式就是数字化的,如一个游戏道具,可以通过 URI 关联到一个 NFT。
当然,FT 相比 NFT 也有优点,大部分金融资产更适合用 FT 的方式来表示,因为很多金融资产都是同质化的,如同一家公司的同类型股票,这 1 股和另 1 股是一样的。当然像保险单这样的因人而异的金融资产还是适合用 NFT 来表示。
总结来说,同质化的资产更适合用同质化通证(FT)来表示,非同质化的资产更适合非同质化通证(NFT)来表示。不过物理世界的资产其实本质上都是非同质化的。就算是流水线上生产出来的标准化产品,不同产品之间本来就是有细微差异的。而在产品发售由不同客户购买后,因为不同客户对产品不同的使用方式、使用强度,最后这些二手产品之间的非同质化程度会进一步增加。
虽然前面都在以一种竞争对比的口吻来看待 NFT 和 FT,但其实两者其实是互补的,NFT 可能会是价值互联网的 HTML,而 FT 可能会是价值互联网的 JSON/XML ...
NFT 的技术规范
NFT 目前主要的技术规范是以太坊上的 ERC-721 和 ERC-1155。
ERC-721 是最初的 NFT 规范,但是其一个智能合约管理多种 NFT 比较麻烦,且不支持批量转账 NFT。ERC-1155 基于 ERC-721 做了不少改进,单个合约就可以管理 FT、NFT 或其他配置(例如 Semi-FT,半 FT)的任意组合。不过目前 ERC-721 的使用还是相比 ERC-1155 更加广泛些。
ERC-721 和 ERC-1155 都有基本的资产转账、资产授权、查询资产所属用户、查询用户所拥有资产的方法。
除此之外,ERC-721 规范的 NFT 一般具有以下属性:
- tokenId:在合约内唯一的 NFT ID,在 NFT 的生命周期中不可改变(要实现全链唯一的必须用 (contractAddr, tokenId) 组成的元组)
- name:名称,类似于 ERC-20 的名称
- symbol:符号,类似于 ERC-20 的符号
- uri:指向外部信息的链接,一般是一个 JSON,而在 JSON 中有进一步更加具体的信息
一个 ERC-721 规范的 NFT 示例:
{ tokenId: 20210203 name: nft_name symbol: NN uri: https://path/to/uri/ }