比特币计算需要以下参数:
1、block的版本 version
2、上一个block的hash值: prev_hash
3、需要写入的交易记录的hash树的值: merkle_root
4、更新时间: ntime
5、当前难度: nbits 挖矿的过程就是找到x使得 SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET 上式的x的范围是0~2^32, TARGET可以根据当前难度求出的。
除了x之外,还可以尝试改动merkle_root和ntime。由于hash的特性,找这样一个x只能暴力搜索。一旦计算者A找到了x,就可以广播一个新的block,其他客户端会验证计算者A发布的block是否合法。如果发布的block被接受,由于每个block中的第一笔交易必须是将新产生25个比特币发送到某个地址,当然计算者A会把这个地址设为计算者A所拥有的地址来得到这25个比特币。