區(qū)塊鏈中的哈希到底是什么额获?
什么是哈希够庙?
哈希是將任意長(zhǎng)的輸入編程加密的固定長(zhǎng)度輸出的過(guò)程。哈希并不等同于加密方法抄邀,因?yàn)闊o(wú)法解密哈希值來(lái)獲取原始數(shù)據(jù)耘眨。事實(shí)上哈希是一種單向加密函數(shù)。
With the hash function,the data on the Internet can be saved in the form of a fixed length string.One method is SHA-256(secure hash algorithm-256 bits).SHA-256 is the successor of SHA-1,and the output of SHA-1 is 160 bits.Lucky hash game system development and construction,rule mode customization,
哈希是區(qū)塊鏈技術(shù)和不可篡改和潛力的核心基礎(chǔ)和最重要的方面境肾。哈希維護(hù)了記錄和查看數(shù)據(jù)的真實(shí)性剔难,區(qū)塊鏈的完整性也是這樣的。
這也是區(qū)塊鏈技術(shù)最重要的技術(shù)特征的一部分奥喻,只有理解了哈希才能了解區(qū)塊鏈不可篡改性的潛力和價(jià)值偶宫。
1.確定性如果兩個(gè)散列值是不相同的(根據(jù)同一函數(shù)),那么這兩個(gè)散列值的原始輸入也是不相同的环鲤。
2.散列碰撞(collision)散列函數(shù)的輸入和輸出不是唯一對(duì)應(yīng)關(guān)系的纯趋,如果兩個(gè)散列值相同,兩個(gè)輸入值很可能是相同的,但也可能不同吵冒。
3.不可逆性一個(gè)哈希值對(duì)應(yīng)無(wú)數(shù)個(gè)明文纯命,理論上你并不知道哪個(gè)是¤氤“船長(zhǎng)扎附,如果一樣?xùn)|西你知道在哪里,還算不算丟了结耀×粢梗”“不算⊥继穑”“好的碍粥,那您的酒壺沒(méi)有丟『谝悖”
4.混淆特性輸入一些數(shù)據(jù)計(jì)算出散列值嚼摩,然后部分改變輸入值,一個(gè)具有強(qiáng)混淆特性的散列函數(shù)會(huì)產(chǎn)生一個(gè)完全不同的散列值矿瘦。
Merkle Tree(馬爾科夫樹(shù))是什么枕面?
當(dāng)有大量數(shù)據(jù)需要驗(yàn)證時(shí),就需要消耗大量的內(nèi)存來(lái)存儲(chǔ)和確保安全缚去,這個(gè)過(guò)程很難潮秘。但是有了馬爾科夫樹(shù)(Merkle tree),就可以輕易解決這些問(wèn)題易结。
馬爾科夫樹(shù)是區(qū)塊鏈技術(shù)的基礎(chǔ)枕荞,在該結(jié)構(gòu)中,可以很容易地在大量數(shù)據(jù)中找出哪些數(shù)據(jù)發(fā)生了變化搞动,整個(gè)數(shù)據(jù)驗(yàn)證的過(guò)程非常高效躏精。比特幣和以太坊中都使用了馬爾科夫樹(shù)。
所有的交易都在底部鹦肿,最頂部的哈希值叫作Root hash或Merkle root(馬爾科夫根)矗烛。
Root hash有所有交易的信息。馬爾科夫樹(shù)會(huì)重復(fù)計(jì)算節(jié)點(diǎn)對(duì)的哈希值箩溃,直到只剩下一個(gè)哈希值高诺,就是Root hash。
Merkle tree是一個(gè)二叉樹(shù)碾篡,所以需要偶數(shù)個(gè)葉子結(jié)點(diǎn)虱而,如果交易數(shù)是奇數(shù),那么最后一個(gè)哈希值會(huì)復(fù)制一次來(lái)創(chuàng)建偶數(shù)個(gè)葉子節(jié)點(diǎn)开泽。
可以看出奇數(shù)值的交易數(shù)中有復(fù)制的交易進(jìn)行了哈希牡拇,表明Merkle tree會(huì)計(jì)算奇數(shù)的葉子樹(shù)。
所有交易數(shù)據(jù)會(huì)總結(jié)成一個(gè)Root hash,保存在區(qū)塊頭(block header)中惠呼。數(shù)據(jù)中有任何改變导俘,整個(gè)哈希值就會(huì)變化,如果哈希值變化了剔蹋,Merkle root就會(huì)發(fā)生變化旅薄。Merkle tree可以幫助維護(hù)數(shù)據(jù)的完整性。