【笔记】区块链的系统架构、数据结构及运行机制

一、区块链的系统框架

1.区块链的系统架构与运行

  区块链的系统架构,主要是由数据层、网络层与共识层构成的底层网络,由数字货币、智能合约与其他“去中心化”组织等构成的应用层。下图为区块链的系统架构图。
在这里插入图片描述
  区块链是一个去中心的、分散式的网络账本,所以其系统架构也符合网络的基本特点。该网络账本构成一个系统,该系统最底层、最基础的是数据结构。这个结构就是将信息和数据采用一定的方式、格式组织起来,输入到区块链系统中并由其处理。当统一方式的数据输入后,网络层便开始连链接,在全网的节点之中进行广播、验证,然后在共识层中由全网达成共识而构建起区块。所有区块进行“组装”,最终构建起各种系统产品的运行平台,如公有链、私有链与联盟链等。而数字货币、智能合约、去中心化组织等都是区块链平台上运行的产品。

  在区块链的系统架构中,各个层次以交易为中心构建起一个完整的相互关联的循环体系,这一循环模式是这样的:
  首先,应用层的数字货币、智能合约等产品对于底层网络来说,传输的全是数据,即应用层相当于数据层的数据输入源。这些数据必须进入数据层,按照区块链的格式进行封装。
  其次,在数据封装完成后,就进入分布式(P2P)网络进行广播,由全网节点通过一定机制进行确认。
  最后,当全网达成共识之后,区块构建完成并连接到主链之上,完成一次完整交易的流程,并开始下一次交易的循环。

  这一循环过程,从技术角度讲,区块链中的区块是一种记录交易的数据结构,反映了一笔交易的资金流向。系统中已经达成交易的区块连接在一起形成了一条主链,所有参与计算的节点都记录了主链的信息,区块所承载的任务数据具体包括:交易双方私钥、交易数量、电子货币数字签名等。前一个区块形成的散列用来将区块连接起来,实现过往交易的顺序排列。随机数是交易达成的核心,所有“矿工”节点竞争计算随机数,最快得到答案的节点生成一个新的区块,并广播到所有节点进行更新,如此完成一笔交易,然后开始新的循环。

2.数据层、网络层与共识层

  数据层封装了底层数据区块的链式结构以及相关的非对称公私钥数据加密、时间戳等技术,这是整个区块链技术中最底层的数据结构。

  网络层包括分布式组网机制、数据传播机制和数据验证机制等,由于采用了完全的P2P组网技术,意味着区块链具有自动组网功能。

  共识层主要包括封装网络节点的各类共识机制算法。共识机制算法是区块领导核心技术,决定了到底有谁来记账,而且记账者选择的方式将会影响整个系统的安全性和可靠性。知名的有**工作量证明机制(PoW)、权益证明机制(PoS)、委托权益证明机制(DPoS)**等。

3.激励层、合约层与应用层

  激励层将经济因素集成到区块链技术体系中,主要包括经济激励的发行机制和分配机制,该层主要出现在公有链、私有链中。激励机制往往也是一种博弈机制,让更多节点愿意遵守规则。

  合约层主要封装各类脚本、算法和智能合约,是区块链可编程特性的基础。

  应用层封装了区块链的各种应用场景和案例。 在该模型中,基于时间戳的链式区块结构、分布式节点共识机制、基于共识机制的经济激励和灵活可编程的智能合约是区块链技术最具代表性的和创新点。

扫描二维码关注公众号,回复: 9335886 查看本文章

二、区块的概念和识别

1.区块与区块头

  区块是区块链的基本组成单元,它由一个包含元数据的区块头和紧跟其后的构成区块主体的一系列交易组成。 区块的基本数据结构如下表所示。
在这里插入图片描述
  区块头由三组区块元数据组成。 第一组元数据引用父区块哈希值的数据,这组元数据用于将该区块与区块链中前一区块相连接。第二组元数据,即难度、时间戳和随机数(Nonce),其与挖矿竞争相关。第三组元数据是梅克尔树根,一种用来有效地总结区块中所有交易的数据结构。区块头的数据结构如下表所示。
在这里插入图片描述

2.区块的识别

  区块可以通过两种方式被识别:区块哈希值区块高度
  区块主标识符是它的加密哈希值,通过安全散列算法-256(SHA-256)对区块头进行二次哈希计算而得到的数字指纹,所产生的“32字节”哈希值被称为区块哈希值。区块哈希值可以唯一、明确地标识一个区块,并且任何节点通过简单地对区块头进行哈希计算都可以独立地获取该区块哈希值。
  区块哈希值可能会作为区块元数据的一部分被存储在一个独立的数据库表中,以便于索引以及更快地在在磁盘中检索区块。

  区块在区块链中的位置即区块高度,区块高度可以识别区块。
  区块高度和区块哈希值不同之处在于,一个单一的区块有一个固定、明确的区块高度,但是两个或两个以上的区块也可能有相同的区块高度,并在区块链里争夺同一位置。一个区块的区块哈希值能唯一地识别一个特定的区块,但一个区块高度却不一定能识别出唯一的区块。

三、创世区块与区块的连接

1.创世区块

  创世区块是区块链里面所有区块的共同祖先,意味着从任一区块循链向后回溯,最终都将到达创世区块。 每一个节点都“知道”创世区块的哈希值、结构、被创建的时间和里面的交易。
  因此,每个节点都把该区块作为区块链的首区块,从而构建了一条安全的、可信的区块链根,每一个节点都包含创世区块,永远不会被改变。

2.区块的连接

  当某个节点接收到传入区块时,它会验证这些区块,然后链接到现有的区块链上。为了建立这个链接,该节点将检查传入的区块头并寻找该区块的“父区块哈希值”。
  每个参与节点都可以保存整个区块链的副本,只要有参与节点存在,区块链数据就不会丢失。区块链上的每个区块都可以用来记录货币、股权、债券、数字签名、数字合约以及其他任何数字化内容。

四、区块链的数据结构

1.区块链的结构基础

  首先,区块链的数据结构是在SHA-256支持下实现的;其次,在区块对交易封装过程中,采用高效的梅克尔树算法,一步一步地将繁杂的信息进行归纳和简化;再次,为了保证区块的顺序链接,需要采用时间戳机制在区块中写入时间参数;最后,为了达成共识机制,并使全网参与的“挖矿”工作顺利进行,系统在PoW共识机制下采用了难度目标和随机数两种设计,保证系统在一个可靠的区间内运转。

在这里插入图片描述

2.哈希值、梅克尔根等数据及作用

  哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个较小的二进制值称为哈希值。一段明文哪怕只更改一个字母,都将产生不同的哈希值。
  哈希函数的单向、输出数据长度固定等特征使它可以生成消息或者数据,而且哈希算法和哈希值一般用于快速查找和加密算法。
  哈希算法应用在区块中,既减小了区块存储的数据量,也不影响对数据的链接访问。

  每个数据区块包含区块头和区块体,区块头封装了当前版本号、前一区块哈希值、当前区块PoW要求的随机数(Nonce)、时间戳以及梅克尔根信息。区块体包括当前去看经过验证的、区块创建过程中生成的所有交易记录;这些记录就是通过梅克尔树的哈希过程生成唯一的梅克尔根后,并记入了区块头中。
  梅克尔根,是指梅克尔树的根,因为梅克尔树在计算的过程中主要用到哈希算法,或称为梅克尔哈希树。

3.难度确认、运行及其作用

  工作量证明机制是一个可以让每个参与者参与交易验证的方式,为形成一个多方共同维护并共享同一份记录交易的账本,一个基于零信任基础、去中心化的P2P网络系统。
  工作量证明是让任一参与节点花费时间和运算资源来计算一组数学公式的结果,一旦这个结果被计算出来,其他参与节点也可用相关的数学公式去验证这个值是否有效。进行PoW计算的过程也被形象地称为“挖矿”,参与节点被成称为“矿工”,计算过程如下:
  每个区块的区块头包含许多固定值,只有随机数值为随机值,因此每个节点进行PoW计算时,通过不断替换这个随机值来让这个区块的区块头哈希值小于一个被设定好的难度目标值。当最接近难度目标值的哈希值产生后,该“矿工”可以向全网广播,如果同意时间获得超过51%节点的认可,意味着该“矿工”完成了一个新区块,可以将其链接到区块链上,其他“矿工”再以这一个区块为父区块进行下一个区块的运算。

  区块链中的难度值,是指节点要运算出低于难度目标值的哈希值,平均花费的时间,即平均要完成一次PoW计算所用的时间。
  比特币的难度值是可以动态调整的,目前每产生2016个区块会调整一次难度值,以每10分钟产生一个区块估算,大约每两周会调整一次难度值。难度值的调整是由每个完整结点肚子自动发生的,每达到2016个区块后,所有结点都会按统一的公式自动调整难度值。

  • 新难度值公式:新难度值 = 旧难度值 x (20160分钟 / 过去2016个区块花费时长)
  • 目标值(Target)的计算公式:目标值 = 最大目标值 / 难度值

  目标值的大小与难度值成反比。 比特币工作量证明的完成,是以“矿工”计算出来的区块哈希值小于目标值且最接近于目标值为判断标准。

4.时间戳、随机数及其作用

  时间戳,能表示一份数据在某个特定时间之前已经存在的、完整的、可验证的数据,其通常是一个字符序列,能够唯一地标识某一刻时间。 在区块链中采用了“unix”时间计数方式,由时间戳服务器为每一个区块加上的时间序列,记录了该区块的产生时间。
  比特币挖矿的目标就是找到一个随机数,使在这个值下的区块头的SHA-256哈希值输出必须小于设定的难度值,“矿工”通过不停地变更区块头中的随机数,并对每次变更后的区块头做双重SHA-256运算,将结果只与当前网络的目标值作对比,如果小于目标值,则工作量证明完成,区块创建成功。

五、区块链的工作流程与机制

1.步骤与防止分叉

  区块链的工作步骤:

  1. 发送节点将新的数据记录向全网进行广播。
  2. 接受节点对收到的数据记录信息尽心验证,如记录信息是否合法,通过检验后,数据记录将被纳入一个区块中。
  3. 全网所有接受结点对区块执行共识算法,包括工作量证明、权益证明等。
  4. 区块通过共识算法过程后被正式纳入区块链中存储,全网节点均表示接受该区块,新区块将以该区块链为基础进行延长。

在这里插入图片描述
  全网广播,实际上不需要让全网所有节点收到,只要大部分节点收到即可。对于那些没有收到的、丢失的区块,区块链系统是具有容错能力的,如果某节点没有收到特定区块,当节点发现自己缺失区块时,可以提出自己下载区块的请求。
  节点始终都将最长的区块链视为正确的链,并持续以此为基础进行验证和延长。 当其中一条被证实为较长,那么在另一条分支链条上工作的节点将转换阵营,开始在较长的链条上工作,由此防止了区块链的分叉。

2.安全、透明与不可篡改的系统机制

  时间戳把数据区块的内容与数据区块本身联系起来,其重要意义在于其使数据区块形成了新的结构。这个新的结构使各个区块通过时间线有序地连接起来,形成了区块的链条,因此才成为区块链。
  通过给数据记录印上时间标签,使每一条数据记录都具有唯一性,从而使数据记录本身在区块和区块上的位置进行精确定位且可回溯,也给其他的校验机制发挥协同作用提供了极大的便利性和确定性,使整个区块链网络能够确定性地验证某条数据记录是否真实。

  区块链网络是一个公开的、难以攻破的、不可篡改数据记录和制造虚假数据的诚实可信的系统。
  关键技术包括两个方面:一是数据加密机制;二是共识算法
  在数据加密机制中,一方面要有一个私钥,另一方面要使用哈希算法等。
  共识算法,是区块链中节点保持区块数据一致、准确的基础,主流共识算法包括工作量证明(PoW)、权益证明(PoS)、委托权益证明(DPoS)等。

六、从区块链1.0到区块链3.0的演化

1.区块链的进化

  划分方式1:
  区块链1.0是以比特币为代表的数字货币应用,其场景包括之父、流通等;区块链2.0结合数字货币与智能合约,对金融领域的更广泛场景和流程进行优化的应用;区块链3.0则超出金融领域,旨在为各种行业提供去中心化解决方案。
  划分方式2:
  区块链1.0是可编程的数字货币;区块链2.0是可编程的智能合约;区块链3.0是可编程的社会治理。
在这里插入图片描述

2.区块链1.0

  区块链1.0主要是支撑虚拟货币的应用,包括转账、汇款、数字化支付以及加密货币,比特币就是区块链1.0的代表,也是最成功的数字货币。
  区块链1.0的实质就是可编程的数字货币。 主要应用领域为“加密数字货币”,包括货币的发行机制、分配机制、币值调节机制等。
  比特币可视为区块链首个在金融支付领域的应用,也是应用最广泛的公有区块链。

3.区块链2.0

  区块链2.0是可编程的智能合约。 主要应用领域为智能合约,智能合约能够令各方自动执行操作,结果由软件验证,而非人类扮演中介。
  区块链2.0的典型应用包括:(1)股权、债券合约;(2)证券与金融合约;(3)糊住保险合约;(4)权利登记、转让;(5)博彩;(6)防伪;(7)物联网等。

4.区块链3.0

  区块链3.0可看作可编程的社会治理。
  总体有两大类应用:

  • 超越货币、经济、市场的公正性应用。
  • 超越货币、经济、市场的效率和协作。

  区块链3.0是价值互联网的内核。区块链能够对每一个互联网中代表价值的信息和字节进行产权确认、计量和存储,从而实现资产在区块链上可被追踪、控制和交易的目的。
  价值互联网的核心是由区块链构造一个全球性的分布式记账系统,它不仅能够记录金融业的交易,而且几乎可以记录任何有价值的能以嗲吗形式进行表达的实物。实现信息的兹证明,不再依靠某个或第三人或机构获得信任或建立信用;实现信息的共享,通过解决信任的问题来提高整个系统的运作效率。

  区块链3.0的主要应用在社会治理领域,例如:

  • 供应链自动化管理
  • 自动化采购
  • 智能化物联网应用
  • 产权登记
  • 虚拟资产兑换、转移
发布了127 篇原创文章 · 获赞 120 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/cbwem/article/details/104443267