|

挖矿的本质:找到一个随机数,计算区块头的哈希值,使哈希值小于一个目标值。
流程如下:
1、构造候选区块
2、计算区块头哈希值,满足目标哈希值,挖矿成功
3、区块加入到本地区块链,并广播区块
4、其他节点验证区块,加入到本地区块链
5、新一轮竞赛。
问题一:所有矿工都从0开始计算随机数,所有矿工的目标值都一样,那是不是硬件速度快的矿工永远先挖到矿?
答案:否,由于区块体中包含了交易池中的部分交易,并且包含coinbase交易,coinbase交易包含了矿工的比特币地址,这就导致了每个矿工候选区块的区块头中Merkel根的不一样,所以区块头都完全不一样,那么计算区块头的哈希值与目标值比较,就是概率性问题了,性能低的矿机也可能比性能高的矿机先找到随机数。
问题二:对于矿池矿工,他们的矿工地址都一样,是每台都从0开始计算随机数还是每台矿机都计算某个区间的随机数,如果都从0开始计算那岂不是会导致矿池中矿机相互竞争,而不是相互合作?
答案:对于随机数,每台矿机依然是从0开始计算,递增1遍历找到目标值,但不同的是,这时会利用到coinbase交易中的coinbase data(币基数据)这个数据域,对每台矿机,这个数据域的值都不同,和随机数组合起来,每台矿机之间就是合作关系了。 |