blockchain_0x1
Blockchain 0x1
2018年算是區塊鏈(Blockchain)最火紅的一年,因為比特幣以及虛擬貨幣的市值大漲影響,所以連帶了讓 Blockchain
這個技術像閃電般的出現在眾人眼前,但是大家對於區塊鏈的理解大部分都落在比特幣以及加密貨幣,但是其實加密貨幣只是區塊鏈這個技術的應用之一,所以區塊鏈到底是什麼 ?
用一句最簡單的例子來解釋,『區塊鏈是一個去中心化的分散式資料庫的技術』,
每筆資料都會被寫錄在每個區塊中,而每個區塊中都有完整且相同的資料庫。由於每個區塊節點的資料庫都是相同的,由於上述的特點,所以區塊鏈有幾個最重要的特色。
去中心化。
- 使用者不需要依賴任何的第三方管理機制或硬體雲端服務器,而是依賴分散在網路上各個完整個區塊節點,每個節點都擁有驗證、傳遞以及管理的能力。
不可竄改性。
- 區塊鏈透過密碼學的方式來保證每個區塊節點上已有的數據都不可能被串改。
Merkle Tree。
拜占庭將軍問題
概論
由於區塊鏈的去中心化特色,整個系統中,並沒有一個權威的中心驗證,所以我們可能會遇到一個很關鍵的問題 - 拜占庭將軍問題
。就是當去中心化之後,信息會面臨可信度跟準確性的問題,先來簡單描述一下 拜占庭將軍問題
,在維基百科提到:
拜占庭將軍問題(Byzantine Generals Problem),是由萊斯利·蘭波特在其同名論文[1]中提出的分散式對等網路通訊容錯問題。
在分布式計算中,不同的電腦通過通訊交換資訊達成共識而按照同一套協作策略行動。但有時候,系統中的成員電腦可能出錯而傳送錯誤的資訊,用於傳遞資訊的通訊網路也可能導致資訊損壞,使得網路中不同的成員關於全體協作的策略得出不同結論[2],從而破壞系統一致性[3]。拜占庭將軍問題被認為是容錯性問題中最難的問題類型之一。
拜占庭將軍問題的描述其實是這樣的,拜占庭羅馬帝國在軍事行動中,有一組拜占庭將軍分別率領軍隊共同攻打一座城市。
為了簡化問題,將各支軍隊的行動策略限定為進攻或撤退,如果部分軍隊撤退可能會造成災難性後果,因此所有將軍必須透過投票來達成一致策略。
因為各位將軍分處城市不同方向,們只能通過信使互相聯繫。在投票過程中每位將軍都將自己投票給進攻還是撤退的資訊通過信使分別通知其他所有將軍,這樣一來每位將軍根據自己的投票和其他所有將軍送來的資訊就可以知道共同的投票結果而決定行動策略。
簡單來說,就是當多數人決定進攻,那就上去進攻。但是當軍隊中有叛徒(例如某一支軍隊的將軍已被策反),那怎麼保證最後投票的結果能夠反映真實的結果。而不會因為叛亂的人而造成不正常的結果。
上述的故事對映到電腦系統裡,將軍便成了電腦,而信差就是通訊系統。
區塊鏈如何解決
從上述的說明可以得知,當今天有人無意或惡意想要影響區塊鏈的資料一致性就會對區塊鏈造成危害。所以區塊鏈如何解決呢?中本聰在比特幣中引入 **工作量證明的共識演算法 (POW : Proof of Work)**。
這邊先不討論演算法的細節,簡單來說,中本聰讓惡意節點(叛徒),而去攻擊整個區塊鏈網路,則需要付出相應的成本,而在 POW的機制下,就是要掌握整個區塊鏈50%以上的算力,簡單來說要有一半的惡意節點,所以這樣的成本非常高,也很難達成。加上POW的懲罰以及獎勵機制之下,用這些算力維護網路(良善節點),其實所獲得的收益是高於破壞網路的。
結論
在Blockchain 0x1 中,簡短的介紹了區塊鏈的特色,以及所使用的技術,區塊鏈是一個結合既有技術存在融合而產生的一個新技術,除了在虛擬貨幣上的應用之外,由於去中心化、不可竄改等特性,可以預想在未來會有更多更有意義的應用或產品的誕生。