區塊鏈中的哈希算法

區塊鏈中的密碼學

密碼學在區塊鏈中的應用主要有兩個:哈希算法與非對稱加密算法。此次主要對哈希算法進行詳細的說明。算法

哈希算法

哈希算法的特色有:
一、輸入能夠爲任意大小的字符串;
二、產生固定大小的輸出;
三、能夠在合理的時間內算出輸出值。安全

若要知足密碼學的安全性,哈希算法還應該具備如下三個特性:
一、碰撞阻力:不一樣的輸入不會產生相同的輸出;
二、不可逆性:若y = Hash (x) ,根據y沒法倒推出x;
三、謎題友好:若想倒推出x,只能經過暴力枚舉破解。學習

以比特幣爲例,來看一下哈希算法的具體應用: 在比特幣中,使用哈希算法把交易生成數據摘要,當前區塊裏面包含上一個區塊的哈希值(block? header hash),後面一個區塊又包含當前區塊的哈希值(),就這樣一個接一個的鏈接起來,造成一個哈希指針鏈表,以下圖: 區塊鏈

每一個區塊中的具體內容:
這全部的字段一塊兒就組成了 block header(區塊頭),而後須要對 block header 進行2次hash計算,計算完成的值就是當前比特幣區塊的hash值。由於比特幣系統要求計算出來的這個hash值知足必定的條件(小於某個數值),所以須要咱們不斷的遍歷Nonce值去計算新的hash值以知足要求,只有找到了知足要求的hash值,那麼這就是一個合法區塊了(這一系列動做也叫做挖礦)。

Merkle Tree字段: 加密

簡單來講Merkle Root就是區塊裏記錄的全部交易的幾回Hash(結果組合後再Hash)結果,在比特幣區塊鏈和以太坊區塊鏈中,Merkle Root字段的產生略有不一樣,比特幣進行2次計算,以太坊3次。

總結

本次對哈希算法的學習與整理過程當中,還有些疑惑,merkle tree的底部若不按照ABCD的順序進行排列,是否會對整個區塊的Block header形成影響,從而影響整個區塊鏈。參考文章地址: cloud.tencent.com/developer/a…
天天進步一點點~!3d

相關文章
相關標籤/搜索