課程
/后端開發
/Go
/用GO語言構建自己的區塊鏈
貌似計算hash的函數沒寫完整
2019-06-11
源自:用GO語言構建自己的區塊鏈 4-1
正在回答
//注意int轉string不能這樣:string(b.Index)?+?string(b.TimeStamp) blockData?:=?strconv.Itoa(int(b.Index))+strconv.Itoa(int(b.TimeStamp))+b.PreBlockHash fmt.Println(blockData)
這是因為老師的int轉string語句寫錯了,
string(b.Index)?+?string(b.TimeStamp)
上面這條語句每次輸出都是同一個亂碼符號,因此Index和TimeStamp在計算哈希值的時候根本沒有起到作用,而創世區塊其他的值都是固定的,所以每次算出來的哈希值都是一樣的。
weixin_慕容7184231
func?CalculateHash(b?Block)?string?{ ???blockData?:=?string(b.Index)?+?string(b.Timestamp)?+?b.PreBlockHash?+?b.Data ???hashInBytes?:=?sha256.Sum256([]byte(blockData)) ???return?hex.EncodeToString(hashInBytes[:]) }
每次的時間Timestamp都不一樣呀,為什么生成的第0個blockhash都一樣的~
慕村1538275
weixin_慕容7184231 回復 慕村1538275
傳入的數據是一致的,那么hash出來的結果就不會變。
這就是hash運算的確定性 看下2-4節就明白了
同一個數據hash后的結果是確定的
舉報
區塊鏈自己動手實現一把,啥都明白了!
1 回答這里計算新區塊的Hash是有問題的吧
2 回答 invalid block Process finished with exit code 1 為什么我的運行結果是這樣的
1 回答創建新區塊的方法里面,是不是少了給本身data賦值的代碼?
1 回答時間戳為什么一樣呀
2 回答有源代碼可以下載嗎,總是出現問題運行不了
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2020-03-10
這是因為老師的int轉string語句寫錯了,
上面這條語句每次輸出都是同一個亂碼符號,因此Index和TimeStamp在計算哈希值的時候根本沒有起到作用,而創世區塊其他的值都是固定的,所以每次算出來的哈希值都是一樣的。
2019-07-25
每次的時間Timestamp都不一樣呀,為什么生成的第0個blockhash都一樣的~
2019-07-08
傳入的數據是一致的,那么hash出來的結果就不會變。
2019-06-25
這就是hash運算的確定性 看下2-4節就明白了
同一個數據hash后的結果是確定的