《区块链原理、架构及应用》读书笔记一

区块链三大关键技术

    区块链主要有三大关键技术:区块链加密技术,数据存储结构,共识机制。
    一、区块链加密技术
     从计算机科学角度看,区块链是一种分布式数据库,不同的节点拥有相同的数据记录,包含经节点确认的数据信息的区块从后向前呈链状结构有序连接,利用密码学的方式保证了数据在传输过程和之后访问过程的安全,加密技术保护了区块链中的数据安全,从而保证了区块链不可篡改和不可伪造的特性。
    1、哈希算法
     哈希算法是一类加密算法的统称,是信息领域中非常基础也非常重要的技术。输入任意长度的字符串,哈希算法可以产生固定大小的输出。通俗地说,我们可以将哈希算法的输出(也就是哈希值)理解为区块链世界中的“家庭地址”。就像物理世界中我们总可以用一个特定且唯一的地址来标识一样,我们也可以用哈希特定且唯一地标识一个区块(如果不同区块的哈希总是不同的,那么我们称这类哈希函数具有“碰撞阻力”,这是对哈希函数的基本要求),而且就像我们无法从“家庭地址”倒推出房屋结构、家庭成员等内部信息一样,我们也无法从哈希值反推出区块的具体内容(哈希函数的隐秘性)。
    2、非对称加密
    加密算法一般分为对称加密和非对称加密。对称加密算法也称为单密钥加密,同一个密钥同时作为信息的加密和解密,如果在分布式网络中使用对称加密,如何将对应的密钥发送给需要解密信息的人是个很难解决的问题,因此在区块链中大量采用了分对称加密。
    非对称加密是指加密和解密使用不同密钥的加密算法,也称为公私钥加密。区块链网络中,每个节点都拥有唯一的一对私钥和公钥。公钥是密钥对中公开的部分,就像银行的账户可以被公开,私钥是非公开的部分,就像账户密码。使用这个密钥对时,如果用其中一个密钥加密一段数据,则必须用另一个密钥解密。
    在比特币区块链中,私钥代表了对比特币的控制权。交易发起方用私钥对交易(包括转账金额和转账地址)签名并将签名后的交易和公钥广播,各节点接收到交易后可以用公钥验证交易是否合法。在这个过程中交易发起方无须暴露自己的私钥,从而实现保密目的。
    二、数据存储结构
    区块链中,每个数据区块包含区块头和区块体。区块头封装了当前版本号、前一区块哈希值、当前区块PoW要求的随机数、时间戳以及Merkle根信息。区块体则包括当前区块经过验证的、区块创建过程中生成的所有交易记录,这些纪律通过Merkle树的哈希过程生成唯一的Merkle根并记入区块头。
    默克尔树(Merkle Tree)实际上是一种数据结构。这种树状数据结构在快速归纳和检验大规模数据完整性方面效率很高。在比特币网络中,默克尔树被用来归纳一个区块中的所有交易,其树根就是整个交易集合的哈希值,最底层的叶子节点是数据块的哈希值,非叶节点是其对应子节点串联字符串的哈希。我们只需要记住根节点哈希,只要树中的任何一个节点被篡改,根节点哈希就不会匹配,从而可以达到校验目的。
    三、共识机制
    共识机制是区块链网络最核心的秘密。简单来说,共识机制是区块链节点就区块信息达成全网一致共识的机制,可以保证最新区块被准确添加至区块链、节点存储的区块链信息一致不分叉甚至可以抵御恶意攻击。实践中要达到这样的效果需要满足两方面条件:一是选择一个独特的节点来产生一个区块,二是使分布式数据记录不可逆。
   当前主流的共识机制包括:工作量证明/POW(Proof of Work)、权益证明/POS(Proof of Stake)、工作量证明与权益证明混合(POS+POW)、股份授权证明/DPOS(Delegated Proof-of-Stake)、实用拜占庭容错(PBFT)、瑞波共识协议等。其中比特币使用的是工作量证明机制。
  1、工作量证明/POW(Proof of Work)
  工作量证明机制的基本步骤如下:
 (1)节点监听全网数据记录,通过基本合法性验证的数据记录将进行暂存;
 (2)节点消耗自身算力尝试不同的随机数(nonce),进行指定的哈希计算,并不断重复该过程直到找到合理的随机数,这一过程也被称为“挖矿”;
 (3)找到合理的随机数后,生成区块信息(块头+块身);
(4)节点对外部广播出新产生的区块,其他节点验证通过后,连接至区块链中,主链高度加一,然后所有节点切换至新区块后继续进行下一轮挖矿。
   “矿工”在挖矿过程中会得到两种类型的奖励:创建新区块的新币奖励,以及区块中所包含交易的交易费用(交易双方为了交易被区块链尽早记录会提供给矿工一笔交易费用作为激励)。这种算法的竞争机制以及获胜者有权在区块链上进行交易记录的机制实际上分别解决了分布式记账以及记账权归属的问题。在比特币区块链中,这一过程还起到了货币发行的作用——目前每隔10分钟,就会有挖到新区块的矿工收到12.5个比特币的奖励。
   尽管工作量证明机制解决了记账权归属问题,那么获得记账权的矿工有没有可能“作弊”,在构造的新区块中添加一些并不存在的交易呢?实际上,比特币区块链共识机制的重要环节是网络中的每个节点都会独立校验新区块,其中最重要的就是校验新区块中每一笔交易是否合法。如果没有通过验证,那么这个新区块将被拒绝,该矿工也就白白浪费了所有的电力和努力。
    2、权益证明/POS(Proof of Stake)
      在工作量证明/POW机制中,所有参与POW竞赛的节点都将付出不小的经济成本(硬件、电力、维护等),而且每次只有一个节点“胜出”,也意味着其他节点的大量资源将被浪费。为了解决资源浪费问题,权益证明机制/POS在2013年被提出并最早在Peercoin系统中被实现。

权益证明类似现实生活中的股东机制,其出发点是:如果共识机制主要是用来证明谁在挖矿这件事情上投入最多,为何不简单直接地把挖矿“算力”按比例分配给当前所有的持币者?在工作量证明中,有更多算力的矿工会得到更多的投票权;在权益证明中,持有更多币(以及相应的时间)的矿工将获得更多的投票权。
3、股份授权证明/DPOS(Delegated Proof-of-Stake)
在这种系统中,每个币就等于一张选票,持有币的人可以根据自己持有币的数量来投出自己信任的受托人,而受托人不一定需要拥有最多的系统资源。股份授权证明机制模仿了公司的董事会制度,能够让数字货币持有者将维护系统记账和安全的工作交给有能力有时间的人来专职从事该项工作。受托人也可以通过记账来获得新币的奖励。相对于权益证明机制,股份授权证明的优势在于记账人数量大大缩小,并且轮流记账,可以提高系统的整体效率,理想环境下,DPOS能够实现每秒数十万笔的交易数量。
共识机制的选择对区块链性能(资源占用、处理速度等)有着较大的影响,同时也会决定区块链“去中心化”的程度。一般来说,区块链去中心化程度越高,其性能越弱。去中心化程度和效率在多数情况下难以兼顾。

你可能感兴趣的:(《区块链原理、架构及应用》读书笔记一)