【科普】比特币的前世今生:自由与理想主义

作者:王建伯

发布时间:2019年3月21日

微博:比特币布道者

原标题:区块链 新时代生产关系的革命 | 科普

一、前言

区块链技术是继蒸汽机、电力、信息和互联网之后,被公认成为目前最具潜力触发第五轮颠覆性革命浪潮的核心技术[1]

狭义来讲,区块链技术是一种分布式数据库,区块链存储的数据保存在一个个的区块中,这些区块按照时间顺序“头尾相连”组合成一种链式数据结构。

图1 区块链链式结构

广义来讲,区块链技术是利用区块链式数据结构来验证与存储数据、利用分布式共识算法来生成和更新数据、利用点对点通信技术来传输和访问数据、利用加密技术来保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式[2]

区块链为人类历史上首次组建最大规模的分布式自治提供了技术支撑,分布式组织相对于中心化组织更稳定、抗风险能力更强、消耗更低、更公平、更透明、个人网络隐私权更能得到保证,在新时代中促进生产关系的变革和进步。比特币是区块链最成功最伟大的应用,即——比特币是人类历史上首次成功实现的可编程的分布式自治货币系统。

二、区块链的神秘往事

1.加密技术的开源往事

“赛博朋克写代码。我们意识到,需要有人编写软件来保护隐私,而且我们无法在有人没有隐私的情况下保持自己的隐私,所以我们将会开发这些软件。届时,我们将开源我们的代码,让我们的密码朋克战友们可以使用它。我们的代码对全球,任何使用它的人免费。如果你企图封杀我们写的软件,我们不在乎。我们清楚,软件是无法被销毁的,彻底的分布式系统永不停机。”[3]

——艾瑞克·休斯《密码朋克宣言》

注:赛博朋克的出现主要是因为人们在某种程度上开始恐惧科技的发展,在赛博朋克的世界里,往往会有一个强大的“系统”控制整个一切。这个“系统”可能是智能AI,也可能只是政府控制人民的手段外化形式。

1)密码朋克的诞生背景

二十世纪九十年代,计算机和互联网技术方兴未艾,为了抵抗网络时代对个人隐私权的侵犯,密码朋克诞生了。

在这个十年中,柏林墙倒塌,东西德合并;戈尔巴乔夫宣布辞职,苏联解体,冷战结束;1991年的海湾战争中,美军摧枯拉朽般战胜了伊拉克军队。整个西方世界洋溢在喜悦的氛围中。

硅谷和美国的科技公司依然沐浴在二十世纪八十年代如乌托邦般的余晖中,目睹着新经济的崛起和令人目眩的增长率,电脑和互联网可能是这个时代最重要的发明。个人电脑逐渐进入普通人家中,越来越多的拥有个人电脑的人们将他们的电脑连接上了范围迅速扩大的互联网,且网络连接速度飞升。

图2 北美普通家庭网络连接速度

密码朋克们预见性地意识到,随着网速的提升,个人电脑的普及,全球将会逐步进入网络时代。届时,网络将成为每个人生活中不可或缺的一部分,进入网络世界将极大地增加社会生产效率。然而,对不精通网络技术的普通人来说,进入网络时代也将导致他们遭遇隐私泄漏以及其并发的风险。

图3 历年网络用户数量占世界总人口比例

人们逐渐发现,大型中心体在试图通过网络加强其对个人的监视与控制。在网络上,掌握数据的中心体可以比以往任何时候更加轻松的追踪他们想了解的个人。大企业利用用户在互联网上的表现刻画用户画像,针对性地推送广告。大型中心体非但没有动力去维护个人的网络隐私,他们反而希望尽可能获得个人在网络上的泄露的隐私。因为他们可以从中获得所需。

1992年7月,美国国家安全局通过间谍技术得知美国公民吉尔摩(Gilmore)持有密码学专家弗里德曼手稿。在其寄给吉尔摩的信中,国安局提及法条18 USC,第798条。该法规将发布机密密码学信息归为联邦性质的犯罪。随后,美国国家安全局的律师和间谍威胁吉尔摩交出其手中的文献,否则将面临诉讼或其在信中所说的“别的可怕的事”。

1993年4月,白宫提出了托管加密标准(EES),该标准涵盖了市面上所有统称为“Clipper芯片”的加密处理器。它旨在实现加密通讯,特别是手机上的语音传输。当两个设备建立安全连接时,执法机构仍然可以掌握用于解密加密数据的密钥。使用安装了该芯片的设备时,通信虽然受到保护,但FBI却可以在他们需要的时候阅读加密的邮件或者收听通信者的通话。

此类事件的不断发生渐渐引起了人们的警觉。不信任感在第一批网络用户中逐渐蔓延。

早在1970s,李维斯特已经开始研究如何利用密码学保护电子邮件收发双方的隐私权。然而,当时这一议题仅限于小范围讨论。

1992年末,迪姆森·梅创建了密码朋克列表,为全世界致力于保护个人网络隐私权的人们提供了交流想法技术的平台。这一列表使得全球的密码学家,哲学家,数学家,可以共同讨论那些用于保护网络时代个人隐私权的技术。

1993年,埃里克·休斯发布《密码朋克宣言》,正式宣告了密码朋克通过密码学的技术在互联网时代保护个人网络隐私权运动的开始。在休斯起草并发布的密码朋克宣言中,除了传达了个人隐私应该得到保护的思想外,也预言了匿名网络、匿名邮件、数字货币的诞生。

《密码朋克宣言》中写道“在电子时代,对于开放的社会来说,隐私必不可少。隐私不同于秘密。隐私是某人不想公之于众的东西。而秘密,是他不想让任何人知道的东西。隐私是一种权力。它让某人有权决定公开什么,不公开什么。”“我们不能奢望巨型企业、或者其他组织出于他们的仁慈来授予我们隐私权。侵犯我们的隐私会对他们有利,并且我们应该认为他们确实会这么做。”可见,密码朋克对于巨型企业有着天然的不信任感。

图4 密码朋克列表

密码朋克的核心理念是捍卫个人网络隐私权和加密安那其主义。

密码朋克认为,要保证个人在网络时代的自由,就必须保护个人的隐私权。这就要求利用密码学技术来保证个人在网络上的匿名。初期密码朋克小组的宗旨是用技术建立一个公平的互联网世界

现在,由于种种原因,最初的由迪姆森·梅创立的密码朋克邮件列表已经不复存在。第一批密码朋克也已经逐渐退出密码朋克运动的第一线。但是密码朋克运动并未停止,密码朋克在过去数十年中产生的思想和技术不仅作用于比特币系统和区块链技术,而且在依然在人们的日常生活产生着影响。BT下载、维基解密、SSL协议(https)、万维网、脸书等等网络用户日常使用的产品中,密码朋克们都参与或主导了其诞生的过程。

虽然大部分网络用户可能并未意识到密码朋克的存在以及他们在网络时代早期的活动。但事实上,他们的发明和思想已经融入了人们的网络生活,成为了人们生活中不可分割的一部分。

2)非对称加密的民用化

非对称加密又称公钥加密,生成的密码总是配对出现的,即私钥和公钥。非对称加密主要包括商业上使用最为广泛的RSA非对称加密算法;ECC(EllipticCurve Cryptography)椭圆曲线加密算法,比特币的私钥就是通过这一算法生成的;ElGamal算法等。在生成公钥和私钥时,这些算法采用的技术可能有所差别,但其核心思想基本是一致的,即——非对称加密[4]

非对称加密的思想始于上个世纪四十年代,随着互联网和计算技术的蓬勃发展,将这一思想转化成实践的需求和技术基础逐渐产生。

1978年,罗纳德·李维斯特、阿迪·萨莫尔和伦纳德·阿德曼都是麻省理工学院的研究人员,共同发明了RSA,这是非对称的公钥加密技术,既可用于数据加密也可用于签名。RSA是目前最流行的公钥加密算法,比特币使用的公钥加密算法是ECC(椭圆曲线加密算法)。但实际上,RSA并非最早出现的公钥加密技术。英国人Clifford Cocks早在1973年就发现了类似的算法,但可惜的是,他是为英国国家通信总局工作的,所以他的发现被列为绝密,直到1998年才为世人所知。加密技术一直就是政府和军方的重要武器。密码科学家们要么为军方和政府工作,要么就要面对各来自政府的威胁,而后来密码朋克们,则不畏强权,最终将公钥加密技术公之于众。

在大型中心体面前,公钥加密技术是个人网络隐私权最坚实的保障。正如战士以枪械为武器,文学家以笔杆为武器一样,非对称加密算法是密码朋克们最重要的武器。在从大型中心体手中为公众争夺隐私权的过程中,密码朋克们将非对称加密的力量发挥得淋漓尽致。

2.区块链(比特币)前传

区块链(比特币)是密码朋克集体智慧的结晶,也是信息通信技术及互联网技术从量变到质变的伟大变革。

中本聪极为天才的三个伟大创举:块链式数据结构(狭义上的区块链技术)、UTXO(未花费的交易输出)与智能合约,以及,其他密码朋克开创的分布式共识算法、点对点通信技术、加密技术等先进的信息通信技术。

密码朋克认为,迄今为止现金交易系统是最好的匿名交易系统。在网络诞生之前,现金交易不会在金融系统中留下任何痕迹。在网络迅速发展的过程中,越来越多的交易将在网络上发生。可以预见,现金交易的空间将在网络时代被不断压缩。作为其代价,个人的隐私权和自由将会受损。密码朋克们为了防止此类情况发生,会通过掌握强加密技术并提供给普通网络用户的方式,建立网络匿名交易系统——比特币。

在比特币白皮书《比特币:一种点对点的电子现金系统》一文中,中本聪添加了八处引注。大部分匿名货币系统所需解决的技术问题的解决方案来自密码朋克的论文。

比特币采取的分布式账本技术引用了B-money白皮书中的内容。在解释如何防止双重支付问题的发生时,中本聪指出“如果想要在电子系统中排除第三方中介机构,那么交易信息就应当被公开宣布”。当交易信息被公开宣布时,这笔交易成立之前需要系统中的大部分节点的共同承认。此处中本聪添加了全文的第一处引注,即戴伟(Wei Dai)在1998年发表于个人网站weidai.com的B-money白皮书。根据cryptoanarchy.wiki记载,戴伟是一名活跃于九十年代的密码朋克,精通密码学相关知识。

为了保证区块链的不可篡改性,必须使用时间戳服务器技术。中本聪指出,“每个时间戳应当将前一个时间戳纳入其随机散列值中,每一个随后的时间戳都对之前的一个时间戳进行增强,这样就形成了一个链条”。为了形成不可篡改的链条,比特币需要一种能够为电子文档添加能够标记修改时间的技术。比特币白皮书的第二、三、四、五处引注为H·Massias,X·S·Avila,J·Quisquater,S·Haber,W·S·Stornetta和D·Bayer发表的四篇关于时间戳服务器以及如何高效地向电子档案添加时间戳的论文。在上个世纪九十年代,密码朋克的思潮席卷信息科技精英界。不过我们暂时无法找到可信的证据证明这六位信息科技专家是否是密码朋克成员。

为了获得记账权,参与者必须付出一定的成本。这一思想与哈希现金技术有一定的相通之处。“为了在点对点的基础上构建一组分散化的时间戳服务器,仅仅像报纸或世界性新闻网络组一样工作是不够的,我们还需要一个类似于亚当•柏克提出的哈希现金。”白皮书的第六处引注为亚当·贝克在2002年发表于hashcash.org的哈希现金技术说明。亚当·贝克不仅是九十年代为加密朋克运动做出最大贡献的人之一,而且是世界首家区块链公司Blockstream的CEO。

为了使完整区块链的大小不至于过大,旧的区块必须被压缩,而且不能破坏整体的随机散列值。中本聪将交易信息构建成了一种Merkle树的形态。具体方法来自于第七处引注中R. C. Merkle关于公钥密码协议的论文。同样,这位出生于1952年的密码学家也是密码朋克邮件列表成员之一。

白皮书的最后一处引注为W. Feller所著的概率论教材。W. Feller的是一名著名的数学家,被誉为二十世纪最伟大的概率论学者之一。

表1  比特币白皮书引注概况

三、区块链的工作原理

区块链是什么?从技术角度来讲,一句话,它是一种特殊的分布式数据库[5]

图5 区块链网络

首先,区块链的主要作用是储存信息。任何需要保存的信息,都可以写入区块链,也可以从里面读取,所以它是数据库。

其次,任何人都可以架设服务器,加入区块链网络,成为一个节点。区块链的世界里面,没有中心节点,每个节点都是平等的,都保存着整个数据库。你可以向任何一个节点,写入/读取数据,因为所有节点最后都会同步,保证区块链一致,即达到分布式系统CAP理论的“最终一致”。

图6 分布式系统CAP原理图

1.区块链的革命性特点

分布式数据库并非新发明,市场上早有此类产品。但是,区块链有一个革命性特点。

区块链没有管理员,它是彻底去中心化的,并且各个节点是不可信的,即——存在一个或很多个节点可能是黑客伪装的或被劫持的。其他的数据库都有管理员,并且各个节点都是可信的。如果有人想对区块链添加审核,也实现不了,因为它的设计目标就是防止出现居于中心地位的管理机构。

正是因为无法管理,区块链才能做到无法被控制。否则一旦大公司大集团大政权控制了管理权,他们就会控制整个平台,其他使用者就都必须听命于他们了。

但是,没有了管理员,人人都可以往里面写入数据,怎么才能保证数据是可信的呢?被坏人改了怎么办?请接着往下读,这就是区块链奇妙的地方。

2.区块链(狭义)

区块链的基本原理理解起来并不复杂。首先,区块链包括三个基本概念[6]

  • 交易(transaction):一次对账本的操作,导致账本状态的一次改变,如添加一条转账记录;
  • 区块(block):记录一段时间内发生的所有交易和状态结果,是对当前账本状态的一次共识;
  • 链(chain):由区块按照发生顺序串联而成,是整个账本状态变化的日志记录。

在实现上,首先假设存在一个分布式的数据记录账本,这个账本只允许添加、不允许删除。账本底层的基本结构是一个线性的链表,这也是其名字“区块链”的来源。链表由一个个“区块”串联组成,后继区块记录前导区块的哈希值(pre hash)。新的数据要加入,必须放到一个新的区块中。而这个块(以及块里的交易)是否合法,可以通过计算哈希值的方式快速检验出来。任意维护节点都可以提议一个新的合法区块,然而必须经过一定的共识机制来对最终选择的区块达成一致。

图7 区块链式结构

交易记账由分布在不同地方的多个节点共同完成,而且每一个节点都记录的是完整的账目,因此它们都可以参与监督交易合法性,同时也可以共同为其作证。

没有任何一个节点可以单独记录账本数据,从而避免了单一记账人被控制或者被贿赂而记假账的可能性。也由于记账节点足够多,理论上讲除非所有的节点被破坏,否则账目就不会丢失,从而保证了账目数据的安全性。

1)区块

每个区块包含两个部分。

  • 区块头(Head):记录当前区块的特征值
  • 区块体(Body):实际数据

区块头包含了当前区块的多项特征值。

  • 生成时间
  • 实际数据(即区块体)的哈希
  • 上一个区块的哈希

图8 区块数据结构

这里,需要理解什么叫哈希(hash),这是理解区块链必需的。

2)哈希算法

所谓哈希(hash),就是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是散列值的空间长度通常远小于输入的空间长度,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一地确定输入值。或者简单地说,就是一种将任意长度的数据信息压缩成某一固定长度的数据信息摘要的函数[7]

图9 Hash(哈希)算法

区块链的哈希长度是256位,这就是说,不管原始内容是什么,最后都会计算出一个256位的二进制数字。

举例来说,字符串123的哈希是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),转成二进制就是256位,而且只有123能得到这个哈希。(理论上,其他字符串也有可能得到这个哈希,但是概率极低,可以近似认为不可能发生。)

散列函数有如下一个基本特性即免碰撞性

  • 如果两个散列值是不相同的(根据同一函数),那么这两个散列值的原始输入也是不相同的——这个特性使得散列函数具有确定性的结果;
  • 散列函数的输入和输出不是一一对应的,如果两个散列值相同,两个输入值很可能是相同的,但并不能绝对肯定二者一定是相等的。(散列函数的输入和输出不是一一对应的概率极低,可以近似认为不可能发生,所以哈希值也称数字指纹。)

因此,就有两个重要的推论。

  • 推论1:每个区块的哈希都是不一样的,可以通过哈希标识区块。
  • 推论2:如果区块的内容变了,它的哈希一定会改变。

3)链

区块与哈希是一一对应的,每个区块的哈希都是针对“区块头”(Head)计算的。也就是说,把区块头的各项特征值,按照顺序连接在一起,组成一个很长的字符串,再对这个字符串计算哈希。

Hash = SHA256(区块头)

上面就是区块哈希的计算公式,SHA256是区块链的哈希算法。注意,这个公式里面只包含区块头,不包含区块体,也就是说,哈希由区块头唯一决定,

前面说过,区块头包含很多内容,其中有当前区块体的哈希,还有上一个区块的哈希。这意味着,如果当前区块体的内容变了,或者上一个区块的哈希变了,一定会引起当前区块的哈希改变。

图10 区块链结构

这一点对区块链有重大意义。如果有人修改了一个区块,该区块的哈希就变了。为了让后面的区块还能连到它(因为下一个区块包含上一个区块的哈希),该人必须依次修改后面所有的区块,否则被改掉的区块就脱离区块链了。由于后面要提到的原因,哈希的计算很耗时,短时间内修改多个区块几乎不可能发生,除非有人掌握了全网51%以上的计算能力。

正是通过这种联动机制,区块链保证了自身的可靠性,数据一旦写入,就无法被篡改。这就像历史一样,发生了就是发生了,从此再无法改变。

这种hash链式数据结构更利于数据的分布式同步。对于一个分布式数据库,数据同步是非常占用网络资源的,所以当本地节点有不同步情况,例如本地只存储了1#至100#区块数据,我们希望的是,只下载同步100#以后没同步的区块,而不用下载整个区块链,这样效率最高,也最节省网络资源。

3.挖矿(分布式共识)

分布式系统中,每个节点是按自己的规则运行的,并且在区块链复杂的网络环境中,存在不受信任节点发送随机数据、错误数据的情况。为保持整个系统数据的一致性,需要借助分布式共识技术。

分布式系统的一致性算法是从上世纪70年代就开始研究的经典问题。理解分布式共识算法,需要理解名词“共识”。

共识:当多个主机通过异步通讯方式组成网络集群时,这个网络默认是不可靠的,那么在这些不可靠主机之间复制状态需要采取一种机制,以保证每个主机的状态最终达成相同一致性状态,即取得共识。

通过共识机制去认定一个记录的有效性,这既是认定的手段,也是防止篡改的手段。区块链提出了多种不同的共识机制,适用于不同的应用场景,在效率和安全性之间取得平衡。

区块链的共识机制具备“少数服从多数”以及“人人平等”的特点,其中“少数服从多数”并不完全指节点个数,也可以是计算能力、股权数或者其他的计算机可以比较的特征量。“人人平等”是当节点满足条件时,所有节点都有权优先提出共识结果、直接被其他节点认同后并最后有可能成为最终共识结果。

区块链主要采用的分布式共识算法包括POW(Proof of work,工作量证明)、POS(Proof of Stake,股权证明)等。

1POW——拼硬件

POW,全称为Proof of work,也即POW证明机制是基于工作量的,通过工作量的证明来实现系统的数据共识。由于比特币系统采用的POW机制是解决数学上难以快速计算但容易快速验证的Hash碰撞问题,所以也称为哈希现金技术。

由于这些数学上“难”的问题没有计算的捷径,每个节点只能通过大量的穷举才能找到对应的答案,提高了节点作恶成本,确保了比特币系统的安全性,这是POW证明机制的优点,同时也是POW证明机制的缺点。POW消耗了系统大量的资源,是一种不“绿色”的机制。这也是区块链著名的“安全,环保,去中心化”不可能三角[8]

图11 区块链不可能三角

在比特币中POW证明机制决定了系统数据共识的来源方,也就是比特币系统中区块链的记账方的争夺,只需要向系统证明节点能够快速提供相应的工作量,节点就有向区块链中写入数据的权利,并获得该区块的比特币奖励。

由于必须保证节点之间的同步,所以新区块的添加速度不能太快。试想一下,你刚刚同步了一个区块,准备基于它生成下一个区块,但这时别的节点又有新区块生成,你不得不放弃做了一半的计算,再次去同步。因为每个区块的后面,只能跟着一个区块,你永远只能在最新区块的后面,生成下一个区块。所以,你别无选择,一听到信号,就必须立刻同步。

所以,区块链的发明者中本聪故意让添加新区块,变得很困难。他的设计是,平均每10分钟,全网才能生成一个新区块,一小时也就六个。

这种产出速度不是通过命令达成的,而是故意设置了海量的计算。也就是说,只有通过极其大量的计算,才能得到当前区块的有效哈希,从而把新区块添加到区块链。由于计算量太大,所以快不起来。

这个过程就叫做挖矿(mining),因为计算有效哈希的难度,好比在全世界的沙子里面,找到一粒符合条件的沙子。计算哈希的机器就叫做矿机,操作矿机的人就叫做矿工。

图12 矿场

2POS——拼股份

POS,全称为Proof of Stake,由Quantum Mechanic于2011年在bitcointalk论坛上面提出。

POS需要系统中运行一种代币,使用这种代币来表示系统中各个节点的权利,节点拥有更多的代币就拥有更多的发言权、更多的责任去创建区块,同时也获得更多的收益。POS证明机制称为股权证明机制,黑客要攻击系统需要获得足够多的系统代币,这和算力无关,POS机制比POW机制环保,这是它的优点,同时也是它的缺点所在。

POS机制的权利是由代币天然固定在系统中,使得POS系统运行产生的区块成本比POW低,所以POS代币的内在价值没有POW凝聚的价值大,所以人们对POS产生的代币多少持不信任态度。

另外还要有一些POS的变形,包括POS+POW以及DPOS等。

3)分布式共识小结

当整个网络存在不受信任节点时,仅靠算法来达到数据的分布式一致性是较难实现的,往往都需要使用激励或者惩罚手段,让诚实节点利益最大化,同时让作恶节点作恶成本最大化才是解决一致性的最佳方案。

POW是用硬件挖矿,POS是用股权挖矿。硬件需要不停的换代更新,没有人能长久保持绝对的算力优势。POS却只需持有币就能永久挖矿,没有换代,也没有更新。矿机只存在一时的中心化,股权却能形成永久的中心化。一旦某人掌控了大部分的股权(这是必然的),那他就成为了这个区块链系统的永久中心。一个理想的区块链系统不在于其系统是否是去中心化,而在于其去中心化是否是一个纳什均衡。一个失败的区块链系统,不是因为其系统出现了中心化,而是其系统存在一个中心化的致命均衡[9]

4.挖矿难度系数

读到这里,你可能会有一个疑问,人们都说挖矿很难,可是挖矿不就是用计算机算出一个哈希吗,这正是计算机的强项啊,怎么会变得很难,迟迟算不出来呢?

原来不是任意一个哈希都可以,只有满足条件的哈希才会被区块链接受。这个条件特别苛刻,使得绝大部分哈希都不满足要求,必须重算。

原来,区块头包含一个难度系数(difficulty),这个值决定了计算哈希的难度。举例来说,第100000个区块的难度系数是14484.16236122。

图13 难度系数

区块链协议规定,使用一个常量除以难度系数,可以得到目标值(target)。显然,难度系数越大,目标值就越小。

图14 目标值

哈希的有效性跟目标值密切相关,只有小于目标值的哈希才是有效的,否则哈希无效,必须重算。由于目标值非常小,哈希小于该值的机会极其渺茫,可能计算10亿次,才算中一次。这就是采矿如此之慢的根本原因。

前面说过,当前区块的哈希由区块头唯一决定。如果要对同一个区块反复计算哈希,就意味着,区块头必须不停地变化,否则不可能算出不一样的哈希。区块头里面所有的特征值都是固定的,为了让区块头产生变化,中本聪故意增加了一个随机项,叫做Nonce。

图15 随机数

Nonce是一个随机值,矿工的作用其实就是猜出Nonce的值,使得区块头的哈希可以小于目标值,从而能够写入区块链。Nonce是非常难猜的,目前只能通过穷举法一个个试错。根据协议,Nonce是一个32位的二进制值,即最大可以到21.47亿。第100000个区块的Nonce值是274148111,可以理解成,矿工从0开始,一直计算了2.74亿次,才得到了一个有效的Nonce值,使得算出的哈希能够满足条件。

运气好的话,也许一会就找到了Nonce。运气不好的话,可能算完了21.47亿次,都没有发现Nonce,即当前区块体不可能算出满足条件的哈希。这时,协议允许矿工改变区块体,开始新的计算。

由于挖矿具有随机性,没法保证正好10分钟产出一个区块,有时1分钟就算出来了,有时几个小时可能也没结果。总体来看,随着硬件设备的提升,以及矿机的数量增长,计算速度一定会越来越快。

为了将产出速率恒定在10分钟,中本聪还设计了难度系数的动态调节机制。他规定,难度系数每两周(2016个区块)调整一次。如果这两周里面,区块的平均生成速度是9分钟,就意味着比法定速度快了10%,因此接下来的难度系数就要调高10%;如果平均生成速度是11分钟,就意味着比法定速度慢了10%,因此接下来的难度系数就要调低10%。

难度系数越调越高(目标值越来越小),导致了采矿越来越难。

5.区块链的分叉

即使区块链是可靠的,现在还有一个问题没有解决:如果两个人同时向区块链写入数据,也就是说,同时有两个区块加入,因为它们都连着前一个区块,就形成了分叉。这时应该采纳哪一个区块呢?

图16 区块链分叉

现在的规则是,新节点总是采用最长的那条区块链。如果区块链有分叉,将看哪个分支在分叉点后面,先达到6个新区块(称为“6次确认”)。按照10分钟一个区块计算,一小时就可以确认。

图17 最长链有效

由于新区块的生成速度由计算能力决定,所以这条规则就是说,拥有大多数计算能力的那条分支,就是正宗的区块链。

6.默克尔树

在区块链中,“块”是交易的容器。每个交易都要放到容器里面,然后把整个容器用密码学算法进行连接,形成了一个完整的链[10]

这种数据的组织方式最大的好处就是数据易于保持完整,并且从密码学角度看安全性较高。然而,这个好处是有代价的——数据一直不停的增长。

对于比特币系统来说,这个问题并不大,因为截止目前为止,比特币仍然是每10分钟一个区块,每个区块1MB,即便到了100年后,总的数据量也不会大到单机无法处理。但是对于某些企业级应用的区块链系统来说,情况就完全不一样了。每个区块可能会非常大,生成区块的速度也会非常快。这种情况下,区块链的数据量增长是飞快的。

怎么解决数据量过大的问题呢?

在我们传统的数据系统中,也存在数据不断增长,数据量过大的问题。以传统的交易型系统为例,由于系统中的核心设计理念是保存账户的最终状态,只需要把历史的交易过程数据移到其他专门的存储设备上,主机数据库保存账户的最新状态和最近一段时间的交易记录即可。(因此,我们在网银中查阅历史交易时,通常是有时间限制的。)

但是在区块链系统中,尤其是使用UTXO方式存储交易的区块链系统中,保存的都是交易的过程。如果一个账户一直没有交易,它则不会出现在最新的区块中。

那么按照传统数据库删除历史数据的方式,只要一个区块中有一个交易一直没有后续交易(就是没有人使用这个交易的输出账户),为了维护整个区块链系统的密码学完整性和安全性,这个区块就必须保留,同时这个区块之后的所有区块也必须保留。

怎么解决这个问题?其实有很多种办法能够解决,起初,在中本聪设计比特币系统的时候,已经预留了一个最佳的解决方案:默克尔树(Merkle Tree)算法。

在区块链中,默克尔树的结构如下图所示:

图18 默克尔树结构

每个区块中的Hash1就是本区块中所有交易的哈希值。但这个哈希值不是把所有交易连成一个长字符串后计算HASH值,而是使用了默克尔树(Merkle Tree)算法来计算获得这个HASH值,我们称之为Merkle根。

默克尔树算法并不是直接计算整个字符串的Hash值,而是每个交易都计算一个Hash值,然后两两连接再次计算Hash,一直到最顶层的Merkle根。

默克尔树(Merkle Tree)算法的最大好处就是,每个交易都可以单独直接删除,只保留这个交易的Hash值即可。这样,对整个区块来说,并没有改变他的密码学安全性和完整性,但是数据量可以大大减小。(Hash值32个字节,而一笔交易一般要400多个字节)。如果一个区块中只有一个交易没有后续交易,那么删除其他所有交易,整个区块的数据量会大大减小。

因此,在UTXO的记账模式中,使用默克尔树结构,通常就无需担心数据量一直增长导致数据过大的问题了。

7.点对点通信

点对点通信技术(P2P,Peer to Peer通信技术),是一种对等连接的互联网技术,依赖网络中参与者共同的计算能力和带宽,而不是把依赖都聚集在较少的几台服务器上。这类网络可以用于多种用途,各种档案分享软件已经得到了广泛的使用。

图19 点对点网络

纯点对点网络没有客户端或服务器的概念,只有平等的同级节点,同时对网络上的其它节点充当客户端和服务器。这种网络设计模型不同于传统的“客户端-服务器”模型,在“客户端-服务器”模型中通信通常来往于一个中央服务器。

在比特币的区块链网络中,采用P2P网络的核心技术Grossip协议(也称流言协议)在全网传输区块数据。P2P网络模型除应用于比特币网络,使用广泛的BT下载就是基于P2P网络。P2P网络不仅仅去除了中心化带来的风险(中心化存在被封杀、中心节点作恶、单点故障等风险),还可以提高传输的效率。同时,一个P2P系统一旦启动,将无限扩散、永不停机。

8.区块链总结

区块链作为无人管理的分布式数据库,从2009年开始已经运行了8年,没有出现大的问题。这证明它是可行的。

但是,为了保证数据的可靠性,区块链也有自己的代价。

一是效率,数据写入区块链,最少要等待十分钟,所有节点都同步数据,则需要更多的时间;

二是能耗,区块的生成需要矿工进行无数的计算,这是非常消耗能源的。

因此,区块链的适用场景,其实非常有限。

  • 不存在所有成员都信任的管理机构(现在的区块链项目的背后均有各类机构存在,自己想。。。)
  • 所有成员有能力和有动机,去记录和验证 所有数据

  • 写入的数据不要求实时使用
  • 挖矿的收益能够弥补本身的成本

如果无法满足上述的条件,那么传统的数据库是更好的解决方案。

四、区块链的杀手应用(比特币)

目前,比特币是区块链最成功最伟大的应用,即——比特币是人类历史上首次成功实现的可编程的分布式自治货币系统。区块链技术是中本聪为构建比特币系统而开创的革命性技术,理解比特币的工作原理更有助于理解区块链。

1.货币是什么?

1)货币的本质

在人类早期,还不会冶炼黄金的时候,人类将贝壳,动物骨头等作为货币来进行商品交换。之后,人类将铁,铜等用来做货币,但是诸如贝壳,铁这类东西,随着人类技术的提高,变得容易获取,且本身不稳定、易分解且无法长期保存。这时人类发现了金银,金银具有难获取、稀有、不易分解、质量小价值大、易分割等特点,所以人类自发的将金银作为了终极货币,即“货币天然不是金银,但金银天然是货币”[11]

图20 货币

理论上,只要是符合金银上述特点的东西,都可以作为货币。例如钻石,也常常被用来做进行商品交换,电影《战争之王》中,非洲国家用钻石来购买枪支。所以,马克思说了这样一句话“金银天然不是货币,但货币天然是金银”,意思是,货币本质是一般等价物,这个等价物可以是符合上述特点的任何东西。只不过黄金依靠各方面的优势被人类自发的定义为了最终的货币。

人类货币的演进过程,实际上是人类对货币“共识”的演进过程。人们普遍相信(认同)它们的价值,其他东西的价值难以得到普通认同,所以无法成为货币。比如,邮票的价值就没有普遍的认同,除了集邮爱好者,其他地方都不能当货币用。一般来说,认同的人越多,这种货币的通用性就越高,所以货币也称为通货[12]

例如去俄罗斯旅行,当地货币是卢布。可是,一旦离开俄国,没人相信它的购买力,所以卢布离开俄国就没用了。相反,全世界人民都相信美元的价值,所以全世界都能用。用美元付账的时候,俄国人都是很乐意接受的。

2)简单易懂的经济模型

现代社会,因为工业革命,实际上产品是很容易过剩的,真正从事生产的人,很少就可以满足全人类的需求,其实古代也是一样,有时候种田的人就那么多,就可以解放出其他人从事手工业和其他的各种思想家[13]

假设有一个社会,共有一百个人,他们总共只对两种产品有需求,一是食物,二是衣服,这一百个人需要的食物,是一天一份,所需要的衣服,也是一天一份。假设当时的生产力,平均一个人一天能够生产出四份食物,或者生产出四份衣服。这样一来,这一百个人中,有二十五人生产食物,就能够满足一百个人的需求,有另外二十五个人生产衣服,也就能够满足一百个人的需求。那么,还有五十个剩余劳动力干什么?

本来,就生产力而言,这一百个人中只要五十个人劳动,就足以让一百个人过好日子了,另外五十个人,是可以轻松愉快,不用劳动的,唱唱歌,跳跳舞,去旅游,总之干什么都可以。但是,如果真有五十个人,什么也不干,则劳动的那五十个人,会觉得不公平。凭什么我们劳动你们不做事情?因此,生产食物的人会拒绝向闲散的五十个人提供食物,生产服装的人会拒绝向闲散的五十个人提供衣服。从而,由于生产过剩,导致所谓的“资本主义经济危机”。这里的意思也在于,人这种动物,从本质上讲,就是一种追求公平的动物。也就是说,一些人劳动,就不能够容忍有其它的人不劳动光享受。

而如果这些多的人,都有一个金矿去挖金子呢?他们不是都就业了吗?这就是凯恩斯说的制造需求,他说对付资本主义过剩的最好办法,就是制造需求,或者说,把美元埋在地里,让人去挖出来。这其实就是有一个金矿的概念。所以,每次大的淘金潮,几乎都是吸纳富余人口,大规模促进经济增长的时代。比如加州淘金潮,比如克朗代杰淘金潮。

那么,另外五十个人,就只好去生产黄金,黄金这东西有用在于,它是一般等价物,使得衣服、食物等都有一个统一的价值度量标准。生产黄金的五十个人,拿着黄金去交换食物和衣服的时候,其实也是在告诉对方“我们也没有闲着,我们在努力生产黄金。”在这种情况下,生产食物和生产衣服的人才会想得通,才会愿意用衣服和食物换回黄金。因为,大家都劳动了,而且强度是一样的,因此是公平的。

通过市场供需机制的调节,生产食物、生产衣服和淘金的人角色是自然互换的。例如当生产食品服装利润高于淘金利润时,更多的人会去生产食品服装,导致供大于需,食品服装的价格和利润下降,更多的人又转去淘金。这样,经过一番竞争,劳动力转移,最后会达到一个平衡状态,就是无论从事哪个行业的人,都会觉得自己所在的这个行业,挣的钱和其它的行业是差不多的。

黄金还有一个重要的作用,就是它是一种信息,一种“闲暇的权利”的信息,或者说,一种“不干活”的权利的信息。每个人通过淘金或出售商品而获得黄金,黄金积蓄得越多,他就有越多的不干活的权利,休息的权利,玩的权利。他可以出去度假,度假期间他不劳动,照样每天用积蓄的黄金向食物和服装公司购买生活必需品。但是,当他的积蓄花完了,就没有办法了,就只好回来劳动。积蓄黄金,也就是意味积蓄了“闲暇”。

只要黄金足够,这个体系是可以长久的持续下去的,而且可以杜绝通货膨胀和失业。这就是因为这体系两个最大的优势:1)每个人都可以去挖,而不是现在的中央银行印纸币普通人没有造币的权利;2)获取要有难度,但只要你付出一定劳动时间和成本,都可以获得货币,充分保证了含金量。

这样一个任何人都有权进入,不得阻止的“劳动造币”机制,才是避免金融危机的关键之着,这其实就是比特币的本质。

3)弗里德曼的雅浦岛石币

从来没有人为黄金背书,但黄金作为货币却横贯数千年,超过任何由政府背书的纸币。公众认为黄金是货币,愿意在交易中使用黄金,那黄金就是货币,就算政府下《通知》规定黄金不是货币,黄金也还是货币[14]

弗里德曼(Milton Friedman,1976年诺贝尔经济学奖得主)在著作《货币的祸害》的第一章“石币之岛”中介绍了著名的共识货币:雅浦岛石币。

这些石币并不产自岛上,岛上的居民乘船到400英里以外的其他有大量石灰石矿产的岛屿上,雕刻巨型石币,把他们推到筏子上,再把这些石币运回雅浦岛。雕刻好的石币被人们滚到一个传统的地方,然后这些东西就被准备好用来交易了。

图21 雅浦岛石币

在居民“浪费”大量的人力物力,“挖掘”并搬运这些石币之后(就像我们烧钱挖金矿一样),石币的旅程就算是结束了。当遇到交易的时候,居民并不需要将这些笨重的石币搬来搬去,而是交易双方大声并公开的宣布某个石币现在属于某人了,在上作标记表示所有权已经易手,然后石币还是待在原来的地方不变。

更令人称奇的是,岛上有一户人家,他祖先曾得一巨大的石币,但由于运回雅浦岛的途中遇上海难而石沉大海,但当地的居民仍相信,即便物理上石币已从众人眼前消失,但理论上石币依然存在,只是不在拥有者家中,石币的购买力并不会因为石币所处的地点而有所下降,所以这户人家仍储存了石币代表的价值和财富。

弗里德曼由此受到启发:货币的本质是共识。货币甚至可以没有实体存在,只要达成了共识,就算看不见摸不着沉在深海里的石币,也可以继续流通使用。

4)货币小结

通过,上面两个例子,我们可知货币的本质是“共识”,即使用的人都认同它的价值,它就具有价值;同时,一个良性的货币系统,需要人人都可以自由发行(生成)货币,且货币获取存在难度,即要从物理角度保证货币的稀缺性,从而不会发生货币增加对货币存量的价值冲击,我们称之为硬货币。人们相信黄金有价值,是因为相信黄金实物的稀缺性。人们相信比特币有价值,是因为相信数学公式的亘古不变。即,真正的货币系统是“非信用+自发共识”的硬货币系统。

平时,我们使用的纸币系统,由于印钞成本(相对于纸币的购买力)几乎为零,当然,世界经济正朝着“无现金”方向发展,印钞过程就是在商业银行数据库余额后面“增加零”的过程,所以印钞成本确实为零,即软货币。但由于纸币的背后有国家信用背书,且从法律上强制使用,所以使用的人们认为纸币有价值,所以纸币货币系统是“信用+强制共识”的软货币系统。

2.比特币是什么?

狭义上的区块链技术因为比特币的诞生而横空出世,同时,比特币又集成了所有广义上的区块链技术于一身。

目前,比特币是区块链最成功最伟大的应用,即——比特币是人类历史上首次成功实现的可编程的分布式自治货币系统。

1)比特币的本质

比特币是利用区块链技术实现的点对点(去中心化)的货币系统,允许在线支付直接从一方发送到另一方,而无需通过金融机构[15]。由于纸币的发行由中心机构控制,且没有印钞成本,导致纸币不断增发(通货膨胀),同时为了确保支付交易的不可逆性,需要维持第三方信用中心(银行等)的高额运行成本。为解决中心化金融系统的弊端,中本聪在2008年11月1日设计并开发了比特币系统。比特币的发行是利用哈希现金原理(需要消耗大量的能源成本)来产生比特币,提高节点作恶成本确保系统安全,并且将消耗的能源成本转移到比特币上面,构成比特币的价值;比特币总数量通过共识规则(共识代码)的方式永远限制在2100万个;同时,又由于比特币是去中心化的货币系统,没有中心机构可以随意修改规则;基于上述三个特点,比特币就避免了恶意通货膨胀。

由于大量的早期比特币私钥丢失,并且还会由于私钥保管不善,持续出现私钥丢失的现象,比特币私钥一旦丢失,私钥对应的地址上的比特币将永远无法找回,所以比特币在预期上是一个通货紧缩的货币系统。

比特币也可以理解为一家世界银行发行的货币,这家世界银行具有去中心化、数据不可篡改、账务公开的特点[16]。由于1个比特币可以分割成10^8个比特币,每个10^(-8)比特币称为1聪(比特币的最小单位),鉴于比特币可以有限分割的特点,比特币系统可以存储巨额价值。

由于比特币兼具黄金的易存储、易分割、稀有、总量有限、发行需要成本、匿名、去中心化抗审查等特性,同时比特币又具有独特的“互联网瞬间传输”特性,比特币又称为数字黄金

比特币是个不可逆发明。什么叫不可逆发明呢?就是它没有的时候也没什么,可它一旦出现,这个世界就无法回到没有它的状态。轮子、下水道、抽水马桶、车轮、发动机、复印机、互联网、移动电话、传感器、社交软件等等,都是这种发明,没出现的时候,没有人会觉得这东西这世界少了什么,可它们一旦出现、一旦被发明,人们就开始用起来,一旦有些人开始用起来,这世界就不再可能缺这些东西,甚至人们会感觉没有它们就寸步难行[17]

比特币会不会消亡?很难。这东西一旦启动了,就关闭不了。当我们回顾历史会发现,P2P网络自从启用就没有被关掉过,有些网站可能会倒掉,但是种子文件存在于那里,早晚会被下载的到。这就是P2P的威力,一切P2P网络都如此:一旦启动,就无法阻止。所以P2P是一种时代潮流,是无法更改的。历史无数次证明,个体力量变得越来越强大,也将变得越来越独立。比特币最大的意义在于,这是人类史上第一次,从技术层面上彻底、纯粹地保证了“私人财产不可侵犯”。比特币是自由主义者和未来主义者发起的一场伟大的社会实验。只有相信逻辑的力量,才能活在未来。[18]

“比特币真的有价值吗?”其实,一种货币是否有价值只取决于有没有人愿意使用它买卖。谁说“金本位”就是由黄金支持货币了?准确地讲,是公众相信政府用等价值的黄金在支持货币。注意,是“相信”而已——事实上,政府究竟有没有做到,谁都不知道——有人知道了也不告诉公众而已。而实际上,政府用黄金担保并不可靠,因为政府总是可以偷偷加印货币。并且,现在已没有“金本位”,政府是可以随意加印货币。而且所有纸币本身就是虚拟的——纸币本身没有价值,它“代表”一个价值数额。我们之所以姑且相信银行,是因为我们不得不相信。然而,比特币不一样,所有使用比特币的人自愿相信。“自愿的信任”远比“被迫的信任”更有价值,所以比特币比任何纸币都更真实[19]

2)比特币的产生背景

早在1976年,弗里德里希·冯·哈耶克写了《货币的非国家化:对多元货币的理论与实践的分析》,于1974年获得诺贝尔经济学奖。哈耶克认为,政府可以发行货币,私人同样也可以发行货币,应该允许一种自由的货币体系,让各种货币之间相互竞争来优胜劣汰,而不是天然接受政府控制发行货币的权力,并把这个当成现实[20]

在2007年美国次贷危机爆发,特别是2008年9月全球金融危机爆发,造成全球范围货币大量投放、币值剧烈波动的情况下,更是引起很多人对废弃金本位制之后,当今货币体系完全由货币当局人为控制,很容易造成货币滥发并引发大大小小金融危机的强烈诟病,于是有人试图摒弃现有货币体系和规则,完全模拟黄金(存量限定;需要挖矿产生;在一定区域内,一旦有人挖到,其他人就不能再挖到等),运用计算机系统和加密、共识、分布式技术等,形成一套比特币的产生和运行机制[21]

其实比特币的出现颇具神秘色彩。2008年,有一个域名bitcoin.org被静悄悄匿名注册成功。同年10月31日,有一篇名为《比特币:P2P电子货币系统》的论文被发表在密码朋克列表中;10天之后,开源社区sourceforge.net上出现了一个叫bitcoin的项目,这就是比特币的起源。

这个项目的创造者究竟是谁没有人知道。开发者只留下了一个中本聪(Satoshi Nakamoto)的名字,他在搭建完比特币体系后就从互联网上彻底消失了。此后项目由两个前Google工程师维护,但即便是他们俩也声称从未见过中本聪。有人说中本聪是从未来坐着时间机器来到现在写了这个程序的。

这个世界上最危险的东西,当然也是最有价值的东西,不是子弹、不是暴力,而是思想。人类历史无数次证明了这是一条真理,我们讨论的比特币其实就是一种思想。

中本聪提出了革命性的构想:让我们创造一种不受政府或其他任何人控制的货币!这个想法堪称疯狂:一串数字,背后没有任何资产支持,也没有任何人负责,你把它当作钱付给对方,怎么会有人愿意接受?[22]

图23 比特币

但是,狂想居然变成了现实。随后的几年,在全世界无数爱好者的支持下,比特币网络运行起来了,越来越多的人和资本参与,星星之火,终成燎原。从2010年5月22日,著名的比特币披萨成交,佛罗里达州杰克逊维尔的Laszlo Hanyecz用1万枚比特币购买了两个披萨,每枚比特币的价格低于0.01美元,到2017年,比特币迎来了爆发式的增长,从年初的1000美元,最高涨到了2万美元,上涨了上百万被的比特币,全世界都为之震动,上到政府,下到普通百姓都在关注。事实就是比特币已经并将继续改变世界。

图24 比特币2017年价格走势图

新闻媒体往往只关注它的火爆表现,忽视或者无法回答一些基本的问题。

  • 比特币的原理是什么?
  • 为什么这个无人管理的体系可以成功运作?
  • 比特币交易的流程是怎么回事?
  • 它与区块链又是什么关系?

3)非对称加密及数字签名

首先,理解比特币,必须理解非对称加密。

你可能听说过这个词,所谓非对称加密,其实很简单,就是加密和解密需要两把钥匙:一把公钥和一把私钥。

图25 非对称加密密钥对

公钥是公开的,任何人都可以获取。私钥是保密的,只有拥有者才能使用。他人使用你的公钥加密信息,然后发送给你,你用私钥解密,取出信息。反过来,你也可以用私钥加密信息,别人用你的公钥解开,从而证明这个信息确实是你发出的,且未被篡改,这叫做数字签名。

用私钥对消息进行加密,得到密文,其实就是一个签名的过程。因为私钥顾名思义是私密的,而且是唯一的,只有我自己知道,别人无法在不知道我的私钥的情况下模仿我的签名(不可伪造)。而公钥是公开的,其他人可以很容易地使用公钥去尝试解密生成的密文,然后就可以知道这个签名是不是我签的(不可抵赖)。

当然,在数字签名的过程中,对原文的保密性没有要求,所以加密、解密这样的名词在这个场景中并不准确,用签名解签会更合适。

图26 非对称加密原理图

现在请设想,如果公钥加密的不是普通的信息,而是加密了一笔钱,发送给你,这会怎样?

首先,你能解开加密包,取出里面的钱,因为私钥在你手里。其次,别人偷不走这笔钱,因为他们没有你的私钥。因此,支付可以成功。

这就是比特币(以及其他数字货币)的原理:非对称加密保证了支付的可靠性。

由于支付的钱必须通过私钥取出,所以你是谁并不重要,重要的是谁拥有私钥。只有拥有了私钥,才能取出支付给你的钱。(事实上,真实的交易流程稍有不同,私钥保证的不是取出支付给你的钱,而是保证只有你能把这些属于你的钱支付出去,详见后文。)

存储在区块链上的交易信息是公开的,但是账户身份信息是高度加密的,只有在数据拥有者授权的情况下才能访问到,从而保证了数据的安全和个人的隐私。

4)比特币私钥、公钥与地址

对于比特币来说,钱不是支付给个人的,而是支付给某一把私钥。这就是交易匿名性的根本原因,因为没有人知道,那些私钥背后的主人是谁。

所以,比特币交易的第一件事,就是你必须拥有自己的公钥和私钥。

你去网上那些比特币交易所开户,它们会让你首先生成一个比特币钱包(wallet)。这个钱包不是用来存放比特币,而是存放你的公钥和私钥。软件会帮你生成这两把钥匙,然后放在钱包里面。

图27 比特币钱包

当然,最安全的存储比特币的方法是:下载比特币官方软件Bitcoin Core,电脑断网、拆掉硬盘、用U盘操作系统启动电脑,离线生成私钥与地址对(地址是公钥的多次哈希值),再把私钥抄写到多份纸上,妥善保存。如果嫌麻烦,干脆用一个永远不上网永远不用作他用的废旧电脑生成私钥与地址对,再把私钥抄写到多份纸上,妥善保存。

根据协议,公钥的长度是512位。这个长度不太方便传播,因此协议又规定,要为公钥生成一个160位的指纹。所谓指纹,就是一个比较短的、易于传播的哈希值。160位是二进制,写成十六进制,大约是26到35个字符,比如1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2。这个字符串就叫做钱包的地址,它是唯一的,即每个钱包的地址肯定都是不一样的。

图28 私钥、公钥与地址关系

你向别人收钱时,只要告诉对方你的钱包地址即可,对方向这个地址付款。由于你是这个地址的拥有者,所以你会收到这笔钱。

图29 比特币地址

由于你是否拥有某个钱包地址,是由私钥证明的(具体的证明方法稍后介绍),所以一定要保护好私钥。这是极其重要的,如果你的私钥被偷了,你的比特币也就等于没了,因为他人可以冒用你的身份了,把钱包里面的钱都转走。

图30 私钥与地址关系

同样的,你向他人支付比特币,千万不能写错他人的钱包地址,否则你的比特币就支付到了另一个不同的人了。

5)交易过程

实际应用中,由于直接对原消息进行签名有安全性问题,而且原消息往往比较长,直接使用RSA算法进行签名速度会比较慢,所以我们一般对消息计算其摘要(比如SHA-256等),然后对摘要进行签名。只要使用的摘要算法是安全的(MD5、SHA-1已经不安全了),那么这种方式的数字签名就是安全的。

区块链系统一般采用Hash算法来快速验证用户的身份。如果用户宣称对某个钱包具有所有权并且要改变钱包对应的信息(在比特币中,就是使用钱包中的余额),他必须提交一个请求,这个请求包括三个部分:钱包地址明文请求明文请求由钱包对应的私钥Hash过的签、私钥对应的公钥。这个请求将被发送要区块链网络中。

每个节点可以用钱包的公钥来验证这个请求是否对应于这个签名,也就是通过这个办法来验证用户对钱包的所有权。

图31 交易签名与验证

下面,我把整个流程串起来,看看比特币如何完成一笔交易。

一笔交易就是一个地址的比特币,转移到另一个地址。由于比特币的交易记录全部都是公开的,哪个地址拥有多少比特币,都是可以查到的。因此,支付方是否拥有足够的比特币,完成这笔交易,这是可以轻易验证的。

问题出在怎么防止其他人,冒用你的名义申报交易。举例来说,有人申报了一笔交易:地址A向地址B支付10个比特币。我怎么知道这个申报是真的,申报人就是地址A的主人?

比特币协议规定,申报交易的时候,除了交易金额,转出比特币的一方还必须提供以下数据。

  • 上一笔交易的 Hash(你从哪里得到这些比特币)
  • 本次交易双方的地址
  • 支付方的公钥
  • 支付方的私钥生成的数字签名

验证这笔交易是否属实,需要三步。

  • 第一步,找到上一笔交易,确认支付方的比特币来源。
  • 第二步,算出支付方公钥的指纹,确认与支付方的地址一致,从而保证公钥属实。
  • 第三步,使用公钥去解开数字签名,保证私钥属实。

经过上面三步,就可以认定这笔交易是真实的。

6)交易确认与区块链

确认交易的真实性以后,交易还不算完成。交易数据必须写入数据库,才算成立,对方才能真正收到钱。

首先,所有的交易数据都会传送到矿工那里。矿工负责把这些交易写入区块链。

根据比特币协议,一个区块的大小最大是1MB,而一笔交易大概是500字节左右,因此一个区块最多可以包含2000多笔交易。矿工负责把这2000多笔交易打包在一起,组成一个区块,然后计算这个区块的哈希。

图32 区块中的交易数据

计算哈希的过程叫做挖矿,这需要大量的计算。矿工之间也在竞争,谁先算出哈希,谁就能第一个添加新区块进入区块链,从而享受这个区块的全部收益,而其他矿工将一无所获。

一笔交易一旦写入了区块链,就无法反悔了。这里需要建立一个观念:比特币不存放在钱包或其他别的地方,而是只存在于区块链上面。区块链记载了你参与的每一笔交易,你得到过多少比特币,你又支付了多少比特币,因此可以算出来你拥有多少资产。

7UTXO交易模型

作为最早出现的加密货币,比特币就采用了UTXO模型作为其底层存储的数据结构,其全称为Unspent Transaction output,也就是未被使用的交易输出[23]

在比特币以及其他使用UTXO模型的加密货币中,某一个“账户”中的余额并不是由一个数字表示的,而是由当前区块链网络中所有跟当前“账户”有关的UTXO组成的。

图33 UTXO交易模型

上图中所有绿色的交易输出才是UTXO,红色的交易输出已经被当前“账户”使用了,所以在计算当前账户的余额时只会考虑绿色的交易输出,也就是UTXO。

基于UTXO的交易模型,与我们在日常生活中使用纸币的场景是非常相似的,每一张纸币都是不可分割的整体,当我们想要使用现金购买商品或者服务时,往往都会获得找零。就如同中本聪关于比特币的白皮书《Bitcoin:A Peer To Peer Electronic Cash System》中提到的“Electronic Cash”,比特币本质还是物理意义上的现金,只是电子化了,而非信息化。

inputs = price + change + fee

每一个UTXO和纸币一样,只可能有两种状态,要么是没有被花费的,要么就是已经被花费,所有权变成了其他人或者地址,成为其他地址的UTXO。

图34 UTXO找零机制

在基于UTXO的区块链网络中,除了找零(Change)非常常见之外,将多个UTXO整合(Consolidate)成一个UTXO的操作也比较常见

UTXO模型通过链式的方式组织所有交易的输入和输出,每一个交易的输出最终都能追寻到一个Coinbase,也就是当前Bitcoin被挖出时的区块的第一笔交易。

图35 UTXO交易链

由于在UTXO中没有账户的概念,所以并行地处理交易不会出现任何问题,同时不可变的账本能够让我们在Bitcoin节点快速更新时,也能分析某一时刻整个网络中数据的快照。

UTXO模型确实能够解决区块链世界中的各种问题,它的核心思想就是保证已经写入的数据不可变,链式的UTXO就是基于这一核心思想的,通过哈希指针连接不同交易的输入和输出,保证所有交易的合法性。

8)矿工的收益(奖励机制)

交易的确认离不开矿工。为什么有人愿意做矿工呢?

比特币协议规定,挖到新区块的矿工将获得奖励,一开始(2008年)是50个比特币,然后每4年减半,目前(2018年)是12.5个比特币。这也是比特币的供给增加机制,流通中新增的比特币都是这样诞生的。

你可能看出来了,每4年奖励减半,由于比特币可以分割到小数点后八位,那么到了2140年,矿工将得不到任何奖励,比特币的数量也将停止增加。这时,矿工的收益就完全依靠交易手续费了。

所谓交易手续费,就是矿工可以从每笔交易抽成,具体的金额由支付方自愿决定。你完全可以一毛不拔,一分钱也不给矿工,但是那样的话,你的交易就会没人处理,迟迟无法写入区块链,得到确认。矿工们总是优先处理手续费最高的交易。

目前由于交易数量猛增,手续费已经水涨船高,一个区块2000多笔交易的手续费总额可以达到3~10个比特币。如果你的手续费给低了,很可能过了一个星期,交易还没确认。

一个区块的奖励金12.5个比特币,再加上手续费,收益是相当可观的。按照目前的价格,可以达到100万~200万人民币。想想看,运气好的话,几分钟就能挖到一个区块,拿到这样一大笔钱,怪不得人们对挖矿趋之若鹜。

9)双重支付(双花)

前面说过,交易不可能被伪造。但是,由于每一笔交易都是一串二进制信号,因此可能被复制。举例来说,”张三向李四转移了1个比特币”这句话,可能被其他人复制,也可能被张三自己复制,提交到区块链。

如果这句话被两次写入区块链,就意味着张三可以把同一笔钱花掉两次。但是,第二次写入的时候,查询区块链可以发现张三已经把这笔钱花掉了,从而认定这是不合法的交易,不能写入区块链。因此,复制交易是不可能的。

比较麻烦的是另一种情况,就是张三把同一笔钱付给两个人。他先向区块链提交一个交易”张三向李四转移了1个比特币”,然后又提交了另一个交易”张三向王五转移了1个比特币”。这两个交易都可能被认为是真实的交易,从而进入区块链。因此,必须有办法防止出现这种情况。

情况一:同一个矿工收到了这两个交易。那么他会察觉到,它们不可能同时成立,因此选择其中的一笔写入区块链。

情况二:矿工A收到了第一笔交易,矿工B收到了第二笔交易,他们各自都会认定这是合法的交易,分别把这两笔交易写入了两个区块,这时区块链就出现了分叉。

图36 比特币“双花”攻击

比特币协议规定,分叉点之后最先达到6个区块的那个分支,被认定为正式的区块链,其他分支都将被放弃。由于区块的生成速度由计算能力决定,所以到底哪一笔交易最后会被写入区块链,完全由它所在的分支能吸引多少计算能力决定。隐藏的逻辑是,如果大多数人(计算能力)选择相信某一笔交易,那么它就应该是真的。

综上所述,双重支出不可能发生。因为中央记账系统总有办法发现,你把同一笔钱花了两遍。但是,这也说明了比特币的一个代价,就是交易不能实时确认,必须等待至少一个小时。

10)数据同步

比特币是一个全世界的开放网络,只要你有服务器,就能加入这个网络,成为一个节点。每个节点都包含了整个区块链(目前大概100多GB),并且节点之间时刻不停地在同步信息。

图37 点对点通信

当你发生了一笔支付,你所在的节点就会把这笔交易告诉另一个节点,直至传遍整个网络。矿工从网上收集各种新发生的交易,将它们打包写入区块链。一旦写入成功,矿工所在节点的区块链,就成为最新版本,其他节点都会来复制新增的区块,保证全网的区块链都是一致的。

最后,你所在的节点也拿到了最新的区块链,从而得知你早先的那笔交易,已经写在里面了,至此交易确认成功。

3.比特币的愿景

比特币作为互联网行业目前最成功的“原生货币”,是互联网+金融的革命性产物。在传统行业和金融银行业围追堵截,冷嘲热讽下,倔强地成长为如今这样一个互联网世界里知名度极高的货币[24]

首先,先分享一张图,让大家直观地了解一下现在比特币市值所处的地位。(当然,由于比特币的下跌,现在的比特币已经只剩$60b(六百亿美金)市值了,在比尔盖茨后面,也就是在这张图里排最后面)

图38 比特币市值排名

那么大家有没有想过,比特币应不应该在这个位置呢?

相较于比特币的革命性来说,目前市值太低了。比特币应该排在黄金的边上,不是吗?至少应该不低于世界上某一个人的身价,那么目前比特币的市值应该是1千亿。

其实如果说比特币最想取代的是什么,只有两种回答是绝对的首要答案:美元和黄金。

但是互联网时代,正如当初没人相信互联网能革命掉那么多行业一样,人们也应该相信这件事情即将发生了:互联网终于要革命掉最核心和最古老的银行业了。

或许你会说,这怎么可能呢?其实比特币已经超越了一个又一个曾经遥不可及的目标,比如1个比特币超过1美金,1个比特币超过世界上最大面额的钞票,比特币的市值超过白银的市值等等…比特币都做到了,时间证明了一切。

比特币是革命性很强的东西,革命性强的东西往往只有两种结果:要么革命,要么被革命。就如同当年持有亚马逊的股票一样,用传统的思维没人能理解为什么在电脑上点一点就把东西买了居然能赚钱?为什么居然有人愿意花钱看电子书?为什么云计算居然能这么赚钱?

没人知道,为什么当年只是一个电商网站的亚马逊连亏十几年都能成为全球市值第一的公司,而贝佐斯能成为世界首富,身价甚至过千亿美金,历史第一人。

我们身在一个剧变的年代,而这个剧变汇集到一个词:互联网。

互联网革命这个词说了几十年了,到现在革命还在到处发生。而互联网的矛头终将指向古老传统的金融银行业,比特币可能就是最好的武器,或者至少比特币趟出了一条可行之路。

五、区块链的思维逻辑

区块链的伟大使命是为人类组建最大规模的分布式自治提供技术支撑,比特币是人类历史上首次成功实现的分布式自治货币系统。

传统互联网是信息互联网,区块链是价值互联网,所以,区块链也被认为是互联网的下半场。那么,何为价值互联网?区块链具有哪些价值?下面从思维的角度,说明区块链区别与传统互联网的价值所在[25]

几年前,互联网思维大行其道,各家众说纷纭,这里主要引用赵大伟的观点,互联网思维的四个核心观点:用户至上、体验为王、免费的商业模式、颠覆式创新,九大思维:用户思维、简约思维、极致思维、迭代思维、流量思维、社会化思维、大数据思维、平台思维、跨界思维。

图39 互联网九种思维

互联网思维几乎囊括了最好听的商业思维,很多实体产业者对此非常不屑,认为过度夸大了互联网而贬低了传统产业。实际上,很多传统产业或企业也具备这些思维。如宝马汽车将汽车做到极致,汽车一代代更新也是不断迭代,迪士尼乐园也是流量为王,沃尔玛则利用大数据做供应链管理,无印良品以简约思维做产品,苹果手机则是跨界的产物。

由于传统产业的产业链跨度较大,管控难度比较大,实体产品高质量量产不易,而互联网产业链短、产品虚拟化,易于管控,容易属于标准化和非标准化产品,以至于相对容易把传统优秀的商业思维落地,故而形成所谓的“互联网思维”。

互联网思维可以理解为优秀的商业思维。今天讲区块链思维,也不想把它说得高高在上。区块链思维与互联网思维一样,也是从传统商业社会中延伸出来。区块链依托于分布式账本、加密技术等,实现了原有互联网和商业不够重视或无法落地的需求,进而形成了一套商业逻辑,称之为区块链思维。

图40 互联网与“互联网+”、区块链网与“区块链+”的关系

区块链利用分布式数据存储、点对点传输、共识机制、加密算法等技术,具备去中心化、开放性、自治性、不可篡改、匿名性等特点。利用这些技术构建起来的商业模式,具备以下思维逻辑:

1.区块链思维之一:分布式思维

分布式意味着去中心化,也可以说去中心化,但是分布式的表述或许会更为本质。首先要打掉业内人士的傲气,分布式或去中心化一定比中心化好吗?

图41 分布式网络

如果因为鼓吹区块链思维、去中心化而否定中心化,这是不理性的。否定中心化实际上在否定我们的历史,也是违背人性。人类社会几千上万年都依赖于中心化得以生存下来,否则我们的祖先早已消失在洪古荒流之中。恐惧,是人类与生俱人来的。为了抵御人性中对自然万象的恐惧,人类从刀耕火种开始寻找并归属于首领、族长、氏族、城邦、国家以及王侯将相。在区块链的世界里,投资人恐惧于投资风险,到处打听并跟随大佬项目、知名投资机构背书项目、大型中心化交易所。

以上是让我们更加理性地看待分布式思维。分布式往往寄托着人类追求自由、民主的美好夙愿,但是不能过分夸大分布式思维。在比特币网络中,通过区块链技术实现了分布式记账,也是第一次大规模实现转账系统的分布式结算、验证以及记账。不过,分布式思维未必完全依赖于分布式数据存储,而是通过技术、协议、制度形成的去中心化的商业逻辑。因此,对于传统经济而言,分布式思维依然有他的实际价值。

分布式思维本质上是权责利的去中心化,在传统经济中表现为权责利分布式再造。集权中心往往是分布式改造的重点。如央行,以美联储为例,美联储7名委员决定了美元货币政策,决策一旦出现大失误,或导致全球经济混乱。大型上市公司董事会,董事会决策关系到广大中小投资、股民的实际利益。在西方国家,上市公司治理机构也不断地去中心化,大量引进外部董事增加决策的科学性、公开性以及降低权力作恶。

现在的经济系统呈现幂律分布、平台化特点,如滴滴打车一个平台掌控着成千上万的出租汽车,P2P平台交易资金达千亿级别,FACEBOOK掌控着20亿用户信息。这些大型平台一旦出问题,如信息泄露、系统故障、风险失控,可能引发社会混乱。分布式思维来构建这些平台,实际上也为这些平台降低因权力集中带来的责任与风险。

FACEBOOK创始人扎克伯格就因用户信息泄露事件,被44名国会议员围怼5个小时。议员质问扎克伯格:“我是不是要给你钱,你才能不泄露我的个人信息?”“Facebook是不是独裁公司?”,更要命的是“从2006年你到国会道歉,为什么你今天还在道歉?”面对FACEBOOK这样中心化的平台,议员们显然不甚了解更不理解,扎克伯格更难以自圆其说,不得不从2006年开始至今一直还要去国会道歉。

除了权力与责任,分布式思维最大的影响或许是启发数字资产私有化思想。资产私有化,人类为此奋斗了几百年。今天,大多数实体经济资产已经实现私有化。而数字资产包括数据、虚拟资产,都没有真正实现私有化,或者不被私人掌控。分布式数据存储将从技术层面实现数字资产私有化。从产权理论角度,数字资产私有化将极大地推动数字经济发展。

2.区块链思维之二:代码化思维

在比特币网络中,转账作为交易按分布式记账来处理。按分布式思维,人类所有的行为都可以参照转账作为交易来分布式验证、记账,实现去中心化。以太坊认为,人类的行为极其复杂,不能完全按照交易和记账的方式处理,而应采用协议来完成,在区块链上通过代码来执行协议,智能合约由此诞生。

图42 智能合约

我们可以看到,比特币网络的思维是人类所有行为即交易,交易即记账,分布式账本实现去中心化;以太坊网络的思维是人类所有行为即合约,协议即代码,智能合约实现去中心化。所以,不管是权责分布式还是协议代码化,都是为了实现去中心化,根本上都是解决信任问题,只是思维路径不同。

人类社会在建立信任关系时发明了“契约”,契约精神已经成为今天市场经济和文明社会的灵魂。但是,违约情况依然屡见不鲜,小到个体大到国家的债务违约,公司信用破产、合同纠纷、毁约跑路屡见不鲜。从口头协议,到书面合同,再到电子合同,契约从纸质化、数字化、数据化一直在强化信用风险管理。代码化实际上是在契约数字化、数据化之后的升级,即通过代码撰写契约,在公开透明的链上自然履行契约,最大限度地降低违约率。

在区块链的世界中,代码即法律,可以理解为协议代码化,通过代码了约束协议执行。实际上,在人工智能领域,也正在从数字化、数据化上升到代码化。人工智能正在进入大数据技术的深水区,即通过代码开发来实现大数据模型构建与计算。所以,在数字经济中,区块链将协议上升到代码化,人工智能将计算上升到代码化,一个改善信任生产关系,一个提供运算生产力。

现实经济中,协议代码化非常实用。供应链金融、国际贸易融资、银行信贷、私募基金、商品期货期权合约、能源合同管理、零售供应链管理、众包众筹协议等都可以通过协议代码化,增加合作的透明度,提高履约率,降低信用风险。

3.区块链思维之三:共识性思维

人类纷争、世界动荡、国际矛盾本质是共识的流失、撕裂和瓦解,社会文明、经济繁荣、公民幸福本质是共识的凝聚、达成和升华。今天反国际化思潮兴风作浪,中美贸易进入战争状态,实际上是主要经济体之间缺乏利益共识。

区块链网络是以共识为基石来构筑的,出发点和落脚点都是共识。区块链思维从共识出发,只有共识才能开启交易、合作与社区,如果共识破裂,链也就可能分叉。比特币网络采用POW共识机制,主流的还有PoS、DPoS、PBFT等。共识并非只有区块链才有,人类最大的智慧在于寻找共识合作,以抵御自然威胁。但是,人类达成共识的机制有很多,如中心化权威、等价交易、意识形态等等。而区块链共识达成更多地通过平等、自愿、公平的方式达成,这种共识性思维实际上包含了去中心化的自由信仰。

之所以说“共识性”,是因为共识是相对共识,而非绝对共识。人类总是在感性与理性的智慧中不停地选择,不断地分化出不同的想法和利益追求,共识也在不停地瓦解和进步。丘吉尔借帕麦斯顿首相名言“大英帝国没有永远的朋友,没有永远的敌人,只有永远的利益”,形容国家关系,实际上道出了人与人之间的生产关系。

共识性,是最基础的共识,也是市场交易的前提。区块链经济共识性思维给予现实经济更多的指向性。互联网思维里的用户至上、用户思维,实际上是从用户的角度设计产品及服务满足用户需求,本质上是与用户需求达成共识。在区块链世界中,先与用户达成共识,而后采用产品与服务。有点像按需生产,用户达成协议先下单然后再生产。区块链的经济共识性思维,在营销中,这是一种提前锁定用户的策略;在商业模式中,这是将用户纳入产业链之中;在管理中,让用户参与了监管环节之中。

责权分布式思维、协议代码化思维、经济共识性思维都是在原有商业思维里发展出来的,大数据思维要求大数据运算升级到代码层面,进而出现代码化思维;平台思维中大平台管理遭遇极限挑战,构建分布式管理以实现平台战略;共识性思维是用户思维和流量思维的前站;简约思维、极致思维和迭代思维不仅仅体现在用户界面上,在区块链的开源系统中展露无疑;社会化思维在分布式社区做得更为彻底;跨界思维在区块“链”上落地。

责权分布式思维、协议代码化思维、经济共识性思维是区块链的三大思维。这三大思维支撑着去中心化的自由民主思想,推动实体经济数字化、数字资产私有化转变,推动社会组织向分布式社区制转变。

编写人:王建伯

编写时间:2019年3月21日

微博:比特币布道者

 

参考文献

[1] 蔡文清.“区块链”到底是什么?或触发第五轮颠覆性革命浪潮. 人民网[2018-02-05]

[2] 袁勇,王飞跃. 区块链技术发展现状与展望[J]. 自动化学报,2016,42(04):481-494.

[3] 区块链行业研究报告:通证通研究院-区块链行业秘史之一:比特币的渊源,密码朋克-181219 [2018-12-19]

[4] 区块链行业研究报告:通证通研究院-区块链行业秘史之三:密码朋克的死亡圣器,公钥加密-190220 [2019-02-21]

[5] 阮一峰. 区块链入门教程. 阮一峰的网络日志[2017-12-26]

[6] 杨保华 陈昌. 区块链原理、设计与应用. 机械工业出版社[2017-09-01]

[7] 井底望天 武文源 史伯平 赵国栋. 区块链世界. 中信出版社[2016-11-01]

[8] 长铗. 不可能三角形:安全,环保,去中心化. 巴比特[2014-02-04]

[9] 南宫远. 筑城记(完整版). 巴比特[2014-09-27]

[10] 中国信息通信研究院CAICT. 区块链中的默克尔树——解决区块链数据量过大问题 | 科普. 搜狐科技[2017-12-13]

[11] 我来自美利坚. 从金融的角度解释一下为什么比特币本身就是货币. 百度贴吧-比特币吧[2013-12-01]

[12] 阮一峰. 加密货币的本质. 阮一峰的网络日志[2018-01-11]

[13] 易衡知行. 比特币(Bitcoin)是什么,如何简单易懂地介绍比特币?知乎[2017-09-20]

[14] 江卓尔. 比特币是什么?知乎[2015-10-14]

[15] 中本聪. Bitcoin: A Peer-to-Peer Electronic Cash System. https://bitcoin.org [2008-10-31]

[16] 李笑来. 区块链世界简明生存指南. 喜马拉雅[2017-06-06]

[17] 李笑来. 比特币世界生存指南(进阶). 微信公共帐号:xiaolai-xuexi [2015-11]

[18] 李笑来. 比特币是一场伟大的社会实验. 中企网[2013-05-17]

[19] 李笑来. 此物一出天下反:话说BitCoin. 新浪微博[2011-05-23]

[20] 弗里德里希·冯·哈耶克. 货币的非国家化. 新星出版社[2017-08]

[21] 王永利. 理性看待网络虚拟币与区块链 微信公众号“王永利”[2017-07]

[22] 阮一峰. 比特币入门教程. 阮一峰的网络日志[2018-01-04]

[23] Draveness. UTXO 与账户余额模型. https://draveness.me [2018-04-08]

[24] 区块链威廉. 坚持比特币会涨到一百万,我们的底气是什么?新浪微博[2019-03-11]

[25] Locke. 区块链三大思维:分布式思维、代码化思维、共识性思维. 区势传媒[2018-08-29]

相关文章:

发表评论