紫霞仙子:頂?shù)米^(qū)塊鏈的十二連問嗎?
紫霞仙子:聽說你最近在學(xué)區(qū)塊鏈,給我講講唄~
一、用大白話說下什么是區(qū)塊鏈?
1.我是至尊寶,我愛紫霞仙子你,在這個(gè)時(shí)間,這個(gè)地點(diǎn),我對(duì)紫霞你說:至尊寶愛紫霞一萬(wàn)年。
2.現(xiàn)在我把這句話寫在了紙上:
3.但是如果我把這張紙交給紫霞你,你又怕我反悔。而如果我把這張紙交給月老,我又怕月老可能會(huì)修改內(nèi)容,而改成只愛你一年。
4.我為了防止類似事情發(fā)生,就把這些這愛情真言,告訴了師父、二師弟悟能、三師弟悟凈、白龍馬、牛魔王等認(rèn)識(shí)的人,他們都幫我們記錄了這些信息。
5.目前這份信息現(xiàn)在是安全的,我無(wú)法抵賴,我會(huì)愛你一萬(wàn)年。
6.為了表達(dá)對(duì)他們幫忙記錄信息的感謝,我給他們每個(gè)人發(fā)了一個(gè)紅包。
7.而那些幫我們記錄的人就稱作節(jié)點(diǎn)。
8.而至尊寶愛紫霞一萬(wàn)年這句話+時(shí)間+地點(diǎn)這些信息,打包起來(lái)就形成了一個(gè)信息包,也就是區(qū)塊鏈中的區(qū)塊。而多個(gè)區(qū)塊連在一起就是區(qū)塊鏈。
9.去中心化就是不需要月老來(lái)統(tǒng)一記錄這些信息。
10.娶親當(dāng)天,我答應(yīng)了紫霞三個(gè)條件,又需要去記錄了,而師父和師弟他們很忙,不想浪費(fèi)時(shí)間在記錄上面,所以決定選一個(gè)人來(lái)幫助大家記錄這些信息。
12.選誰(shuí)來(lái)記錄呢?會(huì)不會(huì)不安全呢?那就來(lái)個(gè)很難的算數(shù)題吧,誰(shuí)能算出來(lái),就給誰(shuí)來(lái)記錄,我還會(huì)給記錄的人一個(gè)大紅包,也就是比特幣。而做出算數(shù)題就稱作工作量證明。
13.而這個(gè)記錄的人就被稱作礦工。礦工們不斷算題,爭(zhēng)奪信息記錄的權(quán)利。從而獲得信息記錄的獎(jiǎng)勵(lì)。
二、什么是區(qū)塊鏈?
區(qū)塊鏈的英文是 Block Chain,它的技術(shù)的產(chǎn)生和發(fā)展跟比特幣有著千絲萬(wàn)縷的聯(lián)系。
- 因比特幣的火熱,區(qū)塊鏈技術(shù)被世人所知。比特幣是區(qū)塊鏈技術(shù)最成功最成熟的應(yīng)用案例。
- 區(qū)塊鏈技術(shù)作為構(gòu)建比特幣數(shù)據(jù)結(jié)構(gòu)及交易體系的基礎(chǔ)技術(shù)。
- 區(qū)塊鏈?zhǔn)且粋€(gè)去中心化的分布式數(shù)據(jù)庫(kù),該數(shù)據(jù)由一串使用密碼學(xué)方法產(chǎn)生的數(shù)據(jù)區(qū)塊有序鏈接而成,而區(qū)塊中包含有一定時(shí)間內(nèi)產(chǎn)生的無(wú)法被篡改的數(shù)據(jù)記錄信息。
- 區(qū)塊鏈由多種技術(shù)整合:密碼學(xué)、數(shù)學(xué)、經(jīng)濟(jì)學(xué)、網(wǎng)絡(luò)科學(xué)等。這些技術(shù)以特定方式組合在一起,形成了一種新的去中心化數(shù)據(jù)記錄與存儲(chǔ)體系。而每個(gè)區(qū)塊上又打上了時(shí)間戳,形成了前后關(guān)聯(lián)且連續(xù)的誠(chéng)實(shí)數(shù)據(jù)記錄存儲(chǔ)結(jié)構(gòu)。
三、為什么要有區(qū)塊鏈?
區(qū)塊鏈解決了以下兩個(gè)問題:
交易確認(rèn)和資金清算問題
現(xiàn)實(shí)社會(huì)中各種經(jīng)濟(jì)活動(dòng)涉及資金清算的,除了直接的現(xiàn)金交易外,都需要當(dāng)事人執(zhí)行以下步驟:
- 在銀行等機(jī)構(gòu)開立賬戶。
- 通過開戶機(jī)構(gòu)進(jìn)行資金清算。
但由于公民有多個(gè)開戶機(jī)構(gòu)的賬戶,甚至還有跨國(guó)賬戶,而當(dāng)事人的交易必須通過開戶機(jī)構(gòu)之間的清算才能完成。嚴(yán)重影響了交易確認(rèn)和資金清算的效率和成本。
中心化問題
傳統(tǒng)的信用建立是靠很多的中心,譬如央行、商業(yè)銀行,還有法院、經(jīng)濟(jì)警察等。但帶來(lái)的問題就是成本過高。
而且我們存的錢都是銀行管控的,如果銀行倒閉了,那存的錢可能就沒有意義了。
四、什么是比特幣?
- 比特幣由中本聰在 2008 年發(fā)表的論文《比特幣:一種點(diǎn)對(duì)點(diǎn)的電子現(xiàn)金系統(tǒng)中》首次提出。
- 比特幣是一種虛擬的加密數(shù)字貨幣,去中心化的支付系統(tǒng)。不依賴特定的貨幣機(jī)構(gòu)發(fā)行,不受央行和任何金融機(jī)構(gòu)控制。
- 根據(jù)特定算法,通過大量的計(jì)算產(chǎn)生。
- 通過計(jì)算得到的區(qū)塊獎(jiǎng)勵(lì)最開始是 50 個(gè)比特幣,每隔大約 10 分鐘,下一批 50 個(gè)比特幣產(chǎn)生??偭窟_(dá)到 1050 萬(wàn)(2100 萬(wàn)的 50%)時(shí),獎(jiǎng)勵(lì)減半為 25 個(gè)。每隔 4 年,獎(jiǎng)勵(lì)減半,總量最多為 2100萬(wàn)。
- 比特幣可以通過挖礦獲得,也可以通過交易購(gòu)買獲得。
下圖總結(jié)了普通貨幣和比特幣的區(qū)別:
普通貨幣和比特幣的區(qū)別
五、區(qū)塊內(nèi)包含什么?
區(qū)塊鏈的區(qū)塊由區(qū)塊頭和區(qū)塊體兩部分組成。
區(qū)塊頭:由上一個(gè)區(qū)塊的哈希值、區(qū)塊體的哈希值、4 字節(jié)的隨機(jī)數(shù)、時(shí)間戳等組成。固定 80個(gè)字節(jié)。
區(qū)塊體:區(qū)塊包含的交易數(shù)據(jù),其中第一筆交易是 CoinBase 交易,這個(gè)是一筆激勵(lì)礦工的特殊交易。
區(qū)塊內(nèi)包含什么
六、區(qū)塊鏈的特性有哪些?
去中心化
區(qū)塊鏈不依賴中央處理節(jié)點(diǎn),實(shí)現(xiàn)了數(shù)據(jù)的分布式記錄、存儲(chǔ)和更新。
每個(gè)區(qū)塊鏈節(jié)點(diǎn)都必須遵循同一個(gè)規(guī)則,而該規(guī)則基于密碼算法而非信用,每次數(shù)據(jù)更新都需要網(wǎng)絡(luò)內(nèi)其他用戶的批準(zhǔn),所以不需要一套第三方中介機(jī)構(gòu)或信任機(jī)構(gòu)背書。
傳統(tǒng)中心化網(wǎng)絡(luò)中,如果中心被攻擊了,則會(huì)破壞整個(gè)系統(tǒng)。
透明性
讀和寫數(shù)據(jù)記錄對(duì)全網(wǎng)節(jié)點(diǎn)是透明的。區(qū)塊鏈?zhǔn)褂瞄_源的程序、開放的規(guī)則和高參與度,可被全網(wǎng)審查、追溯。
開放性
除了被加密的私有信息外,區(qū)塊鏈的數(shù)據(jù)對(duì)所有人公開(特殊區(qū)塊鏈系統(tǒng)除外)。
任何人都可以通過公開的接口查詢記錄。
自治性
整個(gè)系統(tǒng)可自由安全地交換數(shù)據(jù)、記錄數(shù)據(jù)、更新數(shù)據(jù)。
信息不可篡改
信息一旦經(jīng)過驗(yàn)證并添加至區(qū)塊鏈后,就會(huì)得到永久存儲(chǔ),無(wú)法更改。
除非能夠同時(shí)控制系統(tǒng)中超過 51%的節(jié)點(diǎn),否則單個(gè)節(jié)點(diǎn)上對(duì)數(shù)據(jù)庫(kù)的修改是無(wú)效的。
匿名性
交易的雙方都是匿名的情況下進(jìn)行,無(wú)須通過公開身份來(lái)讓對(duì)方產(chǎn)生信任。
七、什么是挖礦?
礦指比特幣。
挖礦指挖比特幣。挖礦的過程其實(shí)就是解決復(fù)雜的密碼學(xué)問題。
礦工指運(yùn)用挖礦設(shè)備(比如CPU、GPU 等有計(jì)算能力的設(shè)備)來(lái)進(jìn)行挖礦的人。而作為對(duì)他們服務(wù)的獎(jiǎng)勵(lì),礦工可以得到他們所確認(rèn)的交易中包含的手續(xù)費(fèi),以及新產(chǎn)生的比特幣。
礦池指大家聯(lián)合挖礦設(shè)備一起來(lái)挖礦,算力集中的地方。
而怎么才算挖到比特幣呢?這個(gè)就牽扯到工作量證明了。
八、什么是工作量證明?
工作量證明的英文是 Proof of Work,簡(jiǎn)稱 PoW。
在現(xiàn)實(shí)生活中,也有工作量證明這一說法:比如大學(xué)的學(xué)位證、畢業(yè)證,就是證明大學(xué)期間通過 4 年的努力完成了相關(guān)課程的學(xué)習(xí),別說你沒努力就拿到了證書,汗。
也就是說工作量證明就是通過指定的結(jié)果,來(lái)證明自己做過了一定量的工作。而在區(qū)塊鏈中,這個(gè)工作就是哈希運(yùn)算。
區(qū)塊鏈中節(jié)點(diǎn)通過哈希運(yùn)算得到符合條件的哈希值,來(lái)證明工作量。而這個(gè)過程一個(gè)隨機(jī)數(shù)的查找過程,俗稱挖礦。
找到符合條件的隨機(jī)數(shù)的方法是不停地隨機(jī)試探,直到搜索到一個(gè)有效的數(shù)。而這個(gè)隨機(jī)數(shù)是由 N 個(gè)前導(dǎo)零構(gòu)成,零的個(gè)數(shù)取決于網(wǎng)絡(luò)的難度值。比如以下的隨機(jī)數(shù)由四個(gè)前導(dǎo)零構(gòu)成。
- 0000ec5927ba10ea45a6822dcc205050ae74ae1ad2d9d41e978e1ec9762dc404
工作量證明的三要素如圖所示:
工作量證明的三要素
輸入:擁有 80 字節(jié)固定長(zhǎng)度的區(qū)塊頭。
算法:雙重 SHA 256 哈希運(yùn)算。也就是對(duì) SHA256 哈希運(yùn)算的結(jié)果,再執(zhí)行一次哈希運(yùn)算。
條件:計(jì)算出的哈希值,只有小于目標(biāo)值,才是有效的,否則無(wú)效,必須重算。
九、區(qū)塊鏈的工作原理?
計(jì)算出符合條件的哈希值后,然后怎么處理呢?
礦工就把這個(gè)哈希值的信息廣播給集群中的所有其他節(jié)點(diǎn),其他節(jié)點(diǎn)就進(jìn)行驗(yàn)證,驗(yàn)證通過后,就會(huì)把之前那個(gè)礦工的區(qū)塊加入到自己的區(qū)塊鏈中,最終形成一串區(qū)塊鏈。詳細(xì)步驟如下:
區(qū)塊鏈工作原理
1.節(jié)點(diǎn)將新的數(shù)據(jù)記錄向全網(wǎng)進(jìn)行廣播。
2.接收節(jié)點(diǎn)對(duì)收到的數(shù)據(jù)記錄信息進(jìn)行合法性校驗(yàn),如果有效,則將數(shù)據(jù)記錄納入一個(gè)區(qū)塊中。
3.接收節(jié)點(diǎn)對(duì)區(qū)塊執(zhí)行共識(shí)算法。
4.共識(shí)達(dá)成后,區(qū)塊被納入節(jié)點(diǎn)的區(qū)塊中進(jìn)行延長(zhǎng)。
最后形成的區(qū)塊鏈就是如下圖所示:
區(qū)塊鏈長(zhǎng)什么樣
十、怎么攻擊區(qū)塊鏈?
計(jì)算哈希值完全依賴硬件的算力,算力越強(qiáng),算出哈希值的概率越高,時(shí)間越短。
也就是說如果有壞人掌握了 51 % 的算力,就可以發(fā)起 51 % 的攻擊,比如雙花攻擊(Double Spending)。也就是同一份錢花了 2 次。
如果攻擊者掌握了較多的算力,就能挖掘出一條原鏈更長(zhǎng)的攻擊鏈。然后又將攻擊鏈向全網(wǎng)廣播。而節(jié)點(diǎn)按照約定會(huì)接受更長(zhǎng)的鏈,也就是會(huì)接受攻擊鏈,丟棄原鏈。如下圖所示:
攻擊區(qū)塊鏈
攻擊鏈?zhǔn)羌t色那一條,比原鏈分支多一個(gè)區(qū)塊,被系統(tǒng)接受,稱為有效的鏈,而原鏈就被廢棄了。
十一、區(qū)塊鏈的缺點(diǎn)
區(qū)塊鏈體積過大
區(qū)塊鏈不斷地發(fā)展,節(jié)點(diǎn)存儲(chǔ)的區(qū)塊鏈數(shù)據(jù)體積會(huì)越來(lái)越大,存儲(chǔ)和計(jì)算負(fù)擔(dān)將會(huì)越來(lái)越重。比如現(xiàn)在的比特幣區(qū)塊鏈,完整數(shù)據(jù)已經(jīng)超過 60 GB,如果用比特幣客戶端進(jìn)行數(shù)據(jù)同步的話,至少三天三夜。
數(shù)據(jù)確認(rèn)時(shí)間過長(zhǎng)
比特幣交易的一次確認(rèn)時(shí)間大約是 10 分鐘,而完成 6 次確認(rèn)的時(shí)間是 1 小時(shí)。需要等待 1 個(gè)小時(shí)才能完成確認(rèn)。
交易頻率過低
比特幣每秒最高處理 6.67 筆交易。怎么算的呢?
每條交易大約 250 個(gè)字節(jié),區(qū)塊大小假定限制在 1 MB,可以容納的交易數(shù)據(jù)量為 4000 條。每 10 分鐘產(chǎn)生一個(gè)區(qū)塊,每天可以產(chǎn)生 144 個(gè)區(qū)塊,可以交易 144 * 4000 = 576000 條交易,然后除以每天的總秒數(shù) 86400,也就是 576000 / 864400 ≈ 6.67。
目前需要解決擴(kuò)容問題才能突破這個(gè)瓶頸。
受到現(xiàn)行制度的制約
目前監(jiān)管部門對(duì)這項(xiàng)新技術(shù)缺乏充分的認(rèn)識(shí)和預(yù)期,法律和制度建立可能會(huì)滯后,也缺乏必要的制度規(guī)范和法律保護(hù),加大了時(shí)長(zhǎng)主題的風(fēng)險(xiǎn)。
十二、區(qū)塊鏈的應(yīng)用
- 物聯(lián)網(wǎng)。傳統(tǒng)的物聯(lián)模式是由一個(gè)數(shù)據(jù)中心負(fù)責(zé)收集各連接的設(shè)備信息,成本很高。而利用區(qū)塊鏈?zhǔn)惯@些設(shè)備連在一起形成一個(gè)可持續(xù)運(yùn)行的分布式網(wǎng)絡(luò)。各設(shè)備可自行發(fā)送更換零配件的訂單,甚至還能和其他設(shè)備進(jìn)行電源競(jìng)價(jià),使用戶家庭能源消耗最小化。
- 保險(xiǎn)。傳統(tǒng)的保險(xiǎn)模式是通過投保人申請(qǐng)理賠的方式。而如果用區(qū)塊鏈的智能合約技術(shù),保險(xiǎn)公司無(wú)需等待投保人申請(qǐng)理賠,就能主動(dòng)進(jìn)行賠付。
- 醫(yī)療。現(xiàn)在醫(yī)院都改用電子病歷了,但是存儲(chǔ)信息是在醫(yī)院處,這就是一個(gè)中心化的問題,而帶來(lái)了醫(yī)患糾紛問題和安全性問題。如果用區(qū)塊鏈技術(shù),則病歷信息不可篡改和高強(qiáng)度保密。
總結(jié)
本文用一個(gè)故事開頭,大白話講解了區(qū)塊鏈的概念,然后用 11 個(gè)核心問題來(lái)理清區(qū)塊鏈中大家常關(guān)心的問題。本文既是一篇科普文章,也是一篇原理性文章,對(duì)于原理性的問題,我都用圖解的方式來(lái)講解,相信會(huì)較容易理解一點(diǎn)。區(qū)塊鏈跟分布式聯(lián)系緊密,比如區(qū)塊鏈中用到 PoW 算法,拜占庭容錯(cuò),都是充分利用分布式特性。學(xué)習(xí)區(qū)塊鏈的過程也是學(xué)習(xí)分布式的過程。
巨人的肩膀:
《分布式協(xié)議與算法實(shí)戰(zhàn)》
《區(qū)塊鏈:從數(shù)字貨幣到信用社會(huì)》
https://zhuanlan.zhihu.com/p/267270739
https://www.zhihu.com/question/268487023
本文轉(zhuǎn)載自微信公眾號(hào)「悟空聊架構(gòu)」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系悟空聊架構(gòu)公眾號(hào)。