說信任區塊鏈時究竟在信任什麼?

FISCO BCOS是徹底開源的聯盟區塊鏈底層技術平臺,由金融區塊鏈合做聯盟(深圳)(簡稱金鍊盟)成立開源工做組通力打造。開源工做組成員包括博彥科技、華爲、深證通、神州數碼、四方精創、騰訊、微衆銀行、亦筆科技和越秀金科等金鍊盟成員機構。

代碼倉庫:github.com/FISCO-BCOS
java

你們好,我是張開翔。git

如你所見,【FISCO BCOS開源社區】開通了,很高興和你在此以文相會。這個號將由你,由我,由FISCO BCOS背後117家成員單位的工程師們,乃至社區沉澱下來的數千開發者通力打造。咱們開放了多元化的社區協做通道,但願和你,和廣大區塊鏈愛好者,一塊兒聊聊從事區塊鏈技術研發的切身感悟,一塊兒分享踩過的每個坑、越過的每一道檻,一塊兒將咱中國本身的聯盟鏈技術推向世界的頂端。程序員

這是本號第一篇文章,就從The trust machine、Code is Law、信鏈得永生這些近乎癡迷的口號提及吧。我會在今明的兩篇文章裏拋磚引玉,談談在區塊鏈的世界裏,咱們的信與不信。github


當前,「區塊鏈,信任的機器(Blockchain:The trust machine)」已經成爲了一句口號,緊接着就是「去中心化、羣體共識、不可篡改、高一致性、安全和保護隱私」等一系列聽起來很厲害的術語。究竟區塊鏈具備多大的魔力能讓人如此信任,或者說,咱們在說「信」的時候究竟信的是什麼。算法

信息,指身份、資產、價格、地理位置等天然屬性和行爲信息,它並非先天可信任的,由於信息散亂、不完整,可能虛假,甚至可能會有人利用信息的不對稱性牟利。docker

把信息整理成結構化數據,經過數據校驗的方式,保證其在傳播中可保持完整性、全網一致性、可追溯性,不會被惡意篡改;經過冗餘存儲的方式,保證其公開、共享、可訪問,保證數據一直有效。那麼,這信息自己就能夠被「信任」,從而成爲你們的「公共知識」,成爲全網參與者都承認的「最大公約數」。數據庫

若是信息體現着價值,且這些價值被你們認知、承認,能被量化,具備可交易的等價物屬性,或可能隨着時間增值,甚至獲得司法背書認可,這些信息才具備商業意義上的「信用」。promise

比如咱們認識一我的,但不表明咱們信任他。然而這我的一向表現不錯,在社羣裏言行一致,漸漸地得到了你們的信任。這時的信任依舊不等於信用,除非這我的擁有可觀的資產,或者其我的歷史上有盈利和償還的能力,將來也大機率能持續持有資產和承兌債務,那麼這我的才具有了「信用」。安全

區塊鏈體系基於算法而不是人治,有望經過其獨特的分佈式架構、加密算法、數據結構、共識機制等,把信息固化成你們的信任錨點;有望經過技術手段把各類現實世界的資源轉換成可兌付的數字資產,並展開一系列多方商業協做的活動,這就是所謂的 「信息到信任到信用」,甚至於由於區塊鏈這個黑科技的、行之有效且難以理解的玄妙,這個「信」字彷彿昇華成了「信仰」。微信

那麼咱們說信區塊鏈時,信的是什麼呢?


一、信密碼學算法

區塊鏈是用算法達成信任的,其中最重要的算法之一,就是密碼學。區塊鏈中最基本的密碼學應用是HASH摘要、對稱加密和非對稱加密算法,以及相關的簽名驗籤算法。

HASH算法的舊版本已經被證實可破解而被拋棄了,目前在用的SHA256等算法依舊堅不可破。HASH算法的特性是把一堆數據單向生成一段定長的數據,基本不會發生碰撞,可起到原始數據的「指紋」做用,其單向性不可逆,推不出原始數據,具備必定的抗量子性,是能隱藏原始數據又能在必要時提供校驗憑據的最佳方式。

數字簽名通常基於公私鑰體系,用私鑰簽名,公鑰驗籤或者反之。數字簽名源自密碼學的牢靠性,使得不可能有人能僞造別人的私鑰簽名,因此一個擁有私鑰的人能夠經過數字簽名,對他的資產簽名確權,或者在雙方交易時,採用對手方的公鑰發起交易,將資產轉移給對方,對方用本身的私鑰才能驗籤解開,以得到全部權。

AES、RSA、ECC橢圓曲線等幾種對稱和非對稱算法普遍地用於數據加解密、安全通訊等場景,其安全級別取決於算法自己和密鑰長度,當AES使用128~512位密鑰,RSA/ECC採用1024甚至2048位密鑰時,其保護的數據理論上須要普通計算機上億年的計算時間才能暴力破解。這些算法在商業、科學、軍事領域都經受了考驗。

加密學領域裏還有同態加密、零知識證實、環簽名羣簽名、格密碼等新的方向,目前都處於從理論發展到工程的階段,都在功能、安全強度、效率方面快速優化中,已經能夠看到落地使用的可能性了。同時咱們也意識到,密碼學一般須要通過長期的發展、驗證,穩定後才能得到普遍承認,要麼實踐中經歷了大量考驗,要麼通過權威機構的審覈和認證,才能在生產領域大放異彩。密碼學裏的理論到工程,經常有很長的時間週期。

加密算法的一個基本哲學是計算成本,當一個算法保護的資產價值,遠低於攻破該算法所需的成本時,就是安全的。但若是用一個算法保護一個無價之寶,天然就會有人不計成本地去攻擊獲利,因此,密碼學的安全,也是辯證的、須要量化的。

隨着量子計算機等學說的興起,經典密碼學可能會經受一些挑戰,但量子計算機的理論完善和工程實現還有待時日,目前來看,基本上咱們能夠近乎「無條件」相信區塊鏈裏已經採用的密碼學算法,同時,區塊鏈領域的實踐者也在陸續引入各類抗量子的密碼學算法,這是一場持續的博弈。


2 、信數據

區塊鏈的數據結構,無非是區塊+鏈。新區塊將本身的區塊高度、交易列表,和上一個區塊的HASH,共同再生成一個HASH作爲新區塊的標識,如此循環,造成了一個環環相扣的數據鏈。這個鏈條裏的任何一個字節甚至一個Bit被修改,都會由於HASH算法的特性被校驗發現。

同時,區塊數據被廣播給全網全部參與者,參與者越多,規模效應越強。少數人即便強行修改、刪剪本身的區塊數據,也很容易被其餘人校驗出異常並不予採納,只有多數人承認的數據得以留存和流傳。也就是說,數據是你們人盯人的形態盯着的,且存在多份副本,一旦落地,只要鏈還在,數據就能夠永遠留存。

基於容易驗證的鏈式數據結構、羣體冗餘保存、共同鑑證,區塊鏈數據是「難以篡改」的,全部人拿到的數據也都是一致的,信息公開透明,公共知識得以彰顯和固化。

從另外一個角度看,數據達到信任,但可否達到「信用」還要看數據的價值,也就是數據自己攜帶的信息,是否能表明有價的資產、有用的信息,諸如身份、交易關係、交易行爲、大數據等等,都能表明必定的商業價值。這些數據若是分享出來,足以構建完整的商業基礎。

但若是是在過於強調隱私的場景裏,你們願意分享的信息原本就不多,那樣就很難達到信用的「最大公約數」。然而,在當前的商業環境裏,信息隔離和隱私保護是硬訴求,信息共享和隱私保護成了嚴峻的矛和盾的關係,除非整個商業關係和商業邏輯出現了革新。

因此,隱私保護相關的研究被大量關注,諸如「多方安全計算」、「零知識證實」的理論大行其道。理論上講,確實能夠作到公佈不多的信息就能作到可驗證,但其複雜性和計算開銷,又是工程層面要去解決的事情了。


3 、信博弈論

區塊鏈中最玄妙的部分是「共識算法」。共識算法的定義是在一個羣體中,用一種機制協調你們共同或輪流記帳,得出無爭議的、惟一性的結果,且保證這個機制能夠持續下去。

換句話說,你們一塊兒維護一個帳本,選擇誰作爲記帳者?憑什麼相信記帳者的動做是正確的?怎麼防止記帳者做惡?若是記帳者正確記帳如何獲得激勵?共識機制完整地回答了這些問題。

共識的邏輯是發生在線上的,但實際上,背後是現實世界的競爭博弈。

POW(工做量證實)採用算力去競爭記帳者的席位和得到記帳者的獎勵。現實生活中,爲了構建具備競爭力的算力工廠,礦工一般須要研發或購買大量的新型號礦機,運輸到有穩定和便宜電力供應地區,消耗大量的電費、網費以及其餘運營費用,在被監管時又得舉家搬遷,浪跡全球,實際上投入了大量(現實世界的)資金、精力以及揹着巨大的風險。若是要在POW競爭中得到穩定可觀的收益,投入的資金動輒以億計,並不亞於辦一家企業。

POS和DPOS用權益證實代替了算力消耗,看起來是環保多了。而表明權益的token,除了創始團隊本身發行的以外,「礦工們」通常須要經過幣幣兌換,或者直接法幣購買數字幣的方式得到,即便是幣幣兌換,掏出來的幣也經常是採用法幣購買的,或者至少這些權益都能以法幣進行標價,這其實也是現實世界裏的財富注入和背書。

然而,和現實的商業關係對比,POW和POS等共識並無法律和監管機制兜底,也容易受不斷變化的博弈形勢所影響,好比社羣的規模、礦工的更迭、核心技術運營團隊的變化。慢慢地,原本有錢和有能力的人,或許會更加有錢和有權力,去中心化的網絡可能逐漸變成了卡特爾組織,礦工和技術社區的瓜葛也會不停地掀起波瀾,形成分叉、回滾、價格傾軋、對韭當割等現象。

總的來講,人們仍是信任區塊鏈上的「自治」,在這種分佈式自治裏,單個事件(如一筆交易)具備「機率性」,同時全網又追求「最終一致性」(公共帳本的一致)。這種短時間的機率性和長期的肯定性,必定程度上能夠達成動態的「納什均衡」,支撐起鏈的生態,給人演化出一種玄妙的「信仰」感。

另外一方面,聯盟鏈的記帳者通常是機構級的角色。聯盟鏈要求記帳者身份可知,參與者們通過許可才能接入網絡,他們之間是一種合做博弈。聯盟鏈引入了現實世界裏的身份信息做爲信用背書,如工商註冊信息、商業聲譽、承兌信用、週轉資金,或者行業地位、執業牌照、法律身份等,參與者在鏈上的一切行爲都可審計、追查,也讓相關的監管部門在必要時能夠有的放矢,精準懲戒,強制執行,具備很高的威懾力。

在這種環境裏,聯盟鏈的參與者一塊兒協做維護網絡,共享必要的信息,在平等透明、安全可信的網絡裏開展交易,只須要防止少許記帳者的惡意操做風險,避免系統上的可用性風險。因引入了現實世界裏必要的信任背書,即便聯盟鏈業務邏輯很是複雜,而信任模型卻更直觀。

因此,所謂的共識機制,背後依舊是現實世界裏財力物力的競爭和信用背書,以及相應行之有效的激勵和懲戒機制。

天下並無免費的午飯,也沒有無緣無故的愛恨。「信」一個記帳者,是信他在現實世界裏所投入的成本、付出的代價,以及考慮到整個機制有震懾他的懲罰,相信記帳者爲了持續的收益和增值,不會無端破壞這個網絡。


4 、信智能合約

智能合約是由多產的跨領域法律學者尼克·薩博(Nick Szabo)提出來的。他在發表於本身的網站的幾篇文章中提到了智能合約的理念,定義以下:

「一個智能合約是一套以數字形式定義的承諾(promises),包括合約參與方能夠在上面執行這些承諾的協議"。

簡單地說,能夠理解爲紙質合約的電子版,用代碼實現,無差異地運行在區塊鏈網絡的每個節點上,在共識的做用下執行既定的合約規則。

智能合約通常基於一個特製的虛擬機,使用沙盒模式運行,屏蔽掉可能致使不一致性的一些功能。好比獲取系統時間這個操做,在不一樣的機器上,時鐘均可能不一樣,這就可能致使依賴時間的業務邏輯出現問題。再好比隨機數,以及外部文件系統、外部網站輸入等,這些均可能致使虛擬機執行結果不一樣,都會被虛擬機沙盒環境隔離。

若是要採用java語言寫合約,要麼裁減掉jdk裏的相關函數(系統時間、隨機數、網絡、文件等),要麼放到一個有嚴密權限管控和隔離設定的docker裏運行。或者乾脆設計一門新的語言,如以太坊的Solidity,只實現特定的指令。又或者放棄掉一些「智能」特性,用簡單的堆棧指令序列完成關鍵的驗證判斷邏輯。

因此,在區塊鏈上執行智能合約,基於沙盒機制控制,憑藉區塊鏈的共識算法,達到全網一致、難以篡改、不能否認等特性,運行結果輸出就是全網承認的一份合同,江湖人稱「Code is Law」。

然而,只要是代碼,就必定有出現bug或漏洞的機率,可能來自底層虛擬機和網絡漏洞,更多的可能來自邏輯實現。隨便搜一下「智能合約 安全 漏洞」,就有一堆搜索結果,包括溢出、重入、權限錯誤等,甚至就是低級錯誤。近年來,這些漏洞已經形成各類資產損失,最著名的是DAO項目代碼漏洞、Parity的多籤錢包漏洞、某互聯網公司的代幣交易過程溢出歸零……

技術文章能夠參考:
paper.seebug.org/601/


目前,行業裏對智能合約的安全也是各出奇招,包括安全公司和白帽子審查、形式化證實、衆測等,對安全問題會有必定地改善。若是再出問題,要麼是黑客太厲害,或者只能抓程序員祭天了:)

因此,信智能合約,是有條件的,是要信通過嚴格測試、長時間穩定運行、萬一出錯還有辦法補救(而不是絕望的只能等分叉大招)的合約。聯盟鏈裏的智能合約通常是通過嚴格測試的,上線時會執行灰度驗證流程,運營中監控運行過程,且根據治理規則設計過後追責、補救(衝正,調帳,凍結...)等措施,仍是比較可信的。


5 、信中間人(?)

注意本小節標題打了問號,區塊鏈推崇「去中心或多中心,去中介或弱中介」的運做模式,可是因爲目前發展還沒有完善,不少場景實際上仍是引入了中介,如幣幣兌換一般須要通過交易所,尤爲是中心化的交易所。其交易原理是要求用戶把資產存入交易所的賬戶裏,交易時實際上是在交易所的數據庫裏進行記帳,只有在存幣或提幣時,纔會和區塊鏈網絡發生交互。

交易所的信任模型和區塊鏈某種程度上是脫鉤了,這時,交易所自己的資質,運營方的技術能力、安全防禦能力、資產信用和承兌能力,纔是用戶最須要關心的。一旦交易所出了問題,好比跑路、破產、暗盤操做、監守自盜,基本上散戶就只能作韭菜了。

多的不說,參見著名的「門頭溝事件」:

baike.baidu.com/item/...

因此,相信一個託管者,是一個見仁見智的事情,只是現行的模式裏,相似交易所這樣的角色還在某些區域運做着。2018年,全球虛擬數字資產交易全部1萬多家,其中多少能作到高規格的安全,運營規範,乾淨……那就看狀況了。

最後提一點:聯盟鏈默認是沒有公鏈那種虛擬數字資產交易所的。

區塊鏈領域的細節還有不少,以上先羅列主要的幾個點,信任技術,信任共識機制,信任規模化的社羣博弈,超過了信任「人」。「人」是一種不肯定因素,你能夠信任一個你很熟悉很老鐵的人,也能夠信任一大羣有共同理念且有完善機制協做的人,但你不能信任某一小撮居心叵測的人,要不分分鐘變成韭菜:)

總結一下,在區塊鏈世界中,人們能夠創建如下基本的信心:

  • 我持有的資產和信息,只有我能動用或披露
  • 我能夠按公允的規則參與交易,分享信息,轉入轉出資產
  • 別人給我轉過來的資產必定是有效的,不會被重複花費而失效
  • 一旦交易完成,就是板上釘釘的事情
  • 一切已經發生的事情均可驗證,可追溯
  • 違反規則的人會損失更大
  • 維護網絡的人付出了勞動會有恰當的回報,整個模式可持續

基於這些信心和信任,在合法合規的前提下,人們給網絡注入各類資產,開展互補互利、規則透明、公開公平公正的商業行爲,將會是一種理想的狀態



咱們鼓勵機構成員、開發者等社區夥伴參與開源共建事業,有你在一塊兒,會更了不得。多樣參與方式:

1 進入微信社羣,隨時隨地與圈內最活躍、最頂尖的團隊暢聊技術話題(進羣請添加小助手微信,微信ID:fiscobcosfan);

2 訂閱咱們的公衆號:「FISCO BCOS開源社區」,咱們爲你準備了開發資料庫、最新FISCO BCOS動態、活動、大賽等信息;

3 來Meetup與開發團隊面對面交流,FISCO BCOS正在全國舉辦巡迴Meetup,深圳、北京、上海、成都……歡迎您公衆號在菜單欄【找活動】中找到附近的Meetup,前往結識技術大咖,暢聊硬核技術;

4 參與代碼貢獻,您能夠在Github提交Issue進行問題交流,歡迎向FISCO BCOS提交Pull Request,包括但不限於文檔修改、修復發現的bug、提交新的功能特性。


代碼貢獻指引:

https://github.com/FISCO-BCOS/FISCO-BCOS/blob/master/docs/CONTRIBUTING_CN.md



本文首發於公衆號【FISCO BCOS開源社區】,如轉載請註明出處,原創不易,謝謝珍惜

相關文章
相關標籤/搜索