課程
/后端開(kāi)發(fā)
/Go
/用GO語(yǔ)言構(gòu)建自己的區(qū)塊鏈
貌似計(jì)算hash的函數(shù)沒(méi)寫(xiě)完整
2019-06-11
源自:用GO語(yǔ)言構(gòu)建自己的區(qū)塊鏈 4-1
正在回答
//注意int轉(zhuǎn)string不能這樣:string(b.Index)?+?string(b.TimeStamp) blockData?:=?strconv.Itoa(int(b.Index))+strconv.Itoa(int(b.TimeStamp))+b.PreBlockHash fmt.Println(blockData)
這是因?yàn)槔蠋煹膇nt轉(zhuǎn)string語(yǔ)句寫(xiě)錯(cuò)了,
string(b.Index)?+?string(b.TimeStamp)
上面這條語(yǔ)句每次輸出都是同一個(gè)亂碼符號(hào),因此Index和TimeStamp在計(jì)算哈希值的時(shí)候根本沒(méi)有起到作用,而創(chuàng)世區(qū)塊其他的值都是固定的,所以每次算出來(lái)的哈希值都是一樣的。
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[:]) }
每次的時(shí)間Timestamp都不一樣呀,為什么生成的第0個(gè)blockhash都一樣的~
慕村1538275
weixin_慕容7184231 回復(fù) 慕村1538275
傳入的數(shù)據(jù)是一致的,那么hash出來(lái)的結(jié)果就不會(huì)變。
這就是hash運(yùn)算的確定性 看下2-4節(jié)就明白了
同一個(gè)數(shù)據(jù)hash后的結(jié)果是確定的
舉報(bào)
區(qū)塊鏈自己動(dòng)手實(shí)現(xiàn)一把,啥都明白了!
1 回答這里計(jì)算新區(qū)塊的Hash是有問(wèn)題的吧
2 回答 invalid block Process finished with exit code 1 為什么我的運(yùn)行結(jié)果是這樣的
1 回答創(chuàng)建新區(qū)塊的方法里面,是不是少了給本身data賦值的代碼?
1 回答時(shí)間戳為什么一樣呀
2 回答有源代碼可以下載嗎,總是出現(xiàn)問(wèn)題運(yùn)行不了
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢(xún)優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2020-03-10
這是因?yàn)槔蠋煹膇nt轉(zhuǎn)string語(yǔ)句寫(xiě)錯(cuò)了,
上面這條語(yǔ)句每次輸出都是同一個(gè)亂碼符號(hào),因此Index和TimeStamp在計(jì)算哈希值的時(shí)候根本沒(méi)有起到作用,而創(chuàng)世區(qū)塊其他的值都是固定的,所以每次算出來(lái)的哈希值都是一樣的。
2019-07-25
每次的時(shí)間Timestamp都不一樣呀,為什么生成的第0個(gè)blockhash都一樣的~
2019-07-08
傳入的數(shù)據(jù)是一致的,那么hash出來(lái)的結(jié)果就不會(huì)變。
2019-06-25
這就是hash運(yùn)算的確定性 看下2-4節(jié)就明白了
同一個(gè)數(shù)據(jù)hash后的結(jié)果是確定的