主页 > imtoken安卓下载 > 交易存储形式——默克尔树

交易存储形式——默克尔树

imtoken安卓下载 2023-05-28 07:39:51

交易存储形式——默克尔树

节点初步判断交易有效但未上链的未确认交易在本地以树状结构存储,即我们在区块链中常见的Merkle树结构,Merkle树是二叉树数据结构,一个父节点有两个子节点,事务是下图形式形成的默克尔树,这样可以通过哈希快速检索到一个区块中的一个事务。 Merkle 树的根值是所有交易的哈希值。

默克尔树结构

块数据结构

为了更好的介绍、挖掘、交易打包等概念,我们先来了解一下区块的数据结构。一个块由以下部分组成:

区块高度(Height):可以理解为每个区块的ID。通过这个值,可以直接看到当前的块数。创世区块高度为0。

Prev Block:前一个高度块的哈希值。

Header Hash(区块):每个区块都有唯一的哈希值,由前一个区块的头部哈希、数据块哈希和随机数生成。

Merkle Root:区块中的每一笔交易对应一个哈希,呈树状结构,生成的最终值(根)代表区块中的交易。 .

时间:区块产生的时间

难度:指挖掘当前区块的难度,是按照一定的计算公式计算出来的一系列自然数。根据中本聪的规定,这个难度系数会每两周自动调整一次,保证每个新区块的生成时间在10分钟左右。

Nonce:随机数,最后计算出满足所需哈希的随机数。

区块体:区块中的交易以树状结构存储。

挖矿是什么意思

了解了区块的数据结构后,我们再来看看我们常说的挖矿是什么意思。

挖矿就是在现有区块链最新区块的基础上,生成一个合格的区块,链接到区块链中,获得奖励的出块过程。

如何找到新区块

寻找新区块的过程有点像蛮力破解过程。其实就是对我们的区块头进行哈希运算,使得最终计算出来的哈希值小于难度字段。区块头中的所有指标基本都是固定的,除了随机数,所以挖矿过程就是不断地改变随机数,最终得到一个满足要求的哈希值。

在矿工埋头挖矿的同时,他们仍在监控整个网络。一种是监控新生成的交易,但是监控是否有人挖了一个新区块。

如果一个交易被监控,该交易会被验证挖矿是什么意思?,验证后的交易会被放入本地交易池并广播到相邻节点,并更新默克尔树的根值以继续。矿业。当一个节点计算出正确的随机数时,本地交易被打包到区块中。交易的第一笔交易称为 CoinBase,指的是奖励矿工挖掘新区块的交易。交易没有输入,只有输出。打包完成后,广播区块。其他节点收到区块后,需要验证该区块是否有效,有效后更新本地区块链,并从本地交易池中删除该区块中已有的交易。要走,矿工需要确保本地交易池中的区块都是未确认的,然后将区块广播到相邻节点。新区块上的交易首次被确认。当下一个区块连接到这个区块时,交易将被进一步确认。在连续 6 个区块确认后,我们认为该交易是不可逆的。的。

什么是区块链分叉?

虽然区块链通过密码学的方式增加了挖矿难度,降低了同时产生两个区块的可能性,但是由于网络延迟等因素的限制,仍然有可能两个节点都找到一个满足要求的随机数,生成两个区块。在这种情况下,区块链一般会保留两个区块,让矿工在两条链上继续挖矿,直到一条链再次成为最长链。

一些常见问题

1、交易包装的顺序和重量。

当交易被打包进区块时,矿工在全网肯定已经有很多交易了,那么如何确认先打包了哪些区块呢?一般来说,影响体重的因素有3个。

交易时间

交易 UTXO 大小

交易费

一般来说,交易时间越早,UTXO越大,交易费用越高。先打包。

按理说,由于Merkle root也是挖矿的一部分,在新的区块产生之前,已经确定了哪些交易会被打包成随机数,也会通过改变包来改变Merkle root的值交易。一般来说,记账节点对哪些交易可以记录在账本上有很大的自主权。

2、为什么交易被6个区块确认后确定为不可逆

其实中本聪在他的论文中也讨论过这个,一般来说,如果一个人想要改变这个交易挖矿是什么意思?,他必须跟踪这个交易产生的区块来改变,那么一般在被6个区块确认之后,“追赶”的计算量将是天文数字,全从经济角度来看,尽管有这样的计算能力,但这样做并不划算。