什麼是區塊鏈(BlockChain)?看完這篇終於理解了

什麼是區塊鏈(BlockChain)?看完這篇終於理解了


區塊鏈是比特幣的底層技術,但它不能與比特幣劃等號。區塊鏈作為繼互聯網後的新一波技術浪潮,本身無罪,況且炒幣只是區塊鏈裡最初級的玩法。讀完這篇文章,我們就能更加明白什麼是區塊鏈,從而離保守和狹隘遠一點。


一、區塊鏈是一個去中心化的賬本


我們首先需要弄清"去中心化"和"分佈式賬本"兩個概念。去中心化相對"中心化"而言。借用PG Two買夾克和熊本熊借錢的案例,我們來看看中心化和去中心化體系的區別。


什麼是區塊鏈(BlockChain)?看完這篇終於理解了

網購夾克的整個流程依託於支付寶展開,因此,這個買賣過程是中心化的。無論是PG TWO還是賣家君,在這點上只能完全信任支付寶和它背後的馬雲。往大了說,中心化系統由資金雄厚和技術實力強大的機構、企業做信任背書。


中心化體系具備管理高效的優勢,但它的不足也比較明顯。仍以支付寶為例,全部交易記錄和賬本都存儲在支付寶服務器上,假設某天所有相關的服務器不幸被壞蛋搗毀,那麼PG TWO付的款(或賣家君還沒有到手的夾克錢),還有其他買家、賣家的資金,甚至你我存在餘額寶的錢,都會消失在這個互聯網世界裡,連灰都不剩。


該找誰說理去?就算我氣洶洶地找到支付寶對質:"我還有5萬在餘額寶裡面!" 可中心賬本已經被徹底破壞,誰又能證明我的話為真呢?若得不到有效證明,最終我也只能忍著淚跟這沓錢say goodbye了。


這時,去中心化系統的優勢就凸顯出來了。


設想一下,如果全網絡存在許多的記賬節點,能夠共同記錄支付寶上每一筆交易、轉賬和提現等,也就是說支付寶所有賬本在全世界有很多備份;就算服務器被黑客攻擊,相同的賬本副本也都好好地保存在其他節點上。在區塊鏈的世界裡,不需要大企業做信用背書。


二、區塊鏈是一個分佈式賬本


因此,我們也可以說:作為分佈式賬本,區塊鏈是創造信任的工具。從字面上理解,"分佈式"是指分佈在不同的地方、各節點分開幹活。我們先把問題簡單化,用借錢舉個例子,講講分佈式賬本的工作原理。


什麼是區塊鏈(BlockChain)?看完這篇終於理解了

借錢日


什麼是區塊鏈(BlockChain)?看完這篇終於理解了

到了約定還錢日


1. 比卡丘借給熊本熊10塊錢。


2. 比卡丘和熊本熊分別在賬本上記下:"比卡丘 → 熊本熊:10円"


3. 比卡丘把這條交易信息廣播給其他節點;


4. 區塊鏈上其他節點驗證這條交易信息,確認無誤後便記在各自賬本上。


在第2步,如果借錢方熊本熊為了買零食,在自己的賬本上虛報5円呢?想賴賬不容易,因為接下來比卡丘會把 這條"比卡丘 → 熊本熊:10円" 的交易信息廣播給全網節點,接著各節點再去驗證。通過驗證的信息一旦記在區塊鏈上,就很難篡改了,除非——熊本熊有一臺超過全網總算力51%的超級計算機(文末還會提及這個問題)。


那為什麼是比卡丘廣播,而不是熊本熊去廣播?節點協助記賬,是為了防止欠債人耍賴等損害信任的情況出現;一般來講,誰把錢借出去,誰到最後可能遭受財產損失,誰廣播。


到了約定的還款日,如果熊本熊食言說沒有借錢,比卡丘就可以祭出區塊鏈了,拿賬本上的交易信息來對質。


三、密碼學確保區塊鏈數據庫(幾乎)無法篡改


弄懂了去中心化分佈式賬本,我們繼續探究區塊鏈技術中的兩個密碼學概念:哈希函數和非對稱加密。顛覆性的區塊鏈技術當然不止這些,但區塊鏈入門要求我們需要先掌握這兩個概念。


只有先了解哈希函數和非對稱加密,後面我們納入相關定義解釋區塊鏈的運作原理時,大家才不會一臉蒙圈。


1)哈希函數


哈希也可以寫作hash,哈希函數屬於密碼學範疇,用來驗證交易信息是否被人動過手腳。哈希函數具備以下特徵(如果看不明白可跳過這段):


1. 如果明文A對應的哈希值為H(A),那麼,通過A可以算出H(A),而通過H(A)無法逆推出A;


2. 如果明文A ≠ 明文B,那麼,H(A) ≠ H(B);


3. 如果對明文A做了可以忽略不計的篡改,那麼,計算出的哈希值與原H(A)完全不一樣。


上文中,明文好比我們登錄知乎時輸入的賬號、密碼,它們是可以看懂的一串字符。而哈希值是一個長度固定、由數字和字母組成的字符串。根據以上特徵,下方的例子能幫助你理解:


藉助Hash計算工具,我輸入明文123456,得到相應的哈希值(按SHA256):


8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92


什麼是區塊鏈(BlockChain)?看完這篇終於理解了


目前,人類還沒有辦法逆推這個亂七八糟的字符串;也就是說,任何人都無法推算出這個哈希值對應明文123456。


接著我在明文框輸入:1234567;雖然只增加了一個7,得到的哈希值卻完全不一樣了:8bb0cf6eb9b17d0f7d22b456f121257dc1254e1f01665370476383ea776df414


如果你親自嘗試,3秒鐘就能明白以上內容,百度"哈希計算工具" :輸入一串明文(連"我愛你"也可以加密哦),關注第三列SHA256的結果即可;再改動其中一個字符,對比兩次出現的哈希值結果。


2)非對稱加密


這是相對於對稱加密來說的。對稱加密指你有一把密鑰,通過密鑰可以加密一段信息;想要破解這個信息,只有拿到你手中這把密鑰。從始至終加密、解密用的是同一把密鑰,因此稱"對稱加密"。


而在區塊鏈世界裡,每個人都擁有兩把獨一無二的密鑰:公鑰和私鑰。


公鑰:可以簡單理解為銀行卡號,這是可以給別人看的;


私鑰:相當於銀行卡密碼,必須拼死保密,只能自己知道。


再記2條規則:


1 私鑰能生成公鑰和地址(有了地址,對方才能給你打錢);


2 私鑰加密,公鑰解密(加密、解密不是同一把密鑰,因此稱"非對稱加密");


3)無法篡改的交易數據


仍然以"比卡丘借給熊本熊10塊錢"為例,我們來看看比卡丘具體是怎樣向熊本熊的地址打錢的。


1. 比卡丘對明文 "比卡丘 → 熊本熊:10円" 進行哈希加密,得到一個64位的字符串;


2. 比卡丘用自己的私鑰對這個字符串再次加密,獲得另一個字符串,這叫做"數字簽名";


3. 比卡丘把以下交易信息打包發給熊本熊,並廣播給全網記賬節點:此次交易明文、比卡丘的公鑰和數字簽名;


4. 熊本熊和其他節點收到這條打包消息;


5. 熊本熊和其他節點對明文進行哈希計算,得到哈希值字符串H(A);


6. 熊本熊和其他節點用比卡丘的公鑰解密數字簽名,得到字符串H(B);


7. 熊本熊和其他節點驗證 H(A)= H(B),交易信息為真;


8. 交易完成。


比卡丘的公鑰能夠解開私鑰加密過的數字簽名,證明了這個公鑰和私鑰是一對,而且都屬於比卡丘,這條交易信息是比卡丘創建的:也就是說,熊本熊欠的是比卡丘的錢,而不是可達鴨還是其他誰的錢;而字符串 H(A)= H(B),則說明在區塊鏈網絡中傳遞時,交易信息未被篡改。


進行下一節前,我們總結一下,在公開、複雜的區塊鏈網絡中,哈希函數和非對稱加密:


1 確保了交易記錄沒有被篡改


2 確保了交易記錄由正確的人發起


四、區塊鏈上的區塊


區塊鏈是由挖礦產生的區塊按照時間順序連接起來的,本身是一個可以不斷增長的賬本數據庫。挖礦是指通過大量計算爭奪記賬權,只要找到合適的哈希值,就能搶在其他人前面拿到記賬權,挖到區塊。


由於系統的初始設定,不同區塊鏈產生區塊的速度不一樣。比如比特幣區塊鏈大概每10分鐘挖出一個區塊,而以太坊區塊鏈的出塊時間約14秒。


每個區塊包含這段時間內產生的所有交易記錄,如一個新挖出的比特幣區塊就包含了前10分鐘內的交易信息。除此之外,還包含時間戳和前一個區塊的哈希值,等等(關於區塊的組成,我們在後續文章再詳細瞭解,這裡先把握基礎知識)。


這是很聰明的設計:每誕生一個新的區塊,就會被蓋上相應的時間戳,新產生的區塊按照區塊挖出的時間順序連接到鏈條上去。這樣,區塊鏈無限延長,賬本數據庫也能無限擴大、容納無窮盡的交易信息。


更令人拍案叫絕的是,新區塊裡的每一筆交易數據,都由相應的交易發起方進行數字簽名,鏈上所有人都可以用交易發起方的公鑰(上文說過,公鑰是公開的)驗證該數字簽名的真實性。


此外,之前挖出的區塊裡的交易數據將永久記錄在區塊鏈上,幾乎無法篡改。一個區塊內含眾多交易信息,然而根據哈希函數的特徵,就算你只對其中一條交易數據移動一個小數點,生成的哈希值都會完全不一樣,整個區塊及其包含的所有交易信息都會變成無效數據。


另一方面,篡改數據難於上青天,成本極高。有意者必須足夠財大氣粗,並且擁有至少全網51%的算力。而要達到這樣的計算能力,知乎李佔亮同學表示:礦機成本+電費+其他,成本約5.5億RMB。


綜上, 在這樣一個充滿不信任感、危機四伏的網絡環境裡,區塊鏈或許是當前解決信任問題的最佳方案(之一)。


總結


區塊鏈的核心理念:


1. 賬本分佈存儲於全網的節點上,某個節點賬本的破壞,不會影響任何其他節點正常運作;


2. 各節點均可參與記賬、共同維護區塊鏈數據庫;


3. 各節點相互監督,構建trustless(免信任的)系統。


至此,我們已經講了區塊鏈70%的基礎知識。內容有點超載,建議大家先消化。區塊鏈網絡上的陌生人出於什麼承認區塊的有效性?他們為什麼願意苦哈哈地幫助記賬?剩下30%(包括共識機制和獎勵機制等)將放在下篇中具體講解。


分享到:


相關文章: