
作者|李晨編輯|Linda編者語:2018 年 2 月 7 日,區塊鍊前哨迎來了曆史上的首次公開課。我們将行業内的精英組織起來形成社群,通過社群互相學習、互相分享快速成長。而社群公開課開展的目的就是為了讓大家深入的了解一些比較成功的企業的技術路線,并借鑒到自己的實際應用中。年後每周三會有持續性的分享,幹貨整理在次周以文章的形式共享給大家。感謝參與!
2018 年開始,好像所有的人都在談論區塊鍊。資本、精英、草根也不斷進場投身到區塊鍊的浪潮之中。在外圍觀望的你或許懂技術而對區塊鍊一知半解,或許有場景與創意卻礙于其研發門檻,或許是已身處于行業卻難于前行。區塊鍊是機遇也是挑戰,如何在這風起雲湧的區塊鍊世界裡獲得加速卡實作彎道超車?沒有區塊鍊技術基礎的你又怎樣迅速部署屬于自己的第一個應用?
為了解決一部分粉絲的困惑,我們邀請到萬向區塊鍊旗下萬雲平台首席架構師兼産品總監李晨,從以下兩個方面為大家分享他和萬雲團隊對區塊鍊技術及應用的思考:一是對區塊鍊技術進行基本介紹,尤其是區塊鍊的發展曆史和核心技術;二是分享萬雲平台在區塊鍊行業當中的探索。
Part 1 技術原理
下圖展現的是當下區塊鍊在網際網路上的熱度,兩個最大的網際網路平台 Google 和百度均顯示區塊鍊的搜尋指數呈數級增長,可以發現當下區塊鍊的熱度十分高。
從區塊鍊的資本市場來看:二級市場相比一級市場更為嚴肅,更為傳統也相對穩健,從公告和研報的數量來看,區塊鍊在資本市場的表現也十分出色,公告有 443 篇,研報 1000+。綜合以上隻能用一個字來形容當下的區塊鍊——“熱”,非常“熱”。
從以上兩張圖所呈現的數字也反映出兩種情況:從搜尋指數來看,普通大衆對區塊鍊關注度日益增高且勢頭不減,從相關二級市場的情況來看,專業機構對區塊鍊也越來越青睐有加。
0.0區塊鍊到底是什麼,區塊鍊有哪些技術特色?
區塊鍊的誕生之路:在人類曆史上經曆了幾次重大技術革命,第一次工業革命解放了基本生産力;第一台計算機的誕生開啟了資訊化的程序;而網際網路時代的到來建立起資料在不同主體之間的瞬間連接配接和交換,對資訊流通産生了根本性變革;2008 年“中本聰”第一次提出了區塊鍊的概念,開啟了資訊網際網路到價值網際網路的變遷,其根本意義在于将原來的資料交換變成價值互聯,而價值互聯也正是區塊鍊所重構的商業邏輯的關鍵所在。
從技術的角度定義區塊鍊 :區塊鍊是以區塊結構存儲資料,多方參與、多方維護,通過密碼學、P2P 網絡、共識算法等保證資料可靠的傳輸、存儲、通路的技術體系。
區塊鍊最主要的技術特點:去中心化、不可篡改、可追溯。
- 去中心化。在區塊鍊的網絡中分布着衆多的節點,節點和節點之間地位平等,可以自由連接配接進行資料交換,不存在中心節點。所謂的去中心化和傳統的分布式有稍微意義上的不同,傳統分布式還是有中心的節點,最常見的就是所謂的負載均衡節點(Load Balance),隻不過在中心節點後有很多其它節點,在資料結構上通常會形成“樹”的形式,去中心化是“圖”的結構,“圖”的結構中每個節點是對等的。
- 不可篡改性。利用密碼學的技術保證區塊鍊上的資料不可被篡改,主要是兩個點:哈希和非對稱加密。
- 可追溯性。區塊鍊的資料結構保證了從第一個區塊(創世區塊)開始所有的資料形成了一條鍊,在鍊上的任何記錄都可以通過鍊的結構追溯到本源(也就是創世區塊的資訊)。
保證區塊鍊落地應用的技術基石
- 第一塊基石是 P2P 網絡,P2P 的網絡去中心化,高性能,高可靠通訊的保證。
- 第二塊基石是密碼學,密碼學保證資料無法被篡改而且是安全并可驗證的。
- 第三塊基石是共識算法,區塊鍊網絡各節點達成一緻性的保障,也是現在評判區塊鍊技術的核心名額之一。
P2P 網絡是什麼? 如下圖所示:傳統的網絡是中心化的網絡,所有的機器、通訊都要走過一個中心化的節點完成通訊,一旦這個節點出現了問題整個網絡就癱瘓了。就像現在如果電信、移動、聯通的基站出現問題周圍的網絡通訊将會受到影響。而 P2P 網絡并沒有一個中心化的節點,所有的節點之間直接互聯互通。同時也因為沒有中心化的節點,其中任意一點出現問題依舊能夠保證整個網絡還能通訊,因為你可以連接配接到其它節點上。是以 P2P 網絡是去中心化的,參與各方地位對等,進而保證網絡的健壯性、擴充性、高性能。
到這裡,李晨補充道:其實所有區塊鍊的底層技術大多都在區塊鍊概念提出之前就已經存在,隻是區塊鍊的出現将它們天才有效地結合在一起。比如 P2P 網絡很早就出現了,我們常用的 BT 下載下傳,它就是最早的 P2P 網絡。
密碼學在區塊鍊當中用的非常多。這裡着重看如何通過“Merkle Tree”保證區塊鍊上的資料不可被篡改。下圖中的區塊鍊資料結構,上方每一個大長方形就是一個區塊 (block),該區塊内所有的交易資料都被存儲在這個區塊上;最下方的第三個交易 Tx3,簡單說每一個交易會生成一個哈希,Hash3 就是第三筆交易 Tx3 的哈希值。Hash2 下面沒有畫,是第二筆交易 Tx2 的值,Hash3 和 Hash2 組合在一起就是 Hash23,最後變成“Merkle Tree”的根節點“Merkle Root”。
每一個區塊都有 Merkle Tree,區塊上所有的交易都會被存儲在 Merkle Tree 上。區塊和區塊之間也是互相連結的,每一個區塊都知道上一個區塊的 Hash 值。那為什麼這樣的區塊結構能實作資料不可篡改呢?假設我要篡改 Tx3,那我們将要篡改 Hash3 的值,接下來改變了 Hash3 就要改變 Hash23,以此類推一直要改變 Merkle Root 的 Hash 值。因為區塊的 HASH 中包括了該區塊 Merkle Tree Root 的 HASH 值,是以一旦你改變了區塊的 HASH,就必須要修改之後所有區塊的哈希值。同時這樣的修改還要被網絡中超過共識算法要求的節點接受。這就造成了篡改資料樹的成本極高,幾乎是不可能的。比特币網絡運作了那麼久,在沒有一個人去專門維護它的情況下,從來沒有發生過任何篡改,也就是這個道理。
共識算法是區塊鍊比較核心的技術之一,保證區塊一緻性是其主要作用。常用的共識算法有:POW、POS、DPOS、PAXOS、PNFT。
1.POW 共識算法。也就是常見的比特币網絡的共識算法,它通過哈希算力作為工作量證明去競争記賬權。POW 的幾個缺點:性能比較低;消耗大量的資源,尤其是算力;出塊比較慢,10 分鐘左右。但它也優點,抗容錯性很好,隻有超過 51% 的節點攻擊網絡,網絡才會失敗, 容錯性 50%。
2.POS 共識算法。相對 POW,POS 是用所謂的權益計算法。相對 POW 來說它有幾大改進:不再消耗資源;提高性能,2 分鐘左右出塊;同樣容錯性也是 50%。
3.DPOS 共識算法。POS 實作 2 分鐘左右出塊是比較大的提高,但距離業務的要求還有一定距離,是以在此基礎上進行優化産生了 DPOS,簡單來說 DPOS 不要求每個節點記帳,而是有代理節點來記帳,這比較像現實生活當中的議會制度,大家選出代表幫忙記帳,這樣參與記帳的節點會相對集中,性能也就會提高。是以在 DPOS 情況下基本可以做到秒級出塊,容錯性也是 50%。
4.PBFT 共識算法。PBFT 也就是所謂的拜占廷容錯,它的性能非常非常快,可以達到秒級出塊甚至比秒級還要快,但是它的容錯性相對差一些,一般是 33% 左右。
5.PXOS 共識算法。PXOS 假設的前提是沒有惡意參與者,簡單說就是節點不會發送錯誤的資訊,但有可能漏發資訊。在這種前提下容錯性 50%,性能也是很快的,基本上秒級出塊。
通過李晨對這5 種共識算法的分析,我們也可以看到,評判共識算法大概有 3 個标準:
- 效率,達成共識确認的效率,簡單就是出塊的效率。
- 資源消耗,可能消耗電力、存儲或者其他資源;
- 容錯性,就是網絡可以抵抗多大比例的節點出錯。
區塊鍊的分代和分類
區塊鍊分代
按照《區塊鍊:新經濟藍圖》一書中的概念,把比特币以及相關的數字貨币劃分為區塊鍊 1,0,以以太坊為代表的智能合約劃分為區塊鍊 2.0,而在非貨币和金融領域外,在其他領域裡的區塊鍊的應用劃分為區塊鍊 3.0。
區塊鍊 1.0 是基礎的區塊鍊,實作了數字貨币所需的所有特性。區塊鍊 2.0 的核心概念是智能合約,簡單說就是可程式設計的數字貨币。雖然隻是加了一個字首,但卻是巨大的進步。這意味着不僅僅價值本身,價值相關的商業規則也可以被數字化,是價值網際網路的一個巨大進度。關于區塊鍊 3.0,我們無法給出一個統一的評定标準。目前看有幾大技術可以算是區塊鍊 3.0 的潛在标準。比如解決鍊上資料隐私和協作沖突的零知識證明技術,或者解決連接配接各種不同鍊的跨鍊技術等。
這裡簡單介紹一個跨鍊技術 COSMOS。我們認為世界不可能是有一兩個區塊鍊所主導的,會有比較多的區塊鍊,每一個鍊都完成它自己特有的功能。我們會将來生活在一個多鍊的世界裡。通過跨鍊技術可以形成一個統一的生态系統,包括聯盟鍊和私有鍊。跨鍊技術是實作價值網際網路的關鍵,它連接配接起不同區塊鍊的孤島,也是區塊鍊向外拓展的橋梁。
COSMOS 是一種前沿的跨鍊技術,基于 Tendermint 共識引擎。Tendermint 共識引擎實作了跨鍊技術中的基本技術需求(高性能和一緻性)。同時 Tendermint 将共識引擎和底下的 P2P 網絡層打包在一起形成 Tendermint Core,加上具有很好擴張性的 COSMOS SDK(實作多代币賬戶體系,見證人機制和出塊等功能),這些都為跨鍊功能打下了紮實的技術基礎。 COSOMS 跨鍊網絡通過 IBC(inter-blockchain communication)協定通信,而 COSMOS HUB 扮演樞紐角色,簡單說就是鍊之間的路由。通過 COSMOS 網絡不但可以進行價值跨鍊轉移,擴充 IBC 協定中的 PAYLOAD,還可以進行其他資訊的跨鍊轉移。
區塊鍊的分類
區塊鍊分類目前有三種:1. 公有鍊;2. 聯盟鍊;3. 私有鍊。
所謂的公有鍊是任何人都可讀取的、任何人都能發送交易且交易能獲得有效确認的、任何人都能參與其中共識過程的區塊鍊。 随着公鍊規模的擴大,目前一些主流公鍊的性能都有待提高。 聯盟鍊主要針對有競争又需要合作的場景,技術上聯盟區塊鍊是指其共識過程受到預選節點控制的區塊鍊。隻有獲準進入聯盟的節點才可以參與其中。私有鍊一般僅在一個公司或者組織内使用,它更像一個分布式賬本。
Part 2 應用實踐
圍繞區塊鍊技術的兩大核心特征
- 資料不可篡改性。基于這個特征行業中用的比較多的場景是信托。在市場加速釋放的前提下,傳統信托行業所存在的如文檔安全性、時間有效性等信任問題日益凸顯,而利用區塊鍊不可篡改的特性能有效解決信托業務中所存在“互不信任”的市場痛點。如何實作?利用區塊鍊技術可以将信托業務中的關鍵材料經過哈希加密處理,轉換成不可逆推的特征值存儲在區塊鍊上,信托公司和使用者如需進行資料驗證,隻要将已有的材料和資訊經過哈希加密處理,再次與區塊鍊上與其對應的資訊進行對比,即可驗證材料是否曾經被進行篡改。具體大家可以參考一個案例:萬雲團隊幫助萬向信托所開發的基于區塊鍊的家族信托業務,此業務已經上線。
- 可追溯性。鑽石一直以來被視為是愛情、權利、地位和富貴的象征,一方面因人類的情感賦予讓鑽石有了高昂的價值,另一方面也因其價格誘人讓市場滋生了走私的風氣,進而使得産品與價格混亂,國家稅收損失和難于監管。而利用區塊鍊的可溯源特性,以構造共享資料庫的聯盟鍊為基礎,通過多中心的方式與海外鑽石平台、鑽石交易所等共享資料,以行業 4C 為标準定義每一顆鑽石的身份标簽和流轉體系,促進鑽石交易的正規化。通過可溯源讓每一顆存儲在區塊鍊上的鑽石資訊都可查證,讓市場上存在的黑手無孔可尋,進而讓鑽石市場真正回歸“透明”。
當然除此之外,區塊鍊技術還可為更多行業提供解決方案,如版權交易、數字存證、智慧醫療等。
簡單看萬雲的區塊鍊生态
萬雲生态的底層,主要是底層鍊。我們有兩部分,一部分是公鍊的節點,一部分是聯盟鍊的節點,所有的這些節點都部署在萬雲的基礎設施上,在萬雲産品的子產品中稱之為“極速萬雲”。在節點之上有跨鍊技術,将所有鍊整合在一起。這樣即做到了統一,又各具特色。萬雲的底層鍊上提供兩套子產品:醫師萬雲 API,直接提供萬雲上承載的鍊原始的 API,使用者可以在上面部署一個智能合約,也可以直接查詢區塊鍊資料。二是萬雲的 IDE。其特色是既能直接在萬雲上使用,也可以在本地安裝。
李晨提到,更有價值的是在上層。上層不僅有業務 API,也有依據不同行業制定的解決方案。業務 API 落地在區塊鍊上,但是對外呈現的形式和業務本身比較契合。通過業務 API,可以節省開發和運維成本進而更專注于業務創新。
舉個小栗子
“萬雲抽獎”是一款基于區塊鍊的抽獎程式,也是一個完全部署在萬雲平台上的 DApp,李晨以此為例來從技術的角度重點介紹其誕生流程。
萬雲抽獎是基于公有鍊的應用,主要是為解決抽獎過程中的“公開”、“公正”問題,該程式通過将所有抽獎的資訊記錄在區塊鍊上,保證資料不可被篡改以及可溯源來實作抽獎結果公開。而實作“公正”是抽獎的難點所在,萬雲團隊通過基于區塊鍊來生成随機數解決了這個問題。
傳統算法生成的随機數實際上并不是完全不可預測的,在随機種子的基礎上結合算法自動生成的的數實際上是可複制的,算不上真正的随機(僞随機數)。随機數的随機性問題是基礎算法面臨的問題。我們的思路是随機性的生成,不被任何個體所控制,通過這個來解決随機性問題。
随機數通過所有參與者共同産生。首先在區塊鍊中建立一個合約,它定義了參與規則。具體的生成一個随機數的基本過程可以分為三個階段:
第一階段:收集有效的 HASH(S), 其中 S 就是随機種子。參與随機數生成的賬号都在指定的時間段内向合約發送一定的代币作為質押,同時提供 HASH(S),S 是參與者選擇的随機種子。
第二階段:收集有效的 S。在第一步完成之後,成功申請 HASH(S) 的人需要在第一階段的指定時間内發送随機種子的 S 到合約。合約将運作 HASH 并将結果與之前送出的資料進行比較來檢查 S 是否有效。有效 S 将被儲存到種子集合中,用來生成随機數。
第三階段:計算随機數,退還質押的代币和獎金。在所有随機種子被成功收集之後,合約通過這些種子生成随機數。同時将來自于消費随機數方提供的利潤配置設定給參與方,并将質押的代币退回參與方。 以上,就從技術上實作了一個基本的區塊鍊抽獎應用。同時利用了公有鍊的激勵機制使得這個模式可以運作。
為了友善開發者對分享内容進行更好的了解,大家可以親自去這個連結中點選萬雲市場體驗一下
https://user.wancloud.io/login.html
作為本次活動的最後一張 PPT,李晨放了一張這樣的圖。這是 2016 年兩張關于區塊鍊技術的研報。其中兩句話在當時說的特别好:“區塊鍊是網際網路的詩和遠方”、“理論照進現實”。當時大家都看好區塊鍊,認為它是未來有可能會改變整個商業模式至關重要的技術。但當時區塊鍊技術還不成熟,隻是停留在想法層面,并沒有找到切實落地的場景和方案。
當時間的車輪駛向 2018 年以後,我們相信區塊鍊将不再是詩和遠方,理論最終也會照進現實,成為時代變遷的标志。而我們身處浪潮之中,所要做的是心無旁骛,努力讓區塊鍊實作落地,讓所構想的未來圖紙成為現實,不隻是吟唱詩與遠方,而是真正地走到遠方。
現場觀衆問題解答
分享結束後,收集到了十幾個現場提問,我們着重選取了兩個比較細緻的問題請李晨回答。
問題 1:公有鍊和聯盟鍊在具體應用場景解決各種問題上的差別是?請舉出實際應用中的差別案例及案例采用的架構。
公有鍊是完全去中心化的,任何人都可以參與,全球範圍内可以通路,不依賴于單個公司或轄區,最經典的應用案例則是大家都所熟知的比特币。聯盟鍊主要針對有競争又需要合作的場景,技術上聯盟區塊鍊是指其共識過程受到預選節點控制的區塊鍊。隻有獲準進入聯盟的節點才可以參與其中。
另外從聯盟鍊場景出發,會有一些企業級的特性需要滿足:
- 高性能,聯盟鍊需要滿足企業級的性能标準,由于聯盟鍊節點數有限,采用 PBFT 或者 RAFT 這樣的共識算法,一般都能做到秒級出塊。
- 隐私性,通常聯盟鍊涉及到多方參與、對等合作的場景,其中隐私性顯的比較要緊。比如 A 和 B 的一筆交易,交易的明細隻有參與方 A 和 B 知曉,其他節點無權擷取,但是又要進行見證,這就是一個具體需求。
- 內建性,聯盟鍊和現有系統進行對接的能力。
- 易用性,比如合約和賬号的位址都是一長串字元集,難以閱讀和記憶,這裡就需要一個将位址和簡單名稱進行映射的需求。
- 跨鍊能力,各個聯盟鍊之間如何跨鍊,聯盟鍊和公有鍊之間如何跨鍊。另外還需要考慮運維和治理能力,聯盟鍊更新的平滑性,某些行業還要考慮合規性。
關于聯盟鍊應用架構問題,這裡給一個聯盟鍊優化資料交換平台的例子。
中心化的資料交換平台一般都會面臨幾個痛點:參與方必須為信任平台;監管困難;資料控制權不在使用者手中;資料隐私缺乏保護。
具體的解決方案是:建立一個平台,平台使用者和第三方監管共同建立的聯盟鍊。通過聯盟鍊賬本對所有資料相關操作進行存證;第三方通過其記賬節點對整個業務過程進行監管;資料交換平台隻能通過聯盟鍊智能合約的接口擷取資料,而智能合約隻由使用者按照标準編寫,這樣資料控制權就完全在使用者手中了;通過零知識證明來保證資料相關的隐私性。
問題 2:區塊鍊如何保證資料隐私性?
按照區塊鍊的基本定義,其實不涉及資料的隐私性問題,隻是保證了資料的不可篡改性和可追溯。
但是區塊鍊的架構确實對資料隐私性造成了挑戰,李晨認為核心問題就如以太坊創始人 Vitalik 所說的區塊鍊上的很多節點驗證了每一筆交易。每一筆在區塊鍊上的交易過程都會被全網廣播讓所有節點知道。
資料隐私性是個很大的課題。李晨分享了 3 個方法。
- 區塊鍊上隻存資料的 HASH 值,保證具體的資料還是在鍊下存儲。簡單說,通過鍊上的資料 HASH 值,證明資料的存在而不展現資料明細。
- 利用環簽名機制,環簽名是一種特殊的群簽名協定。如果你擁有着這組群簽名中的任意一個簽名的簽署權,就能夠通過這組環簽名中專屬于我的簽名來證明我就是我,但僅能證明你的簽名存在于這組環簽名之中,不能證明确切哪個是你的的簽名。這樣通過環簽名簽署的交易,可以證明交易的資産屬于你,卻不用知道具體你是誰。
- 利用零知識證明技術,這是目前相對前沿的隐私保護解決方案。零知識證明就是指的是證明者能夠在不向驗證者提供任何有用的資訊的情況下,使驗證者相信某個論斷是正确的。比如通過告訴一個知道盒子裡有什麼東西的人,那個東西是什麼。就可以證明你擁有盒子的鑰匙卻不用展示鑰匙。ZCash 則是有名的用零知識證明實作匿名交易的例子。
區塊鍊前哨
區塊鍊前哨是極客邦科技旗下的區塊鍊垂直媒體,基于InfoQ十年沉澱。面向區塊鍊興趣愛好者、開發者,提供最新最熱區塊鍊資訊,深度分析區塊鍊技術及應用、展示國内外創新實踐案例。
原文釋出時間為:2018-02-11
本文作者:李晨
本文來源:
微信公衆号-區塊鍊前哨,如需轉載請聯系原作者。