從計算機科學角度看區塊鏈

2020-11-22 電子發燒友

從計算機科學角度看區塊鏈

工程師3 發表於 2018-05-19 01:52:00

比特幣(Bitcoin)像是在大洋中默默積累的氣流,一舉登陸後給各界帶來了巨大的衝擊。比特幣在過去幾年裡火箭式增值,引發無限想像力,無窮的區塊鏈項目,也引無數英雄竟折腰。

參與區塊鏈運動的人群大致分三類,當然中間也有交集。一類是所謂「幣圈」的, 包括炒幣的,做交易所的,做錢包的,以及韭菜和割韭菜的等等;一類是找落地應用項目的,從跨境支付的到搠源有機豬肉的,五花八門,真真假假,虛虛實實;還有就是所謂「鏈圈」的,目的是研究區塊鏈基本技術的發展,這其中包含實實在在懂點門道的,也有一大幫滿口名詞班門弄斧的程咬金。本文著重討論區塊鏈技術, 通過從計算機科學角度分析區塊鏈的來龍去脈,糾正一些廣為流傳的誤區,也指出目前很多日新月異的新一代鏈項目,其實多是在迷途上狂奔的野馬,其最終結果無非是跑肥了野馬,跑爽了騎馬人,跑沒了糧草,也跑壞了大家對區塊鏈技術的信心。

比特幣為什麼 surprising,到底解決了計算機科學上的共識問題嗎?

很多人把區塊鏈稱為自網際網路以來最革命性的技術,其中常提到的一點就是 「去中心化」。區塊鏈其實可以去中心也可以不去中心,兩者之間沒有必然聯繫。比特幣是去中心的設計。乍看之下,它解決了分布式系統中的所謂 「共識」問題,就是說在分布式系統中多個節點在某件事情上保持看法一致。 分布式系統可以簡單的想像為多臺通過網際網路連接著的電腦。網際網路的連接不一定可靠(譬如可能掉線),信息傳播需要時間,而且傳播時間不固定甚至沒有上限。加上多臺電腦各自的鐘表時間也是不能保證同步的(原因同 上),有的電腦可能還故意造假,因此分布式共識問題在通常情況下是無解的。這是學術研究的結論,是搞分布式系統的專家們的共識。

比特幣並沒有解決傳統意義上的共識問題,而是把問題轉化了,一方面通過 區塊鏈的序號作為虛擬時間,一方面通過「挖礦」的經濟動力來促使比特幣鏈的不斷延伸。這就是為什麼比特幣在理論上永遠可逆,永遠可以分叉的原因,因為它達到的共識不是絕對的。用經濟因素來(在實踐上,不是從理論 上)解決分布式系統共識算法是中本聰的天才之舉。

比特幣系統為什麼慢?10 分鐘結算其實是 feature,不是 bug!

自從比特幣熱絡起來,不少人抱怨系統的結算速度(TPS)太慢。不少人花 精力試圖給比特幣提速,也有不少人提出新的區塊鏈系統,試圖解決速度問題。抱怨比特幣速度慢的,都是沒看出門道的。當然懂計算機科學的也未必 都懂得為什麼比特幣結算系統慢。殊不知那是設計的 feature,不是 bug。

其實挖礦難度決定了結算速度,而這個難度是可調的,所以結算速度也是可 長可短的。假想如果結算時間縮稱一秒,也就是說挖礦難度降為一秒鐘,那會出現什麼情況呢?就是常常千萬個礦工同時挖到礦。那時候怎麼決定哪位幸運礦工分到獎勵呢?選出一個幸運礦工又是個共識問題,循環了!再設想若是結算時間變成一小時會怎樣?因為挖礦難度的提升,極少可能多個礦工同時挖到礦,產生衝突或臨時分鏈(temporary fork)的可能性很低。所以,結算時間沒必要太慢,但絕不能太快。這樣就看清楚了那些要給比特幣鏈加速的想法是多麼的外行。中本聰在有關比特幣的文檔中並沒有詳細闡述其系統設計的淵源,不知是歪打正著,還是有的放矢。

再延伸一下,只要是通過純挖礦來做共識的公開鏈,結算速度都不可能太快。 以太坊不也計劃要從 PoW 下車了嗎?現在再出個以太坊類的東西來忽悠人, 估計就不容易了。我這裡說清楚了,可能以後不再有喊著給比特幣提速來做 ICO 的了。

還想鑽研這個題目的同學們,可以比照大家都用的局部網乙太網(Ethernet) 的經驗。在局部網上,如果多個節點同時「說話」(傳輸數據),就會造成衝突。衝突發生後,各節點知道數據沒有傳出去,再重新試一下。可是如果大家都緊接著重新試傳,還會衝突,造成網絡堵塞。如果大家都等待某個固定時間再試,一樣會衝突。所以,乙太網設計是各節點等待一個隨機時間再試傳,這樣就大大降低了衝突率,實現了高速的數據傳送。這個等待隨機時間的辦法適用於比特幣嗎?明顯不行,因為會有不自覺的礦工基於經濟利益爭著再試,大家都爭,又回到原點,沒解決問題。

以太坊能成為支撐千萬個應用的基礎鏈嗎?

比特幣是單一目的的區塊鏈,設計緊湊卻考慮周全,可以說接近完美 。其中少許留了一點空地,原意是留點做評論或者留言的,中本聰本人就在第一塊中留下一句話來說明比特幣鏈啟動的時間。頭腦靈活的人就把這塊地拿來做顏色幣(colored coin)等等。但畢竟活動空間不大,做不了太多的事情。

以太坊(Ethereum)應運而生,號稱是可以寫萬能的智能合約的區塊鏈平臺。 一時間巨額資金湧進,無數人開始在以太坊的基礎上開發各種應用(包括所 謂 DApp,也就是分布式應用),還有更極端的所謂分布式自治系(DAO)。

大家都在以太坊一個鏈上做應用,是個什麼概念?就像是微軟推出一個系統叫做 Windows,然後全世界人民寫程序都運行在同一臺電腦上的同一個 Windows 系統。這樣一個系統能支持那麼多人那麼多應用嗎?根本不可能。 看看身邊的情況,大家各自使用自己的電腦或手機,需要通訊的時候通通訊, 需要協同的時候協同一下,需要購物的時候去一下購物網站。其餘時間各自幹各自的事。若是網際網路試圖以一臺全世界共享巨型機的模式,是不可能發展起來的。以太坊背道而馳,不知是真的不懂還是故意忽悠。作為發幣的平臺,以太坊歪打正著很成功 。做別的有沒有戲,還待觀察。

智能合約有希望嗎?所謂圖靈完整是好事還是壞事?

我先引別人的一句話,「以太坊上的智能合約既沒有智能也不是合約。」用可編程的計算機語言來表達合約,就存在根本性的約束。譬如,合約寫成代碼後是「定死」了的,哪來的智能。要能隨機應變的智能,必須事先考慮好各種變化的可能。而在現實世界中,再緊湊的合約也有預想不到考慮不周的時候,或者雙方對合約的內容有不同認知。現實世界中合約各方還可以坐下來商量,修改合約。在以太坊上,這些修改和商議或者仲裁的功能怎麼實現?

跟隨著以太坊的智能合約被很多人滿嘴跑火車的另外一個詞就是圖靈完整 (Turing Complete),好像這是個什麼偉大的功能。其實若要真的想做智能合約,圖靈完整又是一個背道而馳的思路。為什麼這麼講?設計過電腦程式設計語言的人都知道,一個程序語言的限制越少,功能越強,程式設計師越容易出錯。譬如, 大家常用的 C 語言就是這樣一個例子。它功能強,是因為它出身是系統級的語言,做作業系統用的,需要這麼強大的靈活性。但是作為寫應用程式的需求來說,可以說到處是陷阱。後來推出的 Java 語言,增加了很多限制,譬如 type safety 和 garbage collection,把很多程式設計師容易掉陷阱的地方都迴避開了,因此成為企業級應用的首選語言。

回到區塊鏈的智能合約這個問題。要想安全可靠地寫合約,合約語言必須進 一步縮減功能,加入很多約束。跟律師打過交道的都知道,合同一般分類有範本的,律師從來不願意從頭起草,而是在範本的基礎上寫合約。這就是因為範本提供了很多約束條件,經歷過時間的考驗和不斷的更新,不容易犯錯誤。律師的範本就類似高級程序語言設計中的 type 和 pattern。前段時間以太坊上的 DAO 出現被攻擊的事件,就是因為合約代碼中的錯誤。所以說,對於寫智能合約的程序語言來說,少反而是多。另外,真正要設計一個智能合約的語言,恐怕從一開始就要考慮如何結合形式驗證(formal verification) 技術來證明每個合約的正確性,把可證明性(verifiability 或 provability)設計到語言的結構內。

交易下鏈是解決辦法嗎?

因為鏈上交易速度慢,產生了不少下鏈的項目,就是說把交易在鏈下(或鏈 外)實現,然後再跑到鏈上去統一匯總。咋看起來,似乎有一定道理。但仔細分析起來,問題就來了。區塊鏈之所以被看好,是因為鏈上有不少好的功能,譬如內容不可篡改等等。把交易拿到鏈外,就失去了這些功能的支持,帶來附加的風險。譬如,兩個節點之間的小額支付,看起來日常的可以在鏈下做,積累到一定時間或規模時再到鏈上結一次漲。可是鏈外這些交易,怎麼保證其正確性呢?如果在還未結帳之前,一方系統出故障丟失了帳本,另一方就可以賴帳。這種在鏈上不可能發生的情景就會在鏈外發生。主張下鏈交易的人,似乎都不怎麼強調下鏈所帶來的這些問題。

還有一個下鏈的場景,就是交易所和錢包。很多問題都出在這些鏈的端點,包括技術上的安全問題,也包括非技術類的信任問題。譬如有些網站號稱幫用戶管理各種幣,這跟陌生人要你銀行卡密碼沒啥兩樣。還有的所謂冷錢包,大都出自無名廠家,售價只有幾十塊錢,粗製濫造,卻被拿來管理巨額資產,怎麼會不出問題呢?而且出了問題找不到人負責,幣被轉走了又不可逆。如何把這些幣的管理和使用做到大眾可以安全方便操作的程度,還有很長的路。

什麼是區塊鏈的正確發展方向?

說了這麼多,指出了不少廣為流傳的誤區,戳穿了不少神話和假話,算是打擊了一大片。這並不是說我不看好區塊鏈的技術。比特幣的成長,用市場力量推動了幾個事情。一個是證明了人人有公鑰加密系統的時代已經到來,是大家可以接受的。一個是分布式系統的共識算法在冷了很多年之後再度被密切關注,吸引了很多學者和博士生積極研究。還有就是吸引了這麼多錢砸到這個領域,雖然被犧牲掉了很多,但畢竟有些錢會落到對的地方,總要做出點事情來。

區塊鏈的發展,被比作新一代網際網路。從原則上講,要真正借鑑網際網路成功發展幾十年的經驗,而不是簡單照著 web 1.0 的方式搞各種炒作。今後的正確發展方向是把網際網路成功的精髓在區塊鏈領域發揚光大。要做到這一點,需要紮實的知識背景,強大的研究功力,和豐富的實戰經驗。具體怎麼做,今天沒時間繼續寫了,這裡先賣個關子,且聽下回分解。

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 如何從經濟學的角度看區塊鏈
    如何從經濟學的角度看區塊鏈
  • 區塊鏈科普——區塊鏈的What、Why、How
    作為一種新興技術,區塊鏈技術經過十年的發展,已經從數字貨幣開始延伸到數字金融、物聯網、智能製造、供應鏈管理、數字資產交易等多個領域,「區塊鏈」本身也從一個密碼極客們口口相傳的專業名詞一躍成為人盡皆知的新基建技術。但由於具備相當的專業度及複雜度,區塊鏈技術的入門門檻相對較高,許多對區塊鏈懷揣憧憬的朋友難入其門。
  • 量子計算機真的能摧毀區塊鏈網絡嗎?
    ,其中最大的隱憂是擔心量子計算會憑藉超強算力,使得加密貨幣不再加密,甚至摧毀區塊鏈網絡。不過要想明白這一點,就要了解什麼是量子計算和區塊鏈的密碼算法。 本文特別鳴謝Junkai Zeng提供的技術支持,他不僅是我的老同學,同時還是維吉尼亞理工物理學博士,研究方向便是量子計算,目前在LA一家紅杉投資的量子公司就職。
  • 硬體區塊鏈技術和軟體區塊鏈技術有什麼不同
    我們過去接觸的區塊鏈大多停滯於軟體的開發,而軟體本身就是寫入計算機的一種程序,你不開源誰也不知道是什麼! 更容易形成一種概念性、未來性的預期,讓人摸不著頭腳,於是一大批白皮書出現,描繪出一片美好的藍圖,就像一個畫面精美的網遊,你只看到了表面的美麗卻抓不到優質的內涵。 於是一大批ICO項目上市,有幹事的,有融資的,還有**錢的。
  • 關於區塊鏈的普遍誤解:狹義區塊鏈和廣義區塊鏈的區別
    狹義區塊鏈和廣義區塊鏈的區別 我們從技術角度分析一下區塊鏈到底是什麼?其實從本質上來說,區塊鏈是一種底層基礎架構,它的應用範圍不僅局限於金融行業,也可以在其他行業。 我們從技術角度分析一下區塊鏈到底是什麼?
  • 區塊鏈網絡會如此不堪?量子計算機真的能摧毀它嗎?
    最近有很多朋友問到我關於量子計算機的問題,其中最大的隱憂是擔心量子計算會憑藉超強算力,使得加密貨幣不再加密,甚至摧毀區塊鏈網絡。先說答案:不會。不過要想明白這一點,就要了解什麼是量子計算和區塊鏈的密碼算法。
  • 區塊鏈與量子計算的較量
    正如我在《區塊鏈技術在信用、智慧財產權、溯源等場景中的應用與思考》《5G、區塊鏈與智慧計量》(請關注回看)兩篇文章中所說,區塊鏈技術本身是沒有問題的,但是要用區塊鏈貨幣取代國家法幣是沒門的。比特幣的發明人中本聰可能沒有系統學過經濟學知識,比特幣運行這麼多年來,在經濟學界看來是存在不少缺陷的。2019年11月6日下午,華為在深圳總部舉行與任正非咖啡對話。
  • 基於區塊鏈的鏈上數據安全共享體系研究
    本文提到的基於區塊鏈的鏈上數據安全共享體系更多地依賴於科學數據管理以及內容管理中的關鍵技術,以此保證數據的安全共享與有效利用。 作者簡介 劉彥松(1996-),男,電子科技大學計算機科學與工程學院碩士生,主要研究方向為數據安全與區塊鏈 。
  • 區塊鏈行業食物鏈_什麼是區塊鏈!區塊鏈是做什麼的?我們能用區塊鏈...
    2018年之前,區塊鏈行業中媒體稀少,最有影響力的只有兩家媒體。他們只要發某個幣種的利好消息,幣價基本一定會漲。「那時候消息閉塞,會看英文的也不多,炒幣的人沒有其他渠道去。因此只要看到有利好消息就趕緊買。」林正真說。  市場沒有秘密。敏感的人們迅速嗅到了區塊鏈媒體的商機。  從2018年初開始,各家區塊鏈投資機構爭相投資布局媒體。
  • 區塊鏈-未來人類社會的科技奇點
    由中國貿促會主辦,中國國際商會、中國服務貿易協會等單位共同承辦的「區塊鏈+服務貿易與應用大會暨中國國際商會區塊鏈創新服務產業委員會成立大會」在京舉行。會議圍繞區塊鏈技術的創新探索與產業應用落地等熱點話題進行了深入交流探討。
  • 金融從業者需要了解的區塊鏈常識:區塊鏈的八大價值
    在《金融從業者需要了解的區塊鏈常識:什麼是區塊鏈?》中,筆者對區塊鏈的基本概念做了詳細介紹,今天來著重解析:我們為什麼需要區塊鏈?區塊鏈可以為我們帶來什麼價值?下文將從八個方面進行闡述。
  • 通俗版《區塊鏈白皮書》:你要掌握的區塊鏈基本知識,95%都在這裡了
    區塊鏈:分布式網絡區塊鏈技術讓Zander和Tara在沒有中心實體的情況下交換信息。區塊鏈技術會自動創建和維護一個分布式的網絡。在最純粹的例子中,一個區塊鏈網絡是由許多獨立計算機組成來取代這些大型的中心實體。在區塊鏈世界裡,這些計算機的操作者叫做礦工。這些計算機或者節點組成了網絡的供給側。一個成功的區塊鏈網絡會有大量計算機幫助傳遞信息。
  • 光觸媒+區塊鏈誕生PHT光觸媒區塊鏈生態模型
    區塊鏈技術起源於2008年中本聰(Satoshi Nakamoto)在論壇上提交的論文《比特幣:一種點對點的電子現金系統》中。金融機構開始意識到,作為區塊鏈運行的底層支撐技術—區塊鏈實際上是一種極其巧妙的分布式共享帳本技術,對金融乃至各行各業帶來的潛在影響甚至可能不亞於複式記帳法的發明。
  • 區塊鏈108將:安全鏈生態發展官Mingo
    現在身為區塊鏈安全專家的Mingo認為,技術是服務於社群共識的,建立社群共識 是最重要的,甚至比技術還要難很多倍。  他現在All in的安全鏈SECC(Security  Chain)是一個純粹的區塊鏈社群項目。創始人Mingo反覆強調,「我們不是一家區塊鏈第三方解決方案或者安全產品公司,也不是一家傳統的中心化公司。
  • 布道區塊鏈 IoTeX+IoTA:區塊鏈的曙光,去中心化的物聯網使者?
    物聯網始於1991年,當時,英國劍橋大學特洛伊計算機實驗室的科學家們為了便於及時掌控煮在電壺上的咖啡,利用計算機圖像捕捉技術,在咖啡壺旁安裝了一個(3幀/秒的速率)攜式攝像機,藉此,將信息傳遞到實驗室的計算機上。7年後,英國工程師凱文·艾什頓作出定義:物聯網,就是把所有的物品通過射頻識別等信息傳感設備與網際網路連接起來,實現智能化識別和管理。
  • 人工智慧、量子計算,為區塊鏈帶來了新曙光
    儘管世界各地的區塊鏈大會仍然如亂花般遍地開放,但目前整個行業遮擋人們的煙霧仍未被撥開,區塊鏈技術本身的落地以及與其他行業技術的結合,仍未成為大家眼球的聚焦點。作為量子物理學科領域的頂級研究科學家,Adolph教授也一直在研究區塊鏈底層公鏈的相關問題。從量子計算專業領域的專業角度看,區塊鏈技術安全問題暴露得十分明顯,一旦區塊鏈行業的底層公鏈受到量子計算攻擊,整個區塊鏈行業中原有基於傳統計算機計算的大部分技術,將會癱瘓。
  • 四萬字乾貨 | 《高博士區塊鏈觀察18講》文字稿 帶你系統了解區塊鏈
    區塊鏈是什麼?從技術角度來看,區塊鏈並不是新的技術,至少在中本聰的比特幣系統裡不包含任何新的技術。區塊鏈是一種新的技術體系。區塊鏈所用的底層技術,包括非對稱密碼、哈希函數、P2P對等網、安全多方計算,都是早已經成熟的技術,這些已有的技術按照特定的結構被組合在一起並被賦予了新的功能,從而發現了新的應用空間。
  • 繼區塊鏈後,千千世界能否在探針計算機領域再次揚帆?
    創始人CEO何聰因其過去5年基於區塊鏈技術不懈實踐並創造性推廣了「善圓」「利他貨幣」「元社區」等劃時代理論而入圍 「全球金融科技影響力100人」,中國大陸僅2人入選,另一位是螞蟻金服董事長CEO井賢棟。
  • 區塊鏈技術人才的斯芬克斯之謎
    專注於底層公鏈開發的區塊鏈企業everiToken的聯合創始人陳柏臻告訴算力智庫:「我們團隊的CTO是由武漢大學計算機學院的蔡恆進教授引薦,把他多年前的得意門生王昊介紹進來,王昊加入團隊之後是通過近一年的工作實踐和學習,一度成為了EOS上全球代碼貢獻前二十的華人工程師。」
  • 區塊鏈到底是啥 這裡有個簡單的比喻
    原標題:最近頻頻被點名的「區塊鏈」,到底是個啥?最近有一個詞在網絡上出現頻率很高,看到這個詞會讓人覺得很厲害,但經常不確切知道是什麼意思。這個詞叫「區塊鏈」最近「區塊鏈「又被公開點名