比特币CPU挖矿、GPU挖矿、矿池及矿机挖矿技术原理
比特币挖矿原理 比特币的区块头,共含6个字段,如下: int32_t nVersion,4字节,版本号,一般固定不变,仅在升级时改变。 uint256 hashPrevBlock,32字节,前一个区块的区块头哈希,由前一个区块决定。 uint256 hashMerkleRoot,32字节,包含进区块的所有交易构造的Merkle根,调整区块中的交易次序、增删交易、或修改Coinbase交易时改变。 uint32_t nTime,4字节,时间戳,后一个区块时间略早于前一个区块是被允许的,但必须在合理的时间区间,一般会直接使用机器当前时间戳。 uint32_t nBits,4字节,挖矿难度,由全网决定,每2016个区块按算法重新调整。 uint32_t nNonce,4字节,随机数,提供2^32种取值。即4,294,967,296。 其中nVersion、hashPrevBlock、nBits是固定的,其他hashMerkleRoot、nTime、nNonce为可变的。 比特币挖矿原理即,不断变更区块头中的可变值,使得对区块头做双重SHA256哈希,结果小于挖矿难度目标值。即: SHA256D(BlockHeader) < F(nBits) 其中SHA256D(BlockHeader)即对区块头做双重SHA256哈希,F(nBits