在中心化的系統裏面,若是數據被篡改了,幾乎是沒有辦法驗證的,由於他的數據存儲在一方,其餘人沒有辦法獲取和驗證。在分佈式的去中心化系統裏面,如比特幣。每一個節點(能夠是一個用戶的一臺電腦(曠工),也能夠是一組服務器集羣(礦池))都有一份帳本的所有信息。這樣若是其中一個節點修改了數據,其餘節點就會驗證不經過(具體的保證機制後面會介紹),也就保證了信息的不可篡改性服務器
以比特幣爲例,比特幣每10分鐘生成一個新的帳本,這個帳本里保存了10分鐘內的全部交易記錄。每一個節點都會獲得這樣一份交易記錄,並對這個記錄進行hash,獲得一個hash值,而後節點之間用這個hash值進行互相驗證。分佈式
hash函數 一樣的原始信息用同一個哈希函數總能獲得相同的摘要信息 原始信息任何微小的變化都會哈希出面目全非的摘要信息 從摘要信息沒法逆向推算出原始信息函數
每個帳本的序號,hash值,時間戳,和交易的原始的交易記錄組合在一塊兒,就造成了一個區塊,並且咱們叫序號,hash值,時間戳稱爲這個區塊的頭區塊鏈
當下一個10分鐘有產生了一個交易記錄帳本。那麼就會將上一個區塊的hash值和此次的帳本共同進行hash產生一個hash值,而後進而產生一個新的區塊cdn
以此類推,按照這樣的方式就會產生第三個快,第四個快。。。第N個塊,全部這些塊串聯的結構就成爲區塊鏈。blog
而後每個節點在覈對數據的時候,只須要覈對最後一個塊的摘要信息,若是可以覈對上的話,就說明整個區塊鏈的帳本是正確的hash