說區塊鏈-學習筆記

鏈客區塊鏈技術問答社群發表於2019-03-28
想知道更多關於區塊鏈技術知識,請百度【鏈客區塊鏈技術問答社群】
鏈客,有問必答!

1:什麼是區塊鏈?
區塊鏈是比特幣的底層技術,比特幣是區塊鏈的應用之一。區塊鏈的本質是去中心化的分散式資料庫,它是通過密碼學方式有序連結的區塊鏈條。每個區塊中包含了區塊頭(前一個區塊的根Hash(身份證號),當前區塊的根Hash(身份證號),時間戳(當前區塊發生的時間標記),其他資訊)和資料記錄資訊。

特點:
(a)去中心化:所有的節點權利義務相等,任意節點的出錯或停止工作都不會影響系統的整體工作
(b)去信任:因為整個系統和資料庫是公開透明的,節點之間無需知道對方是誰,也無需彼此互信
(c)分散式賬本:所有節點共同維護系統賬本。系統中每個節點都含有整個完整資料庫拷貝。
(d)透明性:賬本向區塊鏈中的相關方公開
2:為什麼需要區塊鏈?
區塊鏈解決的是信任問題。互相信任的熟人社會最多隻能維繫在150人以內(鄧巴數),超出這個人數範圍,信任就需要中心化的第三方進行背書。一旦中心化的節點出現問題,例如對資料進行修改、癱瘓等,整個網路都會受到影響。而區塊鏈是點對點傳播的,不依靠任何單一節點,任意單一節點對資訊進行修改都會被其他節點發現並不予承認。所以區塊鏈是一個公證人,一旦資訊被建立,幾乎不可更改。

3:區塊鏈技術有什麼用?
區塊鏈的分散式賬本,全節點共同維護等特點可以與眾多領域進行合作。

4:區塊鏈是如何被實現的?
A和B發生了一筆交易,會被廣播到全網路中所有的節點。這時網路中其他節點經過記賬驗證後就會將這筆交易新增到主鏈上。從此這筆交易就記錄到了區塊鏈上。區塊鏈的基礎架構至下而上共分為6層:資料層,網路層,共識層,激勵層,合約層,應用層。各層之間相互配合實現去中心化的機制。

5:實現區塊鏈需要解決哪些問題
(1)如何鼓勵網路節點參與驗證記賬?
為了鼓勵網路節點參與驗證記賬,會對第一個滿足一定條件的節點進行獎勵。例如比特幣區塊鏈中,各個節點需要不斷解決一個數學難題(SHA-256雜湊值對應的數值解),任意一個節點優先解出這個數值的就會在全網進行廣播。其他節點經過驗證屬實後就會放棄該區塊的計算,將該區塊資訊記錄進自己的賬簿後進入下一個區塊的數值計算中去。而第一個解出這個數值的人就會獲得一定比特幣金額的獎勵。因為這一過程與挖礦產生金幣類似,所以通常也將這一過程稱為挖礦。
(2)鏈分叉聽誰的?
誰長聽誰的。若兩個節點A,B在對222區塊進行記錄時同時解出了SHA-256雜湊值並對外進行了廣播,這時因為網路中其他節點與這兩個節點距離有遠近,部分節點會記錄A完成了這件個區塊的記錄,而其他部分節點會記錄B完成了區塊的記錄。這時原本完整的鏈就會在222區塊分叉成兩列。若驗證了後續223塊區塊SHA-256雜湊值的節點認可A解出了222塊區塊這一事實,則222B這個區塊會被作為側鏈被廢棄。原來認可B解出了222塊區塊的節點就會轉到222A,223D 這條鏈上去,參與下一個區塊224的解(223已經被D節點驗證了)。222A這個區塊後續加上5個區塊後,222A這筆記錄就會被確認,幾乎不可更改。實際上SHA-256雜湊值的計算就需要耗費一定的算力及時間,這在很大程度上也避免了兩個節點同時解出SHA-256雜湊值情況的發生。

(3)如何避免一筆錢被重複使用(雙花問題)?
一方面,每一筆付款被廣播給系統其他節點時,其他節點就會對該筆支付進行驗證,看這個交易的合法性。另一方面,在比特幣中,一個交易能不算作確認直到至少有5個驗證過的block在其後面得到驗證。如果一個人向一部分挖礦者公佈一個交易,給另一部分挖礦者公佈另一個交易,在這種情況下,只會有一筆得到進入主鏈並得到最後的確認。當一筆支付得到確認後,因為大多數礦工想在主鏈上繼續工作以獲得獎勵,再想讓另一條側鏈追上主鏈幾乎是不可能的。
(4)節點中有惡意節點怎麼辦(拜占庭將軍問題)?
拜占庭帝國擁有鉅額的財富。圍繞在其周圍有10個敵國對其財富垂涎已久。但因為拜占庭帝國的防禦措施良好,只有在超過6個敵國同時進攻 的前提下才能攻破拜占庭帝國。此外,這些敵國互相之間還存在一個兩難問題:如果自己進攻了但其他國家未進攻,很有可能自身軍事力量在與拜占庭帝國戰鬥中損失巨大。若其他敵國乘機對自己國家發起進攻則自己國家很有可能被滅國。拜占庭將軍問題有解的前提是叛徒少於1/3.在這個前提下可以由一個將軍書面詢問其他將軍進攻時間並要求各個將軍附上自己獨一無二的印章。最後再將集齊了所有將軍的信件分發給各個將軍。若超過一個將軍對其他人也發出了詢問,部分將軍可能會答應超過多個攻擊時間,或者廣播出與第一個將軍發起人不一樣的資訊導致系統混亂。

相關文章