破冰区块链:原理、搭建与案例
上QQ阅读APP看书,第一时间看更新

第一节 走进区块链

一、人类货币的发展史和比特币的由来

《易经·系辞下》中提到“日中为市,致天下之民,聚天下之货,交易而退,各得其所”,《诗经》中的《氓》中提到“氓之蚩蚩,抱布贸丝”,这些都反映了古人物物交换繁华的商业场面。中国是世界上最早使用货币的国家之一。货币是商品交换的产物,社会大分工促进了商品生产和商品交换的发展,商品交换的发展促进了古代货币的产生。

原始社会末期通用的是实物货币。游牧民族擅长捕猎,通常在市场中以牲畜、兽皮等作为交换物;农业民族擅长种植,通常用谷物、布帛、农具、贝壳、珠玉等作为交换物。然而,随着交换历史的演变,因牲畜具有无法分割的特点,谷物具有无法长期保存的特点,珠玉具有数量极其稀少和不易携带的特点,农具具有非常笨重的特点等,而贝壳具备了便于计数、能够长期保存、较为普遍等特点,因此逐渐取代了其他交换物品,成为实物货币的主要流行类别。人类历史发展到了夏、商、周时期,天然贝成为流通最广的实物货币,一直被沿用到春秋时期。这些交换物称为一般等价物,人们相信它们的稀有性的特点,一般等价物本身的价值等于被交换的物品的价值。一般等价物在商品交换中有着两种基本的作用:一是反映和衡量其他一切商品的价值,发挥着价值尺度的作用;二是通过它来实现各种商品的交换,发挥着交易中介的作用。它的出现推动了商品交换的发展,促进了以交换为目的的商品生产的出现和发展。

随着人类生活或者活动的日益频繁,在商品生产和商品交换的发展过程中,充当一般等价物的商品终于逐渐固定在某些特定的商品上。这种稳定的一般等价物就是货币。贵金属金、银,由于具有性状稳定、不易变质、便于携带、易于分割和计算、稀缺、体积小、价值大、便于携带等自然属性,终于成为世界各国普遍采用的货币商品。金、银成为稳定的一般等价物即货币,金属货币也成了人类整个封建时代沿用时间最久的货币。

随着人类生活进一步的发展,金、银之类的贵金属货币也逐渐暴露了本身太过笨重、不易携带等缺点。随着经济规模不断扩大,金属交易展现出了一些疲态,尤其是异地购买贵重商品时,经常需要舟车劳顿大费周章运送金、银,交易过程中被盗抢的风险非常巨大,人们开始思考用什么方式取代金、银进行价值交换。于是,有这么一批人,开始私营钱币兑换业务,并借此发展起了存款、放款和汇兑等业务,这就是中国古代钱庄和票号的起源,也是现代银行业的始祖。由于钱庄财力雄厚,信用度相当高,因此钱庄发行的花票已经在一定程度上成了一种货币,拿着花票就可以到任意一间该钱庄的分号兑换金属货币。然而花票的本质其实是一种借据,你拿得出等额的票,我随时就得给你等额的金属货币,这张票的面额就是钱庄欠你的金额。

那么纸币是什么?纸币本质上是一种借据,由于欠钱者信用良好,它的借据就能在市面上被普遍接受,进而流通。以人民币为例,人民币本质也是国家写给人民的借据,以国家的财产作为抵押。现在我们见到的纸币,制作成本非常低,最新版本的100元面值的人民币成本为1元多人民币,却能够换取价值100元,这是因为背后有国家信用在背书,让人们相信这非常便宜的纸币能够换取100元的物品,能够具备100元的购买力。

2008年9月,雷曼兄弟公司宣布倒闭,随后,全球金融危机在美国爆发并以迅雷不及掩耳之势席卷全球。为了应对危机,各国政府纷纷采取量化宽松的货币政策,救助本国金融机构于水火之中。量化宽松主要是指中央银行在实行零利率或近似零利率政策后,通过购买国债等中长期债券增加基础货币供给,向市场注入大量流动性资金的干预方式,以鼓励开支和借贷,说简单点,就是国家间接增印钞票,增加流通量。量化宽松一度在美国引发了“占领华尔街”运动。中本聪洞察到,经济危机中,美国政府之所以可以无限增发货币,就是因为在这个货币体系中,只有美国政府为首的金融机构对货币交易有记账权,货币记账权被垄断了。

能不能有这样的一套货币体系—不需要中心机构记账,所有人都享有记账权,货币不能超发,整个账本公开透明?对于这个问题,中本聪进行了深入的思考,直到2008年10月底,中本聪发出了阐述他数字货币构想的电子邮件,在邮件中,他阐述了初衷:“A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without the burdens of going through a financial institution.”(一个彻底实现点对点的电子货币系统,完全无须依赖金融机构,货币可以在网络上从一方直接支付到另一方)[1]。紧接着,中本聪将大家的目光引向了描述比特币构想的“白皮书(White Paper)”。其中概况了这样一个新的货币体系—区别于中心化运作的传统货币,比特币不需要中心化的金融机构去为货币交易记账,货币交易活动的所有参与者都享有记账的权利,而且比特币发行总量固定,不允许超发,所有交易账本通过技术手段实现公开、透明、可追溯。同年11月,中本聪发布了比特币代码的初级版本,初步实现了一个在没有中心化机构垄断记账权的前提下安全地进行比特币的发行、记账以及相关的激励。这里所说的技术手段就是读者们现在经常听到的“区块链(Block Chain)”。简单而言,区块链是比特币的技术基础,比特币是区块链技术的第一个应用实例。

2008年11月之后的两个月时间里,中本聪对初级版本进行了优化和完善。2009年1月3日,中本聪在位于芬兰赫尔辛基的一个小型服务器上创建、编译、打包了第一份比特币开源代码,并于2009年1月3日当天黄昏,“挖”出了比特币的第一个区块—创世区块(Genesis Block),并获得了第一个矿工的奖励—50个比特币。在创世区块中,中本聪留下这样一句话—Chancellor on brink of second bailout for banks(财政大臣站在第二次救助银行的边缘),宣泄对旧的货币体系不满的同时,宣告了一个自己主张的货币体系的诞生—2009年1月3日成为比特币的创世日,比特币从此诞生。

思考问题

支付宝和银行卡里面的数字是真正的货币吗?如何理解记账货币?

【提示】:支付宝和银行卡里的数字,本身不是货币,而是货币的记账符号,例如支付宝里面有100元人民币,代表人民币的记账符号为100元人民币,它本身不是人民币,但支付宝里的数字却不能脱离人民币的背书,否则这个数字增长将被任意修改。支付宝和银行卡里面的数字背后,可以理解成为一种记账货币。怎么理解记账货币呢?比如小王通过银行卡给小李转账了1000元,这个时候银行会在小王的银行账号上进行1000元的减法,在小李的银行账号上进行1000元的加法,以完成这笔交易。人们现在的生活还离不开这样一种中心化管理的记账体系。需要补充的是,相比之下,比特币是一种去中心化的数字货币,比特币总量有限,不可伪造,难以篡改,所以不需要什么东西作为背书。关于比特币如何做到数量有限,不可伪造,难以篡改?请读者带着这个问题,在后续内容寻找答案。

扩展知识

为什么中本聪参与的密码学邮件组影响力那么大?

【提示】:中本聪所在的密码邮件组起源于一个由一些主张技术自由主义的信息科学技术达人发起的“密码朋克运动”,这些技术达人之间通过这个邮件组进行交流,分享研究成果。该邮件组之中,有很多在信息技术和密码学相关领域成就卓越的技术达人。例如:

● PGP技术公司(Pretty Good Privacy,开发了一个基于RSA公钥加密体系的邮件加密软件)的知名开发者菲利普·希默曼。

● Sun公司(美国太阳微系统公司,也译为升阳公司)的明星员工、著名互联网活动家、电子前线基金会创始人之一约翰·吉尔摩尔。

● 美国贝尔实验室研究员、哥伦比亚大学计算机科学教授、计算机网络和安全研究员、《阻击黑客:技术、策略与案例》(Thinking Security:Stopping Next Year's Hackers)一书的作者斯蒂芬·贝洛文。

● 天才程序员、点对点文件共享协议BitTorrent(BT下载)的发明人BT下载之父、CodeCon(一款经纬度及大地坐标转换软件,可计算几种不同坐标系中的转换)的创始人、旧金山Bay Area p2p-hackers会议的组织者、Codeville(一款分布式版本控制系统)的编写者布拉姆·科恩。

● 英特尔公司前首席科学家蒂姆希。

● 维基解密(WikiLeaks,通过协助知情人让组织、企业、政府在阳光下运作的、无国界、非盈利的互联网媒体)的创始人阿桑奇。

从这些技术达人的行业地位可以看出,这个密码学邮件组的影响力是非常大的。

二、理解比特币

通过前面所述,可以学习和理解到人类货币历史经历了从简单的物物交换,到一般等价物交换,金属货币、纸币等实物货币一系列的演变。而现在实物货币又演化出了记账货币,人们现在生活在一个以记账货币为主流的时代。2009年3月,中本聪开始提出了去中心化的数字货币比特币,比特币是首个使用区块链技术实现的数字货币,开启了一个新的时代。其实区块链不是全新的技术,只是理解它的意义,需要从比特币开始。为了先让大家对比特币有个基本的理解,下面将给大家用简单的方式介绍比特币到底是什么。

中本聪在比特币一篇论文的标题:《Bitcoin:A Peer-to-Peer Electronic Cash System》(比特币:一种点对点的电子现金系统)中指出,比特币本质上是一个电子现金系统。

刚刚开始接触比特币概念的读者,单从字面上理解可能会以为比特币是一种通货或者一种硬币(Coin),然而实际上用肉眼可以看到的实物比特币并不存在,可以把比特币理解成为电子现金系统(Electronic Cash System)以及比特币电子现金系统产生的电子货币(Electronic Cash)。区别于可以见到的实物货币,比特币是虚拟的电子货币。

如何一步一步的理解比特币这样一种虚拟的电子货币呢?

首先,比特币是一种数字货币。

游戏玩家们可能会第一时间想到互联网游戏里面的游戏币。在游戏里面,通过使用游戏内置的游戏币,玩家可以购买游戏道具。游戏币并非真实的货币,却可以在游戏内购买道具,因此很多游戏有自己内置的游戏币。以当下非常流行的游戏“王者荣耀”为例,在游戏中,有一个重要的资源是“金币”,用户可以按“王者荣耀”游戏制定的一些规则收集到“金币”,收集了一定“金币”就可以在商城里购买自己想要的英雄。

和游戏币一样,比特币也具有虚拟性的特点。比特币在比特币网络里面以数据的形式存在,单位是BTC,1BTC=1个比特币,虽然不是实物货币,但是比特币也一样可以进行交易。

其次,比特币是一种现实世界也可以使用的数字货币。

与游戏币所不同的一点是,游戏币只能在游戏内部进行道具购买,游戏币是不能超出游戏范围进行现实交易的,而比特币是可以在现实中去购买商品和服务的数字货币。到此为止,又扩充了一层“现实世界也可以交易”的含义,也就是说,比特币是一种在现实世界也可以使用的数字货币。

最后,比特币是去中心化的数字货币。

在理解比特币的去中心化特性之前,先来回顾一下现实世界中,我们和实际通货之间的关系,通过网上银行等途径,和银行系统进行连接,然而作为银行用户的我们是看不到银行系统的所有信息的,同时也无法看到其他银行用户的账号信息。每个银行用户和银行系统的关系如图所示。相比之下,比特币的网络呈现不同的特点,在比特币网络中人与人之间的关系是没有并且不需要类似于银行的中心机构,人与人之间的关系如下图右侧所示。

在比特币网络里面,交易信息完全通过区块链技术手段被记录在区块里面,而且所有人都可以浏览比特币区块上的交易记录,所有人都可以拿到一样的交易信息。也就是说,在比特币世界里面,“哪个账户”向“哪个账户”转账了,是全部被公开出来的,“哪个账户”拥有多少比特币也是被公开出来的。这听起来有点恐怖,这里仅限于账号本身。这里所说的账户是一串34位以内的长字符串[2],简单地看账号的信息无法知道这个账号是谁的。这个账号,一般称为“比特币地址”,这串地址有时候也会以二维码的形式出现。

通过上面的阅读,相信读者对比特币有了一个概貌的认识,比特币是一种点对点的数字现金系统,同时比特币有时也特指比特币电子现金系统下产生的去中心化的、在线世界中可交易的虚拟货币。比特币网络通过区块链技术,实现了比特币网络的去中心化,在这种去中心化的系统中,比特币是不可篡改、不可伪造的,在本书后面的内容中,将重点介绍比特币是不可篡改、不可伪造的实现机制。

扩展知识

5000个比特币一个的匹萨—现实世界上第一笔用比特币购买商品的交易。

【提示】:比特币历史上第一次交易发生在2009年1月12日,中本聪发送了10个比特币给开发者、密码学活动成员Hal Finney(哈尔·芬尼)。

非常有趣的是,2010年5月22日,美国佛罗里达州杰克逊维尔(Jacksonville,Florida)的程序员Laszlo Hanyecz同意付给一个英国人1万个比特币(10000 BTC),购买了两个Papa John's匹萨。这是现实世界中第一笔比特币交易。作为证据,Laszlo上传了照片到比特币论坛,真实世界的首个比特币交易由此诞生。当时,1个比特币价值约为0.003美分。每年的5月22日,成为比特币匹萨日(Bitcoin Pizza Day)。

扩展知识

提供比特币地址信息,如何查看该地址的交易情况和账户余额等信息?(向读者介绍一些著名的比特币地址)

【提示】:如果已经有比特币地址信息,可以直接到相关的网站进行查阅。著名的BLOCKCHAIN网站(https://blockchain.info/)就是其中之一。操作也很简单:在浏览器地址栏中输入如下地址,其中“[比特币地址]”替换成为你想查看的地址字符串即可:https://blockchain.info/address/[比特币地址]。

以下为历史上非常著名的6个比特币账户信息(截至2018年3月24日),读者可以在这个网站实操如何查看[3]

1. 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

该地址属于比特币创始人中本聪,是比特币的创世地址,地址内的比特币从未移动过,其中的50个比特币因为技术上的设计原因也无法进行移动。

最初时,该地址内只有50个比特币,后来一些爱好者不断地往该地址内转入少量BTC,致敬比特币创始人中本聪。

2. 1Ez69SnzzmePmZX3WpEzMKTrcBF2gpNQ55

该地址所有者为美国联邦法警局,该地址内的比特币来自被查获的网站,后在第一次拍卖会中将比特币转移给中标人[4]。此前,美国联邦政府一度被认为是比特币最大的持有者之一,仅次于中本聪。

3. 1XPTgDRhN8RFnzniWCddobD9iKZatrvH4

该地址属于上面提到的比特币匹萨之王Laszlo。

4. 1M8s2S5bgAzSSzVTeL7zruvMPLvzSkEAuv

该地址发生了一笔目前历史上最大额的交易,一次性转移了500000个比特币,创历史之最。

5. 1HB5XMLmzFVj8ALj6mfBsbifRoD4miY36v

该地址所有者为维基解密,在遭到西方国家政府的经济封锁后,维基解密开始通过该地址接受比特币捐款[5]

6. 1L2JsXHPMYuAa9ugvHGLwkdstCPUDemNCf

该地址为Bitstamp遭窃的热钱包地址,黑客在2015年1月5日陆续从该地址内盗取了大约19000个比特币。

三、比特币与区块链的一些基本名词

以比特币为例,学习区块链需要掌握一些基本名词,为了方便大家能够在后续内容中更好地理解,这里先列举出一些比较常用的名词,并对其进行解析。其中有一些名词在后面会进行更深入的讨论。这里先对这些基本名词有一些了解,以便对后续内容能够进行更好的阅读和理解。

1.挖矿(Mining)/矿工(Miner)

比特币的转账机制中有一步是,当对比特币网络提交了转账的请求后,需要等着矿工来打包处理。前面已经学到,在比特币的世界里,大约平均每10分钟会产生一个区块。所有的挖矿计算机都在尝试打包这个区块并提交,而第一个成功生成这个数据块的人就可以得到一笔比特币报酬。在比特币网络中,因为竞争计算能获得新生的比特币奖励,很像开采埋在地底下的矿物的过程,所以大家把争相计算获得记账权的过程形象地比喻成“挖矿”,竞争挖矿的人或组织叫“矿工”。

2.哈希算法

哈希算法又称安全散列算法(Secure Hash Algorithm,SHA),是一个密码散列函数家族,是FIPS(美国联邦信息处理标准)所认证的安全散列算法。它能计算出一个数字消息所对应的、长度固定的字符串的算法。若输入不同的消息,则对应到不同字符串的概率很高。比特币采用的哈希算法是SHA256。

3.算力

算力一般是指比特币矿机的算力。算力就是矿机挖出比特币的能力,算力占全网算力的比例越高,算力产出的比特币就越多。

在比特币的网络世界里,这个网络给每一个矿工一道超难的数学题,如果哪个矿工最先解出这道数学题,那么这个矿工就能获得记账的权力。谁获得记账的权力。谁就能获得比特币新发行出来的奖励。是否能够计算出这道数学难题,其实取决于矿机的计算能力,也就是所说的算力。矿工获得优先记账权的概率等于矿工所掌握的算力占全网算力的百分比。

再严格一点来说,解答比特币的数学题,实际上是计算机在做随机的哈希碰撞。哈希碰撞就类似于暴力破解一个手机密码(假设尝试多次手机不会被锁),不断地从000000 ~ 999999中一个一个尝试直到解锁成功,如果1秒内能尝试一次,算力就是1次/秒,1秒内能尝试两次,算力就是2次/秒。哈希碰撞就类似于这样的尝试,只不过面对的是更加复杂的字符串组合。1秒内尝试的次数越多算力就越大,解锁的时间也就越短。

矿机也是一样,矿机1秒内能进行的哈希碰撞次数越多,算力就越大,挖的比特币越多。

一个矿工所掌握的矿机占比特币全网的总算力的百分比是多少,代表在这10分钟记账竞争中能够获胜的概率就是多少。举个例子,如果比特币现在全网的算力是100,一个矿工拥有10的算力,那么每次竞争记账成功的概率为1/10。

记账成功概率=矿机算力/全网算力×100%

4.算力单位

算力每隔千位划为一个单位,最小单位H=1次:

1H/s表示一秒一次的哈希碰撞

1kH/s=1000H/s=每秒1000次的哈希碰撞

1MH/s=1000kH/s=每秒1000000次的哈希碰撞

1GH/s=1000MH/s=每秒1000000000次的哈希碰撞

1TH/s=1000GH/s=每秒1000000000000次的哈希碰撞

1PH/s=1000TH/s=每秒1000000000000000次的哈希碰撞

1EH/s=1000PH/s=每秒1000000000000000000次的哈希碰撞

5.工作量证明

工作量证明(Proof of Work,PoW)机制,是区块链领域非常重要的一个话题,这里先做简单的介绍,随着背景知识不断加深,后面的内容也会在多个场景对它进行深入讨论。

PoW,简单来说,是用来确认做过一定量某种工作的一个证明机制。证明过程可以分为两个步骤:一个是工作;另一个是对工作的验证。它分别对应两个主体:一个是工作者;另一个是验证者。比特币网络中,如何证明矿工挖到区块这个过程就是通过PoW来实现的。矿工为了挖到区块,必须进行PoW过程,这个计算的内容包含三个要素:PoW函数、前一个区块及难度值。PoW函数给出了计算方法,前一个区块是这个函数的参数,难度值决定了这个函数解题需要的计算工作量。

一个矿工挖矿成功后,需要将打包好的区块链网络上的交易记录到一页账本上,同步给其他人。因为这个矿工能够最先计算出超难数学题的正确答案,说明这个矿工具有工作量而且效率最高,是一个有权力记账的人,因此其他人也会同意这一页账单上的记账信息。这种依靠工作量来证明记账权,大家达成共识的机制叫作PoW。PoW机制非常重要,后面会有专门的内容进行详细讨论。

6.权益证明

权益证明(Proof of Stake,PoS)是和比特币PoW相对应的另外一种共识机制。PoS是根据在这个网络里拥有权益(币)的多少来竞争记账的权力,持有的币越多,记账的权力的获取概率就越大,这种证明机制在一定程度上缩短了共识的达成时间,也不再需要大量消耗能源挖矿。简而言之,“持有越多,获得记账权力的概率越大”,这种共识机制叫PoS。关于PoS,后面也会专门进行详细讨论。

思考问题

随着新生区块奖励的比特币每四年减半,新生区块的比特币奖励越来越少,矿工去挖矿还有利可图吗?

【提示】:答案是肯定的。因为矿工有两个收入来源:一个是新生区块奖励;另一个就是比特币交易的手续费。现在比特币每个区块容量为1MB,每个块都被交易塞得满满的,挖到一个块是币奖励+这个块记录交易的所有手续费。随着使用比特币的人和机构越来越多,只要币值不断上升,就算挖完了,手续费依然能吸引矿工。全球比特币转账越来越频繁,转账手续费总量也会越来越大,手续费未来会成为矿工的主要收入来源。这里涉及一个区块容量的问题,扩容派主张让区块容量更大,容纳更多的交易量,这样矿工的手续费收入可以提高。不扩容派主张坚持1MB区块容量,可以把每一笔交易的手续费不断调高,这样依然能保证矿工的收益。

思考问题

比特币每10分钟记录一个区块,区块内记录的是全网所有的交易记录吗?

【提示】:目前在比特币系统里面,每一个区块的大小是1MB,每10分钟产生一个这样的区块,而每一个最基本的比特币交易的大小是250B,那么来计算一下比特币网络每秒可以处理多少笔交易:

10分钟=600秒

每个区块的容量=1MB=1024KB=1024000B

每秒处理速度=每个区块的容量/平均每笔交易的容量/600秒

=(1024000B)/(250B/笔)/600秒≈6.83笔

所以,比特币每秒大约有7笔交易。全网交易里没被记录进去的就等着排队了。由于矿工会优先打包交易费高的交易,交易费太低的可能很久都得不到打包。

扩展知识

比特币的最小单位是1吗?

【提示】:虽然比特币总量只有2100万个,但是每一个比特币可以分割到小数点后8位,也就是一个比特币可以分割为1亿份,为了致敬中本聪,0.00000001个比特币现在习惯上叫作一个“中本聪”,简称1聪。