主页 > 华为imtoken无法安装 > 区块链架构及关键技术详解

区块链架构及关键技术详解

华为imtoken无法安装 2023-09-08 05:12:11

以比特币和以太坊的区块链架构为例,详细阐述区块链技术的基本架构、基本原理和核心技术。 比特币和以太坊是两个具有代表性的区块链技术应用,一个是区块链技术的起源,一个是区块链2.0的代表应用。 市面上大部分其他使用区块链技术的数字货币都与之类似,因此,比特币和以太坊的基础设施是学习和学习区块链技术的重要范例。 比特币和以太坊的基本架构如图 1 所示。

图 1 中的虚线表示以太坊和比特币之间的区别。 一般来说,数字货币的区块链系统包括底层的交易数据、狭义的分布式账本、重要的共识机制、完整可靠的分布式网络以及网络上的分布式应用。 底层数据组织成块数据结构,每个块按时间顺序链接成一个区块链。 全分布式网络的每个节点保存一个分布式账本,称为区块链,网络使用P2P协议进行通信,通过共识机制达成共识,并基于这些基础产生各种相对高级的应用。 在该架构中,不可篡改的区块链数据结构、分布式网络共识机制、工作量证明机制和日益灵活的智能合约是具有代表性的创新。

1 底层数据

在区块链系统中,底层数据并不是存储在区块链中的数据,这些原始数据在写入区块之前需要进一步处理。 最基础的底层数据是交易记录,其他数据只是用来封装消息记录。

交易数据:交易数据是具有一定格式的交易信息。 以比特币为例,一笔比特币交易信息应包含以下字段: 4 B 版本信息,用于明确本次交易所参照的规则; 1~9 B 1~9 B的输入计数器表示包含输入的个数; 可变长度字节的输入表示一个或多个交易输入(地址); 1~9 B的输出计数器表示包含的输出个数; 可变长度 bytes 的输出,代表一个或多个输出(地址); 4 B 时钟时间,代表一个 UNIX 时间戳或块号。

时间戳:时间戳用于在区块头上加盖时间戳,以确定区块的写入时间,也使得区块链具有时序性。 时间戳可以作为区块数据存在的证明,有助于形成不可篡改、不可伪造的分布式账本。 更重要的是,时间戳为未来赋予区块链技术的互联网和大数据增加了一个时间维度,使得通过区块数据和时间戳重现历史成为可能。

SHA256算法:区块链并不直接以明文形式保存原始交易记录,只是对原始交易记录进行哈希运算,得到一定长度的哈希值,将固定长度的字母和数字串记录到区块中。 比特币采用双重SHA256哈希函数,通过两次SHA256哈希运算,对任意长度的原始交易记录进行处理,得到一串256位的哈希值,便于存储和查找。 哈希函数具有单向性、定时性、定长性和随机性等优点。 Monomial是指原始输入数据不能从hash值反推(理论上可以,但实际上几乎不可能),timing是指不同长度的数据计算hash值所需要的时间基本相同,而固定长度是指输出的哈希值都是相同的长度,而随机性是指2个相似的输入有非常不同的输出。 同时,SHA256 函数也是比特币使用算力的证明。 矿工寻找一个随机数,使新区块头的双SHA256哈希值小于或等于一个目标哈希值,并加上一个难度值,使得这道数学题的求解平均时间为10分钟,即平均每 10 分钟产生一个新区块。

Merkle 树:Merkle 树是区块链技术的重要组成部分。 它将计算好的交易信息以二叉树结构组织成哈希值,存储在区块体中。 Merkle树的生成过程:将区块数据分组进行hash函数运算,将新的hash值放回去,再次取出这两个数据进行运算,递归下去,直到只剩下“Merkle根” . 比特币使用经典的二叉 Merkle 树,而以太坊使用改进的 Merkle Patricia 树。 Merkle树的优点:可扩展性好,无论交易数据是什么,都可以生成一棵Merkle树; 搜索算法的时间复杂度很低,可以从底层追溯Merkle根比特币是区块链的底层技术,验证一笔交易是否存在或是否合法。 时间复杂度为lb N,大大减少了运行时的资源占用; 使得轻节点可以在不保存所有区块链数据的情况下验证交易的合法性,只需要保存包含 Merkle 根的区块头。

2 分布式账本

这里使用分布式账本而不是区块链的目的是为了区分狭义的区块链技术和广义的区块链技术。 前者是分布式账本的时序链数据结构,后者是一个完整的数学证明的系统框架。 狭义的区块链结构如图2所示:

图2.png

每个区块分为区块头和区块体两部分,所有区块依次链接起来,形成狭义的区块链。

区块头:区块头的内容包括前一个区块头的哈希值、时间戳、当前PoW计算难度值、当前区块PoW问题的解(满足要求的随机数)、Merkle根。 以比特币为例,具体数据格式为: 4 B 版本字段,用于描述软件版本号; 32 B(256 位)父区块头哈希值; 32 B(256 位)字节 Merkle 根; 4 B 时间戳; 4B难度目标; 4 B Nonce(随机数,题解)。 区块头设计是整个区块链设计中极为重要的一环。 区块头包含了整个区块的信息,可以唯一标识一个区块在链中的位置,也可以参与交易合法性的验证。 同时,体积小(一般小于整个区块的千分之一),为轻量级客户端的实现提供了基础。

区块体:区块体包含了一个区块完整的交易信息,以默克尔树的形式组织。 如图2所示,默克尔树的构建过程就是递归计算哈希值的过程。 以图为例,交易1通过SHA256计算得到Hash 1,也计算为Hash 2,将两个哈希值拼接起来。 然后做SHA256计算得到Hash12,逐层递归计算hash值,直到剩下最后一个根,即Merkle根。 可见Merkle树的可扩展性非常好。 无论交易记录多少,最终都可以生成一棵Merkle树和一个固定长度的Merkle根。 同时,默克尔树的结构保证了搜索的效率。 N个叶子节点的默克尔树的最长搜索路径长度为lb N。这种高效率在大交易规模时极为明显。

链结构:除创世块外,所有块都通过包含前一个块头的哈希值组成一个区块链。 同时,由于时间戳的加入,区块链也有了计时。 区块越长,后面链接的区块越多,修改区块的成本就越高。 这里借用一个形象的比喻,区块链就像地球的地壳。 稳定,不会轻易改变。 当一个新区块加入区块链时,极小概率会出现“分叉”现象,即同时挖出两个符合要求的区块。 “分叉”的解决办法是延长时间,等待下一个区块产生,选择长度最长的支链加入主链。 “分叉”的概率很小,多次分叉的概率基本可以忽略不计,“分叉”只是一个短暂的状态,最终的区块链一定是唯一确定的最长链。 创世区块:每条区块链都有一个特殊的头部区块,无论从哪个区块追溯,最终都会到达这个头部区块,即创世区块。 这里不得不提一下比特币的创世区块,它是由中本聪于北京时间2009年1月4日02:15:05生成的,它是比特币诞生的里程碑,也是数字货币新时代的里程碑。 中本聪在比特币创世区块中留下了一句话“The Times 03/Jan/2009 Chance-cellor on brink of second bailout for bank”,这是当天头版文章的标题。 中本聪的引用不仅是对区块产生时间的解释,也是对旧银行体系在金融危机面前的脆弱性的嘲讽。

3 组网方式和核心机制

狭义的区块链,也就是分布式账本的内容上面已经介绍过了,而这个账本的使用是区块链技术的关键。 基于分布式账本的区块链网络,所有节点通过对等网络——P2P网络(peer-to-peer network-work)连接在一起,设计PoW或其他共识机制,使双方无信任基础无需第三方建立互信,利用广播传播交易信息,并加入激励机制保证节点提供算力维持全网的平稳运行。

P2P网络:区块链网络的去中心化来自于P2P网络的使用。 网络中各节点地位平等,以扁平拓扑结构相互通信交互。 没有中心化的特殊节点和层级结构,每个节点将承担网络路由、验证交易信息、传播交易信息、发现新节点等工作。

广播机制:区块链网络发布交易信息的方式是广播。 产生交易信息的节点首先将信息广播给连接的节点。 节点验证通过后会再次广播,信息会以极快的速度在全网广播。 接收中的节点。 事实上,并不需要所有节点都保留这笔交易信息,只要大多数(51%)节点收到,就可以认为交易通过。 如果本次交易信息出现问题,如交易者余额不足支付,收到错误信息的节点验证失败,则交易数据将被丢弃,不再广播。 新块的生成也通过广播来确认。 找到满足条件的随机数后,进行广播。 验证通过后,确认新区块的记账权,生成新区块,全网同步将该区块加入主链。 优越的。

共识机制:分布式网络的核心问题是如何高效地达成共识。 就像现有的社会制度一样,在集权程度高、决策权集中的社会,如独裁专制,更容易达成共识,但社会满意度却很低; 集权程度低、决策权分散的社会,更难达成共识,如民主投票,但整个社会的满意度更高。 “任何基于网络的数据共享系统至多具有以下3个中的2个:1)数据一致性(C);2)数据更新的高可用性(A);3)容忍网络分区(P)”,即CAP理论,分布式网络已经有了P,那么C或者A只能二选一。 如何在一致性和可用性之间取得平衡,在不影响实际用户体验的情况下保证相对可靠的一致性,是研究共识机制的目标。 早期的比特币采用高度依赖节点算力的PoW机制来保证比特币网络分布式记账的一致性。 随着各种竞争货币的发行,更多类似的共识机制出现了。 PoS 是一种基于 PoW 的系统,是一种改进的共识机制。

PoW 共识机制:PoW 机制是由中本聪设计的适用于比特币系统的共识机制。 其核心思想是通过引入分布式节点间的算力竞争来保证数据一致性和共识安全。 在比特币中,所有参与“挖矿”的节点都在遍历寻找一个随机数。 这个随机数使得当前区块的区块头的双SHA256运算结果小于等于某个值,找到满足要求的随机数。 节点获得当前区块的记账权,并获得一定数量的比特币作为奖励。 此外,引入了动态难度值,使得解决这道数学题所花费的时间约为10分钟。 PoW 共识机制意义重大。 它将比特币的发行、交易和记录完美地联系起来,同时保证了记账权的随机性,保证了比特币系统的安全性和去中心化。 GHOST(Greedy Heaviest Observed Subtree)协议:GHOST协议是为了解决比特币使用PoW算力竞争造成的高废块率造成的算力浪费问题。 废块是指在广播和确认新块期间,满足“开采”要求的块。 GHOST协议提出在计算最长链时将废弃块也包括在内,即比较哪个区块的工作量证明多时,不仅父块和它的祖先块,还包括它的祖先块来计算哪个块的工作量证明最大-工作的。 在以太坊中,采用了简化版的GHOST协议,废弃块只参与五代之间的工作量证明,废弃块的发现者也会获得一定数量的以太币作为奖励。

PoS共识机制:PoW共识机制缺点明显,计算资源浪费太多。 PoS 共识机制是为解决 PoW 的缺陷而提出的替代方案。 PoS本质上是用权益证明来代替PoW的算力证明,记账权是由权益最高的节点获得的,而不是算力最高的节点。 权益证明即资源证明,资源最多的节点挖矿难度最小。 以太坊目前仍采用PoW,但正在开发的下一个版本将切换到PoS共识机制。

激励机制:激励机制是区块链技术的重要组成部分。 以比特币为例,挖出新区块的节点将获得一定数量的比特币和记账权。 记账权使节点能够在处理交易时获取数据时获取交易手续费。 比特币的交易费用是基于自愿的原则。 提供手续费的交易会被优先处理,不包含手续费的交易会优先放入交易池,其优先级会随着时间的推移而增加,最终会被处理。 激励机制保证整个区块链网络向外扩展,促使所有节点提供资源,自发维护整个网络。 以比特币为例。 目前,整个比特币网络的算力已经达到800,000,000 Gh/s,超过世界500强超级计算机算力总和。 几乎不可能影响整个比特币网络。

4个区块链节点

在最初的区块链网络设计中,没有中心化的特殊节点和层级结构,每个节点是完全平等的,承担着网络路由、交易信息的验证、交易信息的传播、新节点的发现等。但实际上,有是物理设备之间明显的性能差距。 以比特币网络为例,可以作为节点的设备包括个人电脑、服务器、专为比特币挖矿设计的矿机、移动终端等。 它们提供的计算能力相差几个数量级,存储空间也不同。 目前市面上可见的移动端存储空间最多只有100GB左右,而存储所有数据的区块链数据总量已经超过60GB。 移动端作为全节点无疑是不现实的。 所以有全节点和轻节点。 全节点是传统意义上的区块链节点,包含完整的区块链数据,支持所有区块链节点的功能。 全节点通常是高性能计算设备。 比特币刚出来的时候,是靠CPU来提供计算能力的。 后来,它使用了GPU。 现在是专门把SHA256算法固化到硬件上的矿机。 算力呈几何级增长趋势。 轻节点是依赖全节点存在的节点。 它不需要为区块链网络提供计算能力。 它只保存区块链的区块头。 由于区块头包含 Merkle 根,因此可以验证交易。 轻节点多为移动终端,如智能手机、平板电脑、移动电脑等。

5 智能合约

区块链技术的智能合约是一套场景响应的程序化规则和逻辑,是部署在区块链上的去中心化、信息共享的程序代码。 签订合同的各方就合同内容达成一致,并以智能合约的形式部署在区块链上,无需依赖任何中心机构,即可自动代表各签约方执行合同。 智能合约具有自治和去中心化的特点。 一旦启动,它们将自动运行,无需任何合同签署方的干预。 智能合约的运行流程如下。 智能合约封装了一些预定义的状态、转移规则、触发条件和相应的操作。 经各方签名后,以程序代码的形式附在区块链数据上,经区块链网络传播验证后记录。 在每个节点的分布式账本中,区块链可以实时监控整个智能合约的状态,并在确认满足特定触发条件后激活并执行合约。 智能合约对区块链具有重要意义。 智能合约不仅赋予了区块链底层数据的可编程性,也为区块链2.0和区块链3.0奠定了基础; 复杂的行为为基于区块链技术建立上层应用提供了便捷的接口,带有智能合约的区块链技术具有非常广阔的前景。 例如,对于互联网金融的股权募集,智能合约可以记录每笔融资,在成功达到一定融资额度后计算每个投资者的股权份额,或者在一段时间后未达到融资额度时将资金返还给投资者。时间 。 还有互联网租赁业务,将房屋或车辆等实物资产的信息连同访问控制智能合约一起部署在区块链上,用户在满足特定的访问权限或进行类似支付的操作后即可使用这些资产。 甚至结合物联网实现智能家居领域的智能自动化,如自动控制室内温度、湿度和亮度,自动门允许特定人员进入等。现有水平的智能合约和它们的应用在逻辑上是基于预定义场景的“IF-THEN”类型的条件响应规则,可以满足当前自动化交易和数据处理的需求。 未来的智能合约应该具备基于未知场景的“WHAT-IF”推演、计算实验和一定程度的自主决策功能,从而实现从现在的“自动化”合约到真正的“智能”合约的飞跃。

6 上层应用

上一篇文章系统地介绍了区块链技术。 有了更全面的系统概念后,我们才能更深入地研究基于区块链技术的上层应用。 目前的区块链应用都是大同小异的架构,每个公司的侧重点都在开发不同的上层应用。 比特币是一种经典的区块链应用,所采用的区块链技术具有很大的研究和学习价值。 然而比特币是区块链的底层技术,比特币作为数字货币本身也存在局限性。 虽然可以以极低的成本开发其他数字货币(市场上有很多类似的山寨币),但很难开发出数字货币以外的数字货币。 外部应用程序。 以太坊是另一种使用区块链技术的产品。 它既在底层解决了区块链原有的一些问题,又对区块链技术进行了封装,降低了区块链与上层具体应用的耦合度。 以太坊提供了强大的智能合约语言来设计上层应用。 开发者可以通过部署智能合约轻松快速地开发区块链应用。 以太坊的最终目标是将所有节点连接起来,成为一个拥有恐怖计算能力的虚拟机。 各种分布式应用运行在虚拟机上,彻底改变了现有的网络架构。

审查

从2009年到2018年,区块链技术已经走过了9个春秋,经历了区块链1.0时代,目前正处于区块链2.0,并正在稳步迈向区块链3.0。 区块链1.0更适合以比特币为代表的狭义区块链技术时代; 区块链2.0是一个强大的智能合约时代,可以实现更高级更复杂的功能,大大扩展领域。 区块链技术的应用场景; 对于区块链3.0来说,是一个将区块链技术的去中心化和共识机制发展到新高度,影响全人类意识形态的时代。 目前比较受关注的研究方向是去中心化自治社会(DAS),即从去中心化应用(Dapp)逐渐发展到去中心化自治组织/公司(DAO/DAC),最终实现DAS的系统。 发展方向。 区块链技术很自然地符合分布式社会系统的概念,每个节点将作为分布式系统中的自治个体。 随着区块链生态系统的逐步完善,自治节点将使用更复杂的智能合约参与各种Dapps,以特定的组织形式形成DAO和DAC,最终形成DAS。