資源描述:
《區(qū)塊鏈入門教程》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、區(qū)塊鏈(blockchain)是眼下的大熱門,新聞媒體大量報道,宣稱它將創(chuàng)造未來。可是,簡單易懂的入門文章卻很少。區(qū)塊鏈到底是什么,有何特別之處,很少有解釋。下面,我就來嘗試,寫一篇最好懂的區(qū)塊鏈教程。畢竟它也不是很難的東西,核心概念非常簡單,幾句話就能說清楚。我希望讀完本文,你不僅可以理解區(qū)塊鏈,還會明白什么是挖礦、為什么挖礦越來越難等問題。需要說明的是,我并非這方面的專家。雖然很早就關(guān)注,但是仔細地了解區(qū)塊鏈,還是從今年初開始。文中的錯誤和不準(zhǔn)確的地方,歡迎大家指正。一、區(qū)塊鏈的本質(zhì)區(qū)塊鏈?zhǔn)鞘裁??一句話,它是一種特殊的分布式數(shù)據(jù)庫。..首先,區(qū)塊鏈的主要作用是儲存信息。任何需要保存的信
2、息,都可以寫入?yún)^(qū)塊鏈,也可以從里面讀取,所以它是數(shù)據(jù)庫。其次,任何人都可以架設(shè)服務(wù)器,加入?yún)^(qū)塊鏈網(wǎng)絡(luò),成為一個節(jié)點。區(qū)塊鏈的世界里面,沒有中心節(jié)點,每個節(jié)點都是平等的,都保存著整個數(shù)據(jù)庫。你可以向任何一個節(jié)點,寫入/讀取數(shù)據(jù),因為所有節(jié)點最后都會同步,保證區(qū)塊鏈一致。二、區(qū)塊鏈的最大特點分布式數(shù)據(jù)庫并非新發(fā)明,市場上早有此類產(chǎn)品。但是,區(qū)塊鏈有一個革命性特點。區(qū)塊鏈沒有管理員,它是徹底無中心的。其他的數(shù)據(jù)庫都有管理員,但是區(qū)塊鏈沒有。如果有人想對區(qū)塊鏈添加審核,也實現(xiàn)不了,因為它的設(shè)計目標(biāo)就是防止出現(xiàn)居于中心地位的管理當(dāng)局。正是因為無法管理,區(qū)塊鏈才能做到無法被控制。否則一旦大公司大集團控
3、制了管理權(quán),他們就會控制整個平臺,其他使用者就都必須聽命于他們了。但是,沒有了管理員,人人都可以往里面寫入數(shù)據(jù),怎么才能保證數(shù)據(jù)是可信的呢?被壞人改了怎么辦?請接著往下讀,這就是區(qū)塊鏈奇妙的地方。..三、區(qū)塊區(qū)塊鏈由一個個區(qū)塊(block)組成。區(qū)塊很像數(shù)據(jù)庫的記錄,每次寫入數(shù)據(jù),就是創(chuàng)建一個區(qū)塊。每個區(qū)塊包含兩個部分?!^(qū)塊頭(Head):記錄當(dāng)前區(qū)塊的特征值·區(qū)塊體(Body):實際數(shù)據(jù)區(qū)塊頭包含了當(dāng)前區(qū)塊的多項特征值。·生成時間·實際數(shù)據(jù)(即區(qū)塊體)的哈?!ど弦粋€區(qū)塊的哈?!?..這里,你需要理解什么叫哈希(hash),這是理解區(qū)塊鏈必需的。..所謂"哈希"就是計算機可以對任意內(nèi)容,
4、計算出一個長度相同的特征值。區(qū)塊鏈的哈希長度是256位,這就是說,不管原始內(nèi)容是什么,最后都會計算出一個256位的二進制數(shù)字。而且可以保證,只要原始內(nèi)容不同,對應(yīng)的哈希一定是不同的。舉例來說,字符串123的哈希是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六進制),轉(zhuǎn)成二進制就是256位,而且只有123能得到這個哈希。(理論上,其他字符串也有可能得到這個哈希,但是概率極低,可以近似認為不可能發(fā)生。)因此,就有兩個重要的推論?!ね普?:每個區(qū)塊的哈希都是不一樣的,可以通過哈希標(biāo)識區(qū)塊?!ね普?:如果區(qū)塊的內(nèi)容變了,它的哈希一定會改變。..四、Hash的
5、不可修改性區(qū)塊與哈希是一一對應(yīng)的,每個區(qū)塊的哈希都是針對"區(qū)塊頭"(Head)計算的。也就是說,把區(qū)塊頭的各項特征值,按照順序連接在一起,組成一個很長的字符串,再對這個字符串計算哈希。Hash=SHA256(區(qū)塊頭)上面就是區(qū)塊哈希的計算公式,SHA256是區(qū)塊鏈的哈希算法。注意,這個公式里面只包含區(qū)塊頭,不包含區(qū)塊體,也就是說,哈希由區(qū)塊頭唯一決定,前面說過,區(qū)塊頭包含很多內(nèi)容,其中有當(dāng)前區(qū)塊體的哈希,還有上一個區(qū)塊的哈希。這意味著,如果當(dāng)前區(qū)塊體的內(nèi)容變了,或者上一個區(qū)塊的哈希變了,一定會引起當(dāng)前區(qū)塊的哈希改變。這一點對區(qū)塊鏈有重大意義。如果有人修改了一個區(qū)塊,該區(qū)塊的哈希就變了。為了
6、讓后面的區(qū)塊還能連到它(因為下一個區(qū)塊包含上一個區(qū)塊的哈希),該人必須依次修改后面所有的區(qū)塊,否則被改掉的區(qū)塊就脫離區(qū)塊鏈了。由于后面要提到的原因,哈希的計算很耗時,短時間內(nèi)修改多個區(qū)塊幾乎不可能發(fā)生,除非有人掌握了全網(wǎng)51%以上的計算能力。正是通過這種聯(lián)動機制,區(qū)塊鏈保證了自身的可靠性,數(shù)據(jù)一旦寫入,就無法被篡改。這就像歷史一樣,發(fā)生了就是發(fā)生了,從此再無法改變。每個區(qū)塊都連著上一個區(qū)塊,這也是"區(qū)塊鏈"這個名字的由來。..五、采礦由于必須保證節(jié)點之間的同步,所以新區(qū)塊的添加速度不能太快。試想一下,你剛剛同步了一個區(qū)塊,準(zhǔn)備基于它生成下一個區(qū)塊,但這時別的節(jié)點又有新區(qū)塊生成,你不得不放棄
7、做了一半的計算,再次去同步。因為每個區(qū)塊的后面,只能跟著一個區(qū)塊,你永遠只能在最新區(qū)塊的后面,生成下一個區(qū)塊。所以,你別無選擇,一聽到信號,就必須立刻同步。所以,區(qū)塊鏈的發(fā)明者中本聰(這是假名,真實身份至今未知)故意讓添加新區(qū)塊,變得很困難。他的設(shè)計是,平均每10分鐘,全網(wǎng)才能生成一個新區(qū)塊,一小時也就六個。這種產(chǎn)出速度不是通過命令達成的,而是故意設(shè)置了海量的計算。也就是說,只有通過極其大量的計算,才能得到當(dāng)前區(qū)塊的有效