system: [SYSTEM]

user: 2. 区块链概述 2.1. 基本概念 区块链的概念最早是以工作证明链(proof-of-work chain) [ 6 ] 的形式出现的，比特币系统就是运用工作证明(POW)机制来使系统各节点之间达成共识的，最终得到新的区块。中本聪(Satoshi Nakamoto)对区块链概念 [ 7 ] 的叙述如下：时间戳服务就是对区块中的数据项加盖时间戳，进而进行哈希，若想找到符合条件的哈希值，必然要证明过去某个时刻加盖时间戳的数据存在。当找到这一哈希值时，就要将它进行全面地广播。每个时间戳都包含着以前的时间戳，而且后者都是对前者的加强，这就形成了一条连续的链。美国学者Melanie Swan在其《Blockchain: blueprint for a new economy》一书中把区块链定义为一种公开透明的、去中心化的分布式数据库，就好比在现有的互联网基础协议上运行一个新的应用层，在区块链系统中可以对任何物理化或数字化资产进行价值交换 [ 8 ] 。以太坊基金会董事会顾问William Mougayar在他的《The Business Blockchain》一书中写到区块链技术的概念可分为商业、技术、法律这三个层面的含义，其在商业层面是个体之间的价值交易，在技术层面是去中心化、去信任化的分布式数据库，在法律层面是不需要第三方中介的交易验证 [ 9 ] 。 虽然以上的权威和机构对区块链给出了不同的定义，但其本质确是一致的。区块链即好比一个电子形式的账本，账本的每一页就是一个区块，从账本的第一页至最后一页是连续不断的。每一个被确定的区块都包含前面区块的交易信息，故篡改某一区块的信息几乎是不可能，如图1所示。 2.2. 关键技术 区块链技术并不是一个创新的技术，它主要是由以下几个关键技术有机结合：1) 分布式账本技术；2) 点对点技术；3) 非对称加密技术；4) 智能合约技术；5) 共识机制技术。这5个关键技术的引入将区块链打造成一个去中心、去信任、安全和智能高效的全新技术。 以下将对这5个关键技术是如何在现有区块链技术或产品中得以体现进行分析。 2.2.1. 分布式账本技术 传统的数据库是具有增加、删除、修改、查找这四种基本操作。然而，对区块链当中的数据仅有增加和查找这两种操作。传统的数据库大致可分为分布式数据库与中心化数据库两种。分布式数据库 [ 10 ] 就是把原来集中存储的数据分散存储在通过网络连接的各个存储节点上，以此来增加更多的存储空间，满足高并发的访问。区块链作为一种分布式账本技术与分布式数据库在存储方式和数据结构上都略有差异。 对于存储方式，大致可分为分离式、集中式、克隆式和混合式4种。其中，混合式是将分离式和克隆式结合到一起来使用的。首先，对数据进行分割处理，然后根据需求再把分割出来的数据块进行克隆，并将这些克隆的数据块存放在相应的数据存储空间内，同一个数据存储空间内是不会出现相同的克隆数据。区块链的数据存储方式就是按照混合式来进行的，先以时间间隔对数据进行分割，封装成数据块并对其做克隆操作，最后把这些克隆出的数据块存储到每一个区块链网络节点上。区块链运用这种数据存 图1. 区块链示意图 储方式很好的保障了数据的完整性和不可逆性，也在一定程度上提高了数据的查询效率。 在数据结构方面，区块链也与传统的数据库有所不同。传统的数据库分为结构化数据库(Structured Database)和非结构化的数据库(Unstructured Database)，而区块链的结构则分为链、区块、交易这三个层次。相同周期内完成的交易形成一个区块，区块的内部组织如图2所示。把这些区块按时间先后顺序串联起来就成一条完整的链表，这个链表的每个结点都包含两个以Hash值形式出现的ID，一个表示其前面区块的ID，另一个表示当前区块的ID，如图3所示。 图2中所示的为一个区块的内部组织结构，整个交易的信息是通过默克尔(Merkle)树 [ 11 ] 构建起来的。默克尔树的叶子节点是由各个交易组成，叶子节点通过Hash之后生成一个Hash值，这些Hash值再进行两两结合进行Hash生成新的Hash值，以此循环得出最终的Hash值就是当前区块的ID。假如叶子节点的交易信息被改动，则其对应的父节点的Hash值也会改变，以此类推，最终得出的表示当前区块ID的Hash值也会发生改变。这样就会使这一区块在区块链的链条中断开，被断开的区块则会被移除区块链网络。所以，通过默克尔树的数据结构来存储区块内的交易信息可以避免对手的恶意攻击，防止信息被篡改。 2.2.2. 点对点技术 比特币系统为何能平稳运行至今，这与其使用点对点技术 [ 12 ] 是分不开的。点对点网络结构与传统的C/S结构是存在差异的。点对点网络中的所有客户端都是资源的提供者，这些资源包括存储空间、计算能力和带宽等。当加入点对点网络的客户端增多且对系统请求增强时，仅有一定数量服务器的C/S结构是不能满足需求。 图2. Merkle树在区块链中的应用 图3.链结构 已有研究表明，现实世界的网络符合小世界网络的特点 [ 13 ] ：1) 网络的特征路径长度较短，即网络中的所有节点对的路径长度平均值较小，这是网络的全局特征。2) 网络的聚合系数较大，反映了相邻两个节点的边数重合度，即该节点的相邻节点之间的重合度，聚合系数是网络的局部特征。区块链网络也是可以遵照小世界网络的P2P结构来进行设计。在区块的生成过程中可以以是否参与记账来对节点进行划分，共可分为候选记账节点、非记账节点2种。候选记账节点会努力通过共识算法变成记账节点，非记账节点则从事交易与验证。当候选记账节点成为记账节点时，其他交易节点则会把交易信息传送给记账节点，以便其封装生成区块加入到区块链中。交易节点把交易信息传送给记账节点的过程就是运用小世界网络的原理，每一个交易节点并不是把交易信息广播给区块链中的所以节点，而是将交易信息就近传送给簇头节点，再由簇头节点把交易信息发送给候选记账节点，如图4所示。 2.2.3. 非对称加密技术 非对称加密技术 [ 14 ] 是保障区块链上所有交易能够在安全环境下进行的基础技术。非对称加密技术包括2个密钥：公钥和私钥，先利用SHA256 hash算法 [ 15 ] 将输入的随机数计算生成私钥，再利用另一个secp256kl椭圆曲线算法把生成的私钥生成公钥，公钥生成的过程是不可逆的。SHA256算法可以生成2 256 个密钥，通过现有的计算能力是无法使用公钥反推出私钥，这从密码学的角度来看是安全的，能够保障区块链上的数据不易受到恶意攻击。 非对称加密技术在区块链当中的应用主要是：数据加密和数字签名。数据加密的过程主要为：信息发送方利用信息接收方的公钥对要发送的信息进行加密，然后信息接收方再用自己的私钥对接收到的信息进行解密以获取原始信息。数字签名的过程大致为：信息发送方用自己的密钥对要发送的信息进行加密操作之后传送给接收方，接收方再用发送方的公钥进行信息解密。具体在区块链交易中的应用如图5所示。 2.2.4. 智能合约技术 密码学家Nick Szabo对智能合约技术做出了如下定义 [ 16 ] ：一个智能合约是计算机协议，它促进、验证或者执行合约的协商或履行，或使合约条款不必要。区块链技术的出现不仅能够支持可编程合约， 图4. 小世界网络模型在区块链中的应用 图5. 非对称加密在区块链交易中的应用 而且还具备去中心化、不可篡改、公开透明等特点，与智能合约配合的是天衣无缝。基于区块链的智能合约创建大致可分为以下3个步骤 [ 17 ] ：1) 多方用户一起共同讨论一份符合各方共同利益的智能合约。2) 智能合约以P2P网络形式进行传播，并将其存放区块链中。3) 自动执行智能合约。 2.2.5. 共识机制技术 共识机制技术是区块链又一重要的基础技术。目前，人们对共识机制技术的研究和采用共有以下三种 [ 18 ] ：工作量证明(POW)、权益证明(POS)、股份授权证明(DPOS)。比特币系统就是采用POW机制，吸引区块链上的候选记账节点去求解SHA256数学难题，计算出一个符合规则的随机数(随机数需要满足不大于目标Hash值)，即获得本次记账权，发出本轮需要记录的数据，通过全网其他节点共同验证后一起存储 [ 19 ] 。这种POW机制最大的优点就是可以很好的保证区块链数据的一致性与不可篡改性，故其在比特币系统中得到很好的应用。 2.3. 运行原理 下面是对区块链系统运行原理的算法描述 [ 20 ] 。 1：新的交易生成{Transaction i }； 2：Output 把{Transaction i }广播给全网Node； 3：所有Node对{Transaction i }进行接收； 验证{Transaction i }是True or False； 4：If {Transaction i }为True then 把{Transaction i }加入缓冲区； Else 将{Transaction i }标注为无效； 5：BlockGenerate 在缓冲区中获取{Transaction i }； 计算出区块首Hash{Block header}； 6：Loop If Hash{Block header} < Bits 跳转至步骤2 (Output)。