区块链基础知识25讲

978-7-115-49406-1
作者: [英] 丹尼尔·德雷舍(Daniel Drescher)
译者: 马丹 王扶桑 张初阳
编辑: 郎静波

图书目录:

详情

通过本书25个简明的章节,读者将学习区块链技术的基础知识。全书尽可能避免使用数学公式、程序代码或计算机科学术语。无需计算机科学、数学、程序设计或密码学方面的知识也可轻松读懂全书。 这本书弥合了关于区块链的纯技术书籍和纯粹的以商业为中心的书籍之间存在的差距。它通过解释构成区块链的技术概念及其在业务相关应用中的作用来让大众真正了解区块链。

图书摘要

区块链基础知识25讲

[英]丹尼尔·德雷舍(Daniel Drescher) 著

Blockchain Basics A Non-Technical Introduction in 25 Steps

马丹 王扶桑 张初阳 译

人民邮电出版社

北京

内容提要

通过本书25个简明的章节,读者将学习到区块链的基础知识。全书尽可能避免使用数学公式、程序代码和计算机科学术语,读者无需计算机科学、数学、程序设计和密码学方面的知识也可轻松读懂全书。这本书弥合了关于区块链的纯技术类书籍和纯商业类书籍之间存在的空白,通过解释构成区块链的基础技术概念以及这一技术在相关业务领域中的应用来让读者真正了解区块链。

本书适合程序员、金融从业人员以及对区块链技术感兴趣的读者阅读。

作者简介

丹尼尔·德雷舍(Daniel Drescher)是一位非常有经验的银行家,曾在多家银行的电子证券交易部门任职。他最近重点研究证券交易领域中自动化、机器学习和大数据技术的应用。除此之外,丹尼尔还拥有柏林工业大学计量经济学博士学位、牛津大学软件工程硕士学位。

审稿人简介

劳伦斯·科克(Laurence Kirk)目前醉心于对分布式账本技术的研究,此前他通过为伦敦市的金融公司撰写低延迟金融应用程序,已获得职业生涯的巨大成功。此后,他到牛津大学开始硕士课程的学习,并且创办了一家与初创企业共同在以太坊平台上开发应用程序的咨询公司。对分布式账本技术的热情,让他现在成了一位以太坊开发者和推广者。

前言

在前言中,作者会回答一些最重要的问题:为什么每个人都要看这本书?说得更具体些,为什么每个人都需要看这本关于区块链的书?通过阅读前言,你会知道写本书的原因、能从中获得哪些知识以及本书的大致章节结构。

为什么又是一本关于区块链的书?

区块链获得了公众和媒体的大量关注,一些极客宣称区块链是自互联网诞生以来最伟大的发明。因此,在过去几年中,已有大量关于区块链的书籍出版。但是,当想要学习更多区块链的知识时,你会发现自己很容易就迷失在知识的海洋中,这些书有的快速掠过技术细节,有的在很深的层面讨论重要的技术内容。前者没有仔细解释技术细节,不能使读者充分理解区块链;后者假设读者已经拥有了丰富的区块链基础知识,这两者都无法使人满意。

前一类书是纯粹讨论区块链底层技术的,后一类则更像是经管类书籍,主要关心具体的区块链应用和其对经济的影响。本书填补了这两类书籍中间的空白。

理解区块链技术的基础概念对于理解其具体应用、评估初创企业的业务前景和参与区块链对未来经济影响的讨论是十分必要的。没有对重要概念的理解,便无法评估区块链总体的价值和影响力,也无法理解具体区块链应用的价值。本书聚焦在区块链涉及的重要概念上,因为若缺乏对技术概念的理解,将削弱对新技术的深刻认识,也将因不切实际的期待而感到失望。

本书以通俗易懂的形式介绍了区块链的概念,努力做到简明、全面,书中阐述了介绍新技术时一定会被问到的三大问题:这项新技术是什么,为什么我们需要它,它将如何改变我们的生活。

你无法从这本书里获得的知识

本书刻意忽略了与区块链应用相关的内容,侧重于对区块链技术的介绍和解释,不会聚焦在具体的区块链应用案例上,因此,本书不包括以下内容。

● 关于比特币和其他“加密货币”的介绍。

● 关于具体区块链应用的介绍。

● 关于区块链数学证明的内容。

● 关于区块链编程的内容。

● 与区块链相关的法律条款。

但是,在读过本书后,你会在一定程度上获得对以上问题的理解。

你可以从本书中获得的知识

本书解释了区块链相关的一些基础概念,比如交易、哈希值、非对称加密、数据结构、点对点系统、系统完备性和分布式共识算法,并将基于以下4个前提对这些概念进行解释。

● 对话的形式。

● 不涉及数学证明,也没有公式。

● 逐步深入。

● 使用类比的介绍方法。

对话的形式

为了易于读者阅读理解,本书刻意用对话的形式写作,且不使用数学和计算机术语。但是,本书介绍和解释了一些参加区块链讨论和理解其他区块链出版物时必要的术语。

不涉及数学证明,也没有公式

区块链的主要组成部分,比如共识机制和挖矿算法,都是基于复杂的数学公式建立起来的,这也是区块链技术的难点所在。但是,为了去除任何不必要的复杂性,避免给读者带来阅读困难,本书将不使用数学符号和公式。

逐步深入

书里各讲的内容构成了理解区块链的基础知识框架,每一讲都精心设计,涵盖了软件工程的基础内容,解释了相关术语,同时指出我们需要区块链的原因,也解释了组成区块链的独立概念之间的关系。本书各讲相互独立且逐渐深入,它们组成了一个理解区块链的完整知识体系。

使用类比的介绍方法

每一讲会介绍一个新概念,所有新概念都参考现实生活中的实例,使用形象化的方式进行讲解。这些类比能够达到4个主要目的:第一,它们可为读者接触一个全新的技术概念做好准备;第二,将技术概念与易于理解的现实生活实例联系在一起,减少读者探究新领域的困难;第三,类比是学习新概念的理想方式;第四,类比的形式可让记忆新概念更加容易。

本书是如何组织的

本书包含五大部分的内容,共分25讲,给出了区块链学习的基础知识框架。这些章节涵盖了软件工程的基础内容,解释了相关术语,指出我们需要区块链的原因,也解释了组成区块链的独立概念之间的关系,还涉及区块链应用和相关领域内的一些研究成果。

第1部分 区块链术语与技术基础

第1讲到第3讲解释了与区块链相关的主要概念,以及后续内容中需要掌握的其他概念。第3讲结束时,你将对区块链的整个底层概念有一个总体的认知,并且能从更宏观的角度看待区块链。

第2部分 为什么这个世界需要区块链

第4讲到第7讲主要解释为什么需要区块链,它解决了什么问题,为什么要解决这些问题,以及区块链的潜在价值是什么。第7讲结束时,你将了解区块链能够解决的问题有哪些,它在哪些领域最具应用价值,以及为什么我们需要它。

第3部分 区块链如何工作

第3部分是本书的核心,解释了区块链的工作原理。第8讲到第21讲介绍了与区块链相关的15个技术概念。第21讲结束时,你将理解区块链的主要概念,以及它们之间是如何相互协作的。

第4部分 区块链的局限以及如何克服这些局限

第22讲到第23讲将聚焦于区块链的局限性,以及造成这些局限的原因,并提出一些可能克服这些局限性的方法。第23讲结束时,你将理解最初的区块链应用为什么不适用于更大规模的商业活动,为了克服这些局限需做哪些改进,以及这些改进如何提升区块链的性能。

第5部分 如何使用区块链,区块链技术的总结及展望

第24讲和第25讲介绍了如何在现实生活中使用区块链,如何选择区块链应用,以及区块链技术能够解决什么问题。这一部分还包括了区块链领域目前的热门研究方向和未来发展趋势等内容。第25讲结束时,你将对区块链有全面的理解,还将为阅读相关技术文章做好准备,并会成为未来区块链讨论中的积极参与者。

第1部分 区块链术语与技术基础

这一部分介绍了软件系统的主要概念,并建立了一整套术语体系。另外,还介绍了软件架构的概念,并解释了其与区块链之间的联系。通过本部分最后一讲的内容,你将可认识到区块链存在的意义及其潜力。

第1讲 理解分层的概念

从分层与架构的角度了解软件系统

这是本书的第1讲,它将是我们后续了解和学习区块链的基础。我会通过这一讲介绍本书中对技术概念的阐释规范。这一讲中你将学习如何分析一个软件系统,以及认识到将软件看作分层集合来分析的重要性。另外,你将了解通过分析一个软件系统中的不同分层能获得什么,以及这种分析方式如何帮助我们理解区块链。最后,我会简要介绍软件系统完备性的概念,并强调其重要性。

隐喻

你有手机吗?我相信回答是“有”,而且很多人还不止一个。那么你对使用手机收发数据的过程中用到的各类无线网络协议了解多少?你对移动通信的基础——电磁波的了解又有多少?

我们中的大多数人对这些问题的细节知之甚少,因为使用手机并不需要你知道这些,并且大多数人都没有时间去学习这些知识。我们在主观上将手机分成两部分,一部分我们需要知道,另一部分我们想当然地选择了忽视。

这种对待技术的态度并不只出现在对待手机上。我们会用同样的态度去对待电视机、计算机以及洗衣机等产品。而因为每个人的经历不同,使用相关产品的目标和体验也就不同,这种主观上的区分是高度个体化且独立的,因此,我和你对手机的主观划分或多或少都有所不同。当我尝试向你解释对于一台手机你需要了解什么、不需要了解什么的时候,这种差别在沟通中会更为显而易见。所以,当学习和讨论新技术时,我们首先需要对技术系统进行统一的划分。

本讲会介绍如何对一个软件系统进行划分,并建立我们接下来对区块链进行学习讨论的基础。

软件系统的分层

在本书中,我们使用两种方法来对软件系统进行分割。

● 应用层与实现层。

● 功能性与非功能性。

应用层与实现层

主观上对系统按照用户需求和内在技术原理进行划分,其实是在区分应用层与实现层。应用层中的所有内容都是从用户需求出发的(比如想要听音乐,想要拍照片,想要订酒店)。实现层中的一切都是使得这些需求落地实现的内容(比如,将电信号转变成模拟信号,在数码相机中识别一个像素的颜色,或者将信息通过互联网传给一个预设的系统)。实现层中的所有内容本质上都是技术性的,并且都会被当作达到目标的方法。

功能性与非功能性

考虑一个系统能够做什么和这个系统做得怎么样是有区别的,这就是对系统做功能性和非功能性划分的基础。

功能性特征的例子包括通过网络发送数据、播放音乐、拍摄照片和修改图片中一个特定的像素。非功能性特征的例子包括一个好看的可视化用户界面,快速运行的软件,以及安全、私密地保存用户数据的能力。对于一个软件系统而言,安全性与完备性这两类非功能性特征非常重要。完备性指的是如何设计系统的运行规则,并让系统具备诸如安全性和正确性等很多特征。我们可以通过英语中对语法的使用来帮助你理解功能性和非功能性特征之间的区别:动词描述了动作或已经完成的行为,而副词描述了一个动作是如何被完成的。举个例子,一个人能够快步走或慢步走。无论快慢,走这个动作是一样的,而这个动作的表现是有区别的。按照这样的理解,你可以认为功能性特征和动词相似,而非功能性特征和副词相似。

同时使用两种划分标准

对于一个软件系统,我们可以在识别其技术性特征与非技术性特征的同时识别应用层与实现层。表1-1是一个对手机同时使用两种划分方法的示例。

表1-1可以解释一个系统中不同组成部分对用户的主观可见性。应用层的功能性特征是系统中最抢眼的部分,因为它们满足了用户的明确需求,这些部分一般来说就是用户愿意学习并深入了解的。另一方面,实现层的非功能性特征很少会被视作系统的主要组成部分,而且它们往往会被人们忽视掉。

完备性

完备性在任何软件系统中都是重要的非功能性特征,它往往包含以下3个方面的内容。

● 数据完备性:软件系统中的数据要完整、正确且无冲突。

● 行为完备性:软件系统要可顺利运行,并且保证不存在逻辑错误。

● 安全性:软件系统只对认证用户授权有限的数据访问与使用功能。

很重要的一点是,几乎每个人都认为任何一个软件系统都应该具有如上所述的完备性,而忽略了在软件系统背后付出巨大时间和精力的软件工程师,并且只有在软件系统出现各类问题时,才会意识到完备性的重要性。因此,当意识到软件工程师们为了高度完备性所做出的努力时,我们会有种被宠坏的感觉。但是当使用的系统出现问题时,我们的感觉就完全不同了。当你遇到数据丢失,或发现陌生人可以访问你的数据时,你会感觉非常不好。而当手机、计算机、电子邮箱、Word或Execl出问题让你感到生气时,你会忘记自己的好脾气!在这些情景中,我们开始意识到软件完备性是多么重要。因此,我们就不需要诧异为什么如此多的专家会把大量的时间和努力花费在实现层中这些看着不起眼的非功能性特征上了。

下一讲展望

本讲对软件工程的基础知识进行了介绍,其中我们重点学习了软件系统的完备性、功能性特征与非功能性特征,以及应用层与实现层的划分等知识。理解这些概念会帮助你意识到区块链所处的巨大舞台。下一讲我们会使用本讲中介绍的概念去对区块链系统进行分析。

本讲小结

● 软件系统可以通过如下划分来进一步进行分析。

▶ 应用层与实现层。

▶ 功能性特征与非功能性特征。

● 应用层关注用户的需求,实现层则关注如何满足这些需求。

● 功能性特征关注实现了什么,非功能性特征关注这些东西实现得怎么样。

● 大多数用户关注软件系统应用层的功能性特征,而很少关注其中的非功能性特征,特别是实现层的非功能性特征。

● 对于任何软件系统而言,完备性都是一个很重要的非功能性特征,它包括有3个方面的内容:

▶ 数据完备性。

▶ 行为完备性。

▶ 安全性。

● 大多数软件错误,比如数据丢失,或被陌生人访问了用户数据,都是系统缺乏完备性导致的。

第2讲 纵观全局

区块链与软件架构

本讲将描绘区块链技术所处软件系统的大环境,同时也将重点指出区块链在该大环境中的位置。首先,为了让你理解这一大环境,我会介绍软件架构的概念,并解释软件架构与系统分层之间的联系。然后,为了介绍区块链在大环境中的位置,我们会详细解释区块链与不同软件架构的关系。最后,我们会用一句话讲明白区块链的核心作用。理解区块链的作用是成功理解区块链的基础,也是我们接下来所介绍内容的基础。

隐喻

你买过车吗?即使没有买过车,你大概也知道一辆车可以配置不同的发动机(依靠油、天然气或者电来驱动)。如果我们对汽车进行分层拆分,可以将汽车的发动机看作一个模块。选配不同类型的发动机会给汽车带来巨大的差别,两辆外观相同的汽车会因为配置了不同的发动机而带来极为不同的驾驶体验。同时你对汽车发动机的选择会显著影响汽车的售价、保养开销、所用燃料、排气系统以及刹车系统。

在脑中记住发动机与车的关系,接下来就能更容易地理解区块链在整个软件系统中的位置与意义了。

一个支付系统

让我们将分层的概念应用到一个支付系统中,表2-1中列出了支付系统的功能性特征与非功能性特征,以及该系统的应用层与实现层。

注意到表中的那个问号了吗?我故意留空白,之后需要你在里面填写实现各类功能并且确保系统正常运行的技术方案,这个空供你来选择在这套支付系统中使用怎样的“发动机”。在下一个部分,我们会开始接触软件系统中的“发动机设计方案”。

两种软件系统

实现一个软件系统有很多种方法,其中首先要决定的是该系统的各个模块之间如何互相关联,即需要决定采用什么样的基础架构。现代软件系统主要采用两种架构:中心化架构与去中心化架构。

在一个中心化系统中,一个中心模块连接了其他所有的模块。对应地,一个去中心化的系统中没有任何一个中心节点可进行节点间的协调与控制。

图2-1形象地描绘了这两类架构。图中的每个圆圈代表了系统的一个模块,也称之为“节点”,圆圈之间的线表示了两个模块之间的联系。现在我们还不需要深究这些模块如何工作,以及它们之间如何交换信息,只需要先理解这两种系统架构的组成方式。

图2-1的左半部分是一个去中心化的系统,其中的各个节点彼此相连,没有一个中心节点同时连接所有其余的节点。而在右半部分的中心化系统中,除了中心节点之外的节点都不和其余节点直接相连,它们只与中心节点直接相连。

去中心化系统的优势

建立在多台计算机之上的去中心化系统主要具有如下优势。

● 更强的计算能力。

● 更低的成本。

● 更高的可靠性。

● 自增长的能力。

更强的计算能力

一个去中心化系统的计算能力表现为系统中所有互联计算机的计算能力之和。因此,去中心化系统可以拥有比中心化系统更强大的计算能力。事实证明,就算去中心化系统中使用了计算能力不强的计算机,也可以拥有超过独立的超级计算机的计算能力。

更低的成本

在过去20年中,配置一台计算机所需要的内存、硬盘与网卡等硬件的价格大幅下降。虽然看起来组建一个去中心化系统需要大量的计算机,系统的初始搭建成本较高。然而一台超级计算机的搭建、维护与运营成本会远远高于相同计算能力的去中心化系统。特别地,相对于更换超级计算机的一个模块,更换一个去中心化系统中的节点计算机对系统的影响与开销几乎可以忽略不计。

更高的可靠性

去中心化系统中即使一个节点计算机宕机,整个系统依旧可以照常工作,这个特性为去中心化系统带来了更高的可靠性。当一个节点宕机时,其余节点可以接管该节点的工作,而相比之下一台超级计算机的可靠性就相形见绌了。

自增长的能力

一个去中心化系统的计算能力是其所有组成节点的计算能力之和。通过向系统中加入新的计算机,去中心化系统的计算能力能够得到进一步的提升,这就意味着一个组织良好的去中心化系统可以不断增加自己的计算能力,这个特性满足了大量的组织与公司的需求。对于单独的计算机而言,要获得更强的计算能力,只能更换CPU,或者索性买一台新的计算机。

去中心化系统的劣势

去中心化系统具有以下的一些劣势。

● 节点间的协调。

● 节点间的冗余通信。

● 对网络的过度依赖。

● 系统编程的较高复杂度。

● 安全问题。

节点间的协调

去中心化系统没有中心节点来协调其中的所有成员,因此系统的协作需要其中的成员节点自己来完成。去中心化系统中的协作具有不小的难度,并且在协调过程中会产生额外的开销,并占用一定的计算资源。这些开销与计算资源不能被直接用在系统的计算任务上。

节点间的冗余通信

节点间的协作需要通过通信交流来完成,因此去中心化系统中的成员节点需要和其他的节点频繁进行通信。这就需要在完善且可靠的通信协议的基础上发送、接收并处理消息,这些过程会产生额外的开销,并占用一定的计算资源。这些开销与计算资源也不能被直接用在系统的计算任务上。

对网络的过度依赖

任何形式的通信都需要媒介,媒介为节点间的整个通信过程负责。去中心化系统中的成员节点需要不停地互相通信,这个通信过程依靠网络作为媒介。由于各类通信网络均存在各自的局限性,因此对网络的选择与依赖会影响整个去中心化系统。但是,如果没有网络就不会有通信,也就不会有协作,更不会有去中心化系统的存在。因此,一个去中心化系统对网络具有很强的依赖性。

系统编程的较高复杂度

我们通过编写程序或软件来解决各类问题。由于前面提到的3个劣势,任何一个运行在去中心化系统上的软件都需要解决额外的问题(节点间协调、通信,以及对网络产生依赖),这就带来了较高的编程复杂度。

安全问题

任何计算任务都需要直接在网络上进行通信协调与数据传递。不同的网络对安全有不同的标准。因此,通过任何网络传递数据与信息都存在可靠性的问题。而一个去中心化系统的特征决定了这个系统需要更加注重系统的安全性。系统对成员节点使用网络的权限限制越大,这个去中心化系统就越安全可靠。

去中心化的点对点网络系统

点对点网络是一种特殊的去中心化系统,该系统由很多台计算机组成,每一台计算机在没有任何中心节点的情况下向系统中的其他计算机直接提供相关的资源(包括计算能力、存储空间、数据服务和网络带宽)。网络中的每台计算机都作为一个节点,这些节点在系统中扮演相同的角色,拥有相同的权利。对于整个点对点网络而言,其中的任意一个节点既是系统资源的提供者,也是系统资源的使用者。

点对点网络系统在诸如文件分享、内容分发、隐私保护等方面都有一些很有趣的应用,其中大多数利用了一个简单而强大的想法:将网络的使用者同时转变成网络的构建者。这个做法最终导致了使用这些软件的人越多,这个软件背后的系统就越庞大,资源也就越丰富。在接下来的其他几讲中,我们会进一步讨论这个想法本身、它带来的后果,以及它面临的挑战。

具有中心化与去中心化优势的混合系统

中心化与去中心化是系统架构设计中的南北极。在实际应用中,工程师经常受到互相对立的两个技术方案的启发,从而创造出继承两者优点的混合系统。

工程师们设计出两种原型来结合中心化与去中心化系统的架构,我们需要理解这两种原型方案,因为在现实世界中的区块链应用会用到这两种混合架构设计方法。这两种架构分别是:拥有中心节点的去中心化系统和去中心化系统作为中心节点的中心化系统。

图2-2展示了以上两种系统的基本结构。左边展示的是一个拥有中心节点的去中心化系统的架构图,第一眼看上去这个系统像是一个去中心化系统,节点之间具有互相的直接关联。但是仔细看一下会发现,所有的小圆圈均与中间的大圆圈相连,因此这个系统表面上看起来是一个去中心化的系统,实际上是一个中心化系统。

右边展示的是一个完全相反的系统架构,该系统第一眼看起来是一个中心化系统,每一个外围的圆圈都和中间的大圆圈相连。但是事实上,中间的大圆圈包含了一个去中心化的子系统,外围的所有圆圈可能都无法感知到中间的圆圈内实际上是一个去中心化的系统。

这两种混合架构系统有一个共同点:难以定义它们的本质是中心化的还是去中心化的。看起来并不需要给它们特殊的名字加以分辨,但是我们有必要指出它们的双重特质。这之所以重要是因为这些系统内在的中心化或去中心化本质有时候是很难分辨的。稍后当我们讨论区块链的商业化时,会重新回到这个话题上。

识别去中心化系统

混合架构的出现,使得我们有时候很难分辨系统是不是去中心化的。给出一个通用的对于去中心化系统的定义超出了本书的讨论范围,但是了解什么是去中心化系统,以及去中心化系统和其他类型的软件系统的区别,对于理解本书接下来的内容而言非常重要。如果你对于一个系统属于中心化系统还是去中心化系统心存疑虑,那么我教你一招:在系统中尝试寻找是否有一个组成部分(数据库、用户等级、登入/登出模块或是紧急停止按钮)可以直接关闭这个系统。如果你找到了,那么说明这个系统不是去中心化的。

备注:如果存在一个这样的单独节点,比如其有一个单独的关闭按钮可以切断整个系统,那么这个系统就不是去中心化的。

区块链的作用

当设计一个系统时,我们像选择汽车用哪一种发动机一样,可以决定选择采用哪种系统架构,同时架构的选择可以与功能特征和应用层无关。这就意味着从满足同一个应用层的需求来看,我们可以选择中心化系统,也可以选择去中心化的系统,两个选择在最后的实现阶段意味着两种实现方法。因此,对于一开始在表2-1中提到的支付系统而言,我们既可以用去中心化系统架构,也可以用中心化系统架构。

两种系统架构的设计理念都有各自独特的满足需求的方式,也都有各自的优缺点。对系统架构的选择会直接影响你达成系统功能需求的具体实现方法。特别地,这两种系统在确保完备性上拥有完全不同的方式,而这就是区块链引起人们注意的关键点:区块链是去中心化系统中用来实现并确保系统完备性的工具(可以将其看作在系统的实现层上满足非功能性特征的工具)。

备注:区块链的用途是实现且保持去中心化系统的完备性。

下一讲展望

在一个去中心化系统中实现并确保完备性非常复杂,并且其原理了解起来可能会有些无聊。但是,如果我们关注到去中心化系统会做什么,以及它们会取代哪些中心化系统,那么很多人都会感到兴奋。下一讲我会介绍一种改变了世界的点对点系统,并且开始帮你理解为什么实现和确保去中心化系统完备性的区块链技术已经具备了改变世界的潜力。

本讲小结

● 软件系统的架构决定了其中的节点计算机如何被组织,以及如何与其他计算机连接。

● 中心化和去中心化的软件系统可以看作系统架构的南北极。

● 分布式系统由许多独立的计算机组成,它们通过使用通信介质相互协作,以实现特定的目标,且没有任何计算机能控制整个系统。

● 根据经验,可以指出只要有一个单一的组件可能导致整个系统崩溃,那么不管系统的架构多么复杂,它都不是去中心化的。

● 区块链是去中心化软件系统实现层的一部分。

● 区块链的意义在于确保去中心化软件系统中一个特殊的非功能性特征:实现并维护系统的完备性。

第3讲 认识去中心化的潜力

为何点对点系统可能改变世界

本讲通过介绍特定类型的点对点分布式系统,来加深你对于区块链价值的理解。因此,本讲将有助于你了解为什么技术极客和商业机构对区块链如此感兴趣。本讲还将指出区块链未来会产生极大价值的主要应用领域。此外,还会讨论点对点系统在现实世界中的应用及其产生的影响。

隐喻

你还能记得上一次在商店中购买CD是什么时候吗?现在大多数人已经很久没有购买过一张实体CD了,因为音乐行业经历了巨大的变化。如今,人们从音乐门户网站下载各种歌曲,在朋友之间分享MP3文件,或在移动设备上使用音乐类APP,而不是购买CD。这种变化开始于一种软件的出现,它允许人们彼此分享他们的音乐文件。这种软件有什么特别之处呢?以下是该软件的一个发明者对其的评价:

这个系统里面最有意思的事情是,你是在和其他人交互,你可以和街上的任意一个人互换信息。

——肖恩·范宁,Napster联合创始人

范宁和他的同事发明了一个用于分享音乐文件的点对点系统。早在20世纪90年代末,这款软件就将音乐产业带入了一个新纪元。本讲将会解释Napster的出现、CD销量的下降以及音乐产业出现戏剧性变化这些事件和区块链之间的关系。

点对点系统是如何改变整个音乐产业的

音乐产业以下面的方式运行了很长时间:音乐家与唱片公司签订合同,录制歌曲,制作各种载体(如黑胶唱片、磁带或CD)的音乐产品,通过各种分销渠道(包括百货公司和专卖店)向客户销售。唱片公司实际上是音乐家和喜欢听音乐迷之间的中间人。唱片公司在制作、营销和发行方面具有独特的知识和技能,可以保证其作为中间人的角色不可被去除。 然而,在21世纪的头10年,唱片公司的生存环境发生了巨大的变化。

音乐产品数字化、用廉价设备录制音乐的可行性、个人计算机的普及以及互联网的出现,使得唱片公司变得越来越不必要。唱片公司的制作、销售和发行3个功能可以由艺术家和消费者自己完成。Napster在改变唱片公司作为中间人的地位方面发挥了重要作用。通过使用Napster,人们不再依赖唱片公司获得最新的音乐资源,并可以与世界各地的人分享自己的音乐文件,而无须购买任何CD。Napster的点对点的架构方式,实际上创建了一个音乐文件的分享集市。它使消费者能够获得比以往任何时候更丰富的音乐产品,也使得唱片公司开始变得不被需要,并给它们造成了极大的经济损失。

点对点系统的潜力

Napster的出现告诉我们,点对点系统有可能根据一个简单的想法重塑整个行业:通过点对点的直接互动来取代中间人。在音乐产业中,作为艺术家和消费者之间中间人的传统唱片公司及其营销和分销渠道已被点对点文件共享系统替代。而唱片公司如此容易受到点对点系统替代的主要原因是音乐产品可数字化的本质,以及互联网上复制和传输数据的低成本特征。

点对点系统的应用并不局限于音乐产业,每一个在数字资源的生产者和消费者之间扮演中间人角色的传统产业里的公司都容易被点对点系统取代。这个观点可能听起来有点抽象,但是如果仔细观察你身边的诸多无形的数字商品和服务的中间商,你将发现其中最大的一个:金融行业。

你的银行账户、信用卡或借记卡里面有真的钱吗?很久以前你拥有的钱已经变成了无形的数字记录和字节数据,只有少量的货币以实物纸币和硬币的形式存在。世界上绝大多数的钱都以无形的电子数据的方式存在于金融行业的中心化信息技术系统中。银行和金融业的许多其他“玩家”只是生产者和消费者之间的中间人,它们使用无形的电子数据记录构建了我们的资产和财富。借款、借贷或从一个账户转账到另一个账户的行为只是通过中间人将账户资产进行转移而已。而令人惊奇的是有多少中间人参与了这一看似简单的交易(例如,从一个银行账户转账到另一个国家的另一个银行账户会涉及多达5个中间人,这些中间人都会收取手续费,并且都需要各自处理交易的时间)。因此,有时候向另一个国家的银行账户转账可能会涉及很长的处理时间,以及高昂的交易费用。在点对点系统中,相同的交易将会简单得多,并且花费更少的时间和手续费,因为它可以被处理为:直接在两个对等节点之间传送电子数据。

点对点系统相对于中心化系统的优势在于其直接在交易双方之间进行交互,而不通过中间人,因此处理时间更短,成本也更低。

点对点系统的优势并不限于转账,几乎所有虚拟商品和服务的生产者和客户之间的中间商都易受到点对点系统的替代。随着数字化的发展,将会出现越来越多虚拟化的商品和服务,它们都将受益于点对点系统效率的提升。点对点系统的倡导者认为,我们生活的各个方面几乎都将受到数字化技术和点对点系统的影响,如支付、储蓄、贷款、保险、出生证明、驾驶证、护照、身份证、教育证书、专利和劳动合同。它们中的大多数已经以数字化的形式存在于夹在提供者和消费者之间的机构的中心化系统中了。

备注:去除中间人也被称为“脱媒现象”,其对很多商业公司来说构成了严重的威胁。因为这些公司存在的基础是能在不同人群之间成为主要的中介,例如在买家和卖家、借贷者和放贷者或生产者和消费者之间。

术语介绍以及其与区块链之间的联系

现在你已经了解到点对点系统的潜力,那么我们有必要对一些术语加以定义,并解释其与区块链之间的联系。我们将着重探讨以下3点。

● 点对点系统的定义。

● 点对点系统的架构。

● 点对点系统和区块链之间的联系。

点对点系统的定义

点对点系统是由若干节点(个人计算机)组成的分布式软件系统,系统中单一节点的计算资源(例如CPU处理能力、存储容量)可直接被其他节点调用。当加入点对点系统时,用户按照其权限和角色将其计算机转换为系统的节点。尽管用户对系统贡献的资源可能有所不同,但系统中的所有节点具有相同的功能和责任。因此,所有用户的计算机都是资源的供应者和消费者。

例如,在点对点文件共享系统中,各个文件均存储在各个用户的计算机上。当有人想在这样的系统中下载文件时,他直接从另一个人的计算机上下载即可,这个人可能是隔壁的邻居或世界上任何的其他人。

点对点系统的架构

点对点系统是分布式计算机系统,它们由共享计算资源的各个节点组成。然而,还有一些仍然利用中心化设计思想的点对点系统。中心化系统通过维护中心节点以促进系统成员之间的交互,同时维护描述不同节点提供的服务目录,或执行节点的查找和标识等任务。中心化点对点系统通常使用图2-2左侧所示的混合架构,这种架构集合了中心化系统和去中心化系统的优点。另一方面,完全分布式的点对点系统没有中央节点进行控制或协调,因而系统中的所有节点都执行相同的任务,既作为资源和服务的提供者,也同样是消费者。

中心化点对点系统的一个例子是Napster,它维护着与系统连接的所有节点上可用歌曲的中央数据库。

点对点系统和区块链之间的关系

如第2讲所述,区块链可被认为是实现和维护分布式系统完备性的工具。完全分布式的点对点系统可使用区块链技术来实现和维护系统的完备性。

区块链的潜力

完全去中心化点对点系统和区块链之间的联系是,后者为前者提供了实现并维护完备性的工具。完全去中心化的点对点系统具有极大的商业潜力,因为它们可以取代中心化系统下靠信息中介建立起来的商业模式。既然完全去中心化点对点系统可以使用区块链来实现并维护完备性,区块链就变得非常重要了。而真正主要的原因是,当我们为去中心化的产业模式感到无比兴奋的时候,会发现区块链是能够帮助我们实现目标的唯一手段。

备注:区块链令人着迷的地方在于,在完全去中心化的点对点系统中,它是能保持系统完备性的工具,而且因为“脱媒现象”的存在,其就具有了改变各个行业的潜力。

下一讲展望

本讲阐明了什么是点对点系统,强调了因其去中心化特质而具备的改变各个行业的潜力。除此之外,本讲还指出由于区块链具备使去中心化点对点系统达成完备性的能力,故其同样具有巨大的潜力。然而,为何实现并确保完备性对于去中心化系统如此重要这一问题并未被回答。下一讲我们将会就这个问题进行深入讨论。

本讲小结

● 点对点系统由计算机组成,这些计算机将计算资源直接开放给系统中的其他成员。

● 点对点系统的优势是它们允许成员不通过中间人直接进行交互。

● 使用点对点系统取代中间人能够加快信息的处理速度,降低成本。

● 点对点系统可以是中心化的,也可以是完全去中心化的。

● 完全去中心化的点对点系统组建了一个成员完全平等的网络,其成员可以不通过中心化的协调直接进行两两间的交互。

● Napster通过它的文件共享系统将传统的音乐产业带入了新时代,展现了点对点系统的强大力量。

● 任何在虚拟资产的生产者和消费者之间充当中间人的公司都很容易被点对点系统取代。

● 金融系统中的很大一部分公司是在资产的提供者和消费者之间充当着一个简单的中间人角色。因此,数字化和点对点系统可能会像Napster重塑音乐产业一样重塑金融行业。

● 随着数字化的发展,越来越多的虚拟化商品和服务将受益于点对点系统的效率提升。

● 区块链能够为完全去中心化点对点系统的实现和维护提供完备性,而完全去中心化的点对点系统有能力改变所有有中间商参与的行业。

相关图书

计算机组成原理抢分攻略 真题分类分级详解
计算机组成原理抢分攻略 真题分类分级详解
01改变世界:计算机原理趣谈
01改变世界:计算机原理趣谈
计算机科学概论(第13版)
计算机科学概论(第13版)
思维导图速记:计算机基础
思维导图速记:计算机基础
CPU通识课
CPU通识课
软件文化基础(第二版)
软件文化基础(第二版)

相关文章

相关课程