区块链开发实战:Hyperledger Fabric关键技术与案例分析
上QQ阅读APP看书,第一时间看更新

第1章 全面认识区块链

人类自诞生以来,一直对物质移动的速度有着孜孜不倦的追求和探索。在人类探索和改造世界的过程中,绝大多数具有颠覆性的技术创新都与物质传递的速度有着非常密切的联系。比如轮子改变人和物体传递的方式,铁轨改变人和物体传递的效率,电力的出现改变了能量的传递方式,互联网的诞生则是彻底颠覆了信息传递的方式和效率。

区块链技术被认为是轮子、铁轨、电力、互联网之后,又一个具备颠覆性的核心技术。作为一种构建价值互联网的底层技术,区块链改变的将是价值传递的方式。区块链的出现将解决人类社会诞生以来一直在思考的问题——如何获取未知的信任。区块链技术到底是怎样一种技术?本章将从宏观角度介绍这个问题。

1.1 区块链技术的起源和解释

提到区块链技术,比特币是无法回避的一个重要部分,因为比特币是迄今为止出现最早、规模最大、运行最稳定、技术最成熟的基于区块链技术的应用。2008年一个网名叫“中本聪”的人发表了一篇名为《比特币:一个点对点的电子现金系统》的论文。在该论文中,“中本聪”描绘了一个完全去中心化的电子现金系统,在这个系统中每一个参与者都是独立并且对等的,这些参与者不依赖于通货保障或者结算交易验证保障的中央权威。

为了实现这套系统,相关的技术社区利用密码学中的椭圆曲线数字签名算法(ECDSA)来实现数据的加密,基于P2P网络来实现数据的分布式存储,从而实现了一个去中心化的,不可逆、不可篡改的特殊数据存储系统。这套系统就是目前被称为区块链技术的雏形。比特币就是构建在区块链技术之上典型的成功应用。比特币系统这些年来稳定而且高效的运行,证明了这些技术理论的正确性和可靠性。

随着业界对比特币系统技术架构的深入了解,人们发现这些技术除了应用在比特币上面之外,还能应用在其他领域。于是相关技术社区将这些技术抽象之后给它们起了一个统一的名字:区块链。从此区块链脱离比特币成为一门单独的技术。

目前区块链已经成为一个独立的技术名词,而不是依赖于某个具体产品的附属技术。区块链这个技术名词,从不同的角度看会有不同的解释。

● 从网络的角度看:区块链的底层网络模型提供了分布式数据存储的完美实现,比特币系统从诞生至今没有发生过一次宕机事件,这有利地证明了该网络模型的稳定和高效。

● 从底层技术的角度看:区块链更像是一个数据结构,用区块存储数据,把区块按照顺序链接起来组成区块链,从而达到防止数据被篡改的目的。

● 从密码学的角度看:区块链利用椭圆曲线数字签名算法来保证数据的完整性和真实性。

● 从数据存储的角度看:区块链更像是一个分布式数据库,不但数据的存储是分布式的(以共享账本为例,所有的数据可以对等地存储在所有参与数据记录的节点中,而非集中存储于中心化的机构节点中),而且数据的产生也是分布式的(账本所有的节点集体维护,而非一个单独的中心机构来维护)。

区块链技术源于比特币但是高于比特币,发展至今,已经形成一个非常完整的技术栈。区块链技术栈中的每个单项技术并不是新发明的技术,如果将这些单项技术单独提取出来,都是比较普通的,但正是这些普通的技术通过精巧地组合之后诞生了一项足以颠覆世界的新技术。这和鸡尾酒非常相识,组成鸡尾酒的每个单独的原料都非常普通,但是组合之后就产生了非常神奇的化学反应,从而诞生了一个让人痴迷的新事物。

套用一句网络流行的话,重要的事情要说三遍:区块链不是一个单独的技术,而是由多种技术组成的技术栈,在学习区块链技术的时候一定要注意区块链技术的这个特性。所以如果想学会区块链技术首先需要对组成区块链技术栈的各个单项技术有所了解,然后再开始学习相关的区块链技术框架,这一点在基于区块链技术的项目实施中尤其重要。

1.2 区块链的核心技术及其特性

通过前面章节的介绍我们知道区块链技术是一个技术栈,由多种相关技术组成。那么区块链技术栈到底是由哪些具体技术组成的呢?在回答这个问题之前,我们先要了解一下区块链具有哪些特点。

1.2.1 区块链技术的特性

区块链技术有什么特点?这个问题很多人从不同的角度定义过。在这里,我们引用维基百科上面的说明:“区块链技术是基于去中心化的对等网络,用开源软件把密码学原理、时序数据和共识机制相结合,来保障分布式数据库中各节点的连贯和持续,使信息能即时验证、可追溯,但难以篡改和无法屏蔽,从而创造了一套隐私、高效、安全的共享价值体系。”通过这段描述我们可以把区块链技术的特点归纳为以下几点:

● 区块链没有一个统一的中心,数据分布式存储,并且每个节点是对等的。

● 数据存储按照特定的时序组织并且采用密码学原理加密,这样使得数据不可篡改(密码学加密)并且可以追溯(时序组织)。

● 数据的创建和维护由所有参与方共同参与,任何一方都不能在不经过其他参与方允许的情况下独立对数据进行维护。

这些特性是绝大多数区块链技术的基本特性,但是随着对区块链技术的深入研究,人们发现这些特性已经不能满足业务的需求,因此在区块链技术中增加了一些新的特性,这些新增的特性中最重要的就是智能合约。区块链的智能合约是条款以计算机语言而非法律语言记录的智能合同。智能合约让我们可以通过区块链与真实世界的资产进行交互。当一个预先编好的条件被触发时,智能合约执行相应的合同条款。

通过上面的描述我们可以发现区块链技术具有分布式数据库、密码学、P2P网络等技术特点。区块链的这些技术特点,使得通过区块链技术可以构建一个去中心化的、安全的、对等的、不可更改的价值传播网络。这些技术通过精巧的组合之后,形成了一种全新的数据记录、传递、存储与展现的方式。以前数据的存储和维护都是由一个统一的中心机构来完成,而区块链技术可以让所有数据的参与方都有机会成为数据维护者。区块链技术在没有中央控制点的分布式对等网络下,使用分布式集体运作的方法,构建了一个P2P的自组织网络。通过复杂的校验机制,区块链数据库能够保持完整性、连续性和一致性,即使部分参与者作假也无法改变整个区块链的完整性,更无法篡改区块链中的数据。

现在我们可以对区块链的技术特点进行一下总结。区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链技术栈包含了以下技术特性:

● 分布式数据库的技术特性

● 密码学特性

● 共识机制

● 智能合约

1.2.2 区块链的分布式存储技术特性

从技术的特性上看,区块链具有分布式数据库技术的特点。传统的关系性数据库都必须满足ACID原则,ACID原则本质上是对事务而言的。在传统的关系型数据库中,事务是一个不能分割的操作单元。因此对于传统的关系数据库而言,事务必须具备以下四个特性:

● 原子性(Atomicity):事务中的所有操作要么全部执行,要么全部拒绝,没有任何中间状态;

● 一致性(Consistency):数据库的完整性约束不会被任何事务破坏;

● 隔离性(Isolation):多个事务完全隔离开来,一个事务的执行不会被其他事务所影响;

● 持久性(Durability):一个事务完成之后,该事务对数据库的变更会被永久地存在数据库中。

从ACID四个属性我们看出,区块链可以满足上面的部分特性。

● 原子性,区块链的数据存储在区块中,一个区块链中的数据要么全部进入区块链,要么全部被丢弃。

● 一致性,区块加入区块链之后原有的区块链保持不变。

● 隔离性,所有节点可以同时生成区块,但是最终只有一个区块可以加入区块链中。

● 持久性,一旦区块加入区块链中,就会被永久保存并复制到其他节点。

移动互联网对数据的存储数量以及数据的读写速度都提出了更高的要求,因此基于ACID的关系数据已经不能满足于业务的需求。相关技术社区在原有的ACID数据库的基础上面创建了分布式数据库系统。分布式数据库系统有这样一些特点,我们称之为BASE。BASE是一组单词的首字母缩写,它们是:

● 基本上可用(basically available):主要的需求是可用性,即使出现划分的情况下,也应该允许更新,哪怕以牺牲一致性为代价;

● 软状态(soft state):网络划分可能导致数据库每个副本都有一定程度不同的状态,从而导致整体状态不明;

● 最终一致性(eventually consistent):当解决完划分后,要求最终所有副本形成一致。

和ACID的强一致性概念比较,BASE面向的是可扩展的分布式系统。BASE在牺牲强一致性的基础上换取了可用性,允许在某个时间段内不同节点之间存在数据的不一致性,但是最终所有节点的数据都是一致的。而区块链的节点是分布在全世界各个地方的,在一定的时间段内,不同节点的区块数存在不一致的情况,但是最终都是一致的。所以我们认为区块链是符合分布式数据库BASE规则的。通过上面的对比我们发现,区块链符合传统的关系数据库和互联网时代的分布式数据库特性。

1.2.3 区块链的密码学技术特性

为了保证数据的不可逆、不可篡改和可追溯,区块链采用了一些密码学相关的技术。主要使用的是哈希算法、Merkle树、非对称加密算法这三种密码学中常用的技术。

1.哈希算法

哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果哈希一段明文而且哪怕只更改该段落的一个字母,随后的哈希值都会发生变化。要找到哈希值相同而输入值不同的字符串,在计算上是不可能的。所以数据的哈希值可以检验数据的完整性。在哈希算法中如果输入数据有变化,则哈希也会发生变化。哈希算法可用于许多操作,包括身份验证和数字签名(也称为“消息摘要”),不过一般用于快速查找和加密算法。

区块链的数据是存储在区块中的,每个区块都有一个区块头,区块头存储区块中所有数据经过哈希算法获取的一个哈希值,同时每个区块中存储前面一个区块的哈希值,这样每个区块都会通过所存储的前一个区块的哈希值串联起来,这样就形成了区块链。如果有人试图篡改其中的一笔交易,势必会导致该交易所在区块的哈希值发生变化,为了使得被篡改的交易得到所有节点的认可,篡改者需要以被篡改的节点为起点,重新计算后面的所有区块,但是如果要让所有的节点都承认和接受这些篡改,那基本上是不可能完成的事情了。从这里我们可以发现哈希算法的应用使得篡改的成本已经远远超过收益了。

区块链系统常用的哈希算法是SHA256和RIPEMD160。SHA256是SHA算法的一个变体。SHA(安全散列算法)是由美国国家安全局(NSA)设计,美国国家标准与技术研究院(NIST)发布的一系列密码散列函数,包括SHA-1、SHA-224、SHA-256、SHA-384和SHA-512等变体。这些算法主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。SHA256算法在抗碰撞性和效率之间做了一个平衡处理,在很多区块链系统中均支持SHA256哈希算法。

对于哈希算法来说,抗碰撞性越高,相对需要的计算资源越大,对系统性能也会有一定的影响。因此很多区块链系统可以通过配置参数修改算法,使用者可以根据业务需求选择合适的哈希算法。

2. Merkle树

通过前面的描述我们知道区块中的数据是存储在区块中的,一个区块中会存储若干数据,那么这些数据是以什么样的方式组织才能够做到不可篡改呢?Merkle树解决了这个问题。

(1)什么是Merkle树

Merkle树是一种树(数据结构中所说的树),通常称为Merkle Hash Tree。组成Merkle树的所有节点都是哈希值。Merkle树具有以下特点:

● Merkle树是一种树型数据结构,可以是二叉树也可以是多叉树,具有树型结构的所有特点;

● Merkle树的叶子节点上的value可以任意指定,比如可以将数据的哈希值作为叶子节点的值;

● 非叶子节点的value是根据它下面所有的叶子节点值,然后按照一定的算法计算得出的。如Merkle树的非叶子节点value是将该节点的所有子节点进行组合,然后对组合结果进行哈希计算所得出的哈希值。

(2)Merkle树的应用领域

目前,在计算机领域Merkle树多用来进行比对以及验证处理。比特币钱包服务用Merkle树的机制来做“百分百准备金证明”。在处理比对或验证的应用场景中,特别是在分布式环境下进行比对或验证时,Merkle树可以大大减少数据的传输量以及计算的复杂度。

(3)Merkle树的优点

Merkle树明显的一个好处是可以单独拿出一个分支(作为一个小树)来对部分数据进行校验,这个特性在很多使用场合可以带来哈希列表所不能比拟的方便和高效。

(4)Merkle树在区块链中的应用

在区块链中,区块中的交易是按照Merkle的形式存储在区块上面的。每笔交易都有一个哈希值,然后不同的哈希值向上继续做哈希运算,最终形成了唯一的Merkle根。这个Merkle根将会被存放到区块的区块头中。利用Merkle树的特性可以确保每一笔交易都不可伪造。

3.非对称加密算法

加密算法一般分为对称加密和非对称加密,非对称加密是指为满足安全性需求和所有权验证需求而集成到区块链中的加密技术。非对称加密通常在加密和解密过程中使用两个非对称的密码,分别称为公钥和私钥。非对称密钥对具有两个特点:一是用其中一个密钥(公钥或私钥)加密信息后,只有另一个对应的密钥才能解开;二是公钥可向其他人公开,私钥则保密,其他人无法通过该公钥推算出相应的私钥。

非对称加密一般划分为三类主要方式:大整数分解问题类、离散对数问题类、椭圆曲线类。大整数分解问题类指用两个较大的质数的乘积作为加密数,由于质数的出现具有不规律性,想要破解只能通过不断试算。离散对数问题类指的是基于离散对数的难解性,利用强的单向散列函数的一种非对称分布式加密算法。椭圆曲线类指利用平面椭圆曲线来计算成组非对称特殊值,比特币就使用此类加密算法。

非对称加密技术在区块链的应用场景主要包括信息加密、数字签名和登录认证等。其中信息加密场景主要是由信息发送者(记为A)使用接受者(记为B)的公钥对信息加密后再发送给B,B利用自己的私钥对信息解密。比特币交易的加密即属于此场景。数字签名场景则是由发送者A采用自己的私钥加密信息后发送给B,再由B使用A的公钥对信息解密,从而可确保信息是由A发送的。登录认证场景则是由客户端使用私钥加密登录信息后发送给服务器,后者接收后采用该客户端的公钥解密并认证登录信息。

存储在区块链上的交易信息是公开的,但是账户身份信息是高度加密的,只有在数据拥有者授权的情况下才能访问,从而保证了数据的安全和个人的隐私。区块链系统每个用户都有一对秘钥,一个是公开的,一个是私有的。通常公钥的密码算法采用的是椭圆曲线算法。用户可以通过自己的私钥对交易进行签名,同时别的用户可以利用签名用户的公钥对签名进行验证。

椭圆曲线指的是由韦尔斯特拉斯(Weierstrass)方程y2+a1xy+a3y=x3+a2x2+a 4x+a6所确定的平面曲线。若F是一个域,aiF, i=1,2,…,6。满足式(1-1)的数偶(x,y)称为F域上的椭圆曲线E的点。F域可以是有理数域,还可以是有限域GF(Pr)。椭圆曲线通常用E表示。除了曲线E的所有点外,尚需加上一个叫作无穷远点的特殊点O。在椭圆曲线加密(ECC)中,利用了某种特殊形式的椭圆曲线,即定义在有限域上的椭圆曲线。其方程如下:

这里p是素数,ab为两个小于p的非负整数,它们满足:

其中,xyabFp,则满足式(1-2)的点(xy)和一个无穷点O就组成了椭圆曲线E

椭圆曲线离散对数问题ECDLP定义如下:给定素数p和椭圆曲线E,对Q = kP,在已知PQ的情况下求出小于p的正整数k。可以证明,已知kP计算Q比较容易,而由QP计算k则比较困难,至今没有有效的方法来解决这个问题,这就是椭圆曲线加密算法原理之所在。与RSA算法相比,椭圆曲线公钥系统是代替RSA的强有力的竞争者。椭圆曲线加密方法的优点总结如下:

● 安全性能更高,如160位ECC与1024位RSA、DSA有相同的安全强度。

● 计算量小,处理速度快,在私钥的处理速度上(解密和签名),ECC远比RSA、DSA快得多。

● 存储空间占用小,ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多,所以占用的存储空间小得多。

● 带宽要求低,使得ECC具有广泛的应用前景。

ECC的这些特点使它必将取代RSA,成为通用的公钥加密算法。比如SET协议的制定者已把它作为下一代SET协议中缺省的公钥密码算法。

利用椭圆曲线的签名和验证算法,可以保证账号的唯一性和不可冒名顶替性,同时也保证了用户的不可抵赖性。通过这些密码学技术的应用可以使得区块链技术在没有中心服务器的情况下做到数据的不可逆和不可篡改。

1.2.4 区块链中的共识机制

区块链中的一个核心概念是去中心,在区块链中没有和传统数据库系统一样的中心数据库,每个节点都是对等的,这样就需要一套算法和机制来保证所有对等节点之间可以有效协作。这套算法和方式称为共识机制。共识机制的存在可以有效保证各个节点之间按照既定的原则共同维护账本。共识机制本质上是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。共识算法在区块链技术出现之前就已经存在,最早出现在分布式系统中。目前区块链系统中常用的共识算法有PWO(工作量证明)、POS(股权证明机制)、DPOS(授权股权证明)、PBFT(拜占庭共识算法)。

1. POW——工作量证明机制

工作量证明(Proof Of Work, POW),简单理解就是一份证明,用来确认你做过一定量的工作。监测工作的整个过程通常是极为低效的,而通过对工作的结果进行认证来证明完成了相应的工作量,则是一种非常高效的方式。比如现实生活中的毕业证、驾驶证等,也是通过检验结果的方式(通过相关的考试)所取得的证明。

工作量证明系统主要特征是客户端需要做一定难度的工作得出一个结果,验证方却很容易通过结果来检查出客户端是不是做了相应的工作。这种方案的一个核心特征是不对称性:工作对于请求方是适中的,对于验证方则是易于验证的。它与验证码不同,验证码的设计出发点是易于被人类解决而不易被计算机解决。

举个例子,给定一个基本的字符串“study blockchain! ”,我们给出的工作量要求是,可以在这个字符串后面添加一个整数值,对变更后的字符串进行SHA256哈希运算,如果得到的哈希结果(以十六进制的形式表示)是以“0000”开头的,则验证通过。为了达到这个工作量证明的目标。我们需要不停地递增这个整数的值,对得到的新字符串进行SHA256哈希运算。按照这个规则,我们需要经过79505次计算才能找到恰好前4位为0的哈希散列。

"study blockchain!0" => 199dd3e519f1e170e0eea67744547ffea5a435e4ddacaf0ada859b 972091ac7d "study blockchain!1" => 91de0a6ce666ee00ee8cb5893cc843b84001a4c9ffac5bc 3168b3c6c6f604217 "study blockchain!2" => 86d4fc2522d934af711049e4bd488a50a86bf2d6 57f1d9e1871c9f25d4f6ea2b ... "study blockchain!79505" => 000024f2c9e0e1cf93ef68fde a6c60e4dd0498d41aa82473c41c2f1b022b4ca1

通过这个示例我们对工作量证明机制有了一个初步的理解。有的人会认为如果工作量证明只是这样的一个过程,那是不是只需要记住字符串后面的数字为79505计算能通过验证就行了?当然不是的,这是一个非常简单的例子,实际会增加很多的参数来调节计算的难度。

比特币系统的共识机制就是基于POW算法的,但是远远比上面的例子要复杂得多。比特币网络中任何一个节点如果想生成一个新的区块并写入区块链中,必须解出比特币网络给出的工作量证明的谜题。这道题关键的三个要素是工作量证明函数、区块及难度值。工作量证明函数是这道题的计算方法,区块决定了这道题的输入数据,难度值决定了这道题所需要的计算量。

2. POS——股权证明机制

股权证明机制的基本概念是产生区块的难度应该与你在网络里所占的股权(所有权占比)成比例。简单来说POS就是一个根据你持有货币的量和时间给你发利息的一个制度。在POS模式下有一个名词叫币龄,每个币每天产生1币龄。比如你持有100个币,总共持有了30天,那么此时你的币龄就为3000。这个时候如果你发现了一个POS区块,你的币龄就会被清空为0。你每被清空365币龄,你将会从区块中获得0.05个币的利息(可理解为年利率5%)。那么在这个案例中,利息= 3000*5%/365 = 0.41个币,这样只要持有货币就可以获取利息(需要注意的是,5%的年利率仅仅是我们举例,并非每个POS模式的币种都是5%)。

POS的设计理念以及初衷主要是基于以下三个原因:

第一:众所周知,比特币的区块产量每4年会减半,未来随着比特币区块包含产量的逐步降低,挖矿的动力将会不断下降,矿工人数越来越少。整个比特币网络有可能会逐渐陷入瘫痪(因为大家都减少了运行比特币客户端的时间,越来越难找到一个P2P节点去连接和同步网络数据)。针对这个问题,POS提供了解决方案:在POS体系中只有打开钱包客户端程序才能发现POS区块,才会获得利息。这促使很多不想挖矿的人也会常常打开自己的钱包客户端,通过这样的方法使得整个网络更加健壮。

第二:通过比特币的原理我们知道在若干年后随着矿工人数的下降,比特币很有可能被一些高算力的人、团队或者矿池所挟持,进而进行51%攻击。这会导致整个比特币网络崩溃。51%攻击简单来说就是当你拥有了超过全球51%的比特币算力时,你将能伪造比特币网络的任何数据。比如你伪造自己有一百万个比特币(实际上你没有),你可以通过你的算力强迫其他节点接受你的虚假交易,但是这样将导致整个体系的崩溃。针对这个问题,POS的解决方案是:在POS体系中即使你拥有了全球51%的算力也未必能够进行51%攻击。因为有一部分的货币并不是挖矿产生的,而是由利息产生(利息存放在POS区块中),这要求攻击者还需要持有全球超过51%的货币量,这将大大提高51%攻击的难度。

第三:虽然我们知道比特币是一个永远不会通货膨胀的体系,因为它的货币总量表面看起来是固定的,但是我们应该知道比特币其实是一个通货紧缩的体系。因为当我们重装了系统或者忘记了钱包密钥的时候,我们会永远无法再拿回钱包里的钱。这意味着每年都会有一些比特币随着钱包的丢失而永远被锁定,这就形成了实质上的通货紧缩。也许在五十年后,有效的比特币将会只剩下一千万个或者更少。POS部分解决了这个问题,在POS体系中由于一部分货币是由利息产生的,因此整个体系中会不断地产生新的货币。

3. DPOS——委托权益证明

在区块链中共识算法被用来保证整个区块链网络的安全可靠。在前面我们介绍了工作量证明(POW)和权益证明(POS)这两种共识算法。但是这两种共识算法都不能解决交易性能问题,尤其是POW算法大量消耗计算所需的电力。而委任权益证明(DPOS)共识算法正是为了解决这些问题而诞生的。

委任权益证明(Delegated Proof of Stake, DPOS)最初由比特股(BitShares)提出并采用。目前DPOS已经在除了比特股之外的多个区块链技术平台上面可靠运行。这足以证明DPOS算法是健壮、安全和有效的。在DPOS算法中持有一定数据量货币的可成为股东,每个股东按其持股比例拥有影响力。超过51%股东投票的结果将是不可逆且有约束力的。为达到这个目标,每个股东可以将其投票权授予一名代表。获票数最多的前100位代表按既定时间表轮流产生区块。每名代表分配到一个时间段来生产区块。所有的代表将收到等同于一个平均水平的区块所含交易费的1%作为报酬。如果一个平均水平的区块含有100股作为交易费,一名代表将获得1股作为报酬。网络延迟有可能使某些代表没能及时广播他们的区块,理论上将导致区块链分叉。但是这种现象在DPOS算法中不太可能发生,因为制造区块的代表可以与制造前后区块的代表建立直接的联系。建立这种与你之后的代表(也许也包括其后的那名代表)的直联系是为了确保你能得到报酬。这种模式可以每30秒产生一个新区块,并且在正常的网络条件下区块链分叉的可能性极其小,即使发生也可以在几分钟内得到解决。由此可见DPOS算法是对POS算法的有效补充。

4. PBFT——拜占庭共识算法

PBFT算法是根据拜占庭问题演变而来的拜占庭共识算法。在拜占庭问题被提出后一直有各种共识算法来解决拜占庭问题,但是无论从执行流程的复杂度还是算法效率来说,PBFT是目前公认效率最好的算法。该算法是Miguel Castro(卡斯特罗)和Barbara Liskov(利斯科夫)在1999年提出来的。PBFT算法有效地解决了原始拜占庭容错算法效率不高的问题,将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行。

关于拜占庭将军问题,一个简易的非正式描述如下:

 

拜占庭帝国想要进攻一个强大的敌人,为此派出了10支军队去包围这个敌人。这个敌人虽不比拜占庭帝国,但也足以抵御5支常规拜占庭军队的同时袭击。基于一些原因,这10支军队不能集合在一起单点突破,必须在分开的包围状态下同时攻击。他们任一支军队单独进攻都毫无胜算,除非有至少6支军队同时袭击才能攻下敌国。他们分散在敌国的四周,依靠通信兵相互通信来协商进攻意向及进攻时间。困扰这些将军的问题是,他们不确定队伍中是否有叛徒,叛徒可能擅自变更进攻意向或者进攻时间。在这种状态下,拜占庭将军们能否找到一种分布式的协议来让他们能够远程协商,从而赢得战斗?这就是著名的拜占庭将军问题。

 

应该明确的是,拜占庭将军问题中并不去考虑通信兵是否会被截获或无法传达信息等问题,即消息传递的信道绝对可靠。Lamport已经证明了在消息可能丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。所以,在研究拜占庭将军问题的时候,我们已经假定了信道是没有问题的,并在这个前提下,去做一致性和容错性相关研究。

5. Casper——投注共识

Casper是以太坊提出的下一代的共识机制,从原理上看,Casper属于POS。Casper的共识是按块达成的,而不是像POS那样按链达成。为了防止验证人在不同的世界中提供不同的投注,这里还有一个简单严格的条款:如果你有两次投注序号一样,或者说你提交了一个无法让Casper合约处理的投注,你将失去所有保证金。从这一点我们可以看出,与传统的POS不同,Casper有惩罚机制,这样非法节点通过恶意攻击网络不仅得不到交易费,还面临着保证金被没收的风险。

6. Ripple Consensus——瑞波共识算法

瑞波共识算法使一组节点能够基于特殊节点列表达成共识。初始特殊节点列表就像一个俱乐部,要接纳一个新成员必须由该俱乐部51%的会员投票通过。共识遵循这核心成员的51%权力,外部人员则没有影响力。由于该俱乐部由“中心化”开始,它将一直是“中心化的”,如果它开始腐化,股东们什么也做不了。瑞波系统将股东们与其投票权隔开,并因此比其他系统更中心化。

7. POET——消逝时间量证明

POET(Proof of Elapsed Time)共识算法的大致思路是这样的,每个节点发布块之前都要从一个enclave(在Sawtooh中它代表一个可信操作)获取一个随机的等待时间,等待时间最短的率先发布块(相当于被选为leader),其中enclave是通过新型的安全CPU指令来实现的。enclave支持两个函数“CreateTimer”和“CheckTimer”, CreateTimer用于从enclave中产生一个timer, CheckTimer会去校验这个timer是不是由enclave产生、是否已经过期。如果满足以上两个条件就会生成一个attestation(凭证)。attestaion中包含的信息可以用来校验certificate是否由该enclave产生并且已经等待了timer规定的时间。成为leader的概率与捐献的资源是成比例的,因为是通用处理器而不需要定制矿机,所以参与的门槛比较低,节点会比较多,整个共识会更健壮。

在前面的内容中我们简单地介绍了区块链常用的共识算法。不同的区块链平台根据自身的技术特点采用了不同的共识算法。但是有一点需要说明一下,这些共识算法是区块链的底层核心,在一个已经实现的区块链技术平台中,共识算法相关的模块都已经实现,在实际项目开发不会需要架构师或者开发人员去实现这些算法,但是了解这些算法将有助于我们更好地设计基于区块链的系统架构。

1.2.5 区块链中的智能合约

提到智能合约首先需要说明的是,智能合约和区块链原本是两个独立的技术。在区块链诞生之初并没有引入智能合约的概念。比如,在以比特币为代表的区块链1.0系统中并没有智能合约的概念。随着区块链技术的发展,人们发现区块链在价值传递的过程中需要有一套规则来描述价值传递的方式,这套规则应该让机器来识别和执行而不是人,因此智能合约进入了人们的视线之内。以太坊的出现让这种假设成为可能,而实现的方式正是依靠智能合约。

智能合约的理念可以追溯到1995年,几乎与互联网同时出现。密码学家尼克·萨博(Nick Szabo)首次提出了“智能合约”这一术语。从本质上讲,这些自动合约的工作原理类似于其他计算机程序的if-then语句。智能合约只是以这种方式与真实世界的资产进行交互。当一个预先编好的条件被触发时,智能合约执行相应的合同条款。

但是在尼克·萨博提出智能合约的工作理论后,智能合约相关的技术迟迟无法落地,而且很长时间也没有相关的产品问世。产生这种现象的一个重要原因是因为缺乏能够支持可编程合约的数字货币系统和技术。区块链技术的出现解决了该问题,它不仅可以支持可编程合约,而且具有去中心化、不可篡改、过程透明可追踪等特性,这些特性天然适用于智能合约。目前智能合约技术已经成为区块链技术的必备特性之一。

在区块链2.0引入智能合约之后,区块链真正地脱离了数字货币的枷锁,成为一个独立的技术。因为智能合约的引入,区块链可以应用在更加广泛的场景中。智能合约可以认为是区块链技术的翅膀,让区块链飞得更高更远。既然智能合约对区块链如此重要,那么智能合约到底是什么呢?

智能合约本质上就是一段用某种计算编程语言编写的程序,这段程序可以运行在区块链系统提供的容器中,同时这段程序也可以在某种外在、内在条件的激活下自动运行。这样的特性和区块链技术结合之后不但可以避免人为对规则的恶意篡改,而且可以发挥智能合约在效率和成本方面的优势。由于智能合约的代码是存放在区块链中,智能合约的运行也是在区块链系统提供的容器之中的,结合区块链技术所使用的密码学原理,使得智能合约天然具有防篡改和防伪造的特性。智能合约产生的结果也是存储在区块中的,这样从源头、执行过程到结果全程都在区块链中执行,保证了智能合约的发布、执行、结果记录的真实性和唯一性。

智能合约技术首先在以太坊得以实现,在超级账本的Fabric项目也引入了智能合约的概念。在后续章节中将详细介绍如何在这些平台中通过智能合约开发应用。

1.3 区块链技术演进过程

通过上面的介绍我们可以发现区块链技术为了使用新的业务场景而一直在改进中。到目前为止区块链技术已经进入3.0时代。

● 区块链1.0仅仅是一个共享账本,只能记账而没有其他功能。

● 区块链2.0在共享账本的基础上增加了智能合约,通过智能合约可以提供更加丰富的功能。

● 区块链3.0进一步升级,不但能够记录交易还能记录状态,对数据进行溯源,使区块链技术不再局限于数字货币,而是应用在更多的行业场景中。

区块链的三个版本之间并没有取代关系,每个版本都有自己的特点,它们之间没有必然的关系并且是相互独立的。到目前为止,每个版本的区块链技术依然在各自擅长的领域发挥着重要的作用,有很多经典的应用在运行。本书将挑选其中比较有代表性的比特币和以太坊作为代表,为大家介绍这两个平台的技术特性和使用方法。

1.4 区块链技术的3个缺点

区块链技术虽然有美好的未来和前景,但是作为一项新兴的技术,和其他技术一样,会有一个完善的过程。目前的区块链系统还有一些不足和需要改进的地方,主要有以下几个问题。

1.性能问题

区块链由于其在数据完整性和不可篡改性等方面的特殊要求,每笔交易均需要打包到区块中,然后通过计算每笔交易的Hash值,从而构造一个完整的Merkle树,最终将交易保存到区块中。这样的处理方式保证了数据的安全性和完整性,但是速度会大幅下降。以比特币系统为例,目前比特币系统每秒只能处理大约10笔交易,这显然是不能满足实际的业务需求的。虽然针对性能问题也提出了很多解决方案,比如闪电网络、石墨烯等技术,但是这些技术方案大多数还处于技术验证中,距离实际的应用还有一段距离。

2.数据的弹性扩展问题

区块链系统具有分布式系统的特性,但是到目前为止,区块链系统只能做到节点的分布式,在数据存储上还没有提供可靠的分布式解决方案。比如比特币的所有交易数据已经多达150G左右,并且只能部署在单台机器上。随着时间的推移,这些交易数据只增不减,为了应付不断增长的交易数据,只能不断增加单台主机的存储。这种存储方式在遇到存在海量数据的业务场景中会带来隐患。

3.易用性问题

区块链技术是新兴技术,虽然单个技术已经出现很久,但是这些技术组合之后产生了很多新的特性。目前技术社区普遍还处于早期阶段,相关的案例、技术文档、技术社区等普遍比较缺失。这些因素导致了区块链技术在学习、推广、落地方面出现了不同程度的障碍。这些障碍的解决还需要整个技术社区继续努力。

1.5 区块链技术常见的4个错误认识

1.区块链就是数字货币

区块链技术源于比特币,可以说比特币是一个成功的区块链应用。不仅仅是比特币,目前的以太币等数字货币都是基于区块链理论而实现的区块链产品,但是区块链和数字货币之间不能画上等号。区块链是一个由多技术组成的技术栈,而数字货币是基于区块链技术的一个产品,区块链除了在数字货币领域之外在很多其他的领域都有应用。

2.区块链将取代传统的数据库

区块链具有分布式数据库的特性,但是区块链绝不是为了取代传统的数据库系统。它们解决的问题是不一样的。在未来二者之间更多的是合作的关系。

3.区块链系统是否一定要挖矿

挖矿是POW共识算法中的一个行为,是比特币等数字货币对POW算法的一种实现方式,但是挖矿绝对不是区块链的必需品。不是所有的区块链技术平台都需要挖矿。比如Fabric就没有采用POW的共识机制,也就没有挖矿这一说了。目前的主流平台中以太坊在将来也可能会支持POS的共识算法。

4.区块链只能用来记账

区块链技术源于比特币,而比特币是一个数字货币系统,所有的记录都是和交易相关的,因此自然就把这些数据集称为账本。在比特币之后的区块链系统中习惯把区块链中存数据的集合称为账本,把每一条数据集称为交易。包括很多区块链系统的源码中涉及数据存储和单条数据的变量命名中都包括Ledger和Transaction等单词。这样给人的感觉是区块链是用来记账的。这其实是个误会,区块链技术发展到今天,其应用范围远远超出了数字货币的范畴,在很多领域均有广泛的应用。而且区块链中存储的数据可以是任何数据,甚至包括图片和视频。

1.6 区块链技术的应用领域

随着区块链技术的成熟和普及,很多行业都在积极探索利用区块链技术来解决本行业的痛点问题。目前区块链技术主要在以下几个行业得到了相对广泛的应用。

1.6.1 区块链在金融行业的应用

区块链源于比特币,而比特币本身具有货币属性,因此区块链和金融服务有天然的结合点。不仅如此,由于区块链技术所拥有的高可靠性、简化流程、交易可追踪、节约成本、减少错误以及改善数据质量等特质,使得其具备重构金融业基础架构的潜力。

1.金融行业痛点

目前金融行业最大的问题是每个机构都有自己的账本,机构之间在进行业务对接的时候需要进行大量的对账、清算、结算等操作,这些操作都需要耗费大量的人力和物力。这不仅导致了用户端和金融机构中后台业务端等产生的支付业务费用高昂,也使得小额支付业务难以开展。在票据及供应链金融领域,业务因人为介入多,存在许多违规事件及操作风险。票据业务创造了大量流动性的同时,相关市场也容易滋生出违规操作或用户欺诈行为,进而导致商业银行的汇票业务事件集中爆发。

国内现行的汇票业务仍有约70%为纸质交易,操作环节处处需要人工,并且因为涉及较多中介参与存在管控漏洞、违规交易的违规操作从而提高了风险。同时由于机构之间的信息不对称很容易导致凭证伪造事件的发生。在证券领域,证券交易生命周期内的一系列流程耗时较长,增加了金融机构中后台的业务成本。在清算和结算领域,由于不同金融机构间的基础设施架构、业务流程各不相同,同时在具体操作过程中涉及很多人工处理的环节,这些因素极大地增加了业务成本同时也容易出现差错。在用户身份识别领域,不同金融机构间的用户数据难以实现高效的交互,使得重复认证成本较高,间接带来了用户身份被某些中介机构泄露的风险。

2.区块链在金融行业的作用

区块链技术通过密码学原理从底层解决了数据的不可篡改和可追溯特性,利用这些特性监管机构可以非常方便地对整个交易过程实施精准、及时的监管。在事后追责的时候可以快速精准地获取证据。同时由于区块链是一个对等的共享账本,价值可以直接通过区块链进行安全高效的转移,这些特性可以节省大量清算以及结算相关的费用并且简化流程。

3.区块链在金融行业的应用场景

应用场景1:支付

在支付领域区块链可以摒弃中转银行的角色,实现点对点快速且成本低廉的跨境支付。通过区块链的平台不但可以绕过中转银行以减少中转费用,还因为区块链安全、透明、低风险的特性提高了跨境汇款的安全性。同时由于区块链去中心化的特性可以加快结算与清算速度以提高资金利用率。在未来银行与银行之间可以不再通过第三方而是通过区块链技术以点对点方式进行支付。由于省去第三方金融机构的中间环节,不但可以实现全天候支付、实时到账,而且有助于降低跨境电商资金风险及满足跨境电商对清算服务及时性、便捷性的需求。

应用场景2:票据与供应链金融业务

区块链可以实现票据价值传递的去中介化。长久以来票据的交易一直存在一个第三方的角色来确保有价凭证的传递是安全可靠的。在纸质票据中交易双方的信任建立在票据真实性的基础上,即使在现有电子票据交易中,也是需要通过央行ECDS系统的信息进行交互认证。但借助区块链的技术可以直接实现点对点之间的价值传递,不需要特定的实物票据或中心系统进行控制和验证。在供应链金融中也能通过区块链减少人工成本、提高安全度以及实现端到端的透明化。未来通过区块链技术供应链金融业务将能大幅减少人工的介入。所有参与方(包括供货商、进货商、银行)都能使用一个去中心化的账本共享文件并在达到预定的时间和结果时通过智能合约自动进行支付,这样将极大地提高效率并且能有效地减少交易中由于人工误操作而造成的损失。

1.6.2 区块链在供应链中的应用

产品从生产到销售,从原材料到成品直至最后抵达客户手里这个过程中涉及的所有环节都属于供应链的范畴。在供应链领域中多流程、多参与方的特性给区块链切入供应链系统提供了天然的基础。

1.供应链行业的痛点

目前供应链系统中可能涉及几百个加工环节,几十个不同的地点,数目庞大的节点给供应链的追踪管理带来了很大的困难。由于供应链的整个过程并不公开,因此消费者没有办法确切核实所购买产品的真正价值,这也就意味着产品的价格是否与其价值相符我们也无从得知。此外供应链过程中若出现了非法经营活动时,执法人员该从哪里开始调查、该向谁问责一切都不容易。这些弊端直接导致了市面上仿冒产品泛滥,工厂老板强迫工人超负荷工作,工厂卫生条件不合格等违规现象的发生。

2.区块链在物流行业中的应用

区块链作为一种分布式总账系统能够提高行业的透明度和安全性。相关专家看好区块链技术,相信它能够解决供应链目前存在的问题。区块链技术可以在不同分类账上记录下产品在供应链过程中涉及的所有信息,这些信息包括负责企业、价格、日期、地址、质量,以及产品状态等有用信息。由于共享账本具有可查询的特点,因此当客户想了解产品的时候只要查找相关分类账,这样无论是产品的原材料、产品整个加工工艺等信息都可以搜查到。因为分布式账本的分散性特点,相关厂家想要篡改产品数据几乎是不可能的。由于交易过程中所有的数据都是加密保护的,所以数据被窃取的问题是可以避免的。基于上述特性,我们认为区块链技术是改进供应链问题的最佳技术之一。

3.区块链在物流行业的应用场景

应用场景1:物流

在物流过程中利用数字签名和公私钥加解密机制可以充分保证信息安全以及寄、收件人的隐私。例如,快递交接需要双方私钥签名,每个快递员或快递点都有自己的私钥,是否签收或交付只需要查一下区块链即可。最终用户没有收到快递就不会有签收记录,快递员也无法伪造签名,因此通过区块链可杜绝快递员通过伪造签名来逃避考核的行为,在减少用户投诉的同时还能有效地防止货物的冒领和误领。由于区块链的匿名性,真正的收件人并不需要在快递单上直观展示实名制信息,因此个人信息得到了保障。通过区块链技术的安全性,更多人会愿意接受实名制,从而促进国家物流实名制的落实。最后利用区块链技术中的智能合约功能,可以有效地简化物流程序并且大幅度提升物流的效率。

应用场景2:溯源防伪

区块链技术也可用于药品、艺术品、收藏品、奢侈品等的溯源防伪。我们以钻石为例,可以在钻石身份认证及流转过程中为每一颗钻石建立唯一的电子身份。同时记录每一颗钻石的属性并存放至区块链中。这样这颗钻石的来源、流转历史记录、归属或者所在地会被记录在链中,而且区块链中的数据天然具有防篡改性。通过区块链记录钻石的属性信息,在遇到诸如非法的交易活动或者欺诈造假的行为时,可以非常容易地通过区块链中的数据快速识别这些非法行为。

1.6.3 区块链在公证领域的应用

公证是公证机构根据自然人、法人或者其他组织的申请,依照法定程序对民事法律行为,有法律意义的事实和文书的真实性、合法性予以证明的活动。公证最核心的一点是存证信息的完整性和抗篡改性。由于区块链天然具备数据不可逆不可篡改的特性,因此区块链技术是非常适合公证系统的。

1.公正领域的行业痛点

传统公证存在手续繁琐、处理低效等痛点。在当前中心化系统框架下的中心数据库承受着日益增长的数据存储和安全维护的双重压力。在公证行业内部、公证行业与其他部门之间的信息沟通、信息共享和信息协作中存在交流不够充分等问题。同时公证行业的业务领域由于面临国家政策调整等原因,导致一部分原有业务下滑和费用调整。还有电子存证业务开展受到第三方存证公司业务挑战,互联网公证也存在难以实现等问题。

2.区块链在公证领域中的应用

区块链具有信息不可篡改、数据加密保存、所有节点保存完整副本等特点。这些特点具有天然帮助解决传统公证行业的困难和业务新诉求的属性。首先,区块链的去中心化决定了它的安全性和可扩展性,公证数据存储的难题在区块链技术下迎刃而解。其次,区块链可以提高公证业务网络服务平台的信息流畅性,在对个人隐私进行保护的同时提高办证效率。同时,区块链能从技术上保障在线和远程监管办证的质量。区块链还能实现有效监管公证业务的质量,做到责任追溯时有据可依。最后,区块链能够推进信息互联共享,进一步加强公证处与外部机构的协调沟通,为办理公证业务提供有效的信息核实手段等。通过区块链这个“创造信任的机器”结合原有被国家法律赋予的国家公信力可以达到“双信合一”,实现“政策+科技”的双重增信。

3.区块链在公证行业的应用场景

应用场景1:证书公证

区块链技术可以有效地解决证书公证中存在的问题。以学历证书为例,在应聘、考评等情况下,需对学历或所持毕业证书(学位证书)的真实性、合法性予以证明。尤其是在涉外学历证书时,对证书公证的需求更为频繁。但是目前中心化的证书验证平台给证书的伪造和篡改提供了可乘之机。如果将证书信息存放在区块链中,利用区块链的数据加密存储和数据不可逆的特性可以有效防止证书被篡改。同时由于区块链分布式总账的特性,相关合作机构可以通过部署节点的方式同步数据,这样即防止了相关机构篡改证书同时还可以提高证书的访问效率。

应用场景2:法律证据公证

对于经济体而言,每一份合同都可能成为日后的重要证据,对合同进行公证将极大有利于其法律权益的伸张。对于个人而言,取得关键法律证据的公证成为保护自身合法权益的关键,例如遗嘱公证以及语音、邮件、微信、微博等各种类型的法律证据,都是法律申诉的有力证据。律师作为专业法律咨询服务提供者,单位时间的效率十分重要,但往往由于“取证难”而耗费大量宝贵时间。如果有一种便利、简单的取证工具,将极大有利于个体合法权益的保护以及提升律师工作效率。区块链天生具有解决这些问题的属性。区块链中数据的防篡改和不可逆的特性可以有效避免伪造证据,同时由于区块链中的数据是所有参与方共同维护的,因此可以让所有参与方共同维护同一份证据链,这样能有效地避免单个证据的孤立性和证据链的断裂。

1.6.4 区块链在数字版权领域的应用

随着互联网特别是移动互联网的发展,数字出版已经形成较为完整的产业链,通过相关产业链网络作家可以获取可观的收入。但是目前数字版权的保护并没有得到很好的发展,数字内容的盗版现象非常严重。区块链技术的出现为数字版权的发展带来契机。

1.数字版权行业的痛点

随着知识经济的兴起,知识产权已成为市场竞争力的核心要素。互联网是知识产权保护的前沿阵地,但当下的互联网生态里知识产权侵权现象非常严重,网络著作权官司纠纷频发。这些问题严重侵蚀原创精神,同时针对盗版问题也存在举证困难、维权成本过高等客观因素。因此侵权和盗版问题成为内容产业的尖锐痛点。侵权盗版制约着相关行业的进一步发展,同时各参与方都深受其害,其中作者等内容生产方一直处于弱势地位,缺少相应的话语权和主导权,创作积极性倍受打击。面对这些问题国家非常重视,各种政策和扶持计划频出,重拳解决版权保护难题。但是限于技术手段很难从根本上解决。

2.区块链在数字版权中的应用

区块链基于数学原理解决了交易过程中所有权确认的问题,在价值交换活动中产生的记录及其记录都是可信的。区块链记录的信息一旦生成将永久记录并且无法篡改,除非能拥有全网络总算力的51%以上,才有可能修改最新生成的一个区块记录。这些特性可以保证数字版权的拥有者能够支配自己的智力成果。同时还可以借助区块链的账本属性在区块链中直接将自己的数字资产进行交易。

3.区块链在数字版权的应用场景

应用场景1:图书出版

区块链应用在图书出版行业中可以有效地保护图书的版权信息。图书在出版之前可以在区块链版权系统中进行相关版权信息的登记即确定了作品归属,相当于为原创内容登记了一张“数字身份证”。这样从源头保护原创版权,为后续的维权以及版权变现等需求打下良好的基础。

应用场景2:音乐创作

音乐行业的市场规模巨大,但在传统模式下音乐人很难获得合理的收益。利用区块链技术使音乐整个生产和传播过程中的收费和用途都是透明并且真实的,这样能有效确保音乐人直接从其作品的销售中获益。另外,音乐人跨过出版商和发行商,通过区块链平台自行发布和推广作品,不但不需要担心侵权问题还能更好地管理自己的作品。

1.6.5 区块链在保险行业的应用

近年来借助互联网的东风,保险行业得到了快速的发展,但是在高速发展的同时由于互联网天生的缺陷也带来了诸如欺诈、骗保等负面影响。保险行业在呼唤新技术能够解决这些问题。区块链的出现在某种程度上让保险行业有了二次腾飞的翅膀。

1.保险行业的痛点

保险行业中保险公司要接触大量的C端用户,会花费大量的时间和精力收集和甄别客户信息。这些步骤直接导致了用户身份认证非常困难。目前的保险数据都是采用中心化数据库的存储方式,因此存在单一节点易被控制等隐患。保险公司在承保和理赔的过程中掌握了客户大量诸如身份、医疗健康等敏感信息,这些信息一旦泄露会给保险公司和投保人带来非常严重的后果。

2.区块链在保险行业中的应用

区块链技术的安全、信任、自动化、可追溯性等特点可以应用于保险行业的承保管理、运营风险管控、客户服务、信息安全、保险反欺诈等领域。同时区块链技术也给保险行业在商业模式创新等方面提供了一个不同的视角和全新的实现路径。区块链将成为保险创新的新动力。首先,区块链技术可以数字化管理个人数据,精简的数字认证,通过区块链技术,保险公司与个人之间可以建立更直接、更有效的关系。其次,区块链能够进一步打破不同地域的地理隔阂,让保险的覆盖率可以从空间上进行调整,积极推动了金融的包容性。最后,区块链技术的出现可以促进合约自动化的进程,通过使用智能合约来实现效率的提升并使某些保险产品随着时间的推移实现自我管理。

3.区块链在保险行业的应用场景

区块链应用在保险行业中可以优化保险业务流程,助力保险服务体验升级。保险公司可提供用户信息,这些信息经过审查验证后写入区块链,购买不同保险时无须重复输入个人信息,在区块链上查询即可,这能大大缩短投保时间。区块链技术还可以实现自动理赔。利用区块链的智能合约技术可以将理赔条件编写在智能合约中,一旦达到特定出险条件,即可快速理赔。

利用区块链的共享账本特性可以加强行业信息共享,降低保险机构运营成本。利用区块链开源、透明的特点,可构建各保险机构为节点的联盟区块链,实现保险业信息的有效共享。例如在共保或再保情形下,保险事件发生后合同相关的所有保险人、再保险人、承保代理人均希望跟进理赔流程并开展谈判。若通过搭建区块链,将理赔文件编写入区块链,所有成员机构均能监测到理赔进展并参与更新,这样不仅能保证文件准确度更能极大缩短理赔时间,降低运营成本。

通过区块链还可以构建信用机制和安全体系,服务反保险欺诈和反洗钱等工作。区块链可追溯且不可篡改的特性,在反保险欺诈、反洗钱等领域将具有广泛应用。比如,可构建被保险人医疗信息区块链,经过授权的医院或医生把病人医疗信息写入区块链,保险公司在核保时通过查询被保险人的相应医疗信息,可避免带病投保、虚假赔案等欺诈行为。

1.6.6 区块链在公益慈善领域的应用

随着互联网技术的发展,社会公益的规模、场景、辐射范围及影响力得到空前扩大。“互联网+公益”、普众慈善、指尖公益等概念逐步进入公益主流。这些模式不仅丰富了传统慈善的捐赠方式,同时推动了公众的公益行为向碎片化、小额化、常态化方向发展。同时,各式各样的公益项目借助互联网实现丰富多彩的传播,使公益的社会影响力被成百倍地放大。

1.公益慈善领域的行业痛点

慈善机构要获得持续支持,就必须具有公信力,而信息透明是获得公信力的前提。公众关心捐助的钱款、物资发挥了怎样的作用。既要知道公益机构做了什么,也要知道花了多少,成本有多高。这种公信度的高低和公益的成效决定了公益机构能否获得公众的认同和持久支持。然而,在过去几年里公益慈善行业爆出的一些“黑天鹅”事件,极大地打击了民众对公益行业的信任度。公益信息不透明不公开,是社会舆论对公益机构、公益行业的最大质疑。公益透明度影响了公信力,公信力决定了社会公益的发展速度。信息披露所需的人工成本,又是掣肘公益机构提升透明度的重要因素。

2.区块链在公益慈善领域中的应用

区块链从本质上来说是利用分布式技术和共识算法重新构造的一种信任机制,是用共信力助力公信力。区块链上存储的数据高可靠且不可篡改,天然适合用在社会公益场景。公益流程中的相关信息,如捐赠项目、募集明细、资金流向、受助人反馈等,均可以存放于区块链上,在满足项目参与者隐私保护及其他相关法律法规要求的前提下,有条件地进行公开公示。

为了进一步提升公益透明度,公益组织、支付机构、审计机构等均可加入进来作为区块链系统中的节点,以联盟的形式运转,方便公众和社会监督,让区块链真正成为“信任的机器”,助力社会公益的快速健康发展。

区块链中智能合约技术在社会公益场景也可以发挥作用。对于一些更加复杂的公益场景,比如定向捐赠、分批捐赠、有条件捐赠等,就非常适合用智能合约来进行管理,使得公益行为完全遵从预先设定的条件,更加客观、透明、可信,杜绝过程中的猫腻行为。

3.区块链在公益慈善领域的应用场景

区块链与公益的结合,有丰富的应用场景和想象空间,目前已经有真实的应用案例投产上线。2016年7月,支付宝与公益基金会合作,在其爱心捐赠平台上设立了第一个基于区块链的公益项目,为听障儿童募集资金,帮助他们“重获新声”。在这次的项目中,捐赠人可以看到一项“爱心传递记录”的反馈信息,在进行了必要的隐私保护基础上,展示了自己的捐款从支付平台划拨到基金会账号,以及最终进入受助人指定账号的整个过程。通过区块链技术既保障了公益数据的真实性,又能帮助公益项目节省信息披露成本,充分体现出了区块链公益的价值。

1.6.7 区块链与智能制造

智能制造(Intelligent Manufacturing, IM)是一种由智能机器和人类专家共同组成的人机一体化智能系统,它在制造过程中能进行智能活动,诸如分析、推理、判断、构思和决策等。通过人与智能机器的合作共事,去扩大、延伸和部分取代人类专家在制造过程中的脑力劳动。在智能制造的过程中不存在传统制造中的设计图纸,所有的制作标准高度数字化。但是,另一方面数字化也带来了其他结果。在缺乏强大的数据保护框架之下,数字化的参数在传递的过程中存在数据失窃和被篡改的可能性。区块链技术能有效地避免这些问题的发生。

1.智能制造行业的痛点

实施智能制造的重点任务就是要实现制造企业内部信息系统的纵向集成,以及不同制造企业间基于价值链和信息流的横向集成,从而实现制造的数字化和网络化。在现实中由于制造设备和信息系统涉及多个厂家,原本中心化的系统主要采用人工或中央电脑控制的方式,实时获得制造环节中所有信息的难度很大。同时所有的订单需求、产能情况、库存水平变化以及突发故障等信息都存储在各自独立的系统中,而这些系统的技术架构、通信协议、数据存储格式等各不相同。这些因素都严重影响了互联互通的效率,也制约了智能制造在实际生产制造过程中的应用。

2.区块链在智能制造领域中的应用

利用区块链技术,可有效采集和分析在原本孤立的系统中存在的所有传感器和其他部件所产生的信息,并借助大数据分析,评估其实际价值。通过这些数据可以对后期制造过程进行预期分析,从而帮助企业快速有效地建立更为安全的运营机制。数据透明化使研发审计、生产制造和流通更为有效,同时也为制造企业降低了运营成本和制造成本,提升了良品率,使企业具有更高的竞争优势。智能制造的价值之一就是重塑价值链,而区块链有助于提高价值链的透明度、灵活性,并能够更敏捷地应对生产、物流、仓储、营销、销售、售后等环节存在的相关问题。

3.区块链在智能制造的应用场景

应用场景1:组建和管理工业物联网

组建高效、低成本的工业物联网,是构建智能制造网络基础设施的关键环节。在传统的组网模式下,所有设备之间的通信必须通过中心化的代理通信模式实现,设备之间的连接必须通过网络。这种模式极大提高了组网成本,同时系统的可扩展性、可维护性和稳定性都不是很好。区块链技术利用P2P组网技术和混合通信协议有效处理异构设备间的通信问题,将显著降低中心化的数据中心建设和维护的成本。同时区块链技术可以将计算和存储需求分散到组成网络的各个设备中,有效阻止了网络中任何单一节点的失败而导致整个网络崩溃的情况发生。另外,区块链中分布式账本的防篡改特性能有效防止工业物联网中任何单节点设备被恶意攻击和控制后带来的信息泄露和恶意操控风险。

应用场景2:生产制造过程的智能化管理

在传统的生产模式下,设备的操作、生产和维护记录是存储在单一、孤立的系统中,一旦出现安全和生产事故,企业、设备厂商和安全生产监管部门难以确保记录的真实性与一致性,也不利于后续事故的防范及设备的改进。利用区块链技术能够将制造企业中的控制模块、系统、通信网络、ERP等相关系统连接起来并通过统一的账本,让企业、设备厂商和安全生产监管部门能够长期、持续地监督生产制造的各个环节,从而提高生产制造的安全性和可靠性。同时,区块链账本记录的可追溯性和不可篡改性也有利于企业审计工作的开展,便于发现问题、追踪问题、解决问题以达到优化系统的目的。

1.6.8 区块链在教育就业中的应用

教育就业作为社会文化传授、传播的窗口,需要实现学生、教育机构以及用人就业单位之间的无缝衔接,以提高教育就业机构的运行效率和透明度。区块链系统的透明化、数据不可篡改等特征,完全适用于学生征信管理、升学就业、学术、资质证明、产学合作等方面,对教育就业的健康发展具有重要的价值。

1.教育行业的痛点

在教育就业行业中由于学生信用体系不完整导致未能建立学生相关信息的历史数据信息链和相关的数据维度。这些问题导致政府、企业无法获得完整有效信息,从而直接导致学生无法便捷、公平地享受应有的服务。在就业过程学历造假、论文造假、求职简历造假等现象的存在直接使得用人单位、院校缺乏有效的验证手段,进而降低了学校与企业间、院校与院校间的信任度。除此之外,一些学术性实验、跨校组织的公开课以及多媒体教学资源等在网络上产生版权和学术纠纷,这些纠纷对学者以及研究人员产生了消极影响,进一步削弱了高等学府对学术研究的积极性。

2.区块链在教育就业中的应用

利用区块链技术对现存运行方案的不足之处进行优化,能有效简化流程和提高运营效率,并且能及时规避信息不透明和容易被篡改的问题。利用分布式账本记录跨地域、跨院校的学生信息可以方便追踪学生在校园时期所有正面以及负面的行为记录,能帮助有良好记录的学生获得更多的激励措施,并构建起一个良性的信用生态。利用区块链技术可为学术成果提供不可篡改的数字化证明,为学术纠纷提供权威的举证凭据,降低纠纷事件消耗的人力与时间。同时,这种数字化证明可以与已有的应用无缝整合,为每一个文字、图片、音频、视频加盖唯一的时间戳身份证明,交叉配合生物识别技术,从根本上保障了数据的完整性、一致性以达到保护知识产权的目的。

3.区块链在教育就业的应用场景

应用场景1:教育存证

在教育存证领域,基于区块链的学生信用平台可创建含有基本信息的数字文件,然后使用用户的私钥对证书的内容进行签名,再对证书本身附加签名。依赖于生成的哈希值,可以验证证书内容是否被篡改。最后,再用私钥在区块链上创建一条数字记录,保证用户信息和证书内容的一致性。教育机构利用自己的私钥签署一份具有完整信息记录的数字证书,将其哈希值存储在区块链中,在每一次发放和查询时都会由智能合约触发相应的多重签名校验以确保记录不会被恶意查询,交易输出时将数字证书分配给需求方,如学生或者用人单位。

应用场景2:产学合作

产学合作是教育机构与用人单位之间多赢的机制,现在教育存在的问题之一就是封闭办学,即学生的技能信息、知识体系未与用人单位的技能需求、市场趋势保持信息对称。通过引入区块链技术实现学生技能与社会用人需求无缝衔接,可精确评估人才录用、岗位安排的科学性和合理性,有效促进学校和企业之间的合作。

1.7 区块链的其他常见技术框架

区块链技术从诞生至今,除了比特币之外,相关技术社区根据区块链技术原理已经实现了很多技术框架。在上文提到了区块链技术框架中极具代表性的三个技术框架,比特币、以太坊、超级账本。这三个技术框架会在后面章节中重点介绍,这里不再复述。除了这三个典型的技术框架之外,还有许多基于区块链基本原理实现的技术框架。这些框架都有自身的特点,每个框架解决问题的侧重点也是不一样的,我们选择其中比较有代表性的介绍给读者以供参考。

1. Corda

Corda是由R3CEV推出的一款分布式账本平台,其借鉴了区块链的部分特性,例如UTXO模型以及智能合约,但它在本质上又不同于区块链,并非所有业务场景都可以使用这种平台,Corda面向的是银行间或银行与其商业用户之间的互操作场景。

项目地址如下所示:

https://github.com/corda/corda

2. BigChainDB

BigChainDB填补了去中心生态系统中的一个空白,是一个可用的去中心数据库。它具有每秒百万次写操作、存储PB级别的数据和亚秒级响应时间的性能。BigChainDB的设计起始于分布式数据库,通过创新加入了很多区块链的特性,如去中心控制、不可改变性、数字资产的创建和移动。

BigChainDB继承了现代分布式数据库的特性:吞吐量和容量都是与节点数量线性相关,功能齐全的Nosql查询语言,高效的查询和权限管理。因为构建在已有的分布式数据库上,它在代码层面也继承了企业级的健壮性。可扩展的容量意味着具有法律效力的合同和认证可以直接存储在区块链数据库里。权限管理系统支持从私有企业级区块链数据库到开放公有的区块链数据库配置。BigChainDB是对于像以太坊这样的去中心处理平台和Inter Planetary File System(IPFS)这样的去中心文件系统的补充。

项目地址如下所示:

https://github.com/bigchaindb/bigchaindb

1.8 本章小结

本章的目的是让不了解区块链的读者能对区块链有一个宏观的认识,主要介绍了区块链的起源和演进路线、区块链的核心技术及其特性、区块链技术的缺点和人们对它的错误认识,以及区块链在不同行业的应用。