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