求助,我在本地搭建代理节点想测试代理出块的流程。可是总有几个代理不出块,查看代码
在void wallet::sign_block( signed_block_header& header )函数里面的如下断言出出错。
FC_ASSERT( fc::ripemd160::hash( header.previous_secret ) == *prev_secret_hash );
求大神能告诉下,哪些情况会导致这两个hash不相等呢,从而导致校验不过呢?
PS:最好能解释下这里的header.previous_secret和prev_secret_hash的含义和作用。原谅小白对这个签块模块机制不太明白。可以解释下最好
previous_secret :每个代理出块时候都需要发布一个随机种子, 每轮用所有101个随机种子组合成随机数, 来洗牌下轮代表顺序. 但为了防止代表知道其他人的随机数后,自己生成一个对自己有利的随机种子,所以代表都先提前一轮公布随机种子的HASH, 这样就算知道其他代表的随机种子后,也不能更改自己的随机种子.
所以这个随机种子也叫秘密随机种子.
prev_secret_hash: 秘密随机种子的HASH ,