云计算原理与实践
上QQ阅读APP看书,第一时间看更新

2.5 典型的分布式系统

本节介绍几类典型的分布式系统,阐述不同类型的分布式系统的特点。

2.5.1 网格系统

网格是一种能够将多组织拥有和管理的计算机、网络、数据库和科学仪器综合协同使用的基础设施。网格应用程序大多涉及需要跨越组织界限的可安全共享的大规模数据和/或计算资源。这使网格应用程序的管理和部署成为一项复杂的任务。在混杂的网格环境中,网格中间件为用户提供了无缝的计算能力和统一访问资源能力。目前,世界范围内已经发展有数个工具包和系统,其中大部分是学术研究项目的成果。

1.网格的概念

过去几十年间,软硬件的快速发展推动了商用计算和网络行为的快速增加。在这样的形势下,商用计算推出了低成本高效率的集群设备,解决资源短缺问题。对于科学研究,强有力的计算资源可以进行更大规模、更加复杂的仿真实验。快速的网络可以允许全球的合作者彼此分享仪器和实验结果。总之,软硬件的发展极大地方便了科学研究的展开与合作。因此,有研究组织提出计划,目的是更为方便地开展大规模科学研究的合作。这些项目被统称为 e-Science,标志着基础设施在科学研究中扮演越来越重要的角色。图2.16所示是一个典型的e-Science的方案。在e-Science的设想下,研究者可以与国内外的学者分享粒子加速器等昂贵的基础设施。

图2.16 e-Science方案

大范围合作以及计算能力提升,意味着项目产生或者接受的数据也是大量且分布。如何处理数据是e-Science必须要解决的问题,管理数据的权限、分布、处理、存储,需要计算基础设施去融合广域的分布式资源,例如数据库、存储服务器、高速网络、超级计算机、集群。这就演化出了网格计算。网格计算具有与电力网格类似的能力,电网可以提供一致、无处不在、可信的、透明的权限获得电力,而不用估计它的来源。期望实现的网格计算也可以像电网提供电力一样,提供计算资源或者数据。

目前世界上有很多项目都在发展网格网络,从不同角度不同规模定义了网格计算。Globus 定义网格为:一种能够整合的合作使用的由多家组织所拥有和管理的高端计算机、网络、数据库、实验设备的基础设施。由Gridbus提出一种基于效能的网格定义:网格是一类并行、分布系统,能够在运行时动态分享、选择、聚合地理散布的自治资源,依据它们的可用性、能力、性能、代价以及用户对服务质量的需求。

网格基础设施的发展,包括软件和硬件,因此聚集了大批来自工业界和学术界的学者和开发者。网格技术解决的主要问题是合作研究中的社会问题,包括以下几点:

改善分布式管理,同时保持对本地资源的全面控制;

改善数据可用性,识别问题和数据访问模式的解决方案;

为学者提供友好环境,能够访问更大范围的地理分布设备,提高产率。

从更高层的视角观察无缝规模化的网格环境中的活动,如图2.17所示。

网格资源被注册到一个或多个网格信息服务器中,终端用户将它们的应用需求提交给网格资源中介,中介通过查询信息服务器发现空闲资源,安排应用工作在这些资源上执行并进行监视,直到完成。

2.网格的组成

图2.18展示了一个网格结构中的软硬件栈,主要包含4层:网格组织层、核心中间件层、用户级中间件层、应用接入层。

图2.17 世界范围内的网格工作环境

图2.18 层次化网格结构与组成

(1)网格组织层:计算机、网络、存储和科学设备;计算资源包括多种结构:集群、超算、服务器、PC(运行各种操作系统);科学设备包括望远镜和提供实时数据的传感器网络,可以直接传到计算节点和数据库中。

(2)核心中间件层:提供各种服务,包括远程进程管理、资源分配、存储访问、信息注册和发现、安全和多方面的QoS等,例如资源预定和交易。这些服务将组织层复杂且异构的服务抽象出来,为访问分布式资源提供了统一方法。

(3)用户级中间件层:利用底层提供的接口提供更高层的抽象和服务,包括应用开发环境、程序工具以及管理资源和规划任务在全局资源运行的资源中介。

(4)应用接入层:为了网格编程环境和接口,规划由用户中间件提供的服务。例如参数仿真或者大挑战问题,需要计算机资源,访问远端数据,可能需要与科学设备交互。网格接口提供网络应用服务,用户可以通过网络向远程资源提交和收集任务结果。

3.Globus工具包

Globus 是一种研究网格环境中互操作的中间件技术,为科学和工程上的网格计算应用程序提供基本的支撑环境。它定义了构建计算网格的一组基本服务和功能,包括安全、资源管理、通信、目录管理等基本服务,被许多应用网格项目采用。Globus项目以提供工具包的形式支持开发基于网格的应用,具体组成如图2.19所示。它提供的工具包有资源管理、信息服务、数据管理三个主要模块,以及网格安全架构GSI、通信、故障检测等功能。

本地服务层包含操作系统服务、TCP/IP等网络服务、加载层提供集群调度服务、作业提交、队列查询等。Globus模型的高层可以实现多个或异构集群的集成。核心服务层包含用于安全性、作业提交、数据管理和资源信息管理的 Globus工具包构建块。高级服务和工具层包含集成度较低级服务器或实现缺失功能的工具。

图2.19 Globus结构

Globus 重点解决了将分析软件组织成分布式软件、规划数据驱动的资源代理方法论和策略。程序和服务开发需要从桌面端调整到全球网格,同时支持科学应用和商业应用。

总之,网格计算的概念反映的是一种理念框架,为后来的云计算提供了不少借鉴。

2.5.2 P2P系统

对等网络系统近年来受到了广泛的关注与应用,这一技术从1999年的三个著名系统开始,经过十几年的发展,应用范围越来越广,并且已经在多个领域取得成果。

1.P2P系统简介

对等网络系统(Peer-to-Peer),简称 P2P 系统,即媒体及公众所称的“点对点系统”,是一种应用在对等者(Peer)之间分配任务和工作负载的分布式应用架构的系统。对等网络的思想是:网络的所有参与者共享他们所拥有的一部分硬件资源,包括处理器资源、存储资源和网络资源等,这些共享资源可以通过网络被其他对等者直接访问并为之提供服务和内容。不同于主流的客户端/服务器(Client/Server)结构,对等网络结构中不存在中心节点或中心服务器,每一个该网络的参与者既是系统中资源、服务和内容的信息提供者,又是这些信息的消费者,同时还具有信息通信方面的功能。在网络系统中,每个节点的地位都是对等的,因此称之为对等网络系统。

对等网络系统在近年来受到了广泛的关注与应用,但其起源是1999年的三个著名系统:音乐共享系统Napster、匿名数据存储系统Freenet及志愿计算系统SETI @home。从这三个经典的对等网络系统开始,经过十几年的发展,P2P系统现在已经在多种领域中获得了关注与广泛应用,其中不乏一些优秀的代表:内容分发协议BitTorrent、视频电话Skype、实时流媒体PPLive等。

计算机系统的结构主要分为集中式系统和分布式系统两大类型,其中分布式系统中主要包含对等网络系统(P2P 系统)和客户端/服务器系统(C/S 系统)等。因此,P2P 系统是一种具备某些性质的分布式系统,这些性质也使得P2P系统具有与其他系统不同的独特特点。P2P系统主要具备以下三种性质。

(1)高度分散化

由于一个P2P系统是由众多对等点(Peer)所组成的,这些点可能分布在世界各地,在硬件上首先达到了系统的高度分散。另一方面,众多对等点组成了一个系统,但这个系统中很少存在处于集中化状态的专用节点,每一个对等点既是客户端又是服务器,整个系统的计算资源、存储资源、网络资源都分散在各个对等点上,系统的状态和任务经过动态分配,同样分散在各个对等点上,因此在系统的资源管理和任务处理上同样达到了系统的高度分散。

(2)自组织性

德国理论物理学家哈肯(H. Haken)认为,从组织的进化形式来看,可以分为两类:他组织和自组织。如果一个系统靠外部指令而形成组织,就是他组织;如果不存在外部指令,系统按照相互默契的某种规则,各尽其责而又协调地自动地形成有序结构,就是自组织。P2P系统所具有的自组织性是指如果希望向现有系统中引入一个新节点,那么只需要提供新节点的IP地址以及一些必要信息,几乎不需要对引入操作进行手动配置,系统就可以自动将这个节点引入系统并形成有效结构。

(3)多管理域

由于 P2P 系统拥有众多节点,但同一个系统中的所有节点并不由同一个组织或个人所有,因此一个组织或个人很难操控或管理整个系统。由于每一个加入系统的节点都可以被一个独立的组织或个人控制,因此整个系统最多可以拥有节点数那么多的管理者,划分出许多不同的管理域。

由于 P2P 系统是一个具备高度分散化、自组织性和多管理域三个特征的分布式系统,因此 P2P系统形成了一些与其他系统不同的独特特点。

① 部署低门槛。

因为P2P系统是分散化的,所有的资源都来自于加入系统的对等点,因此如果想要部署一个P2P系统,并不需要像客户端/服务器系统一样购置服务器以及相关设备,大大降低了部署前期所需要的投资费用。这使没有经费购买基础设备的系统建设者也能较轻松地部署一个 P2P 系统,因此说 P2P系统的部署门槛较低。

② 有机增长。

同样,由于整个系统的各类资源分布在对等点上,因此每当有新的对等点加入,P2P系统的规模和资源、处理能力都会增长,且无须为了加入新设备而对现有系统进行改进,也无须为了升级而购买新设备来替换旧设备。这种规模的扩大不受技术和资金限制,几乎可以实现任意增长。

③ 对故障与攻击的恢复力。

同样,得益于 P2P 系统的结构,几乎不存在对整个系统都至关重要的特定节点,因此如果某个节点出现故障,并不会使得整个系统都出现问题。类似地,如果有攻击者想要攻击 P2P 系统,只攻击一个节点无法使整个系统陷入瘫痪,需要同时攻击系统中的大部分节点,然而这样的攻击并不容易实现,即使实现也需要耗费大量资源,因此此类攻击的可行性并不高。

④ 资源的丰富性与多样性。

每一个对等点的资源都是 P2P 系统资源的一部分,然而每个对等点所具备的软件及硬件架构、网络连接、地理位置、权限和能源都是不同的,这使得一个P2P系统可以同时拥有多样化的资源,并且随着对等点越来越多,资源也越来越丰富。这样充足而丰富的资源在一般情况下无法同时具备,若要具备也需要极高的花费,很少有组织或个人能够负担起。同时这些资源的多样性也降低了系统面对故障、攻击与审查时的脆弱性。

2.对等网络系统的应用

当前 P2P 系统的应用范围十分广泛,所应用的领域也非常多元化,同时也涌现出一批非常成功的经典 P2P 系统,同时还有一些正在发展但非常有前景的系统。当然,一个技术所拥有的特性在产生正面效果的同时,也会产生一些负面的影响。

(1)共享及分发文件

当下最流行的 P2P 应用包括文件共享与批量数据分发。这两种类型的系统都源于三大著名系统中的音乐共享系统 Napster。在 Napster 中,用户与其他参与者共享其磁盘文件的一个子集,且允许搜索文件名中的关键字,并从共享文件的对等点下载查询结果中的任意文件。其他参与者通过互联网直接从用户计算机上下载音乐。由于这种带宽密集型的下载操作是直接发生在各用户的计算机之间的,Napster就可以在避免巨大的运营成本的同时为数百万用户提供音乐下载服务。但由于音乐存在版权问题,Napster不得不关闭服务,但其系统中资源共享的思想启发了更多应用的诞生。类似的文件共享系统还有Gnutella和FastTrack等。

批量数据分发的代表是BitTorrent,其设计的目的是快速高效地下载大量数据,减少文件下载时间,常被用于传播数据、软件或媒体内容。这种系统使用并发下载者和已经拥有完整文件的对等点的空闲上传带宽来帮助系统中的其他下载者。但与文件共享系统不同的是,批量数据分发系统不包含搜索组件且根据下载内容形成独立的网络,因此下载不同内容的用户之间并不知道彼此的存在。

(2)流媒体

流媒体分发和IPTV(通过互联网提供的数字电视服务)也是当前流行的P2P应用。这类系统同样是利用参与用户的带宽来避免基于服务器时所产生的带宽成本。同时由于流媒体即时传播的特点,流媒体分发在时间上有着较为严格的时间要求,必须在截止时间前完成数据的交付使用。此类系统中较为著名的包括PPLive、Cool Streaming及BBC的iPlayer和Skinkers直播等商业产品。

(3)电话

P2P技术的另一个主要应用是Skype的音频和视频电话。Skype利用参与节点的资源为用户提供无缝的视听连接,无论其当前的位置与互联网的类型。对等点帮助没有公共路由的IP地址建立连接,从而在无须处理和转发调用的集中式基础设施的条件下解决了防火墙和网络地址转换造成的连接性问题。

(4)志愿计算

志愿计算也是P2P系统中的一个重要应用,三个著名系统中的SETI@ home系统就是志愿计算的典型应用。在这类系统中,用户将他们的空闲CPU周期贡献给如天体物理学、生物学或气候学等领域的科学计算。参与者会安装一个屏幕保护 P2P 应用程序,在用户不使用计算机时,这个应用程序会下载一些从SETI@ home服务器收集的Arecibo射电望远镜收集的观测数据块,然后分析这些数据,搜索可能存在的无线电传输,并将结果发送回服务器。

SETI@ home以及类似项目的成功导致了BOINC平台的开发,此平台被用于开发现在所使用的一些环式分享P2P系统。BONIC已经拥有超过50万的活跃对等点,运算速度可以达到5.42 PFLOPS (1 PFLOPS=每秒1015次的浮点运算)。与之相比,一台现代PC的性能大概是几十GFLOPS(1GFLOPS=每秒109次的浮点运算),而目前世界上最快的超级计算机“神威·太湖之光”在2017年6月的峰值性能为125.4 PFLOPS,BOINC平台的性能显而易见。

任何技术都具有两面性,P2P系统也不例外。系统所具有的弹性也可能被犯罪分子用作隐匿犯罪活动痕迹。系统的可扩展性可以用来在全球范围内传播软件的关键更新,但也可以用来非法传播原本受版权保护的内容。但P2P系统的发展和潜力不可否认,目前P2P技术的使用更加多样化,运用在越来越多具有巨大商业潜力的服务和产品中。人们也普遍认为它降低了创新技术的门槛,可以促进更多新系统的开发与发展。

总之,作为一项颠覆性的技术,P2P系统为互联网、工业甚至整个社会带来了巨大的机遇与挑战。其最重要的优势在于可以显著降低创新的门槛,鼓励更多个人及组织通过P2P技术实现改进与创新。但 P2P 系统专用基础设施和控制的独立性可能是它的优势,也可能是它的弱点,因为这些性质为它带来了新的挑战,需要通过技术、商业和法律手段来解决。

2.5.3 透明计算

透明计算是一种由我国学者提出的新计算模式。与“云计算”类似,这种模式可以使用户终端变得更加轻量级的同时增强计算的安全性、提高能源效率、提升跨平台能力。无论是传统终端还是移动设备,透明计算都可能是未来发展的方向之一。

1.透明计算简介

在过去的十几年里,云计算和大数据等新技术的出现,已经改变了计算机和互联网的核心功能:从计算和通信变为收集、存储、分析和使用各种数据和服务。同时,我们见证了移动设备的普及,并正走向物联网时代。然而,新的终端和网络环境也带来了新的挑战。轻量级终端和智能应用程序具有移动性、可移植性、用户依赖性、即时性和隐私等特性。在移动互联网时代,以服务器为中心的计算模式(虚拟桌面、云计算和大数据处理)是典型的技术,但它们只提供部分解决方案。

尽管以服务器为中心的计算模式,例如云计算,具有易于维护、集中管理和高服务器利用率的优势,但也存在着许多挑战和局限性。简而言之,以服务器为中心的计算范例只能从服务器和网络的角度解决问题,而不是用户和服务的问题。为了解决这些问题,透明计算技术应运而生。在透明计算平台下,我们把透明计算系统中所使用的终端设备称为透明客户机或透明客户端,把其中的服务器称为透明服务器,并把连接终端设备和服务器的网络系统称为透明网络。透明客户机可以是没有安装任何软件的裸机,也可以是装有部分核心软件平台的轻巧性终端。透明服务器是带有外部存储器的计算装置,例如 PC、PC 级服务器、高档服务器、小型机等。透明服务器存储用户需要的各种软件和信息资源,同时还要完成透明计算系统的管理与协调,例如各种不同操作系统核心代码的调度、分配与传输,各种不同软件服务往透明客户机上的调度、分配与传输等过程的管理。张尧学院士从 1998 年就率领研究团队开始从事透明计算系统和理论的研究,直到 2004 年,张院士正式提出这一概念。

透明计算是一种用户无须感知计算机操作系统、中间件、应用程序和通信网络的具体所在,只需根据自己的需求,通过网络从所使用的各种终端设备(包括固定、移动及家庭中的各类终端设备)中选择并使用相应服务(例如计算、电话、电视、上网和娱乐等)的计算模式。

透明计算的核心思想是把所有数据、软件(包括操作系统)以及用户信息存储在服务器上,而数据的计算在终端执行。用户可以无须了解任何底层结构,通过有缓存的“流”式计算,在自己的终端上执行异构的操作系统和程序。透明计算系统由终端设备、服务器和连接终端设备与服务器的网络组成。理想的透明计算包括三个部分,一是整合了当前PC、PDA、智能手机、数字家电等轻权设备的透明客户端;二是整合当前各种网络设备与互联设备的透明网络;三是整合了大量计算能力较强或者很强的普通个人微机、服务器、大型机等的透明服务器。从总体上看,透明计算构建在一个更加广泛的物理设备之上,运行环境更加灵活。

如图2.20所示,透明计算拥有一个由服务、操作系统、网络和终端层组成的分布式系统。

图2.20 透明计算模式

服务层:软件和用户数据存储在服务器上。服务可以是异构的,并且自动与不同的底层操作系统相关联,用户可以请求任何服务,而不考虑底层操作系统。

操作系统层:存储异构操作系统。要支持异构服务,服务器必须维护底层的操作系统。当用户请求服务时,服务器会自动选择底层操作系统,然后选择操作系统内核,将内核与任何请求一起发送。

网络层:控制服务器和用户之间的通信和数据传输。软件、操作系统和数据是由从服务器发送给用户终端的块或流形成的。网络层包含了一些通信协议,如MRBP(多操作系统远程启动协议)和NSAP(网络存储访问协议),用于支持远程引导和数据传递。

终端层:在用户终端上接收和执行计算服务,这些服务通常是多样化的,而且常常是轻量级的。终端可以是个人计算机、智能手机、笔记本电脑,甚至是可穿戴设备。终端只需要存储底层的BIOS和一组协议和管理程序,更加安全、易于管理维护。

2.透明计算的核心技术

根据透明计算的定义,可以将其核心技术分为三个方面:透明云架构、元操作系统和客户端实现化。

(1)透明云架构

透明云架构如图2.21所示,该架构与云计算十分类似。区别在于在云计算中,数据存储和计算都是在服务器上执行的,而在透明计算中,数据存储发生在服务器上,而数据计算则发生在用户终端上。目前已经验证了改进云计算性能的现有算法和模式,同样可以应用在透明云服务器上,以管理和调度资源。

透明的云架构可以支持异构终端,如PC、智能手机、嵌入式和可穿戴设备。图2.22显示了异构终端支持的示例。

图2.21 透明云架构

图2.22 透明云支持异构终端的示例

在本例中,一个Linux的调用服务存储在透明的服务器上,并提供给用户访问。所有存储在服务器上的操作系统和应用程序都是由Meta OS管理的。用户只需在他们的终端上安装Meta OS服务,连同支持的Linux OS一起,通过一个支持缓冲的块或流方式传输到终端。

(2)元操作系统(Meta OS)

元操作系统位于硬件平台和应用操作系统之间,负责管理硬件和软件资源,包括各种应用操作系统,为用户提供安全可靠的计算服务。元操作系统的关键技术包括内核分发、计算、存储、管理分离、“块流”执行、缓存、协议和虚拟化。元操作系统使用户能够在不同的操作系统平台上选择他们想要的服务,从而使计算机更加强大方便。

(3)客户端实现

透明计算需要满足在异构的平台上实现异构的服务。HTML 5 技术是客户端一个非常合适的候选,具有跨平台和低成本的优势。在透明计算中,可以把浏览器引擎做到元操作系统层。

如图2.23所示,与传统的客户端应用程序相比,HTML 5具有跨平台支持和低开发成本的优势。但是,浏览器的差异和Web安全攻击也对HTML 5的使用提出了挑战。在透明的计算中,浏览器引擎可以内化在元操作系统层,从而屏蔽浏览器的差异,同时可以通过跨平台的流媒体执行来改善用户体验。

图2.23 HTML5与传统App的对比

总之,随着进入物联网时代,在互联网和日常生活中,轻量级的移动设备正逐渐成为主导终端,透明计算技术正在迎来新的机遇以及新的挑战。如何把传统透明计算技术应用到移动设备上,如何解决透明计算中存在的如安全性、可靠性等问题仍是需要研究的问题。在当前的移动计算时代,透明计算是一个很有发展和应用前景的计算模式,它将继续吸引学术界和工业界的广泛关注。

2.5.4 区块链系统

1.区块链介绍

区块链(Blockchain)是一种去中心化、不可篡改、可追溯、多方共同维护的分布式数据库系统,能够将传统单方维护的仅涉及自己业务的多个孤立数据库整合在一起,分布式地存储在多方共同维护的多个节点,任何一方都无法完全控制这些数据,只能按照严格的规则和共识进行更新,从而实现了可信的多方间的信息共享和监督,避免了烦琐的人工对账,提高了业务处理效率,降低了交易成本。区块链通过集成 P2P 协议、非对称加密、共识机制、块链结构等多种技术,解决了数据的可信问题。通过应用区块链技术,无须借助任何第三方可信机构,互不了解、互不信任的多方可实现可信、对等的价值传输。

区块链源自于比特币(Bitcoin)的底层技术,2008 年,化名为“中本聪”(Satoshi Nakamoto)的学者提出了一种被称为“比特币”的数字货币,在没有任何权威中介机构统筹的情况下,互不信任的人可以直接用比特币进行支付。2013年12月,维塔利克·布特林(Vitalik Buterin)提出了以太坊(Ethereum)区块链平台,除了可基于内置的以太币(ether)实现数字货币交易外,还提供了图灵完备的编程语言以编写智能合约(Smart contract),从而首次将智能合约应用到了区块链。以太坊的愿景是创建一个永不停止、无审查、自动维护的去中心化的世界计算机。2015年12月,Linux基金会发起了 Hyperledger 开源区块链项目,旨在发展跨行业的商业区块链平台。Hyperledger 提供了Fabric、Sawtooth、Iroha 和Burrow等多个区块链项目,其中最受关注的项目是 Fabric。不同于比特币和以太坊,Hyperledger Fabric专门针对于企业级的区块链应用而设计,并引入了成员管理服务。

区块链平台可分为公有链和联盟链两类。公有链中所有的节点可自由地加入或退出;而联盟链中的节点必须经过授权才可加入。因此,公有链的节点通常是匿名的,而联盟链需要提供成员管理服务以对节点身份进行审核。表2.1分别从准入机制、数据模型、共识算法、智能合约语言、底层数据库、数字货币几个方面对常用区块链平台进行了对比。

表2.1 区块链平台对比

2.区块链模式

区块链把数据分成不同的区块,每个区块通过特定的信息链接到上一区块的后面,前后顺连,呈现一套完整的数据。每个区块的块头(Block Header)包含一个前块散列(Previous Block Hash)值,即将前一个区块的块头进行散列函数(Hash Function)计算而得到的值;每个区块之间都会由这样的散列值与先前的区块环环相扣,形成一个链条。区块链的交易信息被随机散列构建成一种称为默克尔树(Merkle tree)的散列二叉树形态,其根(root)被纳入了区块的随机散列值。

从技术层面上讲,区块链的核心特征包含以下三个方面。

① 块链结构:每一块有时间戳,每一块都含有前面一块的散列加密信息,对每个交易进行验证。

② 多独立拷贝存储:区块链系统的每个节点都存储同样信息。

③ 拜占庭容错:容忍少于1/3 节点恶意作弊或被黑客攻击,系统仍然能够正常工作。

特征①指出区块链是一个“账簿”;特征②指出区块链是一个“分布式账簿”;特征③指出区块链是一个“一致性的分布式账簿”。依据这三个特征,派生出以下不同形式的区块链的落地模式。

(1)模式1:①、②、③+ P2P + 挖矿。

比特币代表第一代区块链的数字货币应用。比特币是数字货币应用而不是平台,属于公有链(全网记账)。虽然有加密,但是账簿是全公开的。因为只记录历史信息,不记载账户余额,所以账簿不完整。账户只能用一次,用P2P 网络逃避监管,速度极慢,而且扩展性弱。

(2)模式2:①、②、③+ P2P + 挖矿 + 默克尔-帕特里夏树(Merkel Patricia tree)。

以太坊代表第二代区块链的数字货币应用和平台。以太坊创始人维塔利克·布特林(Vitalik Buterin)发现比特币有很多问题,于是作出了 3 个重要贡献:把以太坊转型为一个平台,而不只是一个数字货币应用;以太坊有完整的账簿,这是区块链技术一个很大的进步;在以太坊平台上加上“链上代码(chaincode)”,俗称“智能合约”。然而,布特林自己也承认,所谓“智能合约”第一不智能,第二不是合约。“智能合约”这个名词容易造成误导,IBM称之为“链上代码”。“链上代码”能把数字货币应用变成功能强大的平台。相对于比特币,以太坊有非常大的进步,但是局限于首次公开币发行(Initial Coin Offering,ICO)。以太坊区块链是一种公有链,作为公开账簿,维护交易历史和账户信息,是完整账簿。

3.区块链体系架构

从最早应用区块链技术的比特币到最先在区块链引入智能合约的以太坊,再到应用最广的联盟链,它们尽管在具体实现上各有不同,但在整体体系架构上存在着诸多共性,如图2.24所示,区块链平台整体上可划分为成网络层、共识层、数据层、智能合约层和应用层五个层次。

(1)网络层

基于 P2P 的区块链可实现数字资产交易类的金融应用,区块链网络中没有中心节点,任意两个节点间可直接进行交易,任何时刻每个节点也可自由加入或退出网络,因此,区块链平台通常选择完全分布式且可容忍单点故障的 P2P 协议作为网络传输协议。区块链网络节点具有平等、自治、分布等特性,所有节点以扁平拓扑结构相互连通,不存在任何中心化的权威节点和层级结构,每个节点均拥有路由发现、广播交易、广播区块、发现新节点等功能。区块链网络的 P2P 协议主要用于节点间传输交易数据和区块数据,比特币和以太坊的P2P协议基于TCP实现,Hyperledger Fabric的P2P协议则基于HTTP/2协议实现。在区块链网络中,节点时刻监听网络中广播的数据,当接收到邻居节点发来的新交易和新区块时,其首先会验证这些交易和区块是否有效,包括交易中的数字签名、区块中的工作量证明等,只有验证通过的交易和区块才会被处理(新交易被加入正在构建的区块,新区块被链接到区块链)和转发,以防止无效数据的继续传播。

图2.24 区块链体系架构

(2)共识层

去中心化的区块链由多方共同管理维护,其网络节点可由任何一方提供,部分节点可能并不可信,因而需要支持更为复杂的拜占庭容错(Byzantine Fault-Tolerant,BFT)。比特币要求只有完成一定计算工作量并提供证明的节点才可生成区块,每个网络节点利用自身计算资源进行散列运算以竞争区块记账权,只要全网可信节点所控制的计算资源高于 51%,即可证明整个网络是安全的。为了避免高度依赖节点算力所带来的电能消耗,一些研究者还提出了一些不依赖算力而能够达成共识的机制。例如,Hyperledger Sawtooth应用了基于Intel SGX可信硬件的逝去时间证明机制。

(3)数据层

比特币、以太坊和Hyperledger Fabric在区块链数据结构、数据模型和数据存储方面各有特色。在数据结构的设计上,现有区块链平台设计了基于文档时间戳的数字公证服务以证明各类电子文档的创建时间。时间戳服务器对新建文档、当前时间及指向之前文档签名的散列指针进行签名,后续文档又对当前文档签名进行签名,如此形成了一个基于时间戳的证书链,该链反映了文件创建的先后顺序,且链中的时间戳无法篡改。在数据模型的设计上,比特币采用了基于交易的数据模型,每笔交易由表明交易来源的输入和表明交易去向的输出组成,所有交易通过输入与输出链接在一起,使得每一笔交易都可追溯;以太坊与Hyperledger Fabric需要支持功能丰富的通用应用,因此采用了基于账户的模型,可基于账户快速查询到当前余额或状态。在数据存储的设计上,因为区块链数据类似于传统数据库的预写式日志,因此通常都按日志文件格式存储;由于系统需要大量基于散列的键值检索(如基于交易散列检索交易数据、基于区块散列检索区块数据),索引数据和状态数据通常存储在Key-Value数据库,如比特币、以太坊与Hyperledger Fabric都以Level DB数据库存储索引数据。(4)智能合约层

智能合约是一种用算法和程序来编制合同条款、部署在区块链上且可按照规则自动执行的数字化协议。该概念早在1994年初就被定义为一套以数字形式定义的承诺,包括合约参与方执行这些承诺所需的协议,其初衷是将智能合约内置到物理实体以创造各种灵活可控的智能资产。由于早期计算条件的限制和应用场景的缺失,智能合约并未受到研究者的广泛关注,直到区块链技术出现之后,智能合约才被重新定义。区块链实现了去中心化的存储,智能合约在其基础上则实现了去中心化的计算。比特币脚本是嵌在比特币交易上的一组指令,由于指令类型单一、实现功能有限,其只能算作智能合约的雏形。以太坊提供了图灵完备的脚本语言与沙盒环境,以供用户编写和运行智能合约。Hyperledger Fabric的智能合约选用Docker容器作为沙盒环境,Docker容器中带有一组经过签名的基础磁盘映像及运行Go与Java语言的SDK,以运行Go与Java语言编写的代码。

(5)应用层

比特币平台上的应用主要是基于比特币的数字货币交易。以太坊除了基于以太币的数字货币交易外,还支持去中心化应用(Decentralized Application,Dapp),Dapp是由JavaScript构建的Web前端应用,通过JSON-RPC与运行在以太坊节点上的智能合约进行通信。Hyperledger Fabric主要面向企业级的区块链应用,并没有提供数字货币,其应用可基于Go、Java、Python、Node.js等语言的SDK构建,并通过类似REST与运行在Hyperledger Fabric节点上的智能合约进行通信。

4.区块链的应用

区块链可辅助核准互联网上每个虚拟个体和每项数字化交易的真实有效性,为大众参与、分布自治提供了保障信任的技术基础,是构筑未来数字社会的基石。

在互联网发展初期,一系列开放的互联网标准为系统之间的交互和通信奠定了基础。随着网络的迅速发展,海量数据的涌现,互联网应用广泛渗透到了社会生活的方方面面,迫切需要构建应用之间互联、互通、互操作的信任体系。区块链的思想提出了一种可信的数字化信息在网络中产生、传播和交换的协议,为构建数字社会中的“信任”提供四个层面的支撑:数据保护、个体认证、交互验证、信用凭证。

数据保护是指采用基于密码学原理设计的存储结构,保证数据安全可靠,使其难以被非法获取和篡改。

个体认证是指数字社会中各个主体的身份认证问题。身份认证是数据所有权及交易过程记录的标识。网络环境中,用户身份具有超时空性、虚拟性、匿名性、多样性等特点,同一个人在不同的时间、地点、应用环境、交互场景下,可能使用不同的虚拟身份。基于数字签名技术的认证机制保证交易过程中的虚拟身份难以伪造、可检验、可追踪。

交互验证是指针对数字资产多方交易的虚拟经济特性,对操作过程进行监管和审计,保证个体之间交互、交易行为的合规性,避免和及时发现各种欺诈、欺骗行为,确保各种活动符合相关的法律法规。例如,“双重支付”是一种典型的欺诈行为,将货币、证件、票据等数字资产进行不合理的传播,危害社会秩序和个体利益。

信用凭证是在数字资产产生和传播的整个生命周期中,全面记录每一次交易的各类信息(例如供需双方、交易的资产、交易的时间和环境、交易方式、交易前后价值及所有权变化等),保证交易凭证的真实、准确、全面、完整且不可篡改性,可作为监管的依据、司法的“证据链”。

分布式、时空链和链上代码是区块链不同于传统可信机制的设计原则。分布式设计让信息在加密的基础上共享,通过多方共识机制实现对交易执行的公众监督,而不是依赖于单一的验证中心,使得任何恶意行为如同在众目睽睽之下作案,难以得逞。时空链设计辅助建立交易场景(空间)、交易历史过程(时间)的追踪关系,为信用评价、证据溯源提供全面、准确的信息。链上代码设计支持在交易发生时自动验证交易的合理合法性,即时主动地安全防范,防患于未然,降低交易风险以及事后验证的代价。

构建在信任基础之上,区块链可促使信息互联网发展到价值互联网,从而释放出无数的新应用和新潜能。这种变革不仅仅是技术创新,更是新型分布式应用与分布式商业模式美妙结合的产物。

从应用的角度讲,现有的模式多依托于大型的数据中心平台,用户个人信息及交易过程都集中存储管理。近年来,已经发生了多起大型公司服务器被攻击、用户隐私泄露事件,凸显了航空母舰式庞大的中心数据库的安全问题。而分布式的应用架构,是将数据和计算分布在多个节点上,对分布式应用的节点进行部署,以实现分布自治,在不可信的通信之上建立点到点可信的消息交互协议,降低对单一控制中心的依赖,提高系统的可靠性和隐私保护能力。

从商业模式看,链上代码支持使得实体之间可以点对点约定契约、直接交易,节点之间不仅可以交换数据,还可以交换价值,进行商业活动,每个数字化的个体都可以成为自主运作的代理人。在公众监督的契约约束下,这种“直销”模式可以降低交易成本,提高交易效率,挖掘新的互联网商业模式,激发市场潜能。

区块链起源于虚拟货币,在金融领域得到广泛关注,其影响力还渗入到互联网应用的各个领域。随着互联网的发展,在规模越来越庞大的数字化社会中,数字化个人身份、数字化设备的互联互通、数字化资产的交易等,区块链的需求越来越强烈。区块链架构不仅可以降低交易成本,提高交易效率,还可以避免由于过度依赖超级数据中心和厂商而造成的系统的脆弱性。这种新型架构将为构建互联网信任体系的基础设施服务、保证可靠可信的数字社会运作、释放数字化的市场潜能发挥重要的作用,在数字社会中具有广阔的应用前景。