NFT的底层技术:区块链
区块链技术对NFT来说非常重要,因为它构建了NFT的底层技术。NFT基于区块链技术来进行确权,获取身份标识,帮助每一个独一无二的事物进行版权确认。可以毫不夸张地说,没有区块链技术,就没有NFT。
现在,我们通过一个例子来说明它们之间的这种关系。假如你买了一张照片,区块链的分布式记账技术就相当于用虚拟世界中的扩音器告诉所有人:“某某某买了一张照片。”同时,包括向谁买的、买入的时间等详细信息,然后,每个人都把这些信息记录下来。现在,大家都知道了这张照片的所有权属于你。这即是区块链对于NFT的价值所在。由于区块链的存在,在进行NFT交易时,既不需要中间机构,也不需要一个绝对意义上的管理者。因为每个人都是管理者,也就是可以实现去中心化。
也正是因为区块链技术,才可以确保NFT的真实性与唯一性。所以,NFT可以用来代表各种资产,如虚拟收藏品、游戏内资产、虚拟资产、数字艺术品、房地产,等等。
区块链,这个词本身也曾是一个被热炒的概念。然而,多数人只知其然,不知其所以然。
那么,究竟什么是区块链?
如果非要给它下一个定义的话,区块链是利用块链式数据结构来验证与存储数据;利用分布式节点共识算法来生成和增加数据;利用密码学的方式保证数据传输和访问的安全;利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。
再通俗一点来说,区块链就是一种采用多方共识机制来维护完整的、分布式的、不可篡改的账本数据库的技术方案。为了更形象地理解这个“账本”,下面举一个关于区块链交易流程的例子,如图1-2所示:
图1-2 区块链交易记录流程示意图
如果A想借给B 100元钱,这个时候,A在人群中大喊:“我是A,我借给B 100元钱!”B也在人群中回应:“我是B, A借给我100元钱!”此时路人都听到了这个消息,见证了这笔交易,并都在笔记本上默默记下了“A借给了B 100元钱”。在这个系统中不需要银行,也不需要借贷协议和收据,严格来说,也不需要人与人之间确立长久的信任关系,可能大家彼此都不认识,甚至A与B也可以相互不认识,但是,谁也无法赖账。这就是一个去中心化的系统,整个系统中,并没有所谓权威的中心化代理。
再举个例子。你在某网平台上买一台电脑,下单之后付款,钱进入了第三方平台中,并没有直接给商家。发货、收货、确认收货之后,你付出的这笔钱才给到了商家账户中。此时,第三方平台就是一个中心化组织,因为你不相信商家,商家也不相信你,所以,只能让中介机构来保障双方的利益不受伤害。
如果运用区块链技术,你可以和商家直接进行交易,你付钱给他,他发货给你。在这个过程中,系统会将你们成交的信息分布式地存储在所有的用户数据库中。这样一来,你买了这个商家的电脑后,这个商家会给你发货,包括发货使用的是哪一家快递、订单号是多少等都会被系统记录下来。你就不需要第三方平台来给你作担保,因为所有人都可以证明——你确实付了钱,对方也真的给你发了货。
事实上,区块链接技术着重解决的是信任问题。毕竟,人与人之间存在着天然的不信任,但是,人与人之间又需要交易,不论是实物交易还是虚拟物交易。这时候,中间商就站了出来。它们可以是央行、商业银行、政府以及像支付宝这样的平台等,你通过它们来进行交易可以很放心。
然而,通过第三方来进行交易也有很多缺点,例如交易双方需要支付成本。比如,因为所有的数据都在第三方手中,这样一来,第三方就可能会出现造假的情况。这时,有人提出一种构想:能不能通过互联网技术,过滤掉第三方,让交易的双方直接对接?这就是区块链技术的由来。
区块链本身没有也不需要有管理员,它是去中心化的。这一点不同于其他的数据库。即使是有人想对区块链添加审核环节也无法实现,因为它最初的设计目标就是防止出现居于中心地位的管理者。没有了管理员,每个人都可以往里面写数据,那么,如何保证数据是可信的?这就是区块链技术的神奇所在。
区块链由一个个相连的区块(Block)组成,每个区块很像数据库的记录,每次写入数据,就是创建一个区块。每个区块包含两个部分:区块头(Head),即用来记录当前区块的元信息;区块体(Body),即包含数据本身。区块头包含了当前区块的多项元信息,如时间戳、随机数、前一个区块的哈希值(Hash)等。
哈希值是把任意长度的输入,通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换方式是一种压缩映射,简单来说,就是一种将任意长度的信息压缩到某一固定长度的信息摘要的函数。区块链的哈希值长度是256位,不论原始内容是什么,最终都会算出一个256位的二进制数字。而且可以保证,只要原始内容不同,对应的哈希值就一定是不同的。
区块中的数据具有不可修改性的特点(如图1-3所示)。这是因为每个区块都包含了前一个区块的哈希值。如果前一个区块的数据被修改了,那么,计算出来的哈希值就会发生改变,就会脱离了区块链,结果就是断链了。正是通过这种联动机制,区块链保证了自身的可靠性,数据一旦写入,就无法被篡改。而且,区块只能增加,无法删除。
图1-3 区块链不可修改特性示意图
也就是说,区块链是一种数据库技术。然而,与区块链不同的是, Oracle、MySQL和Microsoft SQL Server这些流行的数据库都需要一个中心去支撑。假如这个中心是一家公司,用户的数据就存储在这家公司,那么,这家公司就存在修改用户数据的可能。
但是,区块链并没有这样一个中心,同样的数据存储在很多个节点上。如果只是少数节点的数据被修改,这并不能被整个区块链所认可,除非大部分节点的数据都做出同样的修改,这种情况从理论上来说有可能发生,但实际上是不可能出现的。因为区块链节点很多,实际上也不可能控制大部分节点,所以,区块链上的数据是无法被篡改的。
正是因为区块链具有多方共识、可溯源、不可修改和时间戳等技术特点,所以,它被应用到了包括NFT在内的很多领域。如果说过去是靠信誉、权威机构和名人背书等方式来体现信任,那么,区块链则是利用技术建立了新的信任方式,将彻底改变千百年来的信用机制。
虽然都是区块链技术的应用,但是,在不同的需求、不同的应用场景中,还是存在着一些区别。区块链在很多时候也并不代表就是完全的去中心化,并不是完全开放流通的。根据区块链开放程度的不同,区块链可以分为公有链、联盟链和私有链三种(如表1-2所示)。
1.公有链
公有链,通常也被称为非许可链(Permissionless Blockchain),任何人都可以参与区块链数据的维护和读取,容易部署应用程序,完全去中心化不受任何机构控制。
表1-2 公有链、联盟链、私有链的比较
公有链的应用非常广泛,例如,资产证券化、数字资产的跨链流通……比如,比特币、以太坊等,它们都是公有链项目。
公有链是真正意义上的完全去中心化的区块链,它通过密码学保证交易不可篡改,同时利用密码学进行验证以及实现经济激励,在相互陌生的网络环境中使用户彼此之间建立共识,从而形成去中心化的信用机制。在公有链中的共识机制一般是POW(Proof Of Work,工作量证明)、POS(Proof Of Stake,权益证明)或DPOS(Delegated Proof Of Stake ,代理权益证明)。
2.联盟链
联盟链是一种需要注册许可的区块链,它也被称为许可链(Permissioned Blockchain)。联盟链仅限于联盟成员参与,联盟规模可以大到国与国之间,也可以是不同的机构或者企业之间。
区块链上的读写权限、参与记账权限,按照联盟规则来制定。整个网络由成员机构共同维护,网络接入一般通过成员机构的网关节点接入,共识过程由预先选好的节点控制。因此,联盟链一般不采用工作量证明的挖矿机制,而是多采用PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)、RAFT (Reliable, Replicated, Redundant and Fault-Tolerant,可靠、可复制、可冗余、可容错)等共识算法。
和公有链每秒完成交易10~1000笔的交易量相比,联盟链可以达到每秒1000~10000笔的交易量,联盟链的交易速度更快且交易成本大幅降低。
联盟链可以解决结算问题,能够降低和缩短两地结算的成本和时间,适合于机构间的交易、结算等B2B场景。因此,在金融行业中应用最广泛。其中,最知名的就是R3CVE组织,即R3联盟,有包括花旗银行、中国平安银行、纽约梅隆银行在内的50多家银行机构加入。
超级账本(Hyperledger)项目是目前全球市场上最大的联盟链,是首个面向企业应用场景的开源分布式的账本平台。管理方是Linux基金会,其成员超过260个。
2016年5月,微众银行联合深圳市金融科技协会、深圳证券通信有限公司等金融机构和金融科技企业共同发起成立金链盟,并组建金链盟开源工作组,为金融行业量身定制安全可控的区块链底层平台——FISCO BCOS。
3.私有链
私有链,仅限于企业、国家机构或者单独个体使用,不能够完全解决信任问题,但是,其可以改善可审计性。常用于企业内部的数据库管理、审计等方面,还有政府的预算和执行或者政府的行业统计数据等。它们彼此之间需要透明,但没必要对外和向公众透明。
私有链的价值,主要是能够提供安全、可追溯、不可篡改、自动执行的运算平台,可以同时防范来自内部和外部的对数据的安全攻击,这方面在传统的系统里面是很难做到的。
尽管分类不同,应用领域不同,但是,用户却都从区块链技术中受益匪浅,也正是因为区块链本身具有的包罗万象和灵活性,让区块链保持活力的同时也给予了它不断自我更新和发展的动力。
后面章节中还会提到跨链和侧链,在此先做一下简单介绍。
4.跨链
跨链,顾名思义,就是通过一个技术,能让价值跨过链和链之间的障碍,进行直接的流通。
区块链是分布式总账的一种。一条区块链就是一个独立的账本,两条不同的链就是两个不同的独立的账本,两个账本之间没有关联。本质上价值没有办法在账本间进行转移,但是,对于具体的某个用户而言,该用户在一条区块链上存储的价值,希望能够变成另一条链上的价值,也就是实现价值的流通。
如果说共识机制是区块链的灵魂和核心,那么,对于区块链,特别是对于联盟链及私链来说,跨链技术就是实现价值网络的关键,它是把联盟链从分散的孤岛中拯救出来的良药,是区块链向外拓展和彼此连接的桥梁。
5.侧链
侧链的概念来自比特币社区,于2013年12月被提出。
侧链的诞生,是由于比特币本身或者某一区块链本身的机制存在一些问题。但是,如果是直接在比特协议或者比特币链条上进行修改的话,又很容易出错。而且,比特币区块在一直不断地运行着,万一出错了,它涉及的资金量就太大了。这种情况是不被允许出现的。
正是在这种情况下,诞生了侧链。本质上来说,侧链机制就是一种使货币在两条区块链间移动的机制,它允许资产在核心区块链和其他区块链之间互转,以降低核心区块链上发生交易的次数。
打个比方,侧链就是在一条拥挤的公路边上再新建一条起点和终点都一样的公路,主要的目的就是解决道路拥堵的问题。