主页 > imtoken国内下载 > 比特币挖矿难度介绍.doc

比特币挖矿难度介绍.doc

imtoken国内下载 2023-01-17 08:08:20

在比特币主链上,平均每十分钟产生一个区块。随着数字货币的发展,参与的矿工数量与日俱增,挖矿技术日新月异,全网算力也在以惊人的速度增长。在BTC中,为了保证主链的平均高度增长率保持原设置,设置了挖矿难度调整功能。深入了解挖矿难度的概念以及如何调整挖矿难度对于开发者和矿工来说非常重要,因为挖矿难度的不合理设置可能会导致全网出块速度极不稳定。本文将详细介绍BTC&BCH的挖矿难度及调整方案。让我们从 PoW 算法开始。1、PoW 算法 PoW(Proof-of-Work)工作量证明算法是针对服务和资源滥用或拒绝服务攻击的经济对策。一般要求用户进行一些耗时且适当的复杂操作,并由服务提供者快速核对答案,并将所消耗的时间、设备和能源作为保证成本,以确保服务和资源得到保障。实际需要使用。PoW算法具有去中心化、单向性、随机性、易于调整目标难度等特点。因此,包括BTC、BCH在内的很多币种都采用了PoW共识机制。在实现上,PoW算法的输入为任意长度,输出为固定长度。例如,SHA256算法通常用于输出256位。在挖矿过程中,矿工使用 PoW 算法计算整个区块头的哈希值。由于 SHA256 的特性:如果块头的任何一位发生变化,得到的哈希值就会变得完全不同,大小变化的方向是不确定的。

btc挖矿难度递增速度_挖矿难度怎么看_莱特币挖矿难度计算

因此,我们比较hash值是否小于某个值(其实这个值就是区块头中保存的nBit“解压后”的current_target值)来判断是否满足要求;如果小于,则广播该块;如果不小于,则根据当前挖矿节点的规则,改变区块头中可以改变的值,然后再次计算区块头的哈希值挖矿难度怎么看,以此类推,直到结果小于目标价值。可以看出current_target值越小,满足挖矿要求的概率越小,挖矿难度越大。2、区块头&Coinbase交易区块头生成:矿工开始新一轮打包时,会先创建一个空区块。块结构分为两部分:块头和块信息。先打包区块信息,再根据区块信息填充区块头。首先看一下已经打包成功的块。下图是撰写本文时拍摄的最新 BTCblock 详细信息。区块信息存储了从内存池中获取的一系列交易信息,矿工基于此创建一个 MerkleTree。交易信息的哈希值作为叶子,最终生成的 MerkleRoot 将填充到区块头中。值得注意的是,交易列表中的第一个是一个非常独特的交易:CoinbaseTransaction。CoinbaseTransaction 与普通交易的主要区别在于:1)CoinbaseTransaction 不消耗 UTXO2) 只有一个输入,叫做Coinbase3)输出地址是矿工的btc/bch地址4)value由挖矿奖励和交易手续费组成5)更值得注意的是没有Unlocking -script在输入中,改为CoinbaseData(这部分数据包括ExtraNonce,在挖矿难度很高的时候会起到很重要的作用) Coinbase交易输入的结构如下: Coinbasedata,数据长度为该字段的范围从 2 字节到 100 字节: blockheight 最初,Coinbase 不包含块高度信息。由于重复交易的问题,诞生了BIP30,然后第二套解决方案BIP3< value 由挖矿奖励和交易手续费组成5)更值得注意的是输入中没有Unlocking-script,而是CoinbaseData(这部分数据包括ExtraNonce,会起到非常重要的作用当挖矿难度非常高时) Coinbase 交易输入的结构如下: Coinbasedata,该字段的数据长度范围为 2 字节到 100 字节:blockheight 起初,Coinbase 没有包含区块高度信息。由于重复交易的问题,诞生了BIP30,然后第二套解决方案BIP3< value 由挖矿奖励和交易手续费组成5)更值得注意的是输入中没有Unlocking-script,而是CoinbaseData(这部分数据包括ExtraNonce,会起到非常重要的作用当挖矿难度非常高时) Coinbase 交易输入的结构如下: Coinbasedata,该字段的数据长度范围为 2 字节到 100 字节:blockheight 起初,Coinbase 没有包含区块高度信息。由于重复交易的问题,诞生了BIP30,然后第二套解决方案BIP3< 当挖矿难度非常高时会起到非常重要的作用) Coinbase 交易输入的结构如下: Coinbasedata挖矿难度怎么看,该字段的数据长度范围为 2-byte 到 100-byte:blockheight 起初 Coinbase 没有包含块高度信息。由于重复交易的问题,诞生了BIP30,然后第二套解决方案BIP3< 当挖矿难度非常高时会起到非常重要的作用) Coinbase 交易输入的结构如下: Coinbasedata,该字段的数据长度范围为 2-byte 到 100-byte:blockheight 起初 Coinbase 没有包含块高度信息。由于重复交易的问题,诞生了BIP30,然后第二套解决方案BIP3<

莱特币挖矿难度计算_btc挖矿难度递增速度_挖矿难度怎么看

BIP34规定Coinbasedata的最高字节代表数据段的字节数,用来表示区块高度,后面的字节代表little-endian方法中的具体区块高度,创世区块高度为0。例如:2013-12-28BTC的一个区块的Coinbase解析中,coinbasedata为0x03443b04...,则区块高度以十六进制和十进制表示为0x043b44;extranonce 用作中间字段,后面会提到。ExtraNonceSolution 详细说明了该功能;上图中Coinbasedata末尾的“/P2SH/”是12年矿工投票支持BTC采用BIP16还是BIP17,现已弃用。(众所周知,BIP16P2SH 获得了更多的选票,被 BTC 采用。) 聚合交易信息并获取 MerkleRoot 后,再填充区块头。块头结构如下(其中nBit是PoW部分提到的current-target的压缩版本):块头80字节,共6个字段:版本号,允许上一个块的hash值可更改但不推荐,MerkleRoot 不允许更改 哈希值,MerkleTree 的根节点的值,用于存储区块信息中的交易,允许更改(更改 coinbase 中输入中的值)时间戳,允许基于MTP11调整改变nonce,用于PoW算法的随机值,允许改变nBit,并且 PoW 算法的结果必须小于这个数字对应的 current_target 才能算出块打包成功。该值是在每个块开始打包之前确定的。区块头 80bytes 的任何值都不允许改变,PoW 的 Hash 结果会发生变化。3、挖矿难

莱特币挖矿难度计算_挖矿难度怎么看_btc挖矿难度递增速度