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