在以太坊黄皮书中,关于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。 我在这个问题上遇到了困惑。 谢谢你,任何人都可以帮助我!