主页 > imtoken安卓官方版 > 简单介绍什么是区块链?

简单介绍什么是区块链?

imtoken安卓官方版 2023-05-06 06:06:27

区块链自问自答day1

简单介绍什么是区块链?

区块链是点对点网络下的分布式数据库系统

? 数据结构中的单向链表通过每个节点包含一个指向节点的指针来实现“链式”结构。 在区块链中,前一个区块的信息包含在下一个区块中,形成“链”结构。 因此,如果要修改链中区块的内容,则需要同时修改该区块所链接的所有后续区块,这使得修改链中区块的内容变得非常困难,并且难度随着后续链接块的数量而增加。

区块链的结构是怎样的?

区块链中单个区块的结构主要分为两部分:

块头

版本号

前一个块散列

时间戳

随机数

目标价值

默克尔根

块体

交易笔数

交易信息和默克尔树

1个

比特币早期挖矿速度_早期比特币怎么保存方式_比特币早期挖矿软件

2个

3个

4个

5个

6个

7

8个

9

10

11

12

13

14

15

16

比特币早期挖矿速度_早期比特币怎么保存方式_比特币早期挖矿软件

# 比特币区块结构

类块的数据结构:

幻数 = 4 字节 # 块之间的分隔符

Block size = 4 byte # 记录当前块的大小

数据块头信息=80字节#记录当前块的头信息,其Hash值是下一个新块的参数

类块头数据结构:

Version number = 4 byte #数据块的版本号

Information of the previous block = 32 byte # 记录上一个数据块的Hash值,当前块的Hash值必须小于它

Merkle树的根值 = 32 byte # 记录当前区块中所有交易的Merkle树根节点的Hash值

Timestamp = 4 byte # 记录当前区块的生成时间,按照Unix时间格式

Target value = 4 byte # 当前出块所达到的目标值的特征,用于矿工的工作量证明

Random number = 4 byte # 当前区块工作量证明的参数

Transaction count = 1~9 byte # 当前区块记录的交易数

交易明细=可变长度#记录当前区块保存的所有交易明细

中本聪最初将区块容量上限设置为 1 MB。 1MB的大小相当于平均每秒处理7笔交易,每个区块可容纳4000多笔交易。

早期比特币怎么保存方式_比特币早期挖矿速度_比特币早期挖矿软件

此外,每个区块都有区块高度和区块哈希,但这两个标识符并不存储在区块结构中。 每个块只存储父块的哈希值。 新区块生成后,节点会计算前一个区块的哈希和高度,并将这两个数据维护在单独的表中。

交易中保存了哪些信息?

每条交易记录包含:

每条交易记录都有一个Merkle节点值,它是整个Merkle树的一部分,决定了每个地址都不能被复制或伪造。

什么是幻数?

? 在比特币区块链中,多个区块存储在同一个文件中,使用幻数作为区块数据的分隔符。 每个区块数据都以一个幻数开头,在官网为0xD9B5BEF9,在测试网为0x0709110B。

为什么需要版本号?

? 一条区块链上的区块,随着版本的升级,会有不同版本的区块。 比特币2号版本的Coinbase增加了区块高度,保证后续每个区块的哈希值都是唯一的,因为每个区块的高度直接导致不同的哈希值。

什么是 Coinbase?

? Coinbase是每个区块的初始交易,是矿工挖出这个区块的奖励。

什么是哈希值?

? 哈希函数(英语:Hash function),又称散列算法、散列函数,是一种从任何一种数据中创建小型数字“指纹”的方法。 哈希函数将消息或数据压缩成摘要,减少了数据量,固定了数据的格式。 这个函数将数据打乱,重新创建一个指纹,称为哈希值(hash values, hash codes, hash sums, or hashes)。 --维基百科

哈希函数的属性:

单程。 也就是说早期比特币怎么保存方式,它是不可逆的。 可以对给定的明文计算出哈希值,但是不能对给定的哈希值计算出明文。

防碰撞。 不同的明文使用同一个散列函数很难得到相同的散列值。

比特币早期挖矿软件_比特币早期挖矿速度_早期比特币怎么保存方式

防篡改。 两个不同的明文只要有细微的差别,得到的哈希值也会有很大的不同。

哈希值具有固定长度。 不同哈希函数计算出的哈希值有固定的长度。

比特币使用什么哈希算法?

? 比特币常用的 SHA-256 是 Secure Hash Algorithm 2 (SHA-2) 的一种算法标准。 后缀256表示哈希值的长度为256位。 在比特币中,SHA256算法经常使用两次来处理数据,因此被称为双SHA256。

什么是默克尔树?

? 默克尔(Merkle)树是一种哈希二叉树,用于大规模数据完整性和数据结构的快速归纳和验证。 在比特币中,默克尔树用于汇总一个区块中的所有交易,然后生成整个交易集的数字指纹(哈希值,根)。 Merkle 树还可以高效地验证区块中是否存在交易。

? 在比特币中,默克尔树的叶子节点是每笔交易信息的哈希值的哈希值。 如果存在交易信息TxA,则该交易信息在Merkle树中的哈希值为Hash(TxA) = SHA256(SHA256))。 之后将相邻叶子节点的哈希值拼接起来,再次进行double-SHA256。 重复直到计算出最终默克尔树的根(root)。 如果叶子节点(交易数)为奇数,则复制最后一个叶子节点,然后和偶数形式一样逐层计算。

为什么要使用 Merkle 树?

? 使用默克尔树可以实现中本聪描述的简化支付验证(SPV)的概念:轻客户端(Light Client)不需要下载每一笔交易和每一个区块,只需要下载链上所有的区块头,即可以确定事务的状态。

? 交易信息通过默克尔树进行压缩,可以快速确认接收到的数据是否虚假或损坏。 如果从某个节点获取到一笔交易信息,我们可以申请将Merkle计算过程中要用到的哈希值传输给保存完整区块的可信节点,从而判断这笔交易是否真的存在。

早期比特币怎么保存方式_比特币早期挖矿速度_比特币早期挖矿软件

? 当我们拿到交易K的数据,想要验证K是否存在时,只需要向全节点请求图中橙色节点的哈希值,验证过程

1个

2个

3个

比特币早期挖矿速度_比特币早期挖矿软件_早期比特币怎么保存方式

4个

5个

6个

KL = 散列(K,L)

IJKL = hash(IJ,KL)

IJKLMNOP = hash(IJKL,MNOP)

ABCDEFGHIJKLMNOP =哈希(ABCDEFGH,IJKLMNOP)

如果 ABCDEFGHIJKLMNOP == Merkle 根:

退货交易存在

? 如果有16笔交易信息,需要验证其中一笔交易是否存在,只要请求log16=4个哈希值即可。 因此,Merkle 树结构的使用大大减少了证明数据完整性所需的数据量,并减少了保持一致性、数据验证和数据同步所需的网络 I/O 数据包的大小。

区块链的特点是什么?

区块链具有去中心化、有限透明度、分布式可靠数据库、自治性、记录难以更改、准匿名性等特点,如下所述。

? 去中心化:区块链数据的存储、传输、验证等过程均基于分布式系统结构。 整个系统没有集中的硬件和管理机构。 任何节点的权利和义务都是平等的。 系统中的数据块由整个系统中具有维护功能的节点共同维护。

? 有限的透明度:系统是开放的。 除交易各方隐私信息加密外,区块链数据对所有人开放。 任何人都可以通过公共接口查询区块链数据并开发相关应用。

? 分布式可靠数据库:区块链系统的数据库采用分布式存储,任何参与节点都可以拥有数据库的完整副本,每一方都可以直接验证交易各方的记录。

? 自治性:区块链采用基于共识的规范和协议(如一套公开透明的算法)早期比特币怎么保存方式,使整个系统中的所有节点在去信任的环境中自由、安全地交换数据,使“人”产生信任机器变得对机器和算法的信任,无需人工干预。

? 记录难以更改:一旦信息被验证并添加到区块链中,账户信息就会相应更新,并且记录很难更改,因为它们与之前的所有交易记录相关联(因此是“链”一词的由来) ) 。 系统中使用的各种计算算法和方法用于确保数据库中的记录是永久的,按时间顺序排序,网络中所有其他人都可以看到,除非超过51%的系统可以被控制同时 否则,单节点上的数据库修改是无效的。 参与系统的节点越多,数据库的安全性就越高。 而且,区块链数据的存储也带有时间戳,为数据增加了时间维度,具有极高的可追溯性。 因此,区块链的数据稳定性和可靠性极高。

? 准匿名:区块链系统使用链接到用户公钥的地址作为标识,不需要传统的基于公钥基础设施(Public Key Infrastructure,PKI)的第三方证书颁发机构(Certificate Authority,CA)颁发数字证书以确认身份。 通过在全网节点上运行共识算法,建立网络中诚实节点对全网状态的共识,间接建立节点间的信任。 用户只需公开地址,无需公开真实身份,同一用户可连续更改地址。 因此,区块链交易上的交易不与用户真实身份挂钩,仅与用户地址挂钩,具有交易的准匿名性。