在物理世界中,现金可以非常简单,它需要的是防伪功能。现金是一张纸条,我可以在一张纸条上写“拿到这张纸条的人可以找我领取一只羊”,然后签上自己的名字。签名就是防伪措施。我把纸条拿给你,纸条到你手中,我就没有了。
在数字世界中,情况开始变得复杂:这张纸条和上面的签名是一个数字文件,而电子文件可以被无数次地完美复制。把这个电子文件给你之后,我还可以再把这个电子文件给第三个人。这就是所谓的双重支付(double spending)问题。
解决办法:
选择一个只有你知道的序列号,然后我在上面签名。由于我不知道这个序列号,因此我没法再复制一份这张纸条给另一个人。这就是密码学上所谓的盲签(blind signature)。这个思路形成了“第一个真正意义上的电子货币方案”。
缺点:它要运转起来,就必须有一个所有参与者都信任的中心化服务器来进行这些“数字纸条”的验证。
在比特币白皮书中,中本聪引用了1997年亚当·贝克设计的哈希现金、1998年华裔密码学家戴伟设计的B币等前人的成果。
萨博是“智能合约”(smart contract)的提出者,1993年他写出了“智能合约”论文。智能合约是区块链处理交易的核心方式,区块链应用的实质可被看成是一个个智能合约的组合。
知名密码学家哈尔·芬尼在2004年推出了自己版本的采用工作量证明(POW)机制的电子货币。在比特币开发过程中,哈尔·芬尼与中本聪有很多互动,比特币的第一笔转账就是中本聪转了10个比特币给哈尔·芬尼。
他们四人的具体设想各有不同,但有一个共同点,即都是让计算机进行计算,从而“创造”电子现金,它们是比特币系统让计算机进行加密计算的工作量证明和挖矿的创意来源。这非常重要,有了这个想法,中心化服务器才可以被去中心网络所取代,困扰数字货币的难题被解决了。
比特币:一个点对点电子现金系统
一种在发行和交易上都中心化的电子现金。去中心网络一定是非基于信任的(因为没有中心网络可以进行确认)。
2009年,一个去中心化的货币第一次被中本聪实现,它通过已有公钥加密方式来管理所有权,并用一个名为工作量证明的共识算法来记录谁拥有货币。
比特币:一种加密数字货币;区块链:一种基础技术。
区块链是一种源自于“比特币”的底层技术。换句话说,比特币是区块链技术的第一个大获成功的应用。
区块链是数字世界中进行“价值表示”和“价值转移”的技术。区块链硬币一面是表示价值的加密数字货币或通证,另一面是进行价值转移的分布式账本与去中心网络。
比特币系统包括三层:比特币、比特币协议、比特币区块链,即比特币的分布式账本与去中心网络。
大众在提及区块链时,常指的是第四种最大的范围,即“账本+网络+协议+货币”。在产业中,人们在提到区块链时,通常指的是第三种范围,即“账本+网络+协议”。而很多软件开发者在说起区块链时通常指的是第二种范围“账本+网络”,即分布式账本加去中心网络。
我们常用的 PayPal、支付宝、微信支付都是中心化的在线支付,在这些支付系统中流转的是映射到数字世界的各国的法定货币(也称法币)。
中心化的互联网积分/计算机点数是指 Q 币、游戏币、航空里程等,它们还曾有一个更为大众所熟知的名字——虚拟货币。通常,它们不与物理世界的法币对应,而是由商业公司中心化发行,仅可以在一家公司的体系中使用。
去中心化的电子现金已经被计算机密码学家探索了多年,沿着前人的探索路径,中本聪最终将这条路径变成了现实。中本聪设计和开发了比特币系统,并催生了众多加密数字货币和区块链技术项目。
对照前文图表,与现有中心化的电子现金系统(在线支付系统)相比,比特币是与之完全相反的:
在去中心化的程度上,比特币系统达到了极致。去中心化的初级阶段是自动化(automatic),即根据人设定的规则自动运行,而去中心化的高级阶段是自治(autonomous),也就是完全自治、自发。而比特币系统作为一个电子现金系统,达到了极致的去中心化状态:
去中心化处于区块链的思维模式的最内核,而比特币实现了极致的去中心化。
比特币系统设计的五个要点:比特币的区块链系统是由分布式账本(即狭义的区块链)和去中心网络(点对点网络)组成的,形成链条的方式是工作量证明共识机制。最长链是由网络中的算力共同决定的,因而它是可信的,节点离开和加入依据的是最长链是可信的这一原则。这些组合起来形成了比特币系统。
比特币要做的是一个“点对点的电子现金系统”,发送方和接收方直接交易,它们之间不需要中介机构的介入。
要去掉可信第三方等中介机构,就需要解决“双花问题”。在摘要中,中本聪给出了点对点网络的解决方案,并介绍了这个方案的核心——区块链。他并没有提到区块链(blockchain)这个词,但在论文中分别提到了区块(block)和链(chain)这两个概念。
比特币的区块链是基于工作量证明形成的带时间戳、存储数据的数据块和由哈希指针连接成的链条。
这个链条或者说账本以分布式的方式存储在比特币网络的各个节点上,因而也被称为分布式账本。
这个账本是一个不断增长的由数据块组成的链条,这个数据块组成的链条是狭义的“区块链”。比特币账本可被认为同时存储在所有的全节点之中。
比特币网络中的节点按照规则进行加密哈希计算,以竞争获得生成新区块的权利。节点在竞争获胜后就获得记账权,它生成区块成为最新区块后,就获得与新区块对应的挖矿奖励。
工作量证明也是区块链账本的安全机制。如果不重做“工作量证明”所需的大量计算则此链条不可修改,这一共识机制保证了区块链上的数据的可靠性。
在任何时刻,最长的链条是所有人都接受的最终记录。
由于最长链是由网络中的主要算力完成的,因而只要它们不都与攻击者合作,那么它们生成的最长链就是可信的。这个原则被称为“最长链原则”。
比特币的去中心网络的架构非常简洁,本身需要的基础设施很少。它可以在互联网网络上运行。计算机节点可以随时离开或加入这个去中心网络,在加入时它们只需遵守最长链原则即可。
注:
所有的区块链系统都包括“分布式账本和去中心网络”这一对必备要素。基于分布式账本与去中心网络,比特币系统实现了去中心化的价值表示和价值转移,
UTXO 是 unspent transaction outputs(未使用的交易输出)的缩写,每一个比特币其实都是 UTXO,它是比特币的最核心概念之一。
我们来看一个两个人进行转账交易的过程,以深入理解UTXO:
假设我有 12.5 个比特币,这其实意味着,之前有一个交易把这些比特币转入我的地址,这个交易的输出(即 8 个比特币)未被使用,我拥有了这 12.5 个比特币。
现在,我要发起一个转账交易,这个交易中的输入是让我拥有这些比特币的上一个交易。
我要转账给你,我做的是,对让我拥有这些 12.5 个比特币的上一个交易进行签名,把这一新转账交易的输出地址设为你的钱包地址。
这样,我就发起了一个转账支付交易。等矿工将这一交易打包进新的区块,转账交易完成,这 12.5 个比特币就属于你了。你拥有的是你我这个交易的未使用的交易输出。
既从我(甲)到你(乙)的一笔比特币转账,是从我的一个钱包地址转到你的一个钱包地址上去。
不存在比特币,只有未使用的交易输出(UTXO)。每一笔比特币都源自上一个交易,可以一直向上追溯上去。而一直向上追溯,在每一笔比特币的源头,都有一种特殊的交易,即比特币矿工因挖矿获得奖励的创币交易,每一个比特币都是通过挖矿被创造出来的。假设我作为比特币矿工挖矿成功赢得了 25 个比特币,那么这个特殊交易是,它的输入是 0,而输出是 25 个比特币进到矿工的钱包地址中。当甲要把一笔比特币转给乙时,这个过程是把甲的钱包地址中之前的一个 UTXO,用私钥进行签名,发送到乙的地址。这个过程是一个新的交易,而乙得到的是一个新的 UTXO。
UTXO 与我们熟悉的账户概念的差别很大。我们日常接触最多的是账户,比如,我在银行开设一个账户,账户里的余额就是我的钱。
但在比特币网络中没有账户的概念,你可以有多个钱包地址,每个钱包地址中都有着多个 UTXO,你的钱是所有这些地址中的 UTXO 加起来的总和。
每个区块由两个部分组成——区块头部和区块数据。其中,区块头部中有一个哈希指针指向上一个区块,这个哈希指针包含前一个数据块的哈希值。哈希值可以被看成是数据块的指纹,即在后一个区块的头部中均存储有上一个区块数据的指纹。如果上一个区块中的数据被篡改了,那么数据和指纹就对不上号,篡改行为就被发现了。要改变一个区块中的数据,对其后的每个区块都必须相应地进行修改。
比特币的工作量证明的关键特点是,它巧妙地融合技术和经济因素,不只是纯粹通过技术本身来达到这一点,而是纳入了与自身作为一个数字现金系统相关的挖矿奖励,既奖励机制。
它包含了随机性的概念:比特币系统形成的共识不是完全可靠的,但是在等待了 6 个区块约 1 个小时之后,出问题的概率呈指数级下降。
众多比特币矿工(即挖矿节点)在竞争获得记账的权利,矿工每增加一个新的区块能获得对应的记账奖励。
挖矿节点计算机在挖矿时要做两个任务:
第一个任务是把比特币网络中未确认的交易按梅克尔树组装成候选区块,未被纳入的交易则往下顺延。
在创建候选区块时,除了普通的交易之外,矿工在其中增加一个特殊的交易:币基交易(coinbase transaction)。如果挖矿成功,则币基交易会凭空转出新区块的奖励比特币到矿工的钱包地址中,从而发行这些比特币出来。这个特殊交易也被叫作“创币交易”,新的比特币是在这一交易中被创造出来的。
之前,互联网处理的是“信息”;现在,互联网可以处理“价值”。区块链提供了在数字世界中处理价值所需的两个基础功能:价值表示与价值转移,让互联网跃迁到价值互联网(见下图)。
在线下物理世界中,信息的典型代表是报纸,而价值的典型代表是纸币。每一张报纸都是一样的,报纸编辑完成后,印刷机复制它,然后它被送到我们的手中。
对比而言,虽然纸币也是由印刷机印制的,每一张 100 美元纸币代表的价值是相等的,但每一张纸币都是不一样的,每一张都有唯一的序列号。
信息是可复制的,我可以复印一份报纸给你。价值不可以复制,我必须把100美元现金真的给你,而不能复印了给你。
到了互联网上,数字化的信息可以完美复制,这加快了信息的流动。而和价值有关的事物在互联网中没有发生同样倍数的变化。
信息传递的主要方式是复制。在互联网中不管是最基础的 TCP/IP 协议,还是 WWW(万维网)协议,都是专为信息传递设计的。并且,数字化的信息复制可以复制出一模一样的副本,复制效率更高,互联网给信息传递带来了巨变。
价值转移的主要方式是记录。从物理世界到数字世界,价值转移的方式都是记录。但是,用数据文件进行价值表示会遇到很多困难,可完美复制的数据文件和需要唯一性的价值表示形成冲突。如果表示价值的数据文件可以完美复制,那么我就可能把它支付给你,再复制一份支付给另一个人,造成双花问题。在数字世界中进行价值转移时,为了防止双花问题,我们要依赖可信第三方作为中介,由它作为交易中心进行记录。
区块链渐渐展现出对互联网的变革性意义:互联网在协议层有了价值表示和价值转移的功能,区块链成为互联网的价值基础协议。
比特币是区块链技术的第一个应用,也是到目前为止最重要的应用,虽然它还只是一个完成了概念验证的系统,比特币系统完成关于价值的两个功能的验证:价值表示和价值转移。
区块链信用层协议进行记录的价值表示功能可类比为统一资源定位符 URL,进行价值转移的功能可类比为文档传输协议 HTTP,而区块链上的价值表示物(通证)可看成文本标记语言HTML。
总的来说,现在在数字世界中,类似于 HTML 的代表价值的语言(通证)已经准备好了。“怎么用通证,通证有什么用”等问题等待着创造性的回答。
网络中的协议在技术上指的是,网络硬件、操作系统在进行通信时要遵守一些规则,这些规则被称为协议(protocol)。
互联网通信用的协议是所谓 TCP/IP 协议族。通常认为 TCP/IP 协议族包括四层:应用层、传输层、网络层、链路层。链路层将一些数据放在电线上;网络层对数据进行路由;传输层将数据持久化;应用层以应用的形式提供数据抽象。
如果从网络通信的应用层、传输层、网络层、链路层的分层逻辑上看,我们还可以有另一种看法:区块链可能从原应用层分离出来,形成一个价值层。当然,对网络通信协议的分层,在短期内还难以形成一致的修订意见。
也有人认为,区块链给互联网带来的是与信用相关的功能,它担任的角色是过去的可信第三方的角色,这个从应用层分离出来的层次也可称为“可信层”。
之前我们尝试性地提出了“区块链信用层协议”的说法,以说明区块链给互联网带来了类似 WWW 协议的重大变化。这里我们又从网络通信层次的角度,尝试性地提出“价值层”的说法,因为这是互联网第一次可能在通信协议层次直接处理价值表示和价值转移。以上都是尝试性的提议,提出来供进一步探讨。