如何向菜鳥解釋區塊鏈?

2021-02-09 貴生態

導讀:區塊鏈技術的文章泛濫成災,但大多讀起來晦澀難懂。這篇在知乎上點讚量達到1萬+的文章,就有點意思了。作者寫這篇文章初衷正是苦惱於不知該如何跟弱智室友解釋區塊鏈。作者來自浙江大學 • 竺可楨學院、紐約大學 (New York University) • 計算機科學學院,自稱區塊鏈黑客,他的文章會迅速讓你感覺區塊鏈很弱智的樣子。對於這篇文章提出的觀點,你是否贊成呢,歡迎在文末留言。以下為汪樂針對《區塊鏈是什麼,如何簡單易懂地介紹區塊鏈》的回答。

針對身邊關於區塊鏈各種發問聲音,我嘗試了很多種不同的姿勢以求簡單通俗形象生動地解釋什麼是區塊鏈技術,但是最後都失敗了。因此我萌生了要寫一篇BlockChain for Babies(又名:如何向你的弱智室友解釋區塊鏈)的想法,以求能簡單直觀生動形象地向對區塊鏈技術不了解但是想知道區塊鏈是什麼的人介紹區塊鏈技術或者比特幣。


因為面向的讀者是不想知道具體技術實現只想了解區塊鏈的人群,因此本文避開了一些底層和算法細節,採用比較主觀的方式來展示筆者對區塊鏈技術的感性認識。如果你只是對區塊鏈感興趣,並沒有深入學習的打算,或者只是想像我一樣在別人問起來的時候表現一把,本文應該是一篇很好的「導論」。


總覽

區塊鏈本質上是一個去中心化的分布式帳本資料庫(感謝@程劍宇指出:在與比特幣相關的區塊鏈應用中可使用這一術語,但區塊鏈技術可能並不包含「帳本」)。其本身是一串使用密碼學相關聯所產生的數據塊,每一個數據塊中包含了多次比特幣網絡交易有效確認的信息。 這是區塊鏈的定義,因此要逐步了解區塊鏈,我們需要一步步了解如下東西。


去中心化

先來考慮一個中心化集中式處理的過程。你要在某寶上買一部手機,交易流程是:你將錢打給支付寶-支付寶收款後通知賣家發貨-賣家發貨-你確認收貨-支付寶把錢打給賣家。

圖1: 中心化集中式交易模式


在這個過程中,雖然你是在和賣家交易,但是這筆交易還牽扯到了除了你和賣家的第三方,即支付寶,你和賣家的交易都是圍繞支付寶展開。因此,如果支付寶系統出了問題便會造成這筆交易的失敗。並且雖然你只是簡單的買了一個手機,但是你和賣家都要向第三方提供多餘的信息。因此考慮極端情況,如果支付寶跑路了或者是拿了錢不卻不承認你的交易或者是支付寶所在的城市因為開G20把所有人都趕走了(?),那麼你就悲劇了。


而去中心化的處理方式就要顯得簡單很多,你只需要和賣家交換錢和手機,然後雙方都聲稱完成了這筆交易,就OK了。


可以看出在某些特定情況下,去中心化的處理方式會更便捷,同時也無須擔心自己的與交易無關的信息洩漏。


其實如果只考慮兩個人的交易並不能把去中心化的好處完全展示出來,設想如果有成千上萬筆交易在進行,去中心化的處理方式會節約很多資源,使得整個交易自主化、簡單化,並且排除了被中心化代理控制的風險。


去中心化是區塊鏈技術的顛覆性特點,它無需中心化代理,實現了一種點對點的直接交互,使得高效率、大規模、無中心化代理的信息交互方式成為了現實。


當然,上述的例子有一個很大的潛在問題:沒有了權威的中心化代理,怎樣保證每筆交易的準確性和有效性呢?比如:如果沒有了權威的中心化代理,張三某一天借了我100塊錢,但是不還錢還不承認怎麼辦?這裡就引出了區塊鏈的其它特性。


兩個基礎難題

在去中心化以後,整個系統中沒有了權威的中心化代理,信息的可信度和準確性便會面臨問題。


問題1:類兩軍問題


第一次聽說這個問題居然是在TCP的課上,大致說的是有兩個相距很遠的軍隊要傳遞信息,紅軍派遣一個信使去跟藍軍說:「你他娘的把義大利炮拿出來!」。藍軍收到信息後又派了一個信使去紅軍說:「收到指令!」。然後紅軍又派一個信使去藍軍說:「知道你收到指令了!」。然後藍軍又派一個信使去紅軍說:「知道你知道我收到指令了!」。然後紅軍又派一個信使去藍軍說:「知道你知道我知道你收到指令了!」……然後就沒完沒了了。

圖2:在分布式計算中在異步系統和不可靠的通道上達到一致性是不可能的


在這種情況下,因為是點對點的通信,雙方不可能在這種情況下達到信息的一致性。嚴謹一點,就是「在分布式計算上,試圖在異步系統和不可靠的通道上達到一致性是不可能的」。


問題2:拜佔庭將軍問題


拜佔庭羅馬帝國在軍事行動中,採取將軍投票的策略來決定是進攻還是撤退,也就是說如果多數人決定進攻,就上去幹。但是軍隊中如果有奸細(比如將軍已經反水故意亂投票,或者傳令官叛變擅自修改軍令),那怎麼保證最後投票的結果真正反映了忠誠的將軍的意願呢?


拜佔庭將軍問題反映到信息交換領域中來,可以理解為在一個去中心的系統中,有一些節點是壞掉的,它們可能向外界廣播錯誤的信息或者不廣播信息,在這種情況下如何驗證數據傳輸的準確性。


區塊鏈技術的誕生

現在讓我們來一步一步在去中心化的系統中解決這些問題,見證區塊鏈技術雛形的誕生。

我們先來建立一個去中心化的系統,為了方便理解,我們來看一個簡單的去中心化借貸模型:如果A借了B 100塊錢,這個時候,A在人群中大喊「我是A,我借給了B 100塊錢!」,B也在人群中大喊「我是B,A借給了我100塊錢!」,此時路人甲乙丙丁都聽到了這些消息,因此所有人都在心中默默記下了「A借給了B100塊錢」。你看,這個時候一個去中心化的系統就建立起來了,這個系統中不需要銀行,也不需要借貸協議和收據,嚴格來說,甚至不需要人與人長久的信任關係(比如B突然又改口說「我不欠A錢!」,這個時候人民群眾就會站出來說「不對,我的小本本上記錄了你某天借了A100塊錢!」)。

圖3:去中心化借貸模型


可能你已經發現了,在上述的模型中,所謂的「100塊錢」已經不重要了。換句話說,任何東西都可以在這個模型中交換,甚至你可以憑空杜撰一個東西,只要大家承認,你就可以讓你杜撰的東西流通。比如:我在人群中高喊一聲「我創造了10個查克拉!」,我甚至不需要知道查克拉是什麼,也不需要關心世界上是不是真的有查克拉,只要大家都聽到,然後在自己的小本本上記下「LaiW3n有10個查克拉」,於是我就真的有100個查克拉了。從此以後,我便可以聲稱我給了某人1個查克拉,只要路人甲乙丙丁都收到並且承認了這一信息,那我就算完成了這次交易,哪怕世界上沒有查克拉。


你現在腦海中是不是浮現出了三個字——「比特幣」?由於真正的區塊鏈和比特幣比我上述的模型複雜太多,細節也豐富太多,因此以下還是以查克拉舉例,畢竟本文是Blockchain for Babies.(笑)

假設過了很長一段時間,我憑空創造的查克拉已經在這個系統中流通了起來,大家都開始認可了查克拉。但是這個系統中一共就只有10個查克拉,於是有人動了壞心思,他在人群中高呼「我有10個查克拉!」怎麼辦?大家是直接在本本上記下他有10個查克拉麼,這樣不是人人都可以偽造查克拉了麼?


為了防止這種現象發生,我決定在我創造查克拉的時候給我的查克拉打上標記(更準確地說,我是給我喊的那句「我創造了10個查克拉」打上標記,比如標記為001),這樣以後在每一筆交易的時候,我在高喊「我給了某某1個查克拉!」的時候,會附加上額外的一句話:「這1個查克拉的來源是記為001的那條記錄,我的這句話標記為002!」。我們再抽象一點,某人喊話的內容的格式就變成了:「這句話編號xxx,上一句話的編號是yyy,我給了某某1個查克拉!」,這樣就解決了偽造的問題。其實上述模型就變成一個簡化的中本聰第一版比特幣區塊鏈協議:

圖4:查克拉模型和中本聰第一版區塊鏈協議對比圖


好了,看到這裡你基本已經能夠生動形象又不涉及任何細節地向你的弱智室友解釋區塊鏈了。但是也許你的室友是一個有打破沙鍋問到底精神求是學子,因此你最好繼續準好回答以下這幾個問題。


1. 「憑啥?」


你室友可能會問:「憑啥你喊一句話我就幫你記?我的小本本不要錢麼?」。為了激勵大家幫我傳話和記帳,我決定給第一個聽到我喊話並且記錄在小本本上的人一些獎勵:第一個聽到我喊話並記錄下來的人,你就憑空得到了1個查克拉,這個查克拉是整個系統對你幸苦記帳的報酬,而你記錄了這句話之後,要馬上告訴其它人你已經記錄好了,讓別人放棄繼續記錄這句話,並給你自己的記錄編號讓別人有據可查,然後你再把我的話加上你的記錄編號一起喊出來,供下一個人記帳。


當這個規則定下以後,這個系統中一定會出現一批人,他們開始豎著耳朵監聽周圍發出的聲音,以搶佔第一個記帳的權利。對的,你腦海中是不是又浮現出了「比特幣挖礦」的字眼?


值得一提的是,關於比特幣挖礦,@玲瓏邪僧舉了一個很形象的例子:


單身汪們要找女票,國民嶽母說我有好多女兒,這樣吧我給你們出點題目,解出一個就給其中一個姑娘的微信號。

單身汪們瘋狂競爭,想破腦袋去解題。只要其中一隻汪解出一道題,就立馬得意洋洋地昭告天下,示威全部單身汪,這個姑娘是我的啦,你們放棄吧。其他單身汪們即使不服也沒有辦法,惆悵懊惱也不是個事兒啊,還是麻溜地立馬去解下一道題目吧。這隻喜贏姑娘的幸運小汪被嶽母認可後還能得到25個貨幣單位的彩禮,簡直人生贏家。


2. 「聽誰的?」


在這個系統中,如果我和另一個人C幾乎同時地喊出一句:「為了艾澤拉斯!」。由於聽眾所處的位置不同,一定會有人先聽到我說的那句話,而另外一些人則先聽到C的那句話,如果我們規定只能有一個人說出這句話,那到底這句話是誰說的?


如果不加任何條件,那麼上述的情況一定會這樣發展:一部分人認為這句話是我說的,在聽到這句話之後開始記帳,之後他們所做的所有事情都是基於這個事實,並且隨著這個信息一次次的傳下去,這條信息鏈會越來越深;而另外一群認為是C先說這句話的人,也會按照這樣的趨勢發展。這樣,原本是一條唯一的信息鏈,在我們喊出「為了艾澤拉斯」這句話之後,分叉了!?

圖5:「區塊鏈」分叉


這會導致怎樣的情況呢?按照我們的設想,應該每個人的小本本上記錄的東西都是一樣的,都是一條可以把所有信息串聯起來的鏈條。但是在這一刻,他們小本本上記錄的東西不一樣了!這還玩毛啊?以後還怎麼確定交易和信息的真實性!?


為了解決這個問題,我又追加了新的規則:每個人在記錄小本本的時候,需要脫鞋然後用腳拿筆,在小本本上用正楷體書寫!有了這個規定,由於用腳寫字難度很大,每個人至少需要10分鐘才能寫完,而且由於每個人用腳寫字的熟練度不通,寫完這句話所用的時間也不同,因此一定會有人先寫完然後高呼「我寫完了!那句話是LaiW3n喊的!」,這樣其它正在寫這句話的人便會停筆,然後在小本本上重新開始寫「那句話是來文寫的,上一句的編號是xxx」。


如果你對上述我的解決方法感興趣,你可以對照我上面的比喻去了解以下知識:

「聽誰的」——中本聰破解「拜佔庭將軍問題」的算法

「在小本本上記錄」——比特幣挖礦

「脫鞋用腳寫字」——比特幣挖礦難度

「脫鞋寫字速度」——算力

「新的規則」——工作量證明鏈


3. 「雙花」問題


這個時候你的室友可能又要問:如果我同時宣布我給了A一個查克拉和我給了B一個查克拉,但是我只有一個查克拉,那咋整?是A和B都收到了查克拉還是咋地?


這個時候你只需要託起他的下巴,溫柔地看著他的眼睛,用手刮刮他的鼻子,說:「小妖精,你把這種情況帶到上面的規則中去試試?」


----

一些私信問題討論:


1. 為何目前還鮮有區塊鏈和實體商業業務對接的案例?


從理論上:區塊鏈是一門新技術,保守大眾(包括我)還處在觀望階段,只有少數激進或者目標明確的實體開始向區塊鏈進軍,而這些少數的實體在現階段發聲的強度還不夠。

從應用上:區塊鏈技術要與實體商業對接,在技術和規則上還需要進一步開拓,區塊鏈解決的所謂「不信任」問題其對象也只局限於區塊鏈上的數據。因此如果區塊鏈要與實體業務對接,還需要進一步推動實體與數據之間跨域的「遊戲規則」的建立。


2. 虛擬加密貨幣最終是否會走向龐氏騙局?


這個問題我也不太好回答,畢竟我是一個技術人員而非這個領域的弄潮兒。我個人的看法是:對於普通人,不建議長期持有某種數字貨幣,應將數字貨幣作為法幣之間轉換的橋梁;對於投機者,「炒幣」需謹慎,應將風險控制在自己能夠承受的範圍內。PS:其實我真的不關心這個問題。


3. 為什麼聽你一講,感覺區塊鏈很弱智的樣子?


我在文中已經說明,這只是一篇關於區塊鏈技術的新人導論,其目的在於幫助你快速對區塊鏈有一個感性的認識;如果真的想了解區塊鏈技術細節,請閱讀相關文獻或訪問區塊鏈社區。

相關焦點

  • 區塊鏈到底是什麼?這是區塊鏈最通俗易懂的解釋
    以比特幣(比特幣用的是區塊鏈技術)為例,從比特幣發行至今的交易信息均被記錄在區塊鏈上,通過區塊鏈瀏覽器可以查詢。 要分三步: 幣小寶發起交易之後,轉帳消息會首先向區塊鏈網絡廣播; 礦工(節點)對籤名進行驗證,驗證成功後進入交易池,等待打包; 礦工打包並計入區塊。礦工打包交易時優先選擇礦工費高的、佔用內存小的交易,當礦工挖礦成功時,會向全網廣播該區塊,通過驗證後,該區塊加到區塊鏈上,開始下一輪的挖礦。
  • 區塊鏈技術是什麼意思怎麼賺錢 何為區塊鏈通俗解釋
    「區塊鏈」的概念火了,但節奏較快的網際網路世界仍有很多人不了解何為「區塊鏈」,即便網上有太多介紹此物的「名詞解釋」,但也都過於古板和難懂,那麼今天我們給大家講個「故事」,讓更多用戶秒懂「區塊鏈」是什麼意思。
  • 袁煜明:區塊鏈如何改造生產關係
    ,一個是區塊鏈如何改造生產關係,五大表現形式,客觀、理性地來分析區塊鏈相比傳統到底帶來了什麼樣的改變。這時候你是很無力的,不知道怎麼解釋這種高估值。給大家舉個例子。大家以前學物理的時候都學過暗物質吧。其實暗物質是沒法直接探測到的。但人類在天文學觀測中發現,有大量現象是違反牛頓萬有引力的,沒法解釋,直到有人提出來,可能宇宙中存在大量的暗物質,一下子豁然開朗,都解釋得通了。
  • 區塊鏈比特幣是什麼意思通俗的解釋
    區塊鏈比特幣是什麼意思通俗的解釋;好快科技;專業區塊鏈比特幣應用APP區塊連開發;區塊鏈是最近的熱門新聞。在不久之前的一段時間,處於工作年齡的人都在學習分析課程。人們的收件箱裡充斥著各種提供分析課程、學位和文憑的機構和組織的電子郵件。
  • 你是如何定義區塊鏈的
    打開APP 你是如何定義區塊鏈的 挖鏈網 發表於 2019-09-27 15:39:26 區塊鏈是誕生於中本聰建立的比特幣中的一種新型的計算機技術,其中具體包括數據的儲存,點對點的傳輸、共識機制以及加密算法等技術。
  • 兩分鐘給普通人解釋下「區塊鏈」
    什麼是區塊鏈給普通人解釋「區塊鏈」你、我、我們都是普通人!要給一個普通人解釋「區塊鏈」, 就必須要你理解「去中心化」, 如果你能理解去中心化, 你才有機會理解「區塊鏈」, 如果你只是對「區塊鏈」感興趣,並沒有深入學習的打算,或者只是想像我一樣,在別人問起來的時候,裝個逼,那我就從一個故事說起:如果,我把錢借給你,你TM第二天就賴帳,我找誰說,於是我找來了村長老王,老王手裡面有本帳簿,記錄著村子裡每一筆錢,誰都別想跑,這就是中心化,
  • 區塊鏈書單:8位區塊鏈專家向你推薦10本藏書
    該書通過區塊鏈三個階段的發展分析,論證了區塊鏈如何能成為繼大型機、個人電腦、網際網路和移動/社交網絡後的第五個顛覆性計算機範式。不過,在書的最後,作者也對區塊鏈的局限性進行了探討。如果您是第一次接觸區塊鏈的概念,那不妨從這本書開始入手。本書全景式地描繪了區塊鏈這一新興技術的概念、設計原理以及它將如何為金融以及金融之外公共服務、共享經濟、文化、醫療等不同領域帶來顛覆式改變。作者很好地涵蓋了區塊鏈在企業組織、政府、商業模式等不同維度的創新。
  • (知識普及)幣鏈 | 區塊鏈中常用的名詞解釋
    區塊鏈中常用的名詞解釋①礦工: 在比特幣網絡中,競爭計算能獲得新生的比特幣獎勵,很像開採埋在地底下的礦物的過程形象地叫做「挖礦」,競爭挖礦的人或組織,叫「礦工」。②算力:可以簡單理解為計算能力。⑤區塊:比特幣網絡是一個巨大的帳本平均每10分鐘網絡誕生帳本的一頁,我們叫它「區塊」⑥區塊鏈: 每個區塊被打.上時間戳, 按照嚴格的先後順序,連接起來, 叫「區塊鏈 」精選區
  • 如何用最通俗的語言解釋區塊鏈?
    區塊鏈是比特幣的核心技術,是一種管理持續增長的、按序整理成區塊並受保護以防篡改的交易記錄的分布式帳本資料庫。說明:分布式記帳的邏輯是只增加,不修改。共識機制:區塊鏈或分布式帳本技術應用的一種無須依賴中央機構鑑定和驗證某一數值或交易的機制。共識機制是所有區塊鏈盒分布式帳本應用的基礎。節點:保存帳本副本的共識網絡貨伺服器的成員或系統,並可擔任不同角色,如發出、驗證、接受和通知等。
  • 區塊鏈如何顛覆金融行業?
    在這輪對話中,我們將傾聽他親述自己的歷程和他如何看待金融行業區塊鏈的未來。 區塊鏈發展仍處於早期階段 張純信:區塊鏈的實際應用情況如何? 格雷格·斯維:我們無疑仍處於未來10~20年發展趨勢的早期階段。 張純信:銀行如何看待區塊鏈的應用?
  • 區塊鏈研習 | 區塊鏈應用中需注意的問題:如何驗證新信息的真偽
    未來,敖萌博士原創的區塊鏈系列文章還將繼續刊出,敬請關注!提到區塊鏈的運行機制,通常人們都會按照以下方式進行解釋:1、 用戶將交易廣播給一些區塊鏈的節點;2、 這些區塊鏈節點接收到用戶的交易信息進行驗證
  • 區塊鏈研習 | 公有鏈是總帳,聯盟鏈是總線
    最近接觸了很多想使用區塊鏈技術的企業,他們大多都對各種幣有了一定的了解,但是並不知道還有這些聯盟鏈技術。再向這些企業,尤其是傳統企業的技術人員解釋聯盟鏈的應用模式時,往往需要多費一番口舌。我想了很久,覺得用「信息總線」這個詞來形容現階段的企業級聯盟鏈,非常恰當。在硬體結構上,區塊鏈都是基於P2P網絡的點對點連接的一個系統。但是如果把區塊鏈抽象出來看做一個整體,那麼對於公有鏈來說,我們就有了一個人人都可以連接,都可以讀寫的帳本,通常也被稱為是「分布式總帳」。
  • 如何在區塊鏈領域保護競爭?看看OECD發布的區塊鏈競爭政策報告怎麼...
    以比特幣為例,區塊鏈存儲著每一筆通過比特幣支付的交易的詳細信息,同時阻止了同一比特幣在被複製後又被多次使用。區塊鏈技術能夠在幾乎所有相關價值類的交易中運行,包括金錢、貨物和財產。區塊鏈的潛在應用是很廣泛的,從收取稅款到幫助移民向辦理銀行業務困難的自己的母國家裡匯款。區塊鏈還能幫助減少詐騙,因為任何交易都將被記錄在案並且上傳到公共總帳中任何人都能夠查閱。
  • 如何理解區塊鏈構建的信任?
    時至今日,關於區塊鏈定義的解釋依舊是五花八門,層出不窮。對於很多普羅大眾而言,還沒有分清楚什麼是區塊鏈,什麼是比特幣的時候,就已經高喊「ALL IN」口號,一股腦殺入戰場。區塊鏈究竟是什麼,似乎沒有一個明確而統一的標準答案。但是有一點是行業內的共識:區塊鏈的核心在於構建信任。
  • 區塊鏈如何顛覆金融行業?|對話
    在這輪對話中,我們將傾聽他親述自己的歷程和他如何看待金融行業區塊鏈的未來。區塊鏈發展仍處於早期階段張純信:自中本聰發明比特幣以來,有哪些關鍵變化加速了區塊鏈在金融行業的應用?您如何描述從最初對區塊鏈感興趣到現在的轉變?
  • 區塊鏈硬核解析(一):區塊鏈是一種共享資料庫嗎?
    編輯導語:區塊鏈作為一項新興信息技術,越來越受到人們關注。區塊鏈存證技術的出現,不僅突破傳統電子證據運用痛點,其所具有不易篡改、去中心化存儲等技術特徵,與電子數據固證存證的需求相契合,被認為有著極大發展潛力。本文作者針對區塊鏈進行了解析,它真的是一種共享資料庫嗎?
  • 全球各大銀行加速布局區塊鏈:看區塊鏈如何帶動金融脫虛向實
    隨著相關政策的出臺,國家對於區塊鏈的積極立場越來越突出,支持鼓勵在國內推廣和應用區塊鏈技術。區塊鏈可以實現信息的不可篡改,杜絕了數據作偽的可能性。由於銀行對真實數據的要求遠遠高於其他行業,現在越來越多的銀行開始積極擁抱區塊鏈技術。
  • 13個最常見的區塊鏈神話解釋!
    區塊鏈的潛在應用很多:它已經被用於從轉移資金和安排音樂家演出到戰鬥世界飢餓的所有事情。神話1.有一個獨特的區塊鏈考慮到區塊鏈的討論方式,假設只有一個區塊鏈,你會被原諒。事實上,到目前為止,閱讀這篇文章,你可能會有同樣的印象。現實情況是,有很多區塊鏈,每個區塊鏈都有不同的用途。
  • 如何用Python快速實現區塊鏈?
    這篇文章的主要目標是從實用的角度介紹區塊鏈,不會討論比特幣等加密貨幣的價格等炒作。第一小節和第二小節將介紹區塊鏈背後的核心概念,第三小節將介紹使用Python實現區塊鏈的方法。同時還會介紹兩個web應用程式,幫助終端用戶輕鬆地與區塊鏈交互。請注意我在這裡使用比特幣作為例子向大家介紹更為通用的「區塊鏈」技術,本文中所介紹的大多數概念也同樣適用於其他區塊鏈以及加密貨幣。
  • 為了解釋區塊鏈,阿里工程師給兒子畫了一本童話書
    為了解釋區塊鏈,阿里工程師給兒子畫了一本童話書 作者:螞蟻金服 發布時間: