紫霞仙子:區塊鏈的十二連問
阿新 • • 發佈:2021-03-10
最近更新了八篇分散式的文章,準備寫下第九篇的時候,發現跟區塊鏈關係非常緊密,於是就先寫一篇區塊鏈的科普文章吧。
> 紫霞仙子:聽說你最近在學區塊鏈,給我講講唄~
![mark](https://img-blog.csdnimg.cn/img_convert/3e8334812c774fe52ae8d5d8f121de30.png)
## 一、用大白話說下什麼是區塊鏈?
1.我是至尊寶,我愛紫霞仙子你,在這個`時間`,這個`地點`,我對紫霞你說:`至尊寶愛紫霞一萬年`。
2.現在我把這句話寫在了`紙上`:
![愛情真言](https://img-blog.csdnimg.cn/img_convert/bf4250de1d8da178338d3748f655ac07.png)
3.但是如果我把這張紙交給紫霞你,你又怕我`反悔`。而如果我把這張紙交給月老,我又怕月老可能會`修改`內容,而改成只愛你一年。
![月老](https://img-blog.csdnimg.cn/img_convert/e73ec80f40ff34d4b17dd869510195be.png)
4.我為了防止類似事情發生,就把這些這愛情真言,告訴了師父、二師弟悟能、三師弟悟淨、白龍馬、牛魔王等認識的人,他們都幫我們`記錄`了這些資訊。
![mark](https://img-blog.csdnimg.cn/img_convert/50c934f496d2bef41869826d2be98129.png)
5.目前這份資訊現在是安全的,我`無法抵賴`,我會愛你一萬年。
6.為了表達對他們幫忙記錄資訊的感謝,我給他們每個人發了一個紅包。
![紅包](https://img-blog.csdnimg.cn/img_convert/698acc4cba14aef5b2e3a781cf0312c2.png)
7.而那些幫我們記錄的人就稱作`節點`。
8.而`至尊寶愛紫霞一萬年`這句話+時間+地點這些資訊,打包起來就形成了一個資訊包,也就是區塊鏈中的`區塊`。而多個區塊連在一起就是`區塊鏈`。
9.`去中心化`就是不需要月老來統一記錄這些資訊。
10.娶親當天,我答應了紫霞三個條件,又需要去記錄了,而師父和師弟他們很忙,不想浪費時間在記錄上面,所以決定選一個人來幫助大家記錄這些資訊。
12.選誰來記錄了,會不會不安全呢?那就來個很難的算數題吧,誰能算出來,就給誰來記錄,我還會給記錄的人一個大紅包,也就是`比特幣`。而做出算數題就稱作`工作量證明`。
13.而這個記錄的人就被稱作`礦工`。礦工們不斷算題,`爭奪`資訊記錄的`權利`。從而獲得資訊記錄的`獎勵`。
## 二、什麼是區塊鏈?
區塊鏈的英文是 Block Chain,它的技術的產生和發展跟比特幣有著千絲萬縷的聯絡。
- 因比特幣的火熱,區塊鏈技術被世人所知。比特幣是區塊鏈技術最成功最成熟的應用案例。
- 區塊鏈技術作為構建比特幣資料結構及交易體系的基礎技術。
- 區塊鏈是一個去中心化的分散式資料庫,該資料由一串使用密碼學方法產生的資料區塊有序連結而成,而區塊中包含有一定時間內產生的無法被篡改的資料記錄資訊。
- 區塊鏈由多種技術整合:密碼學、數學、經濟學、網路科學等。這些技術以特定方式組合在一起,形成了一種新的去中心化資料記錄與儲存體系。而每個區塊上又打上了時間戳,形成了前後關聯且連續的誠實資料記錄儲存結構。
## 三、為什麼要有區塊鏈?
區塊鏈解決了以下兩個問題:
### 交易確認和資金清算問題
現實社會中各種經濟活動涉及資金清算的,除了直接的現金交易外,都需要當事人執行以下步驟:
- 在銀行等機構開立賬戶。
- 通過開戶機構進行資金清算。
但由於公民有多個開戶機構的賬戶,甚至還有跨國賬戶,而當事人的交易必須通過開戶機構之間的清算才能完成。嚴重影響了`交易確認`和`資金清算`的效率和成本。
### 中心化問題
傳統的信用建立是靠很多的`中心`,譬如央行、商業銀行,還有法院、經濟警察等。但帶來的問題就是`成本過高`。
而且我們存的錢都是銀行管控的,如果銀行倒閉了,那存的錢可能就沒有意義了。
## 四、什麼是比特幣?
- 比特幣由中本聰在 2008 年發表的論文《比特幣:一種點對點的電子現金系統中》首次提出。
- 比特幣是一種虛擬的加密數字貨幣,去中心化的支付系統。不依賴特定的貨幣機構發行,不受央行和任何金融機構控制。
- 根據特定演算法,通過大量的計算產生。
- 通過計算得到的區塊獎勵最開始是 50 個比特幣,每隔大約 10 分鐘,下一批 50 個比特幣產生。總量達到 1050 萬(2100 萬的 50%)時,獎勵減半為 25 個。每隔 4 年,獎勵減半,總量最多為 2100萬。
- 比特幣可以通過挖礦獲得,也可以通過交易購買獲得。
下圖總結了普通貨幣和比特幣的區別:
![普通貨幣和比特幣的區別](https://img-blog.csdnimg.cn/img_convert/bb2cef5f9e2b97c984d353c8d8305816.png)
## 五、區塊內包含什麼?
區塊鏈的區塊由區塊頭和區塊體兩部分組成。
區塊頭:由上一個區塊的雜湊值、區塊體的雜湊值、4 位元組的隨機數、時間戳等組成。固定 80個位元組。
區塊體:區塊包含的交易資料,其中第一筆交易是 CoinBase 交易,這個是一比激勵礦工的特殊交易。
![區塊內包含什麼](https://img-blog.csdnimg.cn/img_convert/fea73d697af073d7f1684431f14f2141.png)
## 六、區塊鏈的特性有哪些?
### 去中心化
區塊鏈不依賴中央處理節點,實現了資料的分散式記錄、儲存和更新。
每個區塊鏈節點都必須遵循同一個規則,而該規則基於密碼演算法而非信用,每次資料更新都需要網路內其他使用者的批准,所以不需要一套第三方中介機構或信任機構背書。
傳統中心化網路中,如果中心被攻擊了,則會破壞整個系統。
### 透明性
讀和寫資料記錄對全網節點是透明的。區塊鏈使用開源的程式、開放的規則和高參與度,可被全網審查、追溯。
### 開放性
除了被加密的私有資訊外,區塊鏈的資料對所有人公開(特殊區塊鏈系統除外)。
任何人都可以通過公開的介面查詢記錄。
### 自治性
整個系統可自由安全地交換資料、記錄資料、更新資料。
### 資訊不可篡改
資訊一旦經過驗證並新增至區塊鏈後,就會得到永久儲存,無法更改。
除非能夠同時控制系統中超過 51%的節點,否則單個節點上對資料庫的修改是無效的。
### 匿名性
交易的雙方都是匿名的情況下進行,無須通過公開身份來讓對方產生信任。
## 七、什麼是挖礦?
![挖礦圖片](https://img-blog.csdnimg.cn/img_convert/cb0d2463ee694dd5679869f629482a51.png)
- `礦`指比特幣。
- `挖礦`指挖比特幣。挖礦的過程其實就是解決複雜的密碼學問題。
- `礦工`指運用挖礦裝置(比如CPU、GPU 等有計算能力的裝置)來進行挖礦的人。而作為對他們服務的獎勵,礦工可以得到他們所確認的交易中包含的`手續費`,以及新產生的比特幣。
- `礦池`指大家聯合挖礦裝置一起來挖礦,算力集中的地方。
而怎麼才算挖到比特幣呢?這個就牽扯到工作量證明了。
## 八、什麼是工作量證明?
工作量證明的英文是 Proof of Work,簡稱 PoW。
在現實生活中,也有工作量證明這一說法:比如大學的學位證、畢業證,就是證明大學期間通過 4 年的努力完成了相關課程的學習,別說你沒努力就拿到了證書,汗。
也就是說工作量證明就是通過指定的結果,來證明自己做過了一定量的工作。而在區塊鏈中,這個工作就是雜湊運算。
區塊鏈中節點通過雜湊運算得到符合條件的雜湊值,來證明工作量。而這個過程一個隨機數的查詢過程,俗稱`挖礦`。
找到符合條件的隨機數的方法是不停地`隨機試探`,直到搜尋到一個有效的數。而這個隨機數是由 N 個前導零構成,零的個數取決於網路的難度值。比如以下的隨機數由四個前導零構成。
```
0000ec5927ba10ea45a6822dcc205050ae74ae1ad2d9d41e978e1ec9762dc404
```
工作量證明的三要素如圖所示:
![工作量證明的三要素](https://img-blog.csdnimg.cn/img_convert/c3900b384d9c4243c7eb00a9bce2695b.png)
**輸入**:擁有 80 位元組固定長度的區塊頭。
**演算法**:雙重 SHA 256 雜湊運算。也就是對 SHA256 雜湊運算的結果,再執行一次雜湊運算。
**條件**:計算出的雜湊值,只有小於目標值,才是有效的,否則無效,必須重算。
## 九、區塊鏈的工作原理?
計算出符合條件的雜湊值後,然後怎麼處理呢?
礦工就把這個雜湊值的資訊廣播給叢集中的所有其他節點,其他節點就進行驗證,驗證通過後,就會把之前那個礦工的區塊加入到自己的區塊鏈中,最終形成一串區塊鏈。詳細步驟如下:
![區塊鏈工作原理](https://img-blog.csdnimg.cn/img_convert/6e035ea0bfac9d02e044a336cc85dbce.png)
1.節點將新的資料記錄向全網進行廣播。
2.接收節點對收到的資料記錄資訊進行合法性校驗,如果有效,則將資料記錄納入一個區塊中。
3.接收節點對區塊執行共識演算法。
4.共識達成後,區塊被納入節點的區塊中進行延長。
最後形成的區塊鏈就是如下圖所示:
![區塊鏈長什麼樣](https://img-blog.csdnimg.cn/img_convert/9ec5df5130c58700691b7c1f72a85227.png)
## 十、怎麼攻擊區塊鏈?
計算雜湊值完全依賴硬體的算力,算力越強,算出雜湊值的概率越高,時間越短。
也就是說如果有壞人掌握了 51 % 的算力,就可以發起 51 % 的攻擊,比如雙花攻擊(Double Spending)。也就是同一份錢花了 2 次。
如果攻擊者掌握了較多的算力,就能挖掘出一條原鏈更長的攻擊鏈。然後又將攻擊鏈向全網廣播。而節點按照約定會接受更長的鏈,也就是會接受攻擊鏈,丟棄原鏈。如下圖所示:
![攻擊區塊鏈](https://img-blog.csdnimg.cn/img_convert/a4256774aab433eb2831940a5ced479a.png)
攻擊鏈是紅色那一條,比原鏈分支多一個區塊,被系統接受,稱為有效的鏈,而原鏈就被廢棄了。
## 十一、區塊鏈的缺點
### 區塊鏈體積過大
區塊鏈不斷地發展,節點儲存的區塊鏈資料體積會越來越大,儲存和計算負擔將會越來越重。比如現在的比特幣區塊鏈,完整資料已經超過 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.用三國殺講分散式演算法,舒適了吧?](https://blog.csdn.net/jackson0714/article/details/111026836?spm=1001.2014.3001.5501)
[2.用太極拳講分散式理論,真舒服!](https://blog.csdn.net/jackson0714/article/details/112002319?spm=1001.2014.3001.5501)
[3.諸葛亮 VS 龐統,拿下 Paxos 共識演算法](https://blog.csdn.net/jackson0714/article/details/112593110?spm=1001.2014.3001.5501)
[4.用動圖講解分散式 Raft](https://blog.csdn.net/jackson0714/article/details/113144730?spm=1001.2014.3001.5501)
[5.韓信大招:一致性雜湊](https://blog.csdn.net/jackson0714/article/details/113558743?spm=1001.2014.3001.5501)
[6.病毒入侵:全靠分散式 Gossip 協議](https://blog.csdn.net/jackson0714/article/details/114002290?spm=1001.2014.3001.5501)
[7.這三年被分散式坑慘了,曝光十大坑](https://blog.csdn.net/jackson0714/article/details/108775573?spm=1001.2014.3001.5501)
[8.太上老君的煉丹爐之分散式 Quorum NWR](https://blog.csdn.net/jackson0714/article/details/114338016?spm=1001.2014.3001.5501)
![](https://img-blog.csdnimg.cn/20201012152224