“區塊鏈”應有特質:
· 使用了具有 “哈希鏈” (下文有解釋) 形式的數據結構保存基礎數據
· 有多個結點參與系統運行(分布式)
· 通過一定的協議或算法對于基礎數據的一致性達成共識(共識協議/算法)。
介于比特幣目前是區塊鏈最典型且最有影響力的應用之一, 理解比特幣如何使用區塊鏈后, 再去理解其他形式各樣的區塊鏈應用就會容易很多。在談應用之前,最重要的是先理解它的技術本質是什么, 所有介紹區塊鏈的答案里, 都最先提到了區塊鏈不可篡改的特性, 所以第一個要理解的是它到底是怎么實現不可篡改性的。
· 前置知識;
o 密碼學Hash()函數的單向性: Hash(x) =y , 通過y很難找到x
o 哈希鏈: 假如現在有順序產生的數據塊 A, B , C 。 那么我們可以這樣計算一個hash 。 注意 “||” 表示拼接
h0= Hash(A)
h1 = Hash(B || h0)
h2 = Hash(C || h1)
· h2是我們計算的hash頭部,現在來看, 為什么我們管這個東西叫Hash鏈, 因為h2 的值依賴于之前一系列數據的內容和計算順序。 假如說現在你知道了h2 , 別人拿著A,B, C, 他不管是修改A,B, C的任一點內容還是A,B, C的出現順序,你都無法再次計算出正確的h2
· 好的, 其實到這里區塊鏈的概念就有點感覺了不是嗎?!皡^塊鏈”這個詞是英文 Block Chain 的翻譯, 如果從字面上理解, “數據塊組成的鏈條” 就足以闡釋它的基本內涵了。比特幣區塊鏈其實就是哈希鏈的一個變種(注意, 下文描述的這種添加隨機數以及對隨機數有特殊要求的規則是比特幣為了實現工作量證明 Proof of Work 的共識機制而添加的, 并不是區塊鏈的一個必要特征)。 怎么變? 添加一個隨機數(Nonce)
o 假如現在有順序產生的數據塊 A, B , C 。 我們來這樣計算hash頭。 注意 “||” 表示拼接
h0= Hash(A|| Nonce0)
h1 = Hash(B || h0 || Nonce1)
h2 = Hash(C || h1 || Nonce2)
· 這里我們還添加一個額外的要求, 就是 h0, h1, h2 必須都得是以指定數目的0 bit開頭的,例如要求每個哈希值都必須以5個0開頭,則h0,h1,h2都應該是這樣的形式(00000*****************)
· 添加了這個要求以后, h0, h1, h2就都不是那么容易計算的了, 因為你不能根據輸出的形式來反推輸入是什么, 而A, B, C又是給定的, 那只能不斷更改Nonce來窮舉計算, 然后找到一個可以滿足要求的Nonce值 ,使得h0, h1, h2符合要求
· 到這里大家就知道所謂的礦工是在干什么了, 就是接受廣播出來的數據塊,然后計算當前最新的哈希鏈的頭部, 當成功計算出了一個符合要求的Hash后, 就告訴所有人,自己找到了, 讓別人再去計算下一個哈希頭部。
· 其實到這里, 區塊鏈的本質就已經差不多了, 假如網絡中大家都默認遵守協議, 只在最長的哈希鏈后計算新的頭部,那么一切都很好, 但是如果有人想搞不一樣,那他就得擁有更強的計算能力, 在誠實者都遵守規則的情況下, 自己能夠計算出一個鏈條分叉甚至說直接計算出一個新的鏈條,讓大家都承認。
·至于這個難度的證明,中本聰就是建立了一個泊松分布的概率模型, 假設了誠實結點計算出新的哈希頭的概率p和不誠實結點計算出新的Hash頭的概率q后,算出了一個N值。
o 這個N值的含義是給出了當一個新的哈希頭部 h1 計算出來后,其后追加N個頭部(h2,h3,h4.。..)后,網絡才應該承認這個新的頭部 h1. 因為此時, 攻擊者要想成功發動攻擊, 至少需要計算出一個長度大于N的分支, 這個概率在攻擊者沒有掌握全網算力50%的時候是很難達到的
所以到這里, 區塊鏈就已經清楚了,就是一個密碼學工具的一種巧妙應用而已。那這里思考一下, 不可篡改性其實并不是一個什么神奇的特性,密碼學的簽名技術就能提供不可篡改性呀, 區塊鏈到底解決了一個什么問題。答案是
· 信任問題
o 區塊鏈提供了一種方案, 讓一個網絡中,所有的結點都有能力去用計算能力投票, 從而保證了得到承認的結果是大多數人公認的結果, 不會因為少數結點作惡,而修改結果
o 傳統的交易建立在什么基礎上, 我們對于金融機構的信任, 對于中央銀行的信任, 或者對于交易對手的信任, 對于第三方中間人的信任。
· 這里其實就引出了很多安全技術應用,或者說很多制度建立的本質, 如果你信任的越多, 需要做的工作就越少。
· 區塊鏈就是因為不想信任網絡中的任意一個單一結點, 所以讓大多數人具有公平的投票權利, 而這個投票權利,不是按人頭算的, 是按CPU算的, 每個CPU有一票。
· 區塊鏈的最難以克服的缺點1: 效率問題
o 前面說過, 當你信任的越多, 需要做的工作越少, 就好比你和一個人做生意, 如果你完全信任對方, 那么合同都不用簽, 口頭約定就行。 如果不太信任, 簽一個簡單的合同, 規定最重要的事項。 如果特別不信任, 讓律師對交易中所有存在風險的地方列出條款,規定責任, 簽一個大大的合同。
o 所以看出來了吧, 信任越多, 效率越高。 信任越少, 效率越低。
o 區塊鏈也是一樣,因為沒有單一結點可以信任,通過計算來換取信任。 所以簡單的一個承認交易的操作, 需要大量的計算參與進來, 結果是什么, Bitcoin平均交易速度只有7筆每秒。
· 比特幣的最難以克服的缺點2: 宏觀金融的適應性
o 金融學和經濟學作為人類多年來發展出來的科學具有不可替代的地位, 比特幣的流通貨幣量是存在上限且增加速度基本固定的, 這符合經濟規律嗎? 顯然不符合。 因為學過經濟的人都知道, 貨幣只是對實物財富的衡量, 貨幣增長速度快于商品增長數量, 則發生通脹, 貨幣增長速度慢于增長速度則發生通縮。
· 比特幣的最難以克服的缺點3: 匿名引發的安全性
o 想一想匿名對于罪犯的好處,就不難理解比特幣的洗錢風險
o 比特幣作為信息安全學者的發明產物, 現在常被應用于黑客入侵之后勒索的交易手段, 想起來也真是諷刺
· 比特幣的最難以克服的缺點4: 用戶的易用性
o 比特幣的技術是基于密碼學簽名技術的, 你的賬戶安全由你的私鑰保護, 如果不添加別的手段,比如在別人那里備份, 或者在別的地方備份, 你丟失了密鑰, 賬戶里的 錢是沒有人能給你找回來的。 想想人們丟銀行卡, 忘記密碼的頻率, 這個問題有多大, 不用我說大家也懂
說了這么多缺點, 區塊鏈技術和比特幣技術就不行了嗎? 顯然不是,不然那些國際金融機構也不會下大功夫研究它, 但其實, 和其他所有的技術一樣, 大家都只是在尋找一種能夠更高效解決信任問題的手段而已, 金融機構的核心是什么, 交易投資與風險控制唄。 其實也都是圍繞信任問題展開的。信任問題的解決在金融機構本來其實就是耗費了大量的成本的, 只不過很多成本在后臺, 或者在人工的耗費上, 很多人看不到而已。
總結 :
區塊鏈的技術有望以一個更低的成本解決更廣泛的信任問題所以被受人關注。
評論