主页 > 苹果手机安装imtoken > POW矿池出块原理及解决方案

POW矿池出块原理及解决方案

苹果手机安装imtoken 2023-04-01 05:33:43

第0章介绍

比特币的挖矿收益由两部分组成,一是出块奖励;二是交易费。如果您玩空块,您将不会收到交易费用。为什么有些矿池不收取空块费用?

第一章POW挖矿原理

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

挖矿就是这样,系统会给出一个目标值,就是一个数字,比如前面18个零。挖矿就是找一个小于这个目标值的随机数,比如前面19个零。如果你找到它,你已经开采了这个区块。关键词:随机数。关键问题:如何计算这种随机性?

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

现在一个矿池已经挖出一个区块并广播它。我们假设区块高度为 50W。接下来,在这个50W高度之后,所有矿池都会继续挖矿。具体动作是矿池首先组装一个新区块网络挖矿是什么原理,其中包含“区块头”和“填充交易的区块体”。块头中有两个特殊说明。第一个是父块的hash值,这里是50W高度的hash值;第二个是Nonce,是一个数字,一个可调整的数字,从0开始。

网络挖矿是什么原理

在组装这个新区块后,矿工对这个新区块(“50W+1”高度)加上前一个高度为 50W 的区块进行哈希运算。这个新块就是上面的“最新高度”。

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

显然一个矿机来hash的时候,你得去尝试找到一个符合目标值的Nounce值,真是慢得要死。但是矿池可以将不同的Nounce分给不同的矿工去尝试。比如矿池里一共有1000台矿机。从0到1000,尝试第一台机器;第二台机器10001到2000……这就是挖矿的并行度。

第2章POW空心块原理

对于以上50W高度和最新高度积木,我们需要进一步阐述。矿池在挖出最新高度的区块链之前,需要验证高度为50W的区块。如果验证成功,则在新组装的区块高度“50W+1”处挖矿是合法的。如果50W高度是非法区块,那么所有矿池都必须回到“50W”高度进行挖矿。我的。

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

网络挖矿是什么原理

组装最新高度的块也需要时间。获取块模板开始组装,填写父块的hash值并选择内存池中的交易填写块体,所有这些都需要时间,我们假设需要0.1秒。

在验证“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高度的区块中的区块无法确认交易总和是整个区块是否合法,所以对于这个高度为“50W+1”的区块,矿池不会用额外的交易填充块体,而只会填充一个Coinbase的奖励交易。这个“50W+1”高度的区块只有区块头,加上一个Coinbase奖励交易——这是一个空区块——然后直接开始挖矿。这样,当全网出现一个新的区块时,矿工只需要等待时间获取区块头并组装空块,然后开始挖矿。这个时间很短,通常不到 0.5 秒。与 10.6 秒相比,这节省了 10 多秒的时间。

网络挖矿是什么原理

按照以上流程进行挖矿,矿池会收到一个完整的50W高度区块,并验证50W高度区块。这个过程是 10.6 秒。在上述0.5秒到10.6秒的时间里,如果矿工计算出一个小于目标值的随机数,矿池就成功挖出了一个空块。如果矿工没有计算出小于目标值的随机数,矿池将放弃 10.1 秒的挖矿时间,然后组装一个最新的填满交易“50W+1”高度的。用于挖掘的高级区块。

以上就是淘汰赛区块的全部逻辑。

第三章优化挖矿原理

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

现在 BTC 和 BCH 网络有两种技术可以优化这个块体的传播,这可以让所有矿池更快地知道哪些交易处于“50W”高度。第一种技术称为布隆过滤器;第二种称为紧凑块和Xthin块。 (compact block是Core dev开发的,Xthin是unlimited dev开发的,两个功能是一样的。)

布隆过滤器用于标记哪些交易在高度为“50W”的区块中,但只有标识。当矿池得到这个标记后,就知道里面有哪些交易,然后矿池会去自己的内存池中寻找这些交易,列出自己没有的交易,然后向其他节点询问交易它没有。要获取这些丢失的交易,请在本地重新组装“50W”块,而不是从网络下载“50W”块。这个过程就是Compact block和Xthin block的原理。

网络挖矿是什么原理

通过这两种技术,可以压缩网络延迟时间,但仍然无法压缩验证“50W”高度块的时间,而前者只有0.5秒,而后者是10秒。

这样的时间间隔,矿池还是要挖空块,不然整个矿机白白浪费电。要知道,这10秒的浪费,对于整个网络来说,是极其巨大的能量来源。

那又怎样?

第四章彻底解决挖空方块的方法

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

如果有办法保证矿池组装的“50W+1”高度的空块绝对没有交易网络挖矿是什么原理,难道就不能解决问题吗?

网络挖矿是什么原理

一种方法是矿池自己生成一些交易,不广播,而是保存在自己的内存池中,填充高度为“50W+1”的空块。

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

一定要寻找未广播的交易。

一种方式是矿池与交易所合作,交易所不广播用户在交易所发起的提现交易,而是通过IP到IP的加密方式直接发送到矿场。池子,这些交易永远不会被“50W”高度的区块打包。这些交易可以 100% 无冲突地进入“50W+1”高度。

如果有交易所和矿池是同一家公司,那么这种方法很容易实现。不一样的主体,矿池还怕被交易所困住。如果交易所插入广播交易,可能会浪费空区块的区块奖励。

但是这种方式会降低交易所的用户体验,因为打到空块的概率很低,这些交易要打包多少个月、多少个月,虽然矿池可以挖出非空块。打包在区块中,但用户必须等待矿池出块后才能确认,这距离全网出块还有很长的路要走。

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

第五章结论

只需要考虑经济学,因为POW挖矿机制是最优设置,不应该涉及道德。所有批评矿池空块的评论都是对POW挖矿机制缺乏信心。