主页 > imtoken 官网 > 分析挖出的比特币存在于何处(2023已更新(搜狗/知乎)

分析挖出的比特币存在于何处(2023已更新(搜狗/知乎)

imtoken 官网 2024-01-26 05:07:08

关于SegWit的讨论已经冷清了很多,但我还是想尝试从技术角度来解释一下:

什么是

它与 SegWit 有什么关系

在说这两件事之前,离不开一个关键词:挖矿,那么先说说挖矿吧!

矿业

比特币挖矿机制:比特币挖矿机制采用SHA256算法,但SHA256算法并不是针对整个区块,而是只针对区块头(Block Header)。 下图显示了块的组成:

从上图可以看出,Block hash是通过字段组合得到的,然后进行hash。 黄色背景的字段是块标题,其中包含:

版本号

前一个块的哈希值

默克尔根

(时间戳)

位(难度)

Nonce(随机数)

在一轮挖矿过程中,版本号、前一个区块的哈希值、难度都被确定下来。 矿工需要做的就是不断修改Nonce,改变当前区块的哈希值,找到一个小于当前难度的Block Header。

怎么挖比特币_除了挖比特币矿机还能挖什么_2023挖比特币收益分析

但是可用于Nonce的搜索空间是不够的,因为Nonce的位数只有4bytes。 Block Header中各字段占用的位数:

4bytes的Nonce意味着他的搜索概率空间是2^32,也就是说可以遍历4G的哈希运算。 对于目前的单台矿机来说,瞬间就可以完成。

当Nonce的搜索空间不够时,只能改变Merkle根,可以来回调整,但调整后的搜索空间还是不够。

矿工通过修改交易、交易顺序等方式获取新的Merkle Root,然后进行2^32次Nonce遍历。 Merkle Root 有 32 个字节,它的搜索空间足够大。

总结比特币挖矿:

简单来说,比特币挖矿就是通过不断改变Nonce来改变区块哈希,找到一个小于当前难度的区块头。 但是,Nonce 的搜索空间太小了。 2^32哈希后2023挖比特币收益分析,没有找到对应的区块头。 更改 Merkle Root 以重新计算。

以上简单介绍了比特币的挖矿机制,那么到底是怎么回事呢?

它是一种与SHA256计算和Block Header结构相关的算法。 在开始计算区块头的哈希值时,需要先填写128字节,然后进行SHA256计算。 上图中的区块头只有80字节,其余需要固定48字节填充到128字节。

计算128字节hash的过程分为两个过程,前64字节一起计算,后64字节一起计算:

这样的填充块头被分成两部分。 更有趣的是 Merkle Root。 Merkle Root的32个字节中,前28个字节在前面计算,后4个字节在后面计算。 ,Block Header hash的计算公式为:

SHA256=F(Chunk1)+B(Chunk2)
Chunk1=(version)+(Previous hash)+F28(Merkle root)
Chunk2=B4(Merkle Root)+Timetamp+Bits+Nonce+padding

结合以上,在计算区块哈希时会出现一个现象:

除了挖比特币矿机还能挖什么_怎么挖比特币_2023挖比特币收益分析

每次改变Nonce的值,Chunk1的值不变,也就是说每次改变Nonce,只需要重新计算上次计算的B(Chunk2)和F(Chunk1)。

这是一种优化挖矿的方法。 优化后2023挖比特币收益分析,每轮可搜索空间的Nonce都会发生变化,计算SHA256的公式变为:

SHA256=F(Chunk1)(不变)+B(Chunk2)`

基本上所有的矿机都做了这个优化。 在这个优化的基础上,我们扩展了思路,找到了另一种优化方法:

既然Chunk 1可以保持不变,那有没有办法让Chunk 2保持不变呢? 从前面的公式我们可以看出,只要Merkle Root的后4位和Nonce不变,挖到的比特币所在的地方,Chunk 2就可以保持不变。

如果能发现Merkle Root的后四位相同,那么在相同数和Nonce不变的情况下,可以得到另一个优化公式:

SHA256=F(Chunk1)`+B(Chunk2)(不变)

一轮挖矿基本不变,遍历2^32以内的搜索空间中的Nonce。 剩下的问题就是找到足够多的后四位相同的Merkle Roots,这样每次遍历Nonce时都可以复用后面部分的计算结果,有效减少计算量,提高找到区块hash的概率.

如前所述,可以通过改变交易顺序、找零等方式获得新的Markle Root,从而通过碰撞找到后4位相同的Merkle Root。 通过碰撞找到最后 4 位数字相同的散列的概率是多少? 根据“生日悖论”(后4位相同的字节有相同的32位概率),概率为:

大约有77000次碰撞,有50%的概率会出现后四位相同的hash。 这种碰撞的概率能增加多少? 白皮书给出的结果:

此次优化理论上可以提升碰撞效率20%,合并性能提升7%左右。 它可以用软件或芯片(硬件)来实现。 如何更改 Merkle Root:

修改交易,白皮书认为效率不够

另一种是更新Merkle树的排序

...其他方法

怎么挖比特币_2023挖比特币收益分析_除了挖比特币矿机还能挖什么

可见其是基于比特币区块头和SHA256算法的优化,并非攻击。

仅一项技术优化

显然,目前的比特币协议既没有被攻破,也没有产生不可用的区块,比特币不会存在安全问题。

基于SHA256算法的优化在比特币历史上也出现过数次:

改变上面提到的Nonce时,F(Chunk1)的前半部分不需要重新计算

下半场前三轮也是可以优化的参考

...

可以说,所有的软件和系统都有被优化的可能,比特币挖矿的历史就是一个效率不断优化的过程。

我们究竟应该如何定义优化和攻击? 这是一个值得思考的问题。 允许优化 SHA256 前 64 位的计算。 优化的 64 位计算是一种攻击吗?

是一种优化算法,只是在原有比特币挖矿的基础上增加了碰撞hash的概率,用于寻找更合适的Block Header,提高了找到block header的概率,不是漏洞

如果有一种技术可以提高比特币挖矿效率,希望矿工尽快应用这项技术,这样攻击者就不会比矿工有技术优势。 毕竟算力是比特币安全的基础。 如果攻击者在技术上领先于矿工,比特币被攻击的可能性就会增加很多。

介绍完了,我们来看看它和SegWit有什么关系?

隔离见证和

SegWit(Witness)是隔离验证,它的应用会改变TX,它会采用一个新的TX ID:Witness ID

怎么挖比特币_除了挖比特币矿机还能挖什么_2023挖比特币收益分析

对应的,ID对应的是Witness Merkle Tree,然后是Winess Merkel Root,但是Winess Merkel Root写在哪里呢? 答案是。

SegWit协议将添加一个新的输出,新的输出是:

output_data = WITNESS_COMMITMENT_HEADER + ser_uint256(uint256_from_str(hash256(ser_uint256(witness_root)+ser_uint256(witness_nonce))))
script = CScript([OP_RETURN, output_data])

新的输出包括:+WITNESS信息+由Witness Merkle Root hash组成的Script。

不包括Witness Merkle Root的计算,从而避免了与Witness Merkle Root相互变化造成的死循环。

这样一来,就有一个问题,就是任何一笔交易在隔离见证中的位置发生变化,都会导致Witness Merkle Root发生变化,而Witness Merkle Root的信息必须包含在SegWit中才能影响变化,并且SegWit Changes 将导致整个区块发生变化。 Merkle Root 已经改变了。

如果在SegWit中通过改变交易顺序获得新的Merkle Root,会降低效率,因为Witness Merkle Root和Merkle Root需要同时计算,从而降低效率。

这就是 SegWit 为您所做的。 但一个重要的事实不容忽视:SegWit 和 SegWit 并不相互排斥:

只要使用相同的块头结构进行优化,它就仍然有效。

改变SegWit中获取Merkle Root的方式与改变当前协议具有相同的效果,因为Witness Merkle Root不包含TX。

SegWit并不是相互排斥的,也不是SegWit不存在的优化。 在SegWit中的使用,在工程上也可以进行优化:Merkle Root的计算也需要计算hash,在Merkle Root的计算过程中可以不时地阻塞block hash的计算。 并行计算将是一种更好的优化方式。 在这种情况下,使用变更获取Merkle Root带来的效率下降不会特别明显。

总结

原则:

怎么挖比特币_2023挖比特币收益分析_除了挖比特币矿机还能挖什么

在计算区块头时,将Merkle Root分成两部分进行计算。 如果使用后4位相同的Merkle Root来计算区块哈希,将会提高挖矿效率

隔离见证:

SegWit需要使用Wintess TX ID,然后有一个新的Witness Merkle Root,Witness Merkle Root会写,Witness Merkle Root本身不会写。 因为软分叉,区块头结构没有改变。

基于以上,可以得出以下结论:

本质上只是基于区块头结构和SHA256算法的优化。 挖出的比特币存在于何处,与SegWit互不排斥

区块头结构和SHA256算法不变的前提永远存在。

SegWit 将对掉期交易在中国的交易方式产生影响

在 SegWit 中,交易顺序的每一次变化都会导致变化,然后需要重新计算 Merkle Root。 交易顺序的变化将导致 Witness Merkle Root 和 Merkle Root 发生变化。

如果有更好的工程优化,仍然可以在 SegWit 中工作

除了通过改变交易的顺序来降低更新Merkle Root的效率之外,工程优化方法仍然可以有效,比如并行计算

这只是一种优化挖矿的方式,这种优化不会在SegWit中消失,因为区块结构不会改变。 G Maxwell 想出了一种方法来更改邮件中的块标头,这样它们就不能再使用了。 我不反对这个建议,我只是认为没有必要。 如果不允许矿工优化计算 64 字节,那么前 64 字节不应该优化计算。 而且以后还会有其他类似的优化,是不是都应该禁止了?

在给定的条件下,人类总有办法找到比原来的方法B更好的方法A。人类的历史就是效率递增的历史。

挖矿网Ethos中文网拥有简单易用的挖矿系统,为挖矿行业提供教程软件和矿机评测及交易信息,对比计算各种数字货币在挖矿网的挖矿收益,以及介绍矿网挖矿工具,矿场最新动态等。

矿业网络,版权所有丨如未注明,均为原创丨本站采用BY-NC-SA协议授权

转载请注明原文链接:分析挖出的比特币存在于何处(2023更新(搜狗/知乎)