区块链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 }

显示效果:

 

posted @ 2020-12-01 19:43  北漂的尘埃  阅读(81)  评论(0编辑  收藏  举报