区块链V1版本实现之七(V1版本完结)
部分代码(Join函数优化):
1 //为了生成区块哈希,实现一个简单的函数,来计算哈希值,没有随机值,没有难度值 2 func (block *Block) SetHash() { 3 //var data []byte 4 ////类型是byte,而数据结构是uint64,所以构建一个工具类,将uint64转换为byte 5 //data = append(data, uintToByte(block.Version)...) 6 //data = append(data, block.PrevBlockHash...) 7 //data = append(data, block.MerKleRoot...) 8 //data = append(data, uintToByte(block.TimeStamp)...) 9 //data = append(data, uintToByte(block.Difficulity)...) 10 //data = append(data, uintToByte(block.Nonce)...) 11 //data = append(data, block.Data...) 12 13 //使用Join函数将二维数据便捷的转换为一维数据 14 tmp := [][]byte{ 15 uintToByte(block.Version), 16 block.PrevBlockHash, 17 block.MerKleRoot, 18 uintToByte(block.TimeStamp), 19 uintToByte(block.Difficulity), 20 uintToByte(block.Nonce), 21 block.Data, 22 } 23 24 data := bytes.Join(tmp,[]byte{}) 25 26 hash /* [32]byte */:= sha256.Sum256(data) 27 block.Hash = hash[:] 28 }
显示效果: