Go语言实现区块链:打印区块耗时和生成100个区块的平均时间
Go语言实现区块链:打印区块耗时和生成100个区块的平均时间
本示例展示了如何使用Go语言实现一个简单的区块链,并演示了如何打印每个区块的生成时间,以及如何生成100个区块并计算其平均生成时间。
1. 实现PrintBlockTimestamp函数
func (bc *Blockchain) PrintBlockTimestamp() {
for _, block := range bc.blocks {
fmt.Printf('Block %s took %d seconds
', block.Hash, block.Timestamp.Sub(block.PrevBlockTimestamp).Seconds())
}
}
该函数遍历区块链中的所有区块,并打印每个区块的生成时间。
2. 生成100个区块,并统计平均时间
func main() {
bc := NewBlockchain()
start := time.Now()
for i := 0; i < 100; i++ {
bc.AddBlock(fmt.Sprintf('Block %d', i))
time.Sleep(time.Duration(rand.Intn(5)+6) * time.Second)
}
end := time.Now()
bc.PrintBlockTimestamp()
fmt.Printf('Average block time: %.2f seconds
', end.Sub(start).Seconds()/float64(len(bc.blocks)))
}
在每个区块生成时,程序会随机等待6-10秒,然后计算每个区块的耗时并输出。最后统计所有区块的生成时间并计算平均值输出。
该示例展示了如何使用Go语言实现一个简单的区块链,并演示了如何打印每个区块的生成时间,以及如何生成100个区块并计算其平均生成时间。
原文地址: https://www.cveoy.top/t/topic/mq5c 著作权归作者所有。请勿转载和采集!