区块hash并不是随机的,而是通过一些参数加密后产生的
例如:
比特币hash计算
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 ))
假设有个链有100台机器,有人有51台机器,他就能修改geth代码,然后只用来打包自己的一个交易,这个区块里只有一个交易,它的hash就是可以算出来的,算出来以后,其他49个节点都是错的,只要这边算的足够块,那每一个节点都是可以被算出来的,如果是一个hash赌博性质的活动,别人是完全可以看程序,将这些hash给拆出来的