如何向弱智程序員解釋區(qū)塊鏈
文章來源于知乎
導(dǎo)讀:區(qū)塊鏈技術(shù)的文章泛濫成災(zāi),但大多讀起來晦澀難懂。這篇在知乎上點贊量達(dá)到1萬+的文章,就有點意思了。作者寫這篇文章初衷正是苦惱于不知該如何跟弱智室友解釋區(qū)塊鏈。作者來自浙江大學(xué) • 竺可楨學(xué)院、紐約大學(xué) (New York University) • 計算機(jī)科學(xué)學(xué)院,自稱區(qū)塊鏈黑客,他的文章會迅速讓你感覺區(qū)塊鏈很弱智的樣子。對于這篇文章提出的觀點,你是否贊成呢,歡迎在文末留言。以下為汪樂針對《區(qū)塊鏈?zhǔn)鞘裁矗绾魏唵我锥亟榻B區(qū)塊鏈》的回答。區(qū)塊鏈大本營采用第一人稱保留原汁原味。
作者:汪樂-LaiW3n
針對身邊關(guān)于區(qū)塊鏈各種發(fā)問聲音,我嘗試了很多種不同的姿勢以求簡單通俗形象生動地解釋什么是區(qū)塊鏈技術(shù),但是最后都失敗了。因此我萌生了要寫一篇BlockChain for Babies(又名:如何向你的弱智室友解釋區(qū)塊鏈)的想法,以求能簡單直觀生動形象地向?qū)^(qū)塊鏈技術(shù)不了解但是想知道區(qū)塊鏈?zhǔn)鞘裁吹娜私榻B區(qū)塊鏈技術(shù)或者比特幣。
因為面向的讀者是不想知道具體技術(shù)實現(xiàn)只想了解區(qū)塊鏈的人群,因此本文避開了一些底層和算法細(xì)節(jié),采用比較主觀的方式來展示筆者對區(qū)塊鏈技術(shù)的感性認(rèn)識。如果你只是對區(qū)塊鏈感興趣,并沒有深入學(xué)習(xí)的打算,或者只是想像我一樣在別人問起來的時候表現(xiàn)一把,本文應(yīng)該是一篇很好的“導(dǎo)論”。
總覽
區(qū)塊鏈本質(zhì)上是一個去中心化的分布式賬本數(shù)據(jù)庫(感謝@程劍宇指出:在與比特幣相關(guān)的區(qū)塊鏈應(yīng)用中可使用這一術(shù)語,但區(qū)塊鏈技術(shù)可能并不包含“賬本”)。其本身是一串使用密碼學(xué)相關(guān)聯(lián)所產(chǎn)生的數(shù)據(jù)塊,每一個數(shù)據(jù)塊中包含了多次比特幣網(wǎng)絡(luò)交易有效確認(rèn)的信息。 這是區(qū)塊鏈的定義,因此要逐步了解區(qū)塊鏈,我們需要一步步了解如下東西。
去中心化
先來考慮一個中心化集中式處理的過程。你要在某寶上買一部手機(jī),交易流程是:你將錢打給支付寶-支付寶收款后通知賣家發(fā)貨-賣家發(fā)貨-你確認(rèn)收貨-支付寶把錢打給賣家。
圖1: 中心化集中式交易模式
在這個過程中,雖然你是在和賣家交易,但是這筆交易還牽扯到了除了你和賣家的第三方,即支付寶,你和賣家的交易都是圍繞支付寶展開。因此,如果支付寶系統(tǒng)出了問題便會造成這筆交易的失敗。并且雖然你只是簡單的買了一個手機(jī),但是你和賣家都要向第三方提供多余的信息。因此考慮極端情況,如果支付寶跑路了或者是拿了錢不卻不承認(rèn)你的交易或者是支付寶所在的城市因為開G20把所有人都趕走了(?),那么你就悲劇了。
而去中心化的處理方式就要顯得簡單很多,你只需要和賣家交換錢和手機(jī),然后雙方都聲稱完成了這筆交易,就OK了。
可以看出在某些特定情況下,去中心化的處理方式會更便捷,同時也無須擔(dān)心自己的與交易無關(guān)的信息泄漏。
其實如果只考慮兩個人的交易并不能把去中心化的好處完全展示出來,設(shè)想如果有成千上萬筆交易在進(jìn)行,去中心化的處理方式會節(jié)約很多資源,使得整個交易自主化、簡單化,并且排除了被中心化代理控制的風(fēng)險。
去中心化是區(qū)塊鏈技術(shù)的顛覆性特點,它無需中心化代理,實現(xiàn)了一種點對點的直接交互,使得高效率、大規(guī)模、無中心化代理的信息交互方式成為了現(xiàn)實。
當(dāng)然,上述的例子有一個很大的潛在問題:沒有了權(quán)威的中心化代理,怎樣保證每筆交易的準(zhǔn)確性和有效性呢?比如:如果沒有了權(quán)威的中心化代理,張三某一天借了我100塊錢,但是不還錢還不承認(rèn)怎么辦?這里就引出了區(qū)塊鏈的其它特性。
兩個基礎(chǔ)難題
在去中心化以后,整個系統(tǒng)中沒有了權(quán)威的中心化代理,信息的可信度和準(zhǔn)確性便會面臨問題。
問題1:類兩軍問題
第一次聽說這個問題居然是在TCP的課上,大致說的是有兩個相距很遠(yuǎn)的軍隊要傳遞信息,紅軍派遣一個信使去跟藍(lán)軍說:“你他娘的把意大利炮拿出來!”。藍(lán)軍收到信息后又派了一個信使去紅軍說:“收到指令!”。然后紅軍又派一個信使去藍(lán)軍說:“知道你收到指令了!”。然后藍(lán)軍又派一個信使去紅軍說:“知道你知道我收到指令了!”。然后紅軍又派一個信使去藍(lán)軍說:“知道你知道我知道你收到指令了!”……然后就沒完沒了了。
圖2:在分布式計算中在異步系統(tǒng)和不可靠的通道上達(dá)到一致性是不可能的
在這種情況下,因為是點對點的通信,雙方不可能在這種情況下達(dá)到信息的一致性。嚴(yán)謹(jǐn)一點,就是“在分布式計算上,試圖在異步系統(tǒng)和不可靠的通道上達(dá)到一致性是不可能的”。
問題2:拜占庭將軍問題
拜占庭羅馬帝國在軍事行動中,采取將軍投票的策略來決定是進(jìn)攻還是撤退,也就是說如果多數(shù)人決定進(jìn)攻,就上去干。但是軍隊中如果有奸細(xì)(比如將軍已經(jīng)反水故意亂投票,或者傳令官叛變擅自修改軍令),那怎么保證最后投票的結(jié)果真正反映了忠誠的將軍的意愿呢?
拜占庭將軍問題反映到信息交換領(lǐng)域中來,可以理解為在一個去中心的系統(tǒng)中,有一些節(jié)點是壞掉的,它們可能向外界廣播錯誤的信息或者不廣播信息,在這種情況下如何驗證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性。
區(qū)塊鏈技術(shù)的誕生
現(xiàn)在讓我們來一步一步在去中心化的系統(tǒng)中解決這些問題,見證區(qū)塊鏈技術(shù)雛形的誕生。
01
我們先來建立一個去中心化的系統(tǒng),為了方便理解,我們來看一個簡單的去中心化借貸模型:如果A借了B 100塊錢,這個時候,A在人群中大喊“我是A,我借給了B 100塊錢!”,B也在人群中大喊“我是B,A借給了我100塊錢!”,此時路人甲乙丙丁都聽到了這些消息,因此所有人都在心中默默記下了“A借給了B100塊錢”。你看,這個時候一個去中心化的系統(tǒng)就建立起來了,這個系統(tǒng)中不需要銀行,也不需要借貸協(xié)議和收據(jù),嚴(yán)格來說,甚至不需要人與人長久的信任關(guān)系(比如B突然又改口說“我不欠A錢!”,這個時候人民群眾就會站出來說“不對,我的小本本上記錄了你某天借了A100塊錢!”)。
圖3:去中心化借貸模型
02
可能你已經(jīng)發(fā)現(xiàn)了,在上述的模型中,所謂的“100塊錢”已經(jīng)不重要了。換句話說,任何東西都可以在這個模型中交換,甚至你可以憑空杜撰一個東西,只要大家承認(rèn),你就可以讓你杜撰的東西流通。比如:我在人群中高喊一聲“我創(chuàng)造了10個查克拉!”,我甚至不需要知道查克拉是什么,也不需要關(guān)心世界上是不是真的有查克拉,只要大家都聽到,然后在自己的小本本上記下“LaiW3n有10個查克拉”,于是我就真的有100個查克拉了。從此以后,我便可以聲稱我給了某人1個查克拉,只要路人甲乙丙丁都收到并且承認(rèn)了這一信息,那我就算完成了這次交易,哪怕世界上沒有查克拉。
你現(xiàn)在腦海中是不是浮現(xiàn)出了三個字——“比特幣”?由于真正的區(qū)塊鏈和比特幣比我上述的模型復(fù)雜太多,細(xì)節(jié)也豐富太多,因此以下還是以查克拉舉例,畢竟本文是Blockchain for Babies.(笑)
03
假設(shè)過了很長一段時間,我憑空創(chuàng)造的查克拉已經(jīng)在這個系統(tǒng)中流通了起來,大家都開始認(rèn)可了查克拉。但是這個系統(tǒng)中一共就只有10個查克拉,于是有人動了壞心思,他在人群中高呼“我有10個查克拉!”怎么辦?大家是直接在本本上記下他有10個查克拉么,這樣不是人人都可以偽造查克拉了么?
為了防止這種現(xiàn)象發(fā)生,我決定在我創(chuàng)造查克拉的時候給我的查克拉打上標(biāo)記(更準(zhǔn)確地說,我是給我喊的那句“我創(chuàng)造了10個查克拉”打上標(biāo)記,比如標(biāo)記為001),這樣以后在每一筆交易的時候,我在高喊“我給了某某1個查克拉!”的時候,會附加上額外的一句話:“這1個查克拉的來源是記為001的那條記錄,我的這句話標(biāo)記為002!”。我們再抽象一點,某人喊話的內(nèi)容的格式就變成了:“這句話編號xxx,上一句話的編號是yyy,我給了某某1個查克拉!”,這樣就解決了偽造的問題。其實上述模型就變成一個簡化的中本聰?shù)谝话姹忍貛艆^(qū)塊鏈協(xié)議:
圖4:查克拉模型和中本聰?shù)谝话鎱^(qū)塊鏈協(xié)議對比圖
好了,看到這里你基本已經(jīng)能夠生動形象又不涉及任何細(xì)節(jié)地向你的弱智室友解釋區(qū)塊鏈了。但是也許你的室友是一個有打破沙鍋問到底精神求是學(xué)子,因此你最好繼續(xù)準(zhǔn)好回答以下這幾個問題。
1. “憑啥?”
你室友可能會問:“憑啥你喊一句話我就幫你記?我的小本本不要錢么?”。為了激勵大家?guī)臀覀髟捄陀涃~,我決定給第一個聽到我喊話并且記錄在小本本上的人一些獎勵:第一個聽到我喊話并記錄下來的人,你就憑空得到了1個查克拉,這個查克拉是整個系統(tǒng)對你幸苦記賬的報酬,而你記錄了這句話之后,要馬上告訴其它人你已經(jīng)記錄好了,讓別人放棄繼
責(zé)任編輯:售電衡衡
-
權(quán)威發(fā)布 | 新能源汽車產(chǎn)業(yè)頂層設(shè)計落地:鼓勵“光儲充放”,有序推進(jìn)氫燃料供給體系建設(shè)
2020-11-03新能源,汽車,產(chǎn)業(yè),設(shè)計 -
中國自主研制的“人造太陽”重力支撐設(shè)備正式啟運
2020-09-14核聚變,ITER,核電 -
探索 | 既耗能又可供能的數(shù)據(jù)中心 打造融合型綜合能源系統(tǒng)
2020-06-16綜合能源服務(wù),新能源消納,能源互聯(lián)網(wǎng)
-
新基建助推 數(shù)據(jù)中心建設(shè)將迎爆發(fā)期
2020-06-16數(shù)據(jù)中心,能源互聯(lián)網(wǎng),電力新基建 -
泛在電力物聯(lián)網(wǎng)建設(shè)下看電網(wǎng)企業(yè)數(shù)據(jù)變現(xiàn)之路
2019-11-12泛在電力物聯(lián)網(wǎng) -
泛在電力物聯(lián)網(wǎng)建設(shè)典型實踐案例
2019-10-15泛在電力物聯(lián)網(wǎng)案例
-
新基建之充電樁“火”了 想進(jìn)這個行業(yè)要“心里有底”
2020-06-16充電樁,充電基礎(chǔ)設(shè)施,電力新基建 -
燃料電池汽車駛?cè)雽こ0傩占疫€要多久?
-
備戰(zhàn)全面電動化 多部委及央企“定調(diào)”充電樁配套節(jié)奏
-
權(quán)威發(fā)布 | 新能源汽車產(chǎn)業(yè)頂層設(shè)計落地:鼓勵“光儲充放”,有序推進(jìn)氫燃料供給體系建設(shè)
2020-11-03新能源,汽車,產(chǎn)業(yè),設(shè)計 -
中國自主研制的“人造太陽”重力支撐設(shè)備正式啟運
2020-09-14核聚變,ITER,核電 -
能源革命和電改政策紅利將長期助力儲能行業(yè)發(fā)展
-
探索 | 既耗能又可供能的數(shù)據(jù)中心 打造融合型綜合能源系統(tǒng)
2020-06-16綜合能源服務(wù),新能源消納,能源互聯(lián)網(wǎng) -
5G新基建助力智能電網(wǎng)發(fā)展
2020-06-125G,智能電網(wǎng),配電網(wǎng) -
從智能電網(wǎng)到智能城市