紫霞仙子:區塊鏈的十二連問

最近更新了八篇分佈式的文章,準備寫下第九篇的時候,發現跟區塊鏈關係非常緊密,於是就先寫一篇區塊鏈的科普文章吧。

紫霞仙子:聽說你最近在學區塊鏈,給我講講唄~

mark

一、用大白話說下什麼是區塊鏈?

1.我是至尊寶,我愛紫霞仙子你,在這個時間,這個地點,我對紫霞你說:至尊寶愛紫霞一萬年
2.現在我把這句話寫在了紙上
愛情真言
3.但是如果我把這張紙交給紫霞你,你又怕我反悔。而如果我把這張紙交給月老,我又怕月老可能會修改內容,而改成只愛你一年。

月老
4.我爲了防止類似事情發生,就把這些這愛情真言,告訴了師父、二師弟悟能、三師弟悟淨、白龍馬、牛魔王等認識的人,他們都幫我們記錄了這些信息。
mark
5.目前這份信息現在是安全的,我無法抵賴,我會愛你一萬年。
6.爲了表達對他們幫忙記錄信息的感謝,我給他們每個人發了一個紅包。
紅包
7.而那些幫我們記錄的人就稱作節點
8.而至尊寶愛紫霞一萬年這句話+時間+地點這些信息,打包起來就形成了一個信息包,也就是區塊鏈中的區塊。而多個區塊連在一起就是區塊鏈
9.去中心化就是不需要月老來統一記錄這些信息。
10.娶親當天,我答應了紫霞三個條件,又需要去記錄了,而師父和師弟他們很忙,不想浪費時間在記錄上面,所以決定選一個人來幫助大家記錄這些信息。
12.選誰來記錄了,會不會不安全呢?那就來個很難的算數題吧,誰能算出來,就給誰來記錄,我還會給記錄的人一個大紅包,也就是比特幣。而做出算數題就稱作工作量證明
13.而這個記錄的人就被稱作礦工。礦工們不斷算題,爭奪信息記錄的權利。從而獲得信息記錄的獎勵

二、什麼是區塊鏈?

區塊鏈的英文是 Block Chain,它的技術的產生和發展跟比特幣有着千絲萬縷的聯繫。

  • 因比特幣的火熱,區塊鏈技術被世人所知。比特幣是區塊鏈技術最成功最成熟的應用案例。
  • 區塊鏈技術作爲構建比特幣數據結構及交易體系的基礎技術。
  • 區塊鏈是一個去中心化的分佈式數據庫,該數據由一串使用密碼學方法產生的數據區塊有序鏈接而成,而區塊中包含有一定時間內產生的無法被篡改的數據記錄信息。
  • 區塊鏈由多種技術整合:密碼學、數學、經濟學、網絡科學等。這些技術以特定方式組合在一起,形成了一種新的去中心化數據記錄與存儲體系。而每個區塊上又打上了時間戳,形成了前後關聯且連續的誠實數據記錄存儲結構。

三、爲什麼要有區塊鏈?

區塊鏈解決了以下兩個問題:

交易確認和資金清算問題

現實社會中各種經濟活動涉及資金清算的,除了直接的現金交易外,都需要當事人執行以下步驟:

  • 在銀行等機構開立賬戶。

  • 通過開戶機構進行資金清算。

但由於公民有多個開戶機構的賬戶,甚至還有跨國賬戶,而當事人的交易必須通過開戶機構之間的清算才能完成。嚴重影響了交易確認資金清算的效率和成本。

中心化問題

傳統的信用建立是靠很多的中心,譬如央行、商業銀行,還有法院、經濟警察等。但帶來的問題就是成本過高

而且我們存的錢都是銀行管控的,如果銀行倒閉了,那存的錢可能就沒有意義了。

四、什麼是比特幣?

  • 比特幣由中本聰在 2008 年發表的論文《比特幣:一種點對點的電子現金系統中》首次提出。

  • 比特幣是一種虛擬的加密數字貨幣,去中心化的支付系統。不依賴特定的貨幣機構發行,不受央行和任何金融機構控制。

  • 根據特定算法,通過大量的計算產生。

  • 通過計算得到的區塊獎勵最開始是 50 個比特幣,每隔大約 10 分鐘,下一批 50 個比特幣產生。總量達到 1050 萬(2100 萬的 50%)時,獎勵減半爲 25 個。每隔 4 年,獎勵減半,總量最多爲 2100萬。

  • 比特幣可以通過挖礦獲得,也可以通過交易購買獲得。

下圖總結了普通貨幣和比特幣的區別:

普通貨幣和比特幣的區別

五、區塊內包含什麼?

區塊鏈的區塊由區塊頭和區塊體兩部分組成。

區塊頭:由上一個區塊的哈希值、區塊體的哈希值、4 字節的隨機數、時間戳等組成。固定 80個字節。

區塊體:區塊包含的交易數據,其中第一筆交易是 CoinBase 交易,這個是一比激勵礦工的特殊交易。

區塊內包含什麼

六、區塊鏈的特性有哪些?

去中心化

區塊鏈不依賴中央處理節點,實現了數據的分佈式記錄、存儲和更新。

每個區塊鏈節點都必須遵循同一個規則,而該規則基於密碼算法而非信用,每次數據更新都需要網絡內其他用戶的批准,所以不需要一套第三方中介機構或信任機構背書。

傳統中心化網絡中,如果中心被攻擊了,則會破壞整個系統。

透明性

讀和寫數據記錄對全網節點是透明的。區塊鏈使用開源的程序、開放的規則和高參與度,可被全網審查、追溯。

開放性

除了被加密的私有信息外,區塊鏈的數據對所有人公開(特殊區塊鏈系統除外)。

任何人都可以通過公開的接口查詢記錄。

自治性

整個系統可自由安全地交換數據、記錄數據、更新數據。

信息不可篡改

信息一旦經過驗證並添加至區塊鏈後,就會得到永久存儲,無法更改。

除非能夠同時控制系統中超過 51%的節點,否則單個節點上對數據庫的修改是無效的。

匿名性

交易的雙方都是匿名的情況下進行,無須通過公開身份來讓對方產生信任。

七、什麼是挖礦?

挖礦圖片

  • 指比特幣。

  • 挖礦指挖比特幣。挖礦的過程其實就是解決複雜的密碼學問題。

  • 礦工指運用挖礦設備(比如CPU、GPU 等有計算能力的設備)來進行挖礦的人。而作爲對他們服務的獎勵,礦工可以得到他們所確認的交易中包含的手續費,以及新產生的比特幣。

  • 礦池指大家聯合挖礦設備一起來挖礦,算力集中的地方。

而怎麼纔算挖到比特幣呢?這個就牽扯到工作量證明了。

八、什麼是工作量證明?

工作量證明的英文是 Proof of Work,簡稱 PoW。

在現實生活中,也有工作量證明這一說法:比如大學的學位證、畢業證,就是證明大學期間通過 4 年的努力完成了相關課程的學習,別說你沒努力就拿到了證書,汗。

也就是說工作量證明就是通過指定的結果,來證明自己做過了一定量的工作。而在區塊鏈中,這個工作就是哈希運算。

區塊鏈中節點通過哈希運算得到符合條件的哈希值,來證明工作量。而這個過程一個隨機數的查找過程,俗稱挖礦

找到符合條件的隨機數的方法是不停地隨機試探,直到搜索到一個有效的數。而這個隨機數是由 N 個前導零構成,零的個數取決於網絡的難度值。比如以下的隨機數由四個前導零構成。

0000ec5927ba10ea45a6822dcc205050ae74ae1ad2d9d41e978e1ec9762dc404

工作量證明的三要素如圖所示:

工作量證明的三要素

輸入:擁有 80 字節固定長度的區塊頭。

算法:雙重 SHA 256 哈希運算。也就是對 SHA256 哈希運算的結果,再執行一次哈希運算。

條件:計算出的哈希值,只有小於目標值,纔是有效的,否則無效,必須重算。

九、區塊鏈的工作原理?

計算出符合條件的哈希值後,然後怎麼處理呢?

礦工就把這個哈希值的信息廣播給集羣中的所有其他節點,其他節點就進行驗證,驗證通過後,就會把之前那個礦工的區塊加入到自己的區塊鏈中,最終形成一串區塊鏈。詳細步驟如下:

區塊鏈工作原理

1.節點將新的數據記錄向全網進行廣播。

2.接收節點對收到的數據記錄信息進行合法性校驗,如果有效,則將數據記錄納入一個區塊中。

3.接收節點對區塊執行共識算法。

4.共識達成後,區塊被納入節點的區塊中進行延長。

最後形成的區塊鏈就是如下圖所示:

區塊鏈長什麼樣

十、怎麼攻擊區塊鏈?

計算哈希值完全依賴硬件的算力,算力越強,算出哈希值的概率越高,時間越短。

也就是說如果有壞人掌握了 51 % 的算力,就可以發起 51 % 的攻擊,比如雙花攻擊(Double Spending)。也就是同一份錢花了 2 次。

如果攻擊者掌握了較多的算力,就能挖掘出一條原鏈更長的攻擊鏈。然後又將攻擊鏈向全網廣播。而節點按照約定會接受更長的鏈,也就是會接受攻擊鏈,丟棄原鏈。如下圖所示:

攻擊區塊鏈

攻擊鏈是紅色那一條,比原鏈分支多一個區塊,被系統接受,稱爲有效的鏈,而原鏈就被廢棄了。

十一、區塊鏈的缺點

區塊鏈體積過大

區塊鏈不斷地發展,節點存儲的區塊鏈數據體積會越來越大,存儲和計算負擔將會越來越重。比如現在的比特幣區塊鏈,完整數據已經超過 60 GB,如果用比特幣客戶端進行數據同步的話,至少三天三夜。

數據確認時間過長

比特幣交易的一次確認時間大約是 10 分鐘,而完成 6 次確認的時間是 1 小時。需要等待 1 個小時才能完成確認。

交易頻率過低

比特幣每秒最高處理 6.67 筆交易。怎麼算的呢?

每條交易大約 250 個字節,區塊大小假定限制在 1 MB,可以容納的交易數據量爲 4000 條。每 10 分鐘產生一個區塊,每天可以產生 144 個區塊,可以交易 144 * 4000 = 576000 條交易,然後除以每天的總秒數 86400,也就是 576000 / 864400 ≈ 6.67。

目前需要解決擴容問題才能突破這個瓶頸。

受到現行制度的制約

目前監管部門對這項新技術缺乏充分的認識和預期,法律和制度建立可能會滯後,也缺乏必要的制度規範和法律保護,加大了時長主題的風險。

十二、區塊鏈的應用

  • 物聯網。傳統的物聯模式是由一個數據中心負責收集各連接的設備信息,成本很高。而利用區塊鏈使這些設備連在一起形成一個可持續運行的分佈式網絡。各設備可自行發送更換零配件的訂單,甚至還能和其他設備進行電源競價,使用戶家庭能源消耗地最小化。
  • 保險。傳統的保險模式是通過投保人申請理賠的方式。而如果用區塊鏈的職能合約技術,保險公司無需等待投保人申請理賠,就能主動進行賠付。
  • 醫療。現在醫院都改用電子病歷了,但是存儲信息是在醫院處,這就是一箇中心化的問題,而帶來了醫患糾紛問題和安全性問題。如果用區塊鏈技術,則病歷信息不可篡改和高強度保密。

總結

本文用一個故事開頭,大白話講解了區塊鏈的概念,然後用 11 個核心問題來理清區塊鏈中大家常關心的問題。
本文既是一篇科普文章,也是一篇原理性文章,對於原理性的問題,我都用圖解的方式來講解,相信會較容易理解一點。
區塊鏈跟分佈式聯繫緊密,比如區塊鏈中用到 PoW 算法,拜占庭容錯,都是充分利用分佈式特性。學習區塊鏈的過程也是學習分佈式的過程。


作者簡介:悟空,8年一線互聯網開發和架構經驗,用故事講解分佈式、架構設計。《JVM性能優化實戰》專欄作者,開源了《Spring Cloud 實戰 PassJava》項目,自主開發了一個 PMP 刷題小程序。關注可免費刷題。

我是悟空,努力變強,變身超級賽亞人!

分佈式系列文章:
1.用三國殺講分佈式算法,舒適了吧?
2.用太極拳講分佈式理論,真舒服!
3.諸葛亮 VS 龐統,拿下 Paxos 共識算法
4.用動圖講解分佈式 Raft
5.韓信大招:一致性哈希
6.病毒入侵:全靠分佈式 Gossip 協議
7.這三年被分佈式坑慘了,曝光十大坑
8.太上老君的煉丹爐之分佈式 Quorum NWR

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章