一、概念
區(qū)塊鏈本質(zhì)上是一個特殊的分布式數(shù)據(jù)庫,主要用來存儲數(shù)據(jù)。區(qū)塊鏈里面沒有中心節(jié)點,每個節(jié)點都是平等的地位,都保存這整個數(shù)據(jù)庫。因此任何人都可以搭建服務(wù)器,加入?yún)^(qū)塊鏈,成為其中一個節(jié)點。
區(qū)塊鏈的最大特點就是它沒中心,沒有管理員。
二、區(qū)塊
區(qū)塊鏈由一個個區(qū)塊組成,每次新建數(shù)據(jù)時就創(chuàng)建一個區(qū)塊,區(qū)塊一個個前后連接,這樣就組成了區(qū)塊鏈。
區(qū)塊主要包含兩個部分:
- 區(qū)塊頭:記錄當(dāng)前區(qū)塊的特征值
-
區(qū)塊體:包含實際的數(shù)據(jù)
區(qū)塊
區(qū)塊鏈的hash值是256位的,主要由區(qū)塊頭來生成,區(qū)塊頭里包含了上一個區(qū)塊的hash值,也包含了區(qū)塊體的hash值,這些特征結(jié)合起來計算出一個256位的hash值就代表這個區(qū)塊。
三、Hash 的不可修改性
由區(qū)塊的特性和生成的規(guī)則來看,有下面兩個推論:
- 每個區(qū)塊的hash值都不一樣,可以用hash值來代表這個區(qū)塊。
- 如果區(qū)塊的內(nèi)容變了,區(qū)塊的hash值肯定會變,因為區(qū)塊頭中有一個區(qū)塊體的hash值。
看到這邊可能會有一個疑問,區(qū)塊鏈技術(shù)沒有管理員,所有人都可以使用,都可以保存自己的數(shù)據(jù),那么怎么保證數(shù)據(jù)的安全性,自己的數(shù)據(jù)不被更改????
上面提到,區(qū)塊頭中保存著上一個區(qū)塊的hash值,因此當(dāng)這個區(qū)塊的數(shù)據(jù)被修改時,不僅要讓其他節(jié)點同步這個數(shù)據(jù),也要一次修改關(guān)聯(lián)的下游區(qū)塊,hash的計算非常耗時,短時間內(nèi)修改多個區(qū)塊幾乎不可能發(fā)生,除非有人掌握了全網(wǎng)51%以上的計算能力。
正是通過這種聯(lián)動機制,區(qū)塊鏈保證了自身的可靠性,數(shù)據(jù)一旦寫入,就無法被篡改。這就像歷史一樣,發(fā)生了就是發(fā)生了,從此再無法改變。
四、Hash計算的復(fù)雜性
通過上面我們知道了一個結(jié)論,區(qū)塊鏈的數(shù)據(jù)很安全,幾乎不會被篡改,理由是hash的計算相當(dāng)復(fù)雜,現(xiàn)在的計算機計算能力很恐怖,為什么hash的計算會這么復(fù)雜????
主要原因是找到區(qū)塊合適的hash值很難,大部分計算的hash值都不符合區(qū)塊的要求。為啥呢???
(未完待續(xù))
參考:
[1] http://www.ruanyifeng.com/blog/2017/12/blockchain-tutorial.html?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
[2]https://charlesliuyx.github.io/2017/09/24/%E4%B8%80%E6%96%87%E5%BC%84%E6%87%82%E5%8C%BA%E5%9D%97%E9%93%BE-%E4%BB%A5%E6%AF%94%E7%89%B9%E5%B8%81%E4%B8%BA%E4%BE%8B/
[3] http://www.ruanyifeng.com/blog/2018/01/bitcoin-tutorial.html
[4] https://mp.weixin.qq.com/s/hoRLBOGfDOe57dEzdNzMoQ
