區塊鏈的原理是什麼?

2021-08-15 17:57:37 字數 3546 閱讀 1554

**知乎:

看到一些爭論區塊鏈定義的回答, 突然意識到自己這篇解釋原理的回答其實是一直是對著位元幣擼的, 介於區塊鏈的定義業界並沒有乙個特別明確和唯一的回答, 這裡先給出個人根據所讀**而總結出的「區塊鏈」應有特質:使用了具有 「雜湊鏈」 (下文有解釋) 形式的資料結構儲存基礎資料有多個結點參與系統執行(分布式)通過一定的協議或演算法對於基礎資料的一致性達成共識(共識協議/演算法)。介於位元幣目前是區塊鏈最典型且最有影響力的應用之一, 理解位元幣如何使用區塊鏈後, 再去理解其他形式各樣的區塊鏈應用就會容易很多。 —————-以下引自我在知乎中另外乙個區塊鏈問題的答案在談應用之前,最重要的是先理解它的技術本質是什麼, 所有介紹區塊鏈的答案裡, 都最先提到了區塊鏈不可篡改的特性, 所以第乙個要理解的是它到底是怎麼實現不可篡改性的。

以下引自我在知乎中另外乙個區塊鏈問題的答案在談應用之前,最重要的是先理解它的技術本質是什麼, 所有介紹區塊鏈的答案裡, 都最先提到了區塊鏈不可篡改的特性, 所以第乙個要理解的是它到底是怎麼實現不可篡改性的。

先修知識

密碼學hash()函式的單向性:hash(x) =y , 通過y很難找到x

雜湊鏈:假如現在有順序產生的資料塊 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)假如現在有順序產生的資料塊 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值。 這個n值的含義是給出了當乙個新的雜湊頭部 h1 計算出來後,其後追加n個頭部(h2,h3,h4….)後,網路才應該承認這個新的頭部 h1. 因為此時, 攻擊者要想成功發動攻擊, 至少需要計算出乙個長度大於n的分支, 這個概率在攻擊者沒有掌握全網算力50%的時候是很難達到的

所以到這裡, 區塊鏈就已經清楚了,就是乙個密碼學工具的一種巧妙應用而已。那這裡思考一下, 不可篡改性其實並不是乙個什麼神奇的特性,密碼學的簽名技術就能提供不可篡改性呀, 區塊鏈到底解決了乙個什麼問題。

答案是信任問題

區塊鏈提供了一種方案, 讓乙個網路中,所有的結點都有能力去用計算能力投票, 從而保證了得到承認的結果是大多數人公認的結果, 不會因為少數結點作惡,而修改結果傳統的交易建立在什麼基礎上, 我們對於金融機構的信任, 對於**銀行的信任, 或者對於交易對手的信任, 對於第三方中間人的信任。 這裡其實就引出了很多安全技術應用,或者說很多制度建立的本質, 如果你信任的越多, 需要做的工作就越少。區塊鏈就是因為不想信任網路中的任意乙個單一結點, 所以讓大多數人具有公平的投票權利, 而這個投票權利,不是按人頭算的, 是按cpu算的, 每個cpu有一票。

區塊鏈的最難以克服的缺點

1: 效率問題

前面說過, 當你信任的越多, 需要做的工作越少, 就好比你和乙個人做生意, 如果你完全信任對方, 那麼合同都不用籤, 口頭約定就行。 如果不太信任, 籤乙個簡單的合同, 規定最重要的事項。 如果特別不信任, 讓律師對交易中所有存在風險的地方列出條款,規定責任, 籤乙個大大的合同。所以看出來了吧, 信任越多, 效率越高。 信任越少, 效率越低。 區塊鏈也是一樣,因為沒有單一結點可以信任,通過計算來換取信任。 所以簡單的乙個承認交易的操作, 需要大量的計算參與進來, 結果是什麼, bitcoin平均交易速度只有7筆每秒。

2: 巨集觀金融的適應性

金融學和經濟學作為人類多年來發展出來的科學具有不可替代的地位, 位元幣的流通貨幣量是存在上限且增加速度基本固定的, 這符合經濟規律嗎? 顯然不符合。 因為學過經濟的人都知道, 貨幣只是對實物財富的衡量, 貨幣增長速度快於商品增長數量, 則發生通脹, 貨幣增長速度慢於增長速度則發生通縮。

3: 匿名引發的安全性

想一想匿名對於罪犯的好處,就不難理解位元幣的洗錢風險位元幣作為資訊保安學者的發明產物, 現在常被應用於黑客入侵之後勒索的交易手段, 想起來也真是諷刺

4: 使用者的易用性

位元幣的技術是基於密碼學簽名技術的, 你的賬戶安全由你的私鑰保護, 如果不新增別的手段,比如在別人那裡備份, 或者在別的地方備份, 你丟失了金鑰, 賬戶裡的 錢是沒有人能給你找回來的。 想想人們丟銀行卡, 忘記密碼的頻率, 這個問題有多大, 不用我說大家也懂說了這麼多缺點, 區塊鏈技術和位元幣技術就不行了嗎? 顯然不是,不然那些國際金融機構也不會下大功夫研究它, 但其實, 和其他所有的技術一樣, 大家都只是在尋找一種能夠更高效解決信任問題的手段而已, 金融機構的核心是什麼, 交易投資與風險控制唄。 其實也都是圍繞信任問題展開的。信任問題的解決在金融機構本來其實就是耗費了大量的成本的, 只不過很多成本在後台, 或者在人工的耗費上, 很多人看不到而已。

總結 :區塊鏈的技術有望以乙個更低的成本解決更廣泛的信任問題所以被受人關注

區塊鏈是什麼

最近,在極客時間購買了陳浩老師的區塊鏈課程,想系統有計畫的了解和學習一下區塊鏈相關的知識,與其自己在網上胡亂找資料,瞎折騰,還不如在過來人的帶領下,深入淺出的學習區塊鏈的相關知識,不至於走太多的彎路.下面主要記錄一下學習筆記,還不敢妄自菲薄大談什麼是區塊鏈.首先接受的名詞是位元幣,然後是區塊鏈,最後...

區塊鏈是什麼

位元幣實踐中,位元幣交易所,礦池這類中心化機制或者機構的出現,都是因為在某些應用場景下,效率變得更為重要。位元幣使用者願意讓渡一部分權力給中心機構,選擇信任中心機構。而且這些中心機構也不是壟斷的,使用者具有選擇中心機構的權力。這使得整個位元幣的生態系統的執行效率更高。位元幣本身設計是去中心化的,過度...

區塊鏈是什麼?

區塊鏈是一種新型去中心化協議,通過分布式賬本 或者叫資料庫 這個載體,能安全地儲存位元幣交易或其它資料,通過分布在全球的網路確保資訊不可偽造和篡改,可以自動執行智慧型合約,無需任何中心化機構的審核。交易既可以是位元幣這樣的數字貨幣,也可以是股權 智財權這樣的數字資產。大大降低了經濟執行的信任和會計成...