如何在以太坊中创建正确的种子?

时间:2017-11-23 02:01:26

标签: ethereum go-ethereum

在以太坊黄皮书中,关于seedhash的创建,我发现当高度小于30000时,seedhash S = keccak256({0} 32)。描述是:

  

种子哈希。种子散列对于每个时期都是不同的。对于第一个时期,它是一系列32字节零的Keccak-256哈希。对于每个其他时期,它始终是前一种子哈希的Keccak-256哈希值。

但是,在python代码中,像这样:

 def get_seedhash(block):
     s = '\x00' * 32
     for i in range(block.number // EPOCH_LENGTH):
         s = serialize_hash(sha3_256(s))
     return s

在go-ethereum中,代码是:

func seedHash(block uint64) []byte {
    seed := make([]byte, 32)
    if block < epochLength {
        return seed
    }
    keccak256 := makeHasher(sha3.NewKeccak256())
    for i := 0; i < int(block/epochLength); i++ {
        keccak256(seed, seed)
    }
    return seed
}

所以,黄纸和代码之间似乎有些不同。在代码中,当height小于30000时,seedHash返回{0} 32。 我在这个问题上遇到了困惑。 谢谢你,任何人都可以帮助我!

1 个答案:

答案 0 :(得分:0)

抱歉,我在stackexchange中提交了同样的问题,如果你想知道答案,请click