瞭解區塊鏈,從搞懂這10個關鍵詞開始

買賣虛擬貨幣
10月31日,萬向區塊鏈實驗室聯合新鏈空間主辦的【萬向區塊鏈蜂巢學院公開課】正式開課,萬向區塊鏈實驗室負責人杜宇在第一課上給大家介紹了區塊鏈基礎知識及行業發展。11月7日,新鏈空間負責人郝玉琨在第二課詳細講解了區塊鏈最經常出現的10個關鍵詞:區塊鏈、分散式賬本、塊鏈式資料結構、共識、公私鑰賬戶、智慧合約、去中心化、雜湊、跨鏈、分叉。每週四晚上七點,蜂巢學院公開課都將在位於虹口區塘沽路463號的虹口科技金融大廈19層金融極客工場準時開課。面向零基礎,收取零費用,行業一線大咖親自授課,歡迎所有對區塊鏈感興趣的朋友參加。請大家持續關注本公眾號,瞭解後續課程及報名方式。

以下內容根據現場速記整理,有部分不影響原意的刪減:

郝玉琨在演講
大家好!今天我們的題目是“瞭解區塊鏈,從讀懂這10個關鍵詞開始”。作為我們蜂巢公開課的第二講,今天用一個小時的時間,用大家熟悉的例子、通俗的語言,把區塊鏈關鍵的概念講一下;如果可以的話,我們在每個詞上再做一些延伸,讓這個科普更有深度一點,讓在座各個層次的聽眾都能有所收穫。
大家請先看這段文字,它摘自前兩天非常火的文章:《中國區塊鏈標準往事》,文章提到的人員均來自中國區塊鏈技術和產業發展論壇,論壇成立於2016年10月18日,是工信部電子標準院聯合萬向區塊鏈、微眾銀行、螞蟻金服、平安等頭部企業成立的區塊鏈行業組織,它的主要職責是區塊鏈應用推廣和標準制定,包括區塊鏈國家標準和ISO/TC 307等國際標準的制定工作。特別地,全國區塊鏈和分散式記賬技術標準化技術委員會籌建於2018年6月,之後國內大概有20-30家頭部企業參與其中。“區塊鏈就是區塊鏈,不是哲學,不是玄學,不是詭辯,不是禪,而是科學。”10月24日的政策春風吹來之後,大家可能會聽到各種對於區塊鏈的描述,有從哲學角度的,有從社會學角度的,不一而足,但是一切的一切,最終都是靠程式碼實現的,區塊鏈是科學的,是前人在計算科學領域成果的集大成。我喜歡這句話的原因,在於它可以給我們區塊鏈初學者定一個正確的理念和基調,希望我們大家可以用科學的態度、嚴謹的方法、務實的姿態,共同探索區塊鏈與實際應用場景結合,讓區塊鏈這門新興技術在實體產業中創造更大的價值。區塊鏈“區塊鏈是用密碼技術將共識確認的區塊按順序追加形成的分散式賬本。”這是基於國際標準ISO/DIS22739 英文定義,翻譯出幾個版本的中文,又經過幾十家企業代表投票表決,最後確定出來定義。當時討論組的負責人講:“這30個字一個都不多,一個都不少”,這可以說是非常精煉地概括了區塊鏈的核心要素:第一,區塊鏈是一種分散式賬本,但是分散式賬本不只包含區塊鏈;第二,區塊鏈和密碼技術有著非常緊密的關係,密碼技術是區塊鏈的“靈魂”;第三,區塊鏈上所有資料是經共識確認過的,共識是區塊鏈非常重要的概念;第四,區塊順序追加形成,其中的塊鏈式結構造就了區塊鏈特殊的形態。這裡我們提一段逸聞,聊一下區塊鏈這幾個字怎麼來的。源起於 2018 年的這篇論文:《比特幣:一種點對點電子現金系統》,但是在英文原版白皮書裡並沒有blockchain這個詞,只出現了一次“chain of blocks”。我試圖透過谷歌搜尋,確認blockchain這個詞第一次出現在哪裡,但是並沒有搜到確切的時間。考慮到英文中有“合成詞”這樣一種造詞法:從chain of blocks到blockchain,這可能不是一個太難的過程。按照行業公認的一種說法,中文“區塊鏈”這個詞源於第一版(2011年)對比特幣白皮書的翻譯,作者是名為QQAgent(吳忌寒)的網友。以上,由我幫助大家梳理了“區塊鏈”這個詞的由來。接下來,我們瞭解下區塊鏈的幾個技術特點:一是難以篡改,二是隻能追加,三是高度依賴密碼學,四是去中心化,五是開源。這裡我們會重點講一下開源。開源,是區塊鏈必不可少的一個要素,我們講“信任的機器”,如果不能把程式碼公開出來接受公眾的審視,我們又如何相信它宣稱的那一套“不可抵賴”與“可追溯”呢?對比傳統的網際網路應用,不管是社交、購物,還是打車、直播,資料的安全問題源於使用者沒法知道軟體介面背後到底是什麼:你完全看不到它的程式碼。即便作為普通網民,沒有能力分析這個程式碼到底是什麼、和它的聲稱的應用是不是相符,但是開源足夠讓事物都放在陽光下,總有人可以搞明白這些程式碼有沒有搗鬼。開源的姿態是必須的。
分散式賬本分散式賬本是:在分散式節點之間共享並使用共識機制同步的賬本。區塊鏈是一種分散式賬本,但是分散式賬本不全是區塊鏈。分散式賬本不是由一個人、一個機構來單獨維護的。它由眾多參與方共同維護,每一方儲存一套完整賬本。分散式賬本也有共識演算法,所以共識演算法這個東西並不是區塊鏈獨有,但是區塊鏈用到的共識演算法和分散式賬本用的共識演算法因為場景不同,有著明顯的差異,這個太技術了,這裡就不贅述。如上圖,左側是分散式賬本的示意圖,右側表徵了區塊鏈和分散式賬本的關係,區塊鏈是一種特殊的分散式賬本,它維護了特殊的一個鏈式結構。塊鏈式資料結構根據ISO/DIS22739的定義,塊鏈式資料結構是“一段時間內發生的事務處理以區塊為單位進行儲存,並以密碼學演算法將區塊按時間順序連線成鏈條的一種資料結構”。
區塊對應的單詞是block,直譯是塊。但為什麼多了一個“區”字呢?鏈上的資料按照“block”為單位打包,聯想資料庫裡面分庫分表的這類分“區”的概念,“區塊”兩字就不難理解了。

關於塊鏈式結構,大家可以看圖上的這個結構圖,這裡可以舉一個大家熟悉的例子:兔子舞。大家團建時候經常玩的一個遊戲,一個人就一是個塊,後面同學用手搭在前面同學的肩上,搭上的手就是你這個區塊的雜湊值,當所有的區塊連成一起的時候,就構成了這樣一個類似兔子舞的鏈條。不管鏈上每個區塊內資料有多少、資料怎麼來的,區塊鏈的形態就是這樣。大家把圖上的這個兔子舞的圖片映在腦子裡,可以形象地理解這就是所謂的區塊鏈。大家只要知道它長這個樣子就夠了。

共識

共識的定義它有點繞口,“分散式賬本節點間就如下事項達成的協議:1)某筆交易已驗證透過;2)就驗證透過的交易而言,分散式賬本包含一個具備一致性的集合和順序記錄。”,這個解釋同樣來自ISO/DIS 22739的翻譯。共識是一個協議,一種就某種情形的一種約定,共識演算法則是達成這種約定所需要採取的措施方法。對於區塊鏈而言,所謂的共識是多數人認可,像是我們更熟悉的原則:“少數服從多數”。記住,共識不意味著所有人都認可,共識只意味著大多數人認可。

以上羅列了幾種常見的共識演算法:PoW,Proof of Work,是比特幣使用的共識演算法。網路上關於比特幣挖礦費電的話題,背後其實就是這個PoW 共識演算法。理論上,比特幣網路所有線上全節點都可以參與PoW共識,形象地說,就是“一人一票”,公平性最好,但是效率就比較低下。

PoS,Proof of Stake,大家可以形象地理解為“股東大會”。誰的股權多,誰手裡持有的資產多,在形成決議過程中,或者說形成共識過程中,就聽誰的。

DPoS,Delegate Proof of Stake,D就是代理的意思,它相當於上面PoS的一個進化。我們開股東大會所有人都來,太費勁了,成本高,效率差,那我們乾脆開董事會吧,我們先選出比如21個董事,由他們來代表大家做共識。這樣大家討論出一個共識就相對容易的多。DPoS讓渡了一些公平,但是效率提升很明顯。

前面三個是目前公有鏈常見的共識演算法。

Paxos,很多經典的分散式資料庫用的就是Paxos演算法。它有一套很複雜的選舉機制,簡單講就是選村長,選出村長來大家就聽村長,但選村長過程中有一個博弈:先選出來的村長要快速地履行職責,不然可能後面會有新的村長被選出來,把前面的人替代掉。它是一個很複雜的選舉+博弈的機制。

PBFT,採用了和Paxos類似的選舉機制,並增加了拜佔廷容錯。PBFT一般是用在聯盟鏈產品中,因為它節點比較少,效率會很好,在政府、大型企業這類大型應用場景中,使用的比較多。

關於共識演算法,主要有前面介紹的這幾種。隨著行業的發展,PoW、PoS、DPoS這幾個有了變種出來,但陽光之下無新事,要麼將PoS的S改成別的要素,核心還是你佔有越多,權利越大;要麼是將DPoS董事會的選舉機制做一些微創新,核心還是代理人代替大眾做決策。原始的PoW、PoS、DPoS、PBFT這幾種共識演算法經過幾年的實踐驗證,經受住了時間的考驗,執行穩定,效果可預期,在實際使用中是不錯的 候選項。

公私鑰賬戶

公私鑰賬戶,每個賬戶都是由一對鑰匙定義,一個私鑰一個公鑰,賬戶以地址為索引,地址由公鑰衍生而來。

公私鑰賬戶目前較多地使用在公鏈產品中,但是很多的聯盟鏈產品也可以經過配置後支援這樣的功能。不管是比特幣、以太坊,還是其他的產品,共性地會先生成一個私鑰,基於生成出來的私鑰,透過一個特定的計算機演算法,生成一個公鑰。出於對公鑰資訊的保護,以及使用者體驗的考慮,系統會經過如圖的複雜機制生成一個地址。對照大家熟悉的銀行帳戶,可以這麼理解:公鑰就是賬戶,私鑰對應著密碼。但是差別在於,銀行帳戶是由銀行來替代客戶管理的,忘記密碼丟了之後,客戶可以拿身份證去銀行找回,區塊鏈公私鑰賬戶體系完全由使用者自己保管,丟就丟了,永遠沒法找回。所以權利和責任是對等的,大家享有對自己資產100%的所有權的同時,就要承擔對自己賬戶保護的責任。

在區塊鏈應用過程中,有個資料確權的概念觸動大家興奮點:在區塊鏈時代每個人的資料可以完全屬於他自己。比之當下,明明資料是自己產生的,但消費資料歸淘寶,通話資料歸運營商,出行資料要歸滴滴。我同意這種說法。我們需要在網際網路之上來構建一個全新的、有規矩的個人資訊基礎設施,讓大家有新的權利和義務,從個人的角度我希望並相信它會實現。

智慧合約

智慧合約是儲存在分散式賬本中的計算機程式,其中該程式的任何執行結果都記錄在分散式賬本中。如果沒有智慧合約,我們可能還停留在比特幣時代,也就是區塊鏈1.0,無法支撐執行復雜應用。

區塊鏈2.0,標誌性的是有了智慧合約,上面可以跑相對複雜的應用。舉個以太坊的例子,我們說它上面的智慧合約是做圖靈完備的,忽略這個很學術的詞,意思就是說,雖然語法簡單,但是它理論上可以完成複雜計算機所能夠完成所有事情。

介紹完智慧合約的概念之後,這裡做四點思考:第一,“智慧”這兩個字對應的英文原詞是“Smart”,可以說譯者賦予“Smart Contract”非常美好的期望,但是它不是萬能的,在實際的應用過程中有自己的能力邊界,我們需要調整預期,合理使用;第二,合約執行條件的觸發很多時候依賴於外部輸入,預言機(Oracle)是鏈外資料輸入到鏈上的關鍵連線件,資料能否高效、可信地從外部輸入到鏈上,目前來看還是有諸多挑戰;第三,實際應用中鏈上智慧合約條件觸發形成響應時,需要傳導到鏈外來完成響應,比如物聯網裝置、比如其他的 IT 系統,目前這塊還不那麼完善;第四,合約的升級一直是個難題,一方面是功能更新沒法原地升級,一方面是小的錯誤沒法原地更新修正,只能廢掉舊的重來。智慧合約作為區塊鏈上執行應用的關鍵設施,還有較大的提升空間。

講完概念,我們看一下列舉的十個應用,這些應用當然是區塊鏈與具體業務結合、與其他IT技術結合共同實現的,但核心部分是用智慧合約編寫的鏈上邏輯、進而完成區塊鏈應用。

去中心化

去中心化,它在標準裡面也沒有專門的提,我找了一下維基百科和MBA百科的說明。維基百科講的更籠統一些,MBA百科講的更形象一些。去中心化是現象或結構,它只能出現在擁有眾多使用者或者眾多節點的系統中,每個使用者都可以連線並影響其他節點,每個人都是中心,扁平化、開源化、平等化的現象或結構稱之為去中心化。

去中心化並不是區塊鏈獨有的,去中心化是一個很有歷史感的詞。像 Wikipedia、Flickr、Blogger、滴滴、微博這些例子,其實都是有去中心化的,比如,維基百科每個人都可以上去共享資訊,Flickr 人人都可以上傳圖片,微博人人可以發表內容。去中心化定義的核心:每個人都可以參與,每個人都可以影響別人,這些不都算是去中心化的麼?對於區塊鏈而言,並無必要刻意強調原教旨的去中心化,關注廣義的去中心化,關注區塊鏈在於傳統產業融合中發揮的價值,或許更有意義一些。

這裡提醒大家一點,在國內去中心化是應用、是使用者,不是運營主體。在國內,我們不管服務的是政府、企業,還是個人使用者,大家都一定要嚴格遵守各部委各監管機構的要求。對於企業,特別關注最下面的這一條:網信辦釋出的《區塊鏈資訊服務管理規定》,企業需要履行為區塊鏈資訊服務備案的義務。

雜湊

雜湊,“透過將任意長度的訊息輸入變成固定長度的短訊息輸出來保障資料的完整性”。雜湊,是英文單詞 Hash 的音譯,或許我們叫它摘要演算法更合適。摘要是什麼意思呢?不管你原來的資料有多大,最後經過演算法算出來,它就是固定長度的。你選取演算法的不同,它輸出的固定長度不一樣,我們講塊鏈結構,舉跳兔子舞的例子,搭在肩膀上的手就是雜湊。區塊鏈可以說因為有雜湊,保證他的不可篡改:每個區塊內哪怕改了一個位元組,雜湊函式算出來的值就不一樣了,進而導致與之前區塊記錄的塊雜湊不一致。

在摘要之下,雜湊潛在的一個功能是“一一對應”。理論上無論什麼資訊都可以透過雜湊,一對一的轉化成一個固定長度的“碼”,而且不衝突。比如,比特幣使用的雜湊函式,SHA-256,產生256位雜湊,“2的256次方”這個數字超過宇宙中原子的數量。不準確地說,透過 SHA-256 可以給宇宙的每個原子都做摘要、編“碼”,且不會衝突。正是這個“不衝突”支援了區塊鏈世界的安全性。

跨鏈

跨鏈是在2019年區塊鏈行業最期待的技術突破。但是跨鏈是什麼呢?狹義上是兩個相對獨立的區塊鏈賬本間進行資產互操作的過程,廣義上是兩個獨立的賬本間進行資產、資料的互操作的過程。互操作並不是個新的概念,在國內IT標準中早就有過定義,互操作是兩個不同的系統,以及系統的兩個不同的模組之間相互操作。

舉個不嚴謹的例子,如圖所示,左側是MacOS,右側是windows,兩個是不一樣的系統、不同的執行機制,怎麼讓兩個系統相互的操作呢?這發生在橫跨兩個不同系統間的操作,就可以理解為是跨鏈。

從業務上看,全國各地,各級政府、企業已經做了很多區塊鏈的行業應用,但是不同系統之間是隔離的,囿於區塊鏈的特性,鏈上資訊並不互通,這給我們使用者帶來很多困擾。我們暢想一下,未來可能有打車鏈、電商鏈、醫保鏈、稅務鏈等,網際網路業務有多少種,未來的鏈就可能有多少條,但是注意,從目前的技術看這些鏈是不通的。網際網路好不容易做到的資料互通、資訊共享,這個時候又被拎起來變成了一個一個資料煙囪,這就是跨鏈的要解決的問題。我們希望在技術上有這樣一個鏈上原生跨鏈產品,不需要任何非技術的、額外的操作,在鏈上全幫使用者解決掉上面的問題。這是技術上對於跨鏈的訴求和需求。

分叉

分叉,簡單的講就是區塊鏈是一條鏈,某個時間點,一條鏈叉出兩個頭,一般是出塊規則發生變化(區別於短暫的最長鏈選擇)。它分為兩種,軟分叉和硬分叉,講開了很複雜,簡單講就幾個字,軟分叉是向前相容,小改進,硬分叉是不相容,大升級。

比特幣的 SegWit(隔離驗證)就是軟分叉的一個例子,它是對於比特幣網路擴容的小改進的方案。以太坊升級到以太坊 2.0 則是一個典型的硬分叉的例子,它原有共識演算法是PoW,未來它出於對於效率等的考慮,要改成PoS,共識演算法發生變化,需要透過硬分叉來升級整個網路。對於普通愛好者來講,分叉是什麼?做一個不嚴謹的比方,分叉正面的功能就是幫助區塊鏈系統做升級,像大家熟悉的升級windows一樣。

總結

最後我帶領大家共同回顧一下區塊鏈的這十年曆程,一切始於2008年10月31日比特幣白皮書的發表。萬向區塊鏈實驗室作為國內首家專注於區塊鏈技術的非營利性前沿研究機構,一路走來,我們篳路藍縷,砥礪前行,未來:我們將繼續推進區塊鏈核心技術難點的突破,攻堅克難,推動自主可控區塊鏈的研發;我們將不斷推進區塊鏈與雲端計算、大資料、物聯網、人工智慧等多領域技術的融合運用,相輔相成,提升運用區塊鏈技術解決實際問題的能力;我們將加大力度推進區塊鏈在數字金融、物聯網、智慧製造、供應鏈管理等多個領域的應用實踐,虛實結合,讓區塊鏈技術在服務實體產業的過程中體現出價值來。   

今天,我舉了不少例子,打了很多比方來幫助大家理解區塊鏈的基礎概念,希望能給大家提供一點幫助,如果發現講的不準,大家多多包涵。謝謝大家!

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;