一、區塊鍊概述
區塊鍊概念在近兩年成為了金融、科技行業人群探讨的熱點,其首個并且是目前應用規模最廣泛的案例就是比特币。
在比特币系統中,存儲比特币交易記錄的部分被稱為區塊,所有區塊的集合包含了比特币從第一筆交易至最近一筆交易的所有記錄,這個包含所有記錄的賬本是比特币中的區塊鍊。我們認為廣義的區塊鍊代表的是規模化的分布式共識系統。
1、雅浦島石币:小範圍内的分布式共識系統
在太平洋上的雅浦島,當地居民把一種石灰岩制成的石輪當作貨币,這種石灰岩需要到400英裡遠的帕勞島才能開采到。島上的居民在決定用多大的石币付費後,甚至不用帶走,隻需在該石币上做個标記即可。最有趣的是,島上的首富擁有一塊體型巨大、品質上乘的石币,該石币是這戶人家的祖輩出外探險得到的,在運回來的過程中遭遇了暴風雨,不得不遺棄在了海裡。探險隊回去之後,通過其他隊員的作證,島上的居民都承認了這塊石币的價值。雖然這塊石币永遠被留在了海底,但是并不影響首富家的人使用它來達成交易。

在雅浦島上,所有島上居民對石币達成了共識,石币的價值因為居民的共識而被賦予。每一個居民關于石币歸屬的記憶可以了解為一個區塊,所有居民連結起來就形成了整個雅浦島的區塊鍊。曆史上這種簡易的區塊鍊是小範圍,不穩定的,由于石币的歸屬由每個人記憶決定,并不能完全解決信用問題。
二、區塊鍊——密碼學、經濟學、計算機科技的混合産物
1、區塊鍊的意識形态:去中心化
區塊鍊在思想層面代表了創造者去中心化的願景,這種思想在凱文•凱利《失控》一書中也被提及,大自然生态文明的進化暗合分散到中心化再到去中心化的規律。
單獨的一隻蜜蜂或是螞蟻幾乎不存在智慧,而當它們形成蜂群和蟻群的時候,群體的智慧遠遠超出個體的累加,蜂群和蟻群是自然界去中心化團隊的典型案例。
對于人類社會而言,從遠古時期的原始人到後來的遊牧名族、城邦再到現在的國家,中心化程序幾乎已經結束,下一步可能會向去中心化發展。區塊鍊的誕生到應用,像是一個曆史拐點,标志着人類開始由中心化的叢集向去中心化演進。
2、區塊鍊的實體結構:分布式共識系統
通過前文雅浦島石币的案例,我們大概了解了分布式共識系統。所謂分布式共識,主要包含兩點:分布式與共識,分布式指的是系統運作由參與該系統的所有個體分工合作進行,共識就是所有參與者達成的一緻決定。分布式共識系統簡單來說就是所有參與者共同決策、共同運作、共同維護的系統。我們認為實作該系統的廣泛應用,需要解決四大問題:存儲問題、傳輸問題、拓展問題、共識問題。
存儲問題主要指如何實作區塊中資料記錄安全、穩定的存儲。區塊鍊中的資料存儲于計算機的存儲媒體中,并且基于密碼學的應用,存儲資料均被加密處理,保障了使用者資料的安全性、隐私性。
傳輸問題主要指資料資訊如何實作快速、安全的傳輸。傳輸問題的解決得益于網際網路傳輸速度、穩定性的提升。通過網絡傳輸速度的不斷更新以及各國通信基礎設施的不斷完善,資料的全球快速穩定傳輸逐漸将成為現實。
拓展問題主要指如何擴大該系統的規模。在這裡,不得不感歎比特币創造者中本聰的高明之處,他利用經濟激勵鼓勵人們參與到該系統中,每一個合格的參與者(參與決策、運維的人員)都能從中獲得經濟收益即比特币,這類合格參與者被稱作節點。一個分布式共識系統擁有節點數量的多少基本代表了其規模的大小。
共識問題屬于該系統的核心問題。當共識系統在小範圍運作時,每一個節點我們認為是基本可信的,是以達成共識并不需要很多複雜的條件。但當系統的應用範圍擴充到全球,每一個節點的誠實性不能被保證,如何驗證節點的真實可靠就成為了難點。對此人們研究出了多種共識證明機制,主要有工作量證明(PoW)、權益證明(PoS)、股份授權證明(DPoS)、拜占庭容錯算法(pbft)。
工作量證明的意思是你需要提供工作量來證明自己的可靠性,最早被應用在比特币區塊鍊中。具體工作量的界定在比特币中展現為尋找一個随機數,使其能滿足生成新區塊的規則。最先找到合适随機數的人擁有生成新區塊的權利,同時也會獲得一定數額的比特币造币權,這個過程就是大家熟知的挖礦。若是該節點記錄的資料資訊有誤,這個新區塊将不會被其他節點接納,同時運算随機數消耗的電力将被浪費。
基于人都是逐利者的經濟學原理,節點記錄資訊會保持真實可靠以獲得獎勵。工作量證明在比特币運作初期幾乎沒有問題,任何人都可以參與比特币中新區塊的生成,也可以随時退出。但是随着科技的發展,計算裝置由最初的CPU、GPU發展到中心化的大型ASIC礦機,個人節點的算力與礦機相差甚遠,比特币的節點分布呈現中心化趨勢。另外,随着計算難度的上升,比特币挖礦還造成了大量的能源浪費。
權益證明是近幾年新興的證明機制,根據每個節點持有虛拟貨币的比例以及時間,決定擁有生成新區塊權利的節點,獎勵是根據其持币數量和時間給予對應的利息。權益證明不再需要節點進行算力比拼,節省了能耗,并且可以大大縮短共識時間。
股份授權證明與權益證明類似,所有持币者票選出一定數量的節點輪流行使記賬、驗證交易的職能,類似議會制度。
拜占庭容錯算法與之前提到的PoW、PoS等不同,屬于傳統分布式一緻性算法的改良版,主要解決了拜占庭将軍問題。
拜占庭将軍問題主要講述的是假設存在十位将軍要共同發出軍事指令例如進攻或撤退,但是又沒法當面讨論決定,便通過信使傳遞資訊。如果其中存在叛徒,故意發出錯誤資訊幹擾,就無法達成全體一緻的決定。通過複雜的數學證明,當有n個内奸時,總成員數>3n+1才能找出内奸,pbft算法就基于此原理運作。
簡單來說pbft算法中推舉出一個主節點來記錄資訊并形成新區塊,再将新區塊廣播至所有其他節點(pre-prepare階段);其他所有節點驗證新區塊并廣播(prepare階段);進行該當總節點數為3n+1時,若節點受到2n個節點的資訊與自己的相符,則繼續全網廣播(commit階段);當節點收到2n+1個節點的commit資訊,便确定新區塊的生成(reply階段)。pbft算法不需要虛拟貨币作為經濟激勵,并且由于驗證的時間遠遠小于運算随機數的時間,達成共識幾乎隻需要2-5秒。但是pbft算法一定程度上要求了節點的真實可靠性,即錯誤節點需要少于總節點的三分之一,并且又沒有算力壁壘,是以隻适用于有限範圍、大部分節點可靠的分布式共識系統。值得一提的是,中國央行計劃推出的數字貨币就采用了pbft算法。
總的來說,區塊鍊是以去中心化思想為基礎,能夠實作規模應用的分布式共識系統。根據其應用範圍的大小,區塊鍊可以被分為公有鍊、聯盟鍊、私有鍊三大類。
公有鍊是區塊鍊廣義上的表現形式,完全公開開放,任何人都可以參與其中成為節點、讀取資料記錄、使用該系統。具有完全去中心化、公開透明、資料不可篡改的特征,目前規模最大的公有鍊是比特币區塊鍊。
聯盟鍊是由若幹個機構結成聯盟,共同參與管理的區塊鍊。每個機構擁有一個或多個節點,記錄的資料資源隻允許在聯盟鍊内部交流,不完全公開透明,各方權限由聯盟成員共同決定。
私有鍊是指某個機構或組織内部運作的區塊鍊,參與決策的節點由機構自己決定。私有鍊能夠實作在企業内部資料的公開透明,并且安全性、運作效率遠遠高于公有鍊及聯盟鍊。綜合來看,私有鍊對大型企業特别是金融機構很适用。
三、區塊鍊的起源與發展
1、區塊鍊1.0階段:虛拟貨币
2008年,中本聰在比特币論壇發表了論文《Bitcoin:A Peer-to-Peer Electronic Cash System》闡述了一種新型的數字貨币:比特币。比特币是一種P2P電子現金系統,使用者無需通過銀行系統就能進行點對點的線上交易。
1.0階段的區塊鍊是注明交易時間的比特币交易記錄的賬本。其中的區塊是資料記錄集合,鍊是在每個區塊頭部存儲着父區塊通過哈希運算得出的哈希值,用于追蹤、溯源到上一區塊,由此每個區塊都能與前一區塊保持聯系。
首先我們來看區塊鍊結構中的區塊,下圖描繪了區塊中的主體部分資料記錄的儲存方式。這種類似二叉樹的存儲結構被稱作“梅克爾樹”,梅克爾樹的最底層由兩兩分組的比特币交易記錄即資料構成,一組交易資料通過哈希運算得出對應的輸出值,兩組輸出值再一次進行哈希運算得出上一層輸出值,最終形成一個最終的哈希輸出值,該輸出值被稱作“梅克爾樹根值”。
區塊中除了儲存“交易資料”,還有“區塊大小”、“區塊頭部”、“交易計數器”三個部分。整個區塊的核心部分是“區塊頭”以及資料記錄。
區塊頭主要包括:父區塊哈希值、梅克爾樹根值、時間戳、目标值和随機數,是将每個區塊連結起來的關鍵,區塊頭中的父區塊哈希值引用的是前一區塊的哈希值,用于定位到前一區塊。而梅克爾樹根值則是上文提到的由兩兩分組的資料哈希運算得出的最終值,用來驗證區塊内資料是否被篡改。
比特币的運作原理:
比特币的流通主要分為三個部分:造币、交易、維護。比特币造币與傳統的國家央行發行貨币不同,不依賴于任何一個貨币發行機構,符合要求的每個新區塊的記錄人都可以獲得造币權。從創世區塊産生,每生成一個新區塊會擁有發行50個比特币的權利,這個數量在每21萬個區塊産生後會減半,在2012年和2016年已經經過兩次獎勵減半,目前礦工挖到一個新區塊隻有12.5個比特币的發行權。因為這樣的特性,導緻比特币最終總量隻有大約2100萬個。
比特币交易涉及兩個部分:交易雙方和所有節點。首先,比特币存放在一個由數字與字母組成的位址中,一個比特币位址對應一個公鑰與私鑰(公鑰通過私鑰生成,位址又通過公鑰生成,并且整個過程不可逆)。當發生比特币交易時,例如小明要轉給小紅10個比特币,小明會全網廣播一條要将自己一個位址(假設該位址中有20個比特币)上的10比特币轉到小紅的位址的消息,并且用對應的私鑰簽名,整個交易的輸出的是設定好的比特币腳本,通過該腳本來驗證交易的有效性。另外比較重要的一點是,每個位址中的比特币在交易中是必須被清零的,剩餘的錢會轉到一個屬于自己的新位址。
沿用上文的例子,小明從一個儲存有20比特币的位址中轉移10比特币給小紅,并将剩餘的10比特币轉移到自己的新位址中,這也是為了自己比特币錢包的安全考慮(洩露公鑰後有可能會被量子計算機破解)。這是交易雙方之間的交易流程,但是比特币作為一個沒有中央機構授權的電子貨币,需要所有節點達成共識,該交易才能被确認。達成共識的主要流程是每個礦工在接收到該交易廣播後,先驗證該輸入位址是否有足夠的餘額(通過追溯到該位址涉及的上一筆交易),驗證成功後就将該交易納入到自己打包的區塊中,同時運算合适的随機數(挖礦),最先找到合适随機數的人就可以全網廣播自己找到了新區塊,該區塊會被接入區塊鍊的主鍊(累計難度最大的鍊)。當這筆交易被接入主鍊,就表示交易成功了。
比特币維護主要指對區塊鍊的維護。比特币的核心是分布式賬本,這個賬本由所有節點共同維護。在比特币誕生初期,全網算力非常低,并且隻有極少量的節點在進行挖礦,是以整個區塊鍊非常脆弱,相應的比特币的價值也很低。随着十年的發展,比特币全網算力激增,礦工也日益增多,比特币的主鍊越來越難以被攻破,其價值在近幾年也飛速增長。可以說區塊鍊是比特币的根基,如果區塊鍊出現問題,比特币會變得毫無價值。
根據比特币區塊鍊的結構、運作原理,我們可以把區塊鍊1.0的技術架構分為資料層、網絡層、共識層、激勵層、應用層。資料層指的是區塊鍊底層架構,網絡層主要指資訊的傳輸、驗證機制,共識層即比特币運用的共識機制,激勵層指的是比特币采用的經濟激勵機制,應用層則是比特币的應用領域。
總的來說,比特币融合了密碼學、經濟學、去中心思想、分布式共識等理論,并通過至今接近10年的發展證明了P2P電子貨币體系的可行性和穩定性,而支撐比特币體系的關鍵技術就是區塊鍊。比特币擁有去中心化、去信任、資料不可篡改等特征,但是作為區塊鍊初級階段的應用,也有許多難以改善的缺陷,例如挖礦帶來的能源浪費、區塊的大小限制(1MB大小)、交易确認的效率低下等。
2、區塊鍊2.0階段:智能合約的衍生
2015年上線的以太坊拓展了區塊鍊中智能合約的應用。以太坊官網給出的定義是運作智能合約的分布式平台。以太坊區塊鍊上不僅存儲着以太币的交易記錄(以太坊中的虛拟币),還存儲着所有在以太坊上建立、執行的智能合約。區塊鍊的2.0階段是儲存智能合約并通過電腦編碼自動執行的分布式計算機。
具體來說,以太坊通過一套圖靈完備的腳本語言EVM語言來建立應用,同時使用者可以直接使用如今主流的進階語言例如C語言、Python、Java,再通過以太坊的編譯器轉成EVM語言。其中智能合約的編譯使用的新語言如Solidity、Serpent使用的都是主流語言的文法,易于上手。
是以,以太坊的區塊鍊結構相比比特币要複雜。根據前文的講解,我們知道比特币區塊鍊的每個區塊中都包含一個梅克爾樹,用于儲存使用者的交易記錄。而在以太坊區塊鍊中,每個區塊儲存有三個梅克爾樹交易樹、狀态樹、收據樹分别對應包含交易記錄、賬戶、交易收據。交易記錄即以太币的交易記錄;賬戶中包含外部賬戶與合約賬戶,外部賬戶代表對應的以太坊使用者、節點的身份,合約賬戶即智能合約,一般儲存着該合約的代碼;交易收據主要指的是每筆交易完成後傳回的結果,例如執行合約消耗的費用記錄,合約日志等。
例如執行合約消耗的費用記錄,合約日志等。以太坊中的費用不止包括每筆交易的交易費,而是囊括了合約建立、合約執行等一系列活動中消耗的資源,以Gas(燃油)命名。具體來說以太坊中的外部賬戶通過發送交易激活合約賬戶,合約賬戶之間又可以發送消息産生聯系。同時所有交易、智能合約的運作需要消耗費用即以太币,每一份智能合約在以太坊節點上同時運作并儲存結果,這些消耗的以太币就被獎勵給了礦工,剩餘的燃油則被返還給發送交易方。
以太坊與比特币一點很大的差異在于記賬模式的不同。根據前文對比特币的介紹,我們知道在使用比特币時,每發生一次交易都需要用光該賬戶中所有餘額,是以在每次交易中,你的輸入(餘額)不僅會産生一筆花費的輸出(需要交易給别人的數額),還會把未被花費的部分輸出給你的新位址,這部分被稱為UTXO(未花費過的交易輸出)。是以一個使用者目前擁有的比特币數其實等于他所有UTXO的累加值。這與我們普通的銀行系統或是金融機構的記賬方式截然不同,而以太坊中基本沿用的是我們傳統銀行機構使用的賬戶方式,即每一個使用者對應擁有一個賬戶,主要是因為以太坊為智能合約設計,賬戶中不僅有以太币餘額還存有智能合約代碼、交易序号等内容,這些内容不适合采用UTXO模式。但該模式存在極大的弊端,以太坊中的所有節點需要同時驗證所有交易,當交易量增大後勢必會帶來效率的極大降低。為此,以太坊正在研究一項“分片”技術,以解決交易效率及擴充性的問題。
分片技術簡單來說就是将整個以太坊系統分為獨立的幾片,每片由專門的節點維護,并且要保證每個分片之間能夠溝通交流,這就可以讓以太坊中的節點同時處理更多的交易。目前分片技術仍舊處在概念階段,關于如何實作片上交流、如何確定單片的可靠性等問題還在研究中。
對比區塊鍊1.0的結構,區塊鍊2.0做了調整,總體分為資料層、網絡層、共識層、激勵層、智能合約層,智能合約層對應1.0結構的應用層。
總的來說,以太坊給了區塊鍊愛好者一個開放平台,基于智能合約圖靈完備的程式設計語言,能夠開發出許多應用場景,常見的有房屋租賃、遠期合約、金融借貸、博彩等,擁有廣闊的想象空間。
3、區塊鍊3.0階段:區塊鍊社會
區塊鍊概念最早作為比特币底層網絡在2008年被提出,到2017年經過接近10年的發展,數字貨币不再是研究的主體,作為能夠解決人們信用問題的新一代價值傳輸網絡,區塊鍊技術的未來被人們寄予了厚望。
未來可能所有個體資訊包括健康情況、身份、工作、家庭關系都被儲存于區塊鍊之上,這些資訊可以即時調用,并且公開與否都由個人自己決定,整個社會體系相當于基于區塊鍊搭建。陌生人之間可以自由的進行交易而不需要第三方中介的信用背書,許多現在因為信用不對稱付出的額外成本都可以被節省下來。
若是以太坊的分片技術研究進展順利,上述的這些構想可能會成為現實。整個人類社會的結構基于多條區塊鍊,其中主鍊由類似聯合國的組織控制,每個國家都擁有自己的區塊鍊,再往下又會細分到各個省市,各個行業。最關鍵的是所有區塊鍊都可以傳遞資訊,每條區塊鍊又承擔着不同的職能,由不同的人群維護,形成最終的區塊鍊社會。
(未完待續)
原文釋出時間為: 2018-03-02
本文作者:本翼資本
本文來源:
36氪,如需轉載請聯系原作者。