目录
区块链的基本概念
区块链的基础技术架构
常见概念
区块链网络
区块链去中心化的特点
区块链数据结构
数据区块
区块头
区块体
链式结构
Merkle树
根节点
叶节点
中间节点
默克尔树结构特点
默克尔树应用场景
什么是区块链
1. 狭义上讲:区块链是一种将数据区块按时间顺序相连的链式、不可篡改和不可伪造的分布式账本。
2. 广义上讲:区块链是一种按照时间顺序将若干数据区块相连的链式、无中心、不可篡改、不可伪造、集体维护、全程留下痕迹、交易可以追溯的分布式账本(数据库)。
每一个 “数据区块” 记录了一组交易状态信息;
“分布式” 是指在一个对等网络(P2P网络)中,各个节点通过平等的相互传递信息来通信和协调行动;
“账本” 是一个非关系型数据库,即NoSQL数据库。
3. 本质上:区块链是一个建立在P2P网络上的分布式数据库。
综述:区块链使用密码技术链接,由共识确认的,按时间顺序追加的 分布式账本。
使用加密技术、共识机制、按时序排列的分布式账本
数据层:区块数据、链式结构、数据签名、哈希函数、Merkle Tree、非对称加密
网络层:P2P、传播、验证
共识层:PoS/PoW、Paxos、DPOS、Raft、Vrr
激励层:发行机制、分配机制
合约层:脚本代码、算法机制、智能合约
应用层:买卖、账务、存储、合约
IPFS、Defi、全节点、DAO、矿工、POS、POW、Merkle Tree、NFT、Fabric、波卡、哈希、公有链、DApp、链游 等。
由P2P网络、公钥体制、共识机制和智能合约等技术所构建的区块链网络结构,事实上已经构建了一个全新的技术架构,这个技术架构具有相应的功能层次模型,作为一种崭新的技术架构,它已经开始成为新一代互联网的基础设施,能够解决以前的技术架构解决不了的社会问题。
开放性:任何人可加入进来,不需要申请等操作流程(非许可式)
自治性:共同维护
安全性:数据不可篡改
匿名性:交易匿名,但不利于监管
区块链是一种电子化数据的存储方法。数据是以区块的形式出现的,这些区块都链接在了一起,为其内部数据赋予了不可变性。
当一个数据块被链接到了这条链上,其内部数据就再也无法更改了。一旦某个区块被添加到了链上,里面的数据对任何人都是公开可见的。这项技术具有非凡的革新意义,可以用来记录我们能想到的几乎所有数据(例如产权、身份、余额、病历等等),同时不存在被篡改记录的风险。区块链是一种存储数据且保证数据不被篡改的方法。这听上去不错,不过随之而来的问题是我们是怎么实现这样的技术的呢?
下面是三个区块,每个区块都存有一些交易数据,这没什么特别的,就好比是3个独立的word文档,里面描述了交易的内容和余额变化情况。文档1会按照顺序从第1笔交易开始记录,直到数据量达到1MB为止,之后的交易会记录在文档2中,直到数据量达到1MB为止,以此类推。这些文档就是数据块,它们一个接着一个连接在一起。
一个区块分成2部分:区块头和区块体
区块头占80个字节,包含6个字段:
字段 | 大小(字节) | 说明 |
---|---|---|
父区块哈希值 | 32 | 记录该区块的上一个区块的Hash值 |
版本号 | 4 | 记录了区块头的版本号,用于跟踪软件/协议的更新 |
时间戳 | 4 | 记录了该区块的创建时间戳 |
难度 | 4 | 记录了该区块链工作量证明的难度目标 |
随机数(nonce) | 4 | 记录用于证明工作量的计算参数 |
默克尔根 | 32 | 记录该区块中交易的merkle树根的 |
区块头中有使用前一个区块的哈希来维持链式结构,使用默克尔树根来归纳区块中的交易信息,同时节点可以使用默克尔树进行快速验证交易。nonce和难度目标值是在打包区块时矿工进行挖矿的。矿工一旦找到一个合适的nonce,就能得到挖矿奖励。
区块体主要是包含了成百上千的交易信息,一个交易被发送到区块链网络中后,就会被打包到区块中。
区块体和区块体如下图所示:
先看下面一张默克尔树结构示例图:
默克尔树的数据结构存放所有叶子节点的值,并以此为基础生成一个统一的哈希值。默克尔树的叶子节点存储的是数据信息的哈希值,非叶子节点的存储是对其下面所有叶子节点的组合进行哈希计算后得到的哈希值。
区块中任意一个数据的变更都会导致默克尔树结构发生变化,在交易信息验证对比的过程中,默克尔树结构能够大大减少数据的计算量,毕竟我们只需验证默克尔树结构生成的统一哈希值就可以了。
默克尔树是一种二叉树,由一个根节点,一组中间节点和一组叶节点组成。叶节点包含存储数据及其哈希值,中间节点是它的2个孩子节点内容的哈希值,根节点也是由它的两个子节点内容的哈希值组成,所以默克尔树也称哈希树。
默克尔树的特点是:底层数据的任何变动都会传递到其父节点,一直到树根,它的作用主要是快速归纳和校验区块数据的完整性。
根节点的hash值可以准确的作为一组交易的唯一摘要,放在区块头作为默克尔树根。
叶节点包含存储数据及其哈希值
中间节点是它的2个孩子节点内容的哈希值
1. 默认尔树常见的结构是二叉树,但它也可以是多叉树,它具有树结构的全部特点
2. 默克尔树的基础数据不是固定的,想存什么数据自己说了算,因为它只要数据经过哈希运算得到的hash值
3. 默克尔树是从下往上逐层计算的,就是说每个中间节点是根据相邻的2个叶子节点组合计算得出的,而根节点是根据2个中间节点组合计算得出的,所以叶子节点是基础
1. P2P下载:电驴、迅雷
2. 零知识证明
上一篇:区块链价值_ling1998的博客-CSDN博客
下一篇:区块链共识机制_ling1998的博客-CSDN博客