主页 > imtoken授权管理系统 > 可以通过优化哈希算法来挖矿吗? 有什么问题?

可以通过优化哈希算法来挖矿吗? 有什么问题?

imtoken授权管理系统 2023-07-20 05:14:03

大家可能比较清楚,很多数字货币都是可以通过挖矿获得的,那么在挖矿的过程中,哈希算法可以优化一下吗? 同时,会不会有一些Question? 详情见下文!

1.构建区块头

在执行比特币挖矿算法之前,首先要构建一个区块头。 Zcash的区块头(Block header)结构如下,这个结构类似于比特币的区块头,区别在于随机数的个数。

nVersion,块版本号,在升级期间更改。

hashPrevBlock,从前一个块中获得。

比特币特定算法_比特币算法优化_比特币挖矿算法

nBits,由全网算力决定,每产生一个新区块调整一次难度(比特币每2016个区块调整一次),算法为DigiShield v3/v4。

nTime,基本上取机器的当前时间轴。

hashMerkleRoot,该字段允许矿工自行调整。 更改来自添加或删除包含在块中的交易,或更改订单,或修改 Coinbase 交易的输入字段。

nNonce,Zcash 提供了 2^256 个可能值,而比特币提供了 2^32 个。

比特币挖矿算法_比特币算法优化_比特币特定算法

一般来说,hashMerkleRoot和nNonce是可以发挥挖矿自由度的地方。

Zcash 区块头构造的大致过程也与比特币类似:

1、选择要确认的交易,因为比特币矿工可以从交易中获得手续费,所以一般在出块时会选择尽可能多的交易,但不能超过容量上限(2M)。

QQ截图20180421222609.png

比特币挖矿算法_比特币算法优化_比特币特定算法

2. 标识Coinbase,这里记录矿工如果成功构建区块将获得的收益(手续费+奖励)。

3. 构建Merkle树(收集交易信息),生成随机数V,写入其他参数。

4. 构建为区块头。

2.转化为广义生日悖论问题

比特币挖矿算法_比特币算法优化_比特币特定算法

我们通常将比特币的“挖矿”过程比作解决算法问题。 这道算法题的题目是通过Block头的函数处理给出的。

比特币的算法:对Block header的参数进行两次SHA256运算比特币算法优化,得到一个256位的字符串比特币算法优化,与一个期望值目标进行比较。

如果这个值小于target,则挖矿成功,即SHA256(SHA256(Block header))

Zcash的算法:Zcash在构建Block header后,不做不等式判断,而是以Block header为输入,将挖矿问题转化为“广义生日悖论问题”。

比特币挖矿算法_比特币特定算法_比特币算法优化

有什么问题?

1、从概率的角度,生成的列表L中可能没有2^k个完全相等的值,即碰撞次数小于2^k。 这会导致一些“矿工”构造的“生日问题”无解,所以当出现这种情况时,必须对“生日问题”进行一次重构。

2、单纯使用“OptimizedSolve”很难控制“挖矿”的难度,因为算法的运行时间服从泊松分布。

3. 在内存充足的情况下,可以通过更复杂的技术迭代生成多个摊销成本更低的解,即运行这样的算法会降低单位内存的运行成本,这与公平“挖矿”相悖“这个概念。

小伙伴们,深入了解挖矿之后,就可以优化hash算法了。 同时,也要多了解过程中的一些问题,然后积极寻找解决办法。 希望你能有所收获。 最后,感谢您关注伟峰网站!