主页 > imtoken钱包下载国际版 > 工作量证明POW挖矿原理介绍

工作量证明POW挖矿原理介绍

imtoken钱包下载国际版 2023-10-19 05:12:58

众所周知,矿工的比特币挖矿收益包括两部分。 首先是区块奖励,也就是我们熟悉的比特币挖矿; 第二个是交易费。 在这方面,很多矿工都不是很清楚。 矿工们常常心存疑虑。 如果他们清空区块,他们不会收到交易费吗? 为什么有的矿池对空块不收手续费? 那么我们就来说说挖空积木的原理。

POW挖矿原理

工作证明 POW 挖掘是在区块链中生成新块的过程。 包括BTC、BCH、ETH、LTC……,POW挖矿基于以下逻辑。

挖矿就是这样,系统会给一个目标值,就是一个数字,比如前面有18个0。 挖矿就是找一个比这个目标值小的随机数,比如前面有19个0。 如果找到,则该块被开采。 关键字:随机数。 关键问题:这个随机数是怎么计算的?

这个随机数是对矿池最新的区块链进行哈希计算得到的。 关键词:最新高度。 关键问题:最新高度是多少?

现在一个矿池已经挖出一个区块并广播了。 我们假设这个区块的高度是50W。 接下来,所有矿池都会在这个50W的高度后面继续挖矿。 具体动作是矿池首先组装一个新的区块,包括“区块头”和“填充交易的区块体”。 区块头中有两条特殊指令。 首先是父块的哈希值,即50W高度的哈希值; 第二个是Nonce,它是一个数字,一个可调的数字,从0开始。

组装好这个新区块后,矿机对这个新区块(“50W+1”高度)加上之前的50W高度区块进行哈希计算。 这个新区块就是上面的“最新高度”。

btc挖矿原理_btc挖矿软件怎么用_btc挖矿 技术

当矿工执行一次哈希时,它得到一个哈希值,它是一个二进制数。 矿池会将这个值与目标值进行比较。 如果小于目标值,恭喜你挖矿成功,否则,Nonce加1,然后hash,再比较,...

很显然,如果用矿机做hash,你得去试一下符合目标值的Nounce值,真是慢的要死。 但是矿池可以给不同的矿机分配不同的Nounce进行尝试。 比如矿池一共有1000台矿机,第一台机器会从0到1000进行测试; 第二台机器将从10,001到2,000进行测试......这就是并行挖矿。

POW挖空区块原理

以上50W高度和最新的高度块,还需要再细说一下。 矿池在挖出最新的区块链之前,需要验证高度为50W的区块。 如果验证成功,则在“50W+1”新组装的区块高度挖矿是合法的。 如果50W的高度是非法区块,那么所有矿池都必须回到“50W”的高度才能挖矿。

但是验证区块需要时间,因为每个矿池的软硬件不同,我们假设验证1M区块的平均时间为10秒。 在验证结束之前,矿池无法确认区块是否合法,因此无法确认是否应该添加高度为“50W+1”的最新区块。

组装具有最新高度的块也需要时间。 需要时间得到一个区块模板开始组装,填写父区块的哈希值,从内存池中选择交易填充区块体。 我们假设它需要 0.1 秒。

btc挖矿原理_btc挖矿 技术_btc挖矿软件怎么用

在验证“50W”高度区块时,将交易填入“50W+1”区块有预付。 填写交易不得与打包交易在50W高度重叠。 否则,你最新的高度块将是非法的。

“50W”区块被开采并广播到所有矿池也需要时间。 广播一个区块有两个步骤。 第一步是广播区块头; 第二步是广播区块体。 区块体很小,只有80字节,比一个交易还小,广播速度很快。 所有矿池都可以非常快速地获得区块头。 有了区块头,就可以得到组装好的新高度区块的“父哈希值”。 区块体是包含所有交易的部分,一般都很大,比如2500笔交易接近1M。 BTC最多可以接近1M,再加上3M的隔离见证块。 而BCH曾经打包过一个21M的块体。 所有矿池都需要更长的时间才能收到区块体,这就是网络延迟。 我们假设网络延迟通常为 0.5 秒。

矿池挖矿最简单的方法是:矿池只需要拿到区块体就可以确认区块体中有哪些交易。 只有对整个区块进行验证,才能知道高度为“50W”的区块是否合法。 然后开始组装最新的高度块,然后挖矿计算小于目标值的哈希值。 需要多长时间才能拿到区块体,验证整个区块,组装最新的高度区块? 0.5+10+0.1=10.6秒。

如果矿池按照上述流程进行挖矿,则在10.6秒内无法挖矿,矿机工作时间无效。 而且矿机在开机的时候还在耗电。

如果一个矿池按照以下流程工作:得到区块头,开始组装一个高度为“50W+1”的新区块,但是由于无法确认高度为“50W+1”的区块中的交易金额是否为50W是整个区块是合法的,所以对于这个“50W+1”高度的区块,矿池并没有向区块体填充额外的交易,而只是填充了一笔Coinbase奖励交易。 这个“50W+1”高度的区块只有一个区块头,加上一笔Coinbase奖励交易——这是一个空区块——然后直接开始挖矿。 这样,当全网出现一个新的区块时,矿工只需要等待获取区块头和组装空块的时间,就可以开始挖矿了。 这个时间很短btc挖矿原理,通常不到0.5秒。 与 10.6 秒相比,这节省了 10 多秒。

按照以上挖矿流程,矿池在收到完整的50W高度区块体并验证50W高度区块后,需要10.6秒的时间。 在上述0.5秒到10.6秒之间,如果矿机计算出一个小于目标值的随机数,则说明矿池成功挖到了一个空块。 如果矿机没有计算出小于目标值的随机数,矿池将放弃这10.1秒的挖矿时间,然后组装一个最新高度为“50W+1”的交易填充区块进行挖矿.

btc挖矿 技术_btc挖矿软件怎么用_btc挖矿原理

以上就是挖空区块的全部逻辑。

优化挖矿原理

在上述挖空矿的原理中,确认“50W”高度区块内的交易是一项重要的工作。 如果能提前知道这些交易,那么组装“50W+1”高度的区块就可以避免这些交易。 ,组装一些其他交易,这样就不需要打开空块。

现在BTC和BCH网络有两个技术可以优化这个区块体的传播,这也让所有矿池更快的知道哪些交易在“50W”高度。 第一种技术叫做Bloom filter; 第二种称为紧凑块(Compactblock)和精简块(Xthinblock)。 (compactblock由Coredev开发,Xthin由unlimiteddev开发,两者功能相同。)

布隆过滤器是用来标记哪些交易在高度为“50W”的区块中,只是一种标识。 矿池得到这个标记后就会知道自己有哪些交易,然后矿池会去自己的内存池中找到这些交易,列出自己没有的交易,然后向其他节点询问自己有的交易没有。 在这些不可用的交易之后,在本地重新组装一个“50W”高度的区块,而不是从网络下载一个“50W”高度的区块。 这个过程就是Compactblock和Xthinblock的原理。

通过这两项技术,可以压缩网络延迟时间,但验证“50W”高度块的时间仍然没有压缩,前者仅为0.5秒,后者为10秒。

btc挖矿原理_btc挖矿 技术_btc挖矿软件怎么用

这么大的时间差,矿池还得去挖空块,不然整个矿机就白白浪费电了。 要知道,这10秒的浪费,对于整个网络来说,都是极其巨大的能量。

那么该怎么办?

挖空积木的完整解决方案

以上分析了挖空区块的原理和优化挖矿的原理。 挖空区块的核心原因是矿池不敢用已经在“50W”高度的交易填充“50W+1”的空区块。

如果有办法保证矿池组装的空块中绝对没有“50W+1”高度的交易,那不就解决问题了吗?

一种方式是矿池自己产生一些交易,不进行广播,只保存在自己的内存池中,用来填充高度为“50W+1”的空块。

btc挖矿软件怎么用_btc挖矿原理_btc挖矿 技术

但是矿池不能产生一些无意义的交易,否则就是一些垃圾交易,对网络是一种浪费。 打包用户发送的交易肯定是有意义的,但是用户发送的交易往往是广播的,打包时存在高度为“50W”的区块冲突交易的风险。

请务必查找尚未广播的交易。

一种方法是与矿池和交易所合作。 交易所不广播用户在交易所发起的提现交易,而是通过IP to IP加密的方式直接发送到矿池。 这些交易永远不会打包在“50W”高度的区块中。 这些事务可以100%达到“50W+1”的高度,没有冲突。

如果交易所和矿池是同一家公司,那么这个方法很容易实现。 不是同一个题材,矿池还是怕被交易所坑。 如果交易所插入广播交易,可能会浪费一个空块的块奖励。

但是这种方式会降低交易所的用户体验,因为挖到空块的概率低,而且这些交易需要很长时间才能打包。 虽然矿池可以打包非空块,但是用户也得等这个矿池出块后才能确认,这距离全网有块时间很长。

另一种方法是让交易所提交给矿池的机密交易不是用户的提现交易,而是一些零散的UTXO拼凑成一个大的UTXO的交易。 这种交易针对整个 UTXO 量做了很大的优化,这些交易对时间的要求不是很强。 适合用空块包装。

因此,只需要考虑经济学,因为 POW 挖矿机制是最优设置,不应涉及道德问题。 所有批评矿池清空区块的评论btc挖矿原理,都是对POW挖矿机制没有信心。