主页 > 苹果imtoken钱包安装 > 比特币挖矿难度介绍

比特币挖矿难度介绍

苹果imtoken钱包安装 2024-01-26 05:07:02

比特币挖矿难度精讲图片

区块链 wwwbbcaijingcn 比特币主链平均每十分钟产生一个区块。随着数字货币的发展,涉及的矿工数量与日俱增。采矿技术日新月异。计算能力也在以惊人的速度增长。为了保证初始设置时主链的平均高度增加,设置了挖矿难度调整功能。深入理解挖矿难度的概念和挖矿难度调整的方案。建设方案 建设方案示例 结构建设方案 营销规划方案模板 建设组织设计(建设方案)对于开发者和矿工来说非常重要,因为不合理的挖矿难度设置可能导致全网出块速度极不稳定本文将介绍BTCBCH挖矿详细难度和调整方案我们先从PoW算法说起。 1PoW 算法 PoW Proof-of-Work 工作量证明算法是一种对应于服务和资源滥用或拒绝服务攻击的经济对策。通常,用户需要执行一些复杂且耗时的任务。计算和答案可以被服务方快速核对。所消耗的时间、设备和能源作为保障成本,保证服务和资源被真实需求所使用。 PoW算法具有去中心化单向随机性、目标难度易于调整等特点,因此包括BTCBCH在内的很多币种都采用了PoW共识机制。在实现上,PoW算法的输入是任意长度,输出是固定长度。例如SHA256算法通常用于对应256位的输出。在挖矿过程中,矿工使用 PoW 算法。计算整个区块头的哈希值。由于SHA256的特性,改变区块头任意一位得到的hash值都会变得完全不同,大小变化的方向不确定,所以我们比较hash值是否小于某个值。实际上,这个值存储在块头中。 nBit“解压后”中nBit“解压后”的current_target值用于判断是否满足要求。如果小于该值,则广播该块。如果不小于,则按照当前挖矿节点的规则。规则改变表改变区块头中可以改变的值,然后重新计算区块头哈希值,重复计算,直到结果小于目标值。可以看出current_target值越小,满足挖矿要求的概率越小,挖矿难度越大。 2 区块头 Coinbase 交易 区块头生成 当矿工开始新一轮打包时,首先会创建一个空区块。块结构分为两部分:块头和块信息。首先将区块信息打包,然后根据区块信息填写区块头。首先,查看已成功打包的块。截取本文时最新的BTCblock详情区块信息,存储的是矿工从mempool中取出并以此创建的一系列交易信息

比特币难挖矿难度查询

比特币挖矿难度精讲图片1

比特币难挖矿难度查询

a MerkleTree 交易信息的哈希值作为叶子生成的MerkleRoot。值得注意的是,交易列表中的第一个是非常独特的交易。 CoinbaseTransaction 与普通交易的主要区别在于,1CoinbaseTransaction 不消耗 UTXO2input 只有一个 btcbch 地址,称为 Coinbase3output,地址为 miner4value比特币难挖矿难度查询,由挖矿奖励和交易费用组成 5. 更值得注意的是,其中没有 Unlocking-script输入。相反,它是 CoinbaseData。这部分数据包含ExtraNonce,在挖矿难度非常高的时候会起到非常重要的作用。 Coinbase 交易输入的结构如下。 2-byte~100-byte blockheight 起初,Coinbase 没有包含区块高度信息。由于重复交易的问题,BIP30 应运而生。然后第二套方案 BIP34BIP34 规定 Coinbasedata 的最高字节表示用于表示区块高度的数据段的字节数。以下字节以 little-endian 格式表示特定的块高度。创世区块的高度为0。例如Coinbase解析2013-12-28BTC的区块时,coinbasedata为0x03443b04,区块高度十六进制为0x043b44,十进制为277316extranonce。作为中间字段,extraNonceSolution 将在下图中详细说明。以 Coinbasedata 结尾的“P2SH”是一位 12 年的矿工,他投票支持 BTC 使用 BIP16 或 BIP17。现在已弃用。众所周知,BIP16P2SH 获得了更多的票数被 BTC 采用。在聚合交易信息并获得 MerkleRoot 之后,然后用块头结构填充块头,如下所示,其中 nBit 是 PoW 部分中提到的 current-target 的压缩版本。块头 80 字节共有 6 个字段。 1 版本号可以更改,但不建议使用前一个区块的哈希值。不允许更改 3MerkleRoot 的属性。

比特币难挖矿难度查询

比特币挖矿难度精讲图片2

比特币难挖矿难度查询

h值用于存储区块信息中交易的MerkleTree的根节点 值允许改变 改变coinbase中输入的值 4 时间戳允许根据MTP11调整 改变5nonce 随机用于 PoW 算法的值允许改变 6n 在块开始打包之前,确定不允许改变块头中任何 80bytes 的值 如果 PoW 的哈希结果改变,哈希结果将改变。 3 挖矿难度和难度调整 了解PoW的运行以及哪些因素会影响运行结果。接下来,让我们了解一下我们需要满足哪些难度要求。挖矿难度的描述可以认为是三种不同形式的难度难度值浮点数 current_target 当前目标值 256-bitnbits32-bit 不同的形式其实表达的难度要求是一样的,这个难度要求是在每个区块打包之前确定的. Difficulty is not written in the block but in the form of浮点数的形式展现给人直观的感受难度程度difficultydifficulty_1current_targetdifficulty_1为常数0x00000000ffff0000000000000000000000000000000000000000000000000000创世块的current_targetdifficulty_1所以创世块的difficulty10nbits就是区块头nBits字段的值用长度为32 -bit的分数表示256-bit的分数是需要牺牲一定的精度,可以理解为“压缩”的current_target。在计算current_target时,我们先将其转换为二进制,然后使用公式a计算256位的current_target。值得注意的是 current_target 是一个无符号的 256 位值。为了与bitcoind代码保持一致,设置了一个Sign字段。保留的符号位引用是IEEE浮点表示法,实际上没有用。 current_target的公式为,例如nBits0x180192d4current_target0x192d4280x18-3,最高16位为零。与创世区块相比,current_target 减少了约 1236 倍。难度增加了约7184404942701倍。为了保持每十分钟出块的平均频率,BTC中的current_target被设计为一个动态值current_target根据全网算力的变化进行一些相应的调整。这是挖矿难度调整。 BTC挖矿难度调整的思路是以2016个区块为一个两周周期。每个周期都基于前一个周期的实际时间消耗。调整理论耗时新目标值的差值 当前目标值 2016年实际出块时间 2016年理论出块时间2周 然后继续使用上一个区块的目标值2计算2016年出块的实际使用时间。如果时间少于半周,则按半周计算,防止难度增加超过4倍。如果时间高于8周,则按8周计算,防止难度降低至4倍。以下 3 实际使用时间乘以当前难度除以 2 周 4 如果超过最大难度限制,则按照最大难度进行计算过程 Go 代码如下 4 BCH 难度调整 生成一个区块10分钟内,矿工可以随意切换BTC和BCH。但是,由于BCH网络的算力只占BTC的7左右,当BCH的利润大于BTC时,大量原始BTC矿工,尤其是大型矿场,将切入BCH板块。随着时间的推移,随着计算能力的增加,难度值也会增加。矿工将离开并切换回 BTC。算力会下降,难度会一直居高不下,出块难度会很大。如果 BCH 继续使用 BTC 的难度调整方案,出块率将无法保证平均 10minsblock,BCH 的难度调整算法已经经历了两种方法。第一个是 EDA 目前使用的紧急难度调整规则是 Difficulty Adjustment Rule DAA 紧急难度调整规则 EDAEDA 在 BTC 难度调整算法的基础上增加了一个 EmergencyDifficultyAdjustment 的解决方案,主要是为了在速度变慢的情况下及时降低难度块生产。前 2016 个区块的出块时间遵循 BTC 难度调整方案。对于高度不是 2016 倍数的区块,计算生成前六个区块的总时间是否超过 12 小时。超过则降低20挖矿难度。具体实现代码如下。难度调整规则 DAA 然而,在三个多月的运行中,EDA 的表现并不尽如人意。由于没有针对高出块率做出及时调整,而是依托于BTC原有的2016年区块调整机制,所以在算力波动的情况下表现出色。这不是很好。为了解释上述观点,我截取了三个“典型”数据。 12017826号算力攻击被切断。 2017827号大算力被截断后,23小时出块困难。仅产生了13个区块比特币难挖矿难度查询,导致挖矿不断调整和减少。难度 12017102 BCH 网络的算力因为矿工的逐利而突然提升,只用了 30 分钟 20 多个区块 1 使用了更直观的数据。 BTC和BCH的起跑线是一样的。 2017年8月1日的高度与478558相同。截至2017年11月12日晚,BTC已开采高度494079,BCH已开采完毕。在503815的高度,还有近万个区块,迫切需要优化BCH的难度调整方案。在获得几大矿池稳定算力支持后,BCH于2017年11月13日再次升级,优化EDABCH开发团队,而非社区。 DAA 最终采纳了 BTCABC 开发团队 AmaurySechet 的 DAA 提案。这个提议的eda可以用一句俗语来形容:“魔高一尺,路高,魔有天花板”。根据前一天的计算能力,可以预测需要设置多少工作量。需要十分钟。实现逻辑如下: 1、新算法会在504031高度开始生效。 2、假设需要获取target_height的目标难度。从pre中取三个block的ntime顺序

比特币难挖矿难度查询

比特币挖矿难度精讲图片5

vBlock-1-144 到 prevBlock-1-144-2 并以中间的ntime为firstNode 备注bch的目标是10分钟出块,一天出块144个。 5 根据最近 144 个区块的链上累计工作量,ChainWork 可以计算出满足当前算力所需的工作量。 Work1,然后通过工作值获得目标难度。新Target法的二重积分计算方法如下。 84消毒液的配比方法。挖矿难度由算力逐块设置。当计算能力呈指数变化时,网络会迅速调整难度以保证公平。避免当前算力与目标难度不匹配导致的反馈振荡。它可以在一定程度上减少时间戳操纵等攻击。它如何影响 DAA 对算力攻击的响应?以下是算力变化的两种极端场景。算力突然翻倍,算力突然减半。也就是说,随机选择的数字小于目标的概率是1272,但是块头的nonce字段只有4个字节,也就是32位。可能已经尝试了232个随机数,仍然找不到满足目标的结果,所以允许更改块头中的一些其他字段以生成新的结果。允许更改的字段在块头的第二小节中指定。想象一下,如果你频繁更改 CoinbaseData 区块头中的 ExtraNonce 是如何改变区块头的 MerkleRoot 的呢?显然效率会很低,所以实际的挖矿策略是尽量减少区块头中VersionTimeStampMerkleRoot绿色区域的数据值变化,“疯狂”遍历Nonce红色区域的值进行PoW 遍历完之后,如果没有找到满足目标的结果,那么改变绿色区域的值,然后继续“疯狂”遍历Nonce等等,直到找到满足目标的结果或者本轮PoW竞赛失败,开始新一轮打包