bitcoin mining详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bitcoin mining详解相关的知识,希望对你有一定的参考价值。

参考技术A mining总共可以分为两种,一种是: Solo Mining ;一种是: Pool Mining

如下图所示,solo miner 使用 bibtcoind 来从网络上面来拿到新的交易。 通过使用 getblocktemplate 这个RPC命令去定期轮询 bitcoind 来获取新的交易。

挖矿的时候,首先去构造一个80字节的块头结构。 之后遍历块头中的nonce字段来生成与其对应的hash值。

挖矿的时候,我们需要两个点,一个是去构造coinbase,另一个是回填块头结构的nonce值。当块头结构构造好之后,就会返回给client端。

上述过程也就是去折腾80字节的块头结构:

这种挖矿的形式就是我每一个人贡献我自己的算力,然后大家的算力加起来,合成一个矿池,现在由我矿池统一挖矿,挖到块之后,按照大家算力的百分比分成。

上面我们提到了,挖矿就是折腾那80字节,现在我们具体看看怎么折腾。

4 字节的nVersion字段,这个我们可以认为它是不变的,为什么这么说,因为这个字段只有在进行升级时候才会改变,平时没事也不升级啊。

32字节的hashPrevBlock字段,这个是不变的,它是由前一个区块确定的,你没办法改变它。

4字节的nBits字段,这个也基本是不变的,它由全网的算力决定,每2016个块才会进行一次难度调整,调整的算法是固定的。

上述三个字段我们基本认为不会变,也就是在构造80字节的块头的时候,和你们没什么大的关系。

4字节的nTime,这个字段是可变的,但悲哀的是,蹦跶的范围不大,理论上是允许后一个区块的区块时间略早于前一个区块时间,所以看到你的“父亲”出生的比你晚不必要惊讶,全网太大了,网络稍微有点延迟,这个东西也没办法避免,一般来说,矿工会直接使用机器当前时间戳

4字节的nNonce,这个字段好好唠唠,一个字节8位,4字节32位,所以,它能提供2的32次方的寻址范围。在CPU和GPU的挖矿时代,这个字段也就足够用了,所以当时候都是去迭代遍历这个nNonce字段,算出来复合要求的值,回去填充块头。但是随着算力的提升,4GB的寻址肯定不够用了,怎么办呢?

32自己的hashMerkleRoot字段,merkle tree具体的作用就不在这里展开说明了,该字段是矿工构造的coinbase加上这个块打包进来的所有交易,算出来的一个32字节的hash‘值,只要包括coinbase字段在内的所有交易有任何风吹草动,该字段都会不一样。32字节啊,也就是说提供了2的256次方的寻址可能,目前世界上现存的所有算力全部加起来也算不完吧,如果量子计算落地,另当别论。

综上所述,挖矿流程我们可以简单总结如下:

如何在Ubuntu系统上安装最新的bitcoin

参考技术A 可以的,给你一个建议,最好是下载个绿色版本的虚拟机,5.5.1吧,里面就有Ubuntu的配置项,绝对可以安装的。而且可以安装红旗Linux,如果你想要Ubuntu的虚拟3D桌面效果的话,最好还要去下个组建,这样就可以了。

以上是关于bitcoin mining详解的主要内容,如果未能解决你的问题,请参考以下文章

如何在Ubuntu系统上安装最新的bitcoin-qt软件

Bitcoin趋势更新

bitcoined

比特币核心钱包 bitcoin core同步太慢的解决方法 自己研究出来的高手勿喷

新版Bitcoin.com钱包已发布

Windows10 和 Ubuntu 编译Bitcoin