5 在用代码进行挖矿的时候,进行哈希运算的时候为什么一定要先转换成json格式,并且还要排序?

用Python从零开始创建区块链文章中。

在用代码进行挖矿的时候,进行哈希运算的时候为什么一定要先转换成json格式(为什么不能直接用字典),并且还要排序? 代码如下:

def last_block_hash(self,block):
    block_str = json.dumps(block,sort_keys=True).encode('UTF-8')
    return hashlib.sha256(block_str).hexdigest()

上面的代码为什么不能直接对block字典进行求hash值呢?而是要转换成json格式并还要排序才进行hash运算呢?

请先 登录 后评论

最佳答案 2020-02-04 13:16

hashlib.sha256 的参数的类型是字符串,因此需要做一个类型转换。

python 的字典本本身就是json 形式, 因此转换为json 字符串。

排序的原因是: 由于字典 本身是无序的, 同一个字典因为系列不同就会产生不同的hash值, 排序之后,同样的字典获得的hash 就是一样的。

请先 登录 后评论

其它 0 个回答

  • 1 关注
  • 0 收藏,4031 浏览
  • 王宇韬 提出于 2020-02-04 11:01