《图说区块链》读书笔记

1

区块链的核心概念

一、区块

区块作为区块链的基本结构单元,由包含元数据的区块头和包含交易数据的区块主体构成。

区块头包含三组元数据:

1.用于连接前面的区块、索引自父区块哈希值的数据;

2.挖矿难度、Nonce(随机数,用于工作量证明算法的计数器)、时间戳;

3.能够总结并快速归纳校验区块中所有交易数据的Merkle(默克尔)树根数据。

区块头的结构

区块链系统大约每10分钟会创建一个区块,其中包含了这段时间里全网范围内发生的所有交易。每个区块中也包含了前一个区块的ID(识别码),这使得每个区块都能找到其前一个节点,这样一直倒推就形成了一条完整的交易链条。从诞生之初到运行至今,全网随之形成了一条唯一的主区块链。

二、哈希算法

哈希算法是区块链中保证交易信息不被篡改的单向密码机制。哈希算法接收一段明文后,以一种不可逆的方式将其转化为一段长度较短、位数固定的散列数据。

它有两个特点:

1.加密过程不可逆,意味着我们无法通过输出的散列数据倒推原本的明文是什么;

2.输入的明文与输出的散列数据一一对应,任何一个输入信息的变化,都必将导致最终输出的散列数据的变化。

哈希算法的两个特点

在区块链中,通常使用SHA-256(安全散列算法)进行区块加密,这种算法的输入长度为256位,输出的是一串长度为32字节的随机散列数据。区块链通过哈希算法对一个交易区块中的交易信息进行加密,并把信息压缩成由一串数字和字母组成的散列字符串。区块链的哈希值能够唯一而准确地标识一个区块,区块链中任意节点通过简单的哈希计算都可以获得这个区块的哈希值,计算出的哈希值没有变化也就意味着区块中的信息没有被篡改。

区块链中的哈希算法

三、公钥和私钥

公钥其实是用来加密/验章的。私钥就是自己的,必须非常小心保存,最好加上密码,私钥用来解密/签章,私钥由个人拥有。

在区块链系统中,公钥和私钥还可以保证分布式网络点对点信息传递的安全。在区块链信息传递中,信息传递双方的公钥和私钥的加密与解密往往是不成对出现的。

使用公钥和私钥完成一笔交易

信息发送者:用私钥对信息进行签名,使用信息接收方的公钥对信息加密。

信息接收方:用信息发送者的公钥验证信息发送者的身份,使用私钥对加密信息解密。

四、时间戳

区块链中的时间戳从区块生成的一刻起就存在于区块之中,它对应的是每一次交易记录的认证,证明交易记录的真实性。

时间戳是直接写在区块链中的,而区块链中已经生成的区块不可篡改,因为一旦篡改,生成的哈希值就会变化,从而变成一个无效的数据。每一个时间戳会将前一个时间戳也纳入其随机哈希值中,这一过程不断重复,依次相连,最后会生成一个完整的链条。

区块链中的时间戳

五、Merkle树结构

区块链利用Merkle树的数据结构存放所有叶子节点的值,并以此为基础生成一个统一的哈希值。Merkle树的叶子节点存储的是数据信息的哈希值,非叶子的节点存储的是对其下面所有叶子节点的组合进行哈希计算后得出的哈希值。

同样地,区块中任意一个数据的变更都会导致Merkle树结构发生变化,在交易信息验证比对的过程中,Merkle树结构能够大大减少数据的计算量,毕竟,我们只需验证Merkle树结构生成的统一哈希值就可以了。

区块链中的Merkle树结构

2

比特币的工作流程

如图所示,在区块链中,所有的节点向上回溯,都会到达源头,即区块链中的第一个区块,也就是“创世区块”。

比特币工作流程

在“创世区块”诞生之后,比特币的用户通过不断地“做题”,即通过计算寻找满足特定SHA–256哈希值对应的数值解。这个过程就是比特币中的“挖矿”。

当任意一个用户优先计算出符合要求的数值解时,就会在全网范围内广播,而网络中的其他节点收到这条信息会进行验证,若通过验证,其他节点就会放弃计算,并将新创建的区块加到前一个区块的后面。

计算特定哈希值的数值解

随着越来越多的人加入比特币的区块链系统,一个又一个哈希值的数值解被找到,在不断重复的过程中,新的区块不断地生成、验证,最终形成一个主链。同时,哈希算法的难度也会调整,以此控制用户们解出数据所用的时间。

而在比特币的实际交易过程中,假设比特币中的用户A和B之间要完成一个交易,包含这笔交易的区块向区块链中的所有用户发布广播,全网用户通过验证哈希值来确认这笔交易是否有效,一旦被认证为有效,这个区块就会被加盖时间戳,然后被添加到区块链主链上。

加盖时间戳

区块链的本质是一个互相验证的公开记账系统。这个系统所做的事情,就是记录所有账户发生的所有交易。每个账号的每笔数额变化都会被记录在全网总账本中。而且每个人手上都有一份完整的账本,每个人都可以独立统计出有史以来比特币系统每个账号的所有账目,也能算出任意账号当前余额是多少。

由于所有数据公开透明,任何人都可以去查看它的源代码,人们便会信任这套去中心化的系统,而不担心里面是否隐藏着什么阴谋。

3

区块链的模型架构

区块链基础架构分为6层,包括数据层、网络层、共识层、激励层、合约层、应用层。每层分别完成一项核心功能,各层之间互相配合,实现一个去中心化的信任机制。

区块链的模型架构

一、数据层

数据层主要描述区块链技术的物理形式。区块链系统设计的技术人员们首先建立的一个起始节点是“创世区块”,之后在同样规则下创建的规格相同的区块通过一个链式的结构依次相连组成一条主链条。随着运行时间越来越长,新的区块通过验证后不断被添加到主链上,主链也会不断地延长。

每个区块中也包含了许多技术,比如时间戳技术,它可以确保每一个区块按时间顺序相连接;再比如哈希函数,它能够确保交易信息不被篡改。

二、网络层

网络层的主要目的是实现区块链网络中节点之间的信息交流。区块链网络本质上是一个P2P(点对点)网络。每一个节点既接收信息,也产生信息。节点之间通过维护一个共同的区块链来保持通信。

区块链的网络中,每一个节点都可以创造新的区块,在新区块被创造后会以广播的形式通知其他节点,其他节点会对这个区块进行验证,当全区块链网络中超过51%的用户验证通过后,这个新区块就可以被添加到主链上了。

三、共识层

共识层能让高度分散的节点在去中心化的系统中高效地针对区块数据的有效性达成共识。区块链中比较常用的共识机制主要有工作量证明、权益证明和股份授权证明三种。

四、激励层

激励层的主要功能是提供一定的激励措施,鼓励节点参与区块链的安全验证工作。我们以比特币为例,它的奖励机制有两种。在比特币总量达到2100万枚之前,奖励机制有两种,新区块产生后系统奖励的比特币和每笔交易扣除的比特币(手续费)。而当比特币总量达到2100万时,新产生的区块将不再生成比特币,这时奖励机制主要是每笔交易扣除的手续费。

五、合约层

合约层主要是指各种脚本代码、算法机制以及智能合约等。我们以比特币为例,比特币是一种可编程的货币,合约层封装的脚本中规定了比特币的交易方式和过程中涉及的种种细节。

六、应用层

应用层封装了区块链的各种应用场景和案例,比如基于区块链的跨境支付平台OKLink。

虚拟币(imToken Address):

0x06Ef901b5AE1e45Af3D7144b18069Ada9d5Fd424

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180227G0SCIF00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券