區塊鏈關鍵技術點在應用實踐中的解決方案 - 李晨 | JTalk 第五期

JTalk發表於2018-04-28

編者按:本文系萬雲區塊鏈的李晨講師,在掘金技術社群主辦的《給開發者的區塊鏈技術指南 | JTalk 掘金線下活動第五期》 活動上的分享整理。掘金 JTalk 目前已舉辦5期,每期 JTalk 會邀請垂直行業的優秀工程師來分享優秀的實踐經驗,技巧方法。旨在為開發者提供線下技術交流互動機會,幫助開發者成長。

區塊鏈關鍵技術點在應用實踐中的解決方案 - 李晨 | JTalk 第五期

李晨,萬向首席架構師兼產品總監,具有多年區塊鏈和雲端計算從業經驗, 5項相關的技術專利作者。區塊鏈社群活躍分子,專注於區塊鏈底層技術研究和架構演進。更早之前服務於通聯資料,擔任金融雲平臺負責人。本次分享將圍繞區塊鏈技術本身進行深度剖析,同時結合萬雲在區塊鏈開發道路上的應用實踐,希望給予開發者一個快速入門的技術指南。以下是JTalk演講實錄:

區塊鏈關鍵技術點在應用實踐中的解決方案 - 李晨 | JTalk 第五期
我覺得區塊鏈是一個特別新的東西,即使從2009年比特幣第一個區塊誕生,到現在有一段時間了,我依然覺得它還是一個非常新的東西。在我看來,區塊鏈不管是在商業模式,還是在技術階段,都仍處於非常早期的階段。 我個人一直有著一個觀點,即如果從價值觀上對一個新興事物的理解是不同的,做出來的東西一定是不一樣的。先介紹一下我對區塊鏈的理解。

從技術角度看區塊鏈

區塊鏈關鍵技術點在應用實踐中的解決方案 - 李晨 | JTalk 第五期
我是做技術出身,後來做了一段時間金融,做Fintech相關的東西,正因為我是做技術出身,所以對區塊的理解上走了一段彎路。2013年左右第一次接觸到區塊鏈,一開始對比特幣充滿了不屑感,從技術角度來看,覺得它非常不成熟,認為它就是一個資料庫,這是我走過的彎路,我覺得(當時的)自己認識還是很淺薄的。 後來我對它的認識有所不同,首先從技術角度去看比特幣網路:

  1. 零故障。從2009年比特幣創始到現在,沒有出現任何故障,也就是說它的可用性是100%,我相信現在做得最好的產品,微信也好、支付寶也好,都沒有辦法做到百分之百的可用性。
  2. 零成本。比特幣網路如此龐大規模的網路,每天有大量交易和節點挖礦,卻沒有專職維護人員在維護。以支付寶和微信舉例,騰訊或阿里後面有多少運維人員在維護它,每年付出維護方面的成本是多少,但比特幣網路沒有做這個事情。
  3. 零錯誤。比特幣網路沒有記錯任何一筆賬。
  4. 零風險。中本聰賬戶上大概100多萬枚比特幣,即使價格跌下來,也是非常大的一筆錢,我相信全世界的黑客一定在想方設法攻破比特幣網路,但是到現在比特幣網路上沒有消失過一分錢。所謂的掉錢,我認為是一些幣比較多的人,他們的裝置裡被植入了木馬。從比特幣網路上來說,從來沒有掉過一分錢,沒有被黑客攻破過一次。從這個角度來看,它比支付寶穩定性要好,比支付寶更安全,比支付寶成本更低。而且,連它的創始人中本聰,大家都不知道他究竟是一個人、一個組織,還是什麼。 在這樣一種模式下,能夠創造出這樣一套達到如此高規格的系統,這是顛覆性的。

區塊鏈也是這樣一個情景,比特幣最早的白皮書就是點對點的現金系統,區塊鏈要做的事情就是建立一個去中心化的資訊系統,但是我認為區塊鏈發展到現在,並不僅僅是點對點的現金系統。

區塊鏈關鍵技術點在應用實踐中的解決方案 - 李晨 | JTalk 第五期
比特幣網路特別簡單。

  • 資料層。比特幣網路最下面是一個資料層,資料層解決資料區塊、鏈式結構、時間戳,其實就解決了兩件事——即上面的資料不可以被篡改、資料可以被追蹤。
  • 網路層。比特幣網路所有技術在比特幣提出來之前很多年早就提出了,都非常成熟。為什麼要有P2P網路,而不是其他網路?因為P2P網路是對等網路,它符合區塊鏈裡面去中心化的理念,不怕其中任何一個節點當機癱瘓。
  • 共識層。共識這套邏輯可能是中本聰創造的,就是一些很難的題目讓大家去解開,去爭取記賬權。
  • 激勵層。有一套發行機制,和一套分配機制。 共識、網路、資料全部是技術層面的東西,激勵層是經濟模型層面的東西。如果只是下面三層,我覺得比特幣肯定玩不起來,因為沒有激勵,只是一個純技術的東西,它的社群不可能像現在這麼壯大。最根本的創新或最偉大的創新是在這上面有一層激勵層。通過代幣形式,形成對自我迴圈的機器模型,基於區塊鏈的技術。
    區塊鏈關鍵技術點在應用實踐中的解決方案 - 李晨 | JTalk 第五期
    POW的演算法會消耗大量的算力,隨著挖礦節點越來越多,就會產生Block,這個賬本生成速度也會越來越慢,所以POW是造成現在比特幣網路效能越來越慢的罪魁禍首。其實區塊鏈效能最大的一個問題是共識的演算法。 如果說比特幣是區塊鏈1.0的話,以太坊就是區塊鏈2.0。它從根本上改變了比特幣只是一個電子現金的系統、只有一個代幣的狀況。到了以太坊,就不一樣了,擁有智慧合約,所寫的這個合約在任何區塊鏈網上都不會被篡改,這就是區塊鏈2.0,有了智慧合約,就可以做去中心化的應用。從技術角度來看,我認為智慧合約沒有特別大的創新,因為基於智慧合約下面一個虛擬機器EVM。 比特幣最大的創新是代幣機制激勵機制,以太坊最大的創新是智慧合約,智慧合約是可程式設計的,讓數字貨幣可程式設計,比特幣真的就像中本聰一樣,是一個點對點的電子現金系統,其實就是支付系統,就是記賬。有了智慧合約以後,以太坊可程式設計,這個變化就厲害了,最根本的革新是把商業邏輯可以程式設計,可以把業務邏輯放到區塊鏈上,業務邏輯透明、不可篡改。有了智慧合約以後,它就是一個應用系統可以把各種各樣商業邏輯放上去。 2.0帶來特別大的變革,最核心的東西就是將商業邏輯上鍊或讓數字貨幣有可程式設計能力。我個人認為這就是所謂1.0和2.0之間核心的區別。 3.0是什麼?我也不知道。目前看來,有幾個方向可能會是3.0能夠做的方向:
  1. 提升單條鏈的技術指標,其實不管是以太坊也好、比特幣也好,1.0、2.0效能都比較慢,這是它的核心問題,滿足不了現在真正使用化的需求。有一些隱私方面的東西,能夠保護,讓其他一些商用標準,比如用在金融系統裡,必須符合加密標準,要符合一些認證的東西,這些都是目前所有區塊鏈專案當中沒有一個能夠符合這個標準的。提高單鏈技術指標,可能是區塊鏈3.0的第一個方向。
  2. 跨鏈。現在每個鏈都是獨立的孤島,有自己的專案、有自己的社群、有自己的代幣,所謂的鏈和鏈之間不大相同,每個鏈是獨立的王國。最後一定需要有一種機制能把這套鏈打通,不可能只是用一種數字代替,跨鏈會是區塊鏈3.0我個人看好的第二個方向。

關鍵技術點

共識效能

區塊鏈關鍵技術點在應用實踐中的解決方案 - 李晨 | JTalk 第五期
講到核心技術,目前大家吐槽最多的是區塊鏈效能很慢,轉移需要幾分鐘,要收取很高的礦工費用。這完全很難滿足現在的要求。我個人觀點是要提高效能核心是在共識上,目前看來共識有幾種:

  1. POW,說白了就是拼算力,大概10分鐘左右,它有兩個個問題,第一比較慢;第二耗費算力,據說比特幣現在挖礦耗電量很大。以太坊現在還處於POS和POW兼有階段,POS是1%,POS是99%,POS是權益證明,誰擁有的幣更多誰更有可能挖到礦,基於擁有這麼多幣就不會破壞這個網路,這個模式改善對資源的消耗。原來POS,只要每個人有幣,都可以去挖礦,不是說幣少一定挖不到礦,也有可能挖到礦,只是挖到的概率會比較低一點。POS是網路中每個節點記所有的賬。DPOS是網路當中部分節點記所有的賬。類似於現實世界中的形態,DPOS就是議會制,所謂選出來超級節點也好或其他名字也好,就是議員,大家投票選議員,由議員來記賬。
  2. 犧牲容錯性。POS、POW都是50%的容錯性,所以安全性很高。為了提高效能,拜佔廷演算法容錯率降到30%,現在超過1/3的節點就可以破壞這樣的帳號,犧牲一個技術指標裡提升另一個技術指標,所有技術在某種意義上都是權衡的東西,不太可能做到每一個都特別好。
  3. 犧牲安全性。假設這個網路被篡改過。網路的通訊都是安全的。

區塊鏈關鍵技術點在應用實踐中的解決方案 - 李晨 | JTalk 第五期
從價值上來說也是兩條路:

  1. 並行。原來迅速地算,算完了第一個算第二個,現在就像食堂打飯一樣,原來就一個視窗,只有一條隊伍可排,現在多開幾個視窗,比如開十個視窗,效能就高了。用犧牲計算效能去做一些其他的事情。但是並行有一個問題,並行特別難,很多演算法,尤其區塊鏈是時間序列的資料儲存方式,要讓它並行去做,當中會有很多矛盾,這條路並不好走。
  2. 分片。通過分而治之的方法去優化,也是很經典的做法了。
  3. 資料隱私

區塊鏈關鍵技術點在應用實踐中的解決方案 - 李晨 | JTalk 第五期
區塊鏈現在很難解決鏈上隱私的問題,鏈上的資料大家都能看得到。比方說有一個人給你轉了幣,你想看看這個人多有錢,只要到網上一查,就看得到有多少,包括他持有多少代幣,因為區塊鏈足夠安全,反正也偷不掉;但現實生活中有人通過銀行給你轉一筆賬,肯定不知道他有多少存款。可能在某些場景下並不一定是我們想做的事情,所以現在區塊鏈上所有的資料都是透明的,這個事情是不是符合實際需求,這很難說,至少在我們看到的很多企業級應用專案中,對資料隱私有比較大的訴求。 解決資料隱私問題,也是兩條路。一個是架構調整只存證不儲存,把你希望別人看不到你的資料,但讓他相信你有這個資料,做成一個Hash,讓這個Hash存在於這個鏈上。因為Hash不可逆,它可以證明你有這樣一些資料。 另一個是黑科技。比如環簽名零知識證明。所謂的零知識證明,就是我不必向你展示我有一個東西,但是可以告訴你我有。打個比方,我要證明我有這個房間的鑰匙,但我不必展示這邊鑰匙,只要告訴你這個房間裡一共有幾盞燈,其中哪幾盞是亮的,就可以證明了。

跨鏈

區塊鏈關鍵技術點在應用實踐中的解決方案 - 李晨 | JTalk 第五期
跨鏈,就是鏈和鏈之間是打通的。從技術角度來看,跨鏈有三種實現——側鏈、閃電網路和中繼。 跨鏈種類有兩種:第一種是價值跨鏈,就是代幣跨鏈。比如,以太坊上可以存比特幣,比特幣上可以存以太幣。第二種是服務跨鏈,比如某條鏈可以去調以太坊的智慧合約。

區塊鏈帶來研發過程的改變

區塊鏈關鍵技術點在應用實踐中的解決方案 - 李晨 | JTalk 第五期

  1. 開源:區塊鏈所有的東西都是開源的,這樣就沒有技術壁壘。我要做一個分叉太簡單了,在早幾年,有很多染色幣,看看其中的程式碼,跟比特幣程式碼完全一樣,就是換了兩個引數,甚至我看到一個染色幣就把名字換了一下,再部署一下。所以開源會帶來第一個問題就是沒有任何技術壁壘,從好的角度來說,因為所有的東西都公開,所以技術迭代會非常新,有一些新的技術成果大家都隨時可以看到。從壞的角度來說,像空氣幣、泡沫幣會層出不窮,因為去複製一條鏈沒有任何成本。蘋果、微軟公司所有的東西都是閉源的,要做一個iPhone、Office軟體是很難的。所以開源帶來研發的改變,就是沒有任何技術壁壘。
  2. 迭代:區塊鏈的迭代特別的快,這是因為開源,也是因為區塊鏈的商業模式,讓專案不的不快。無論技術,產品以及其他任何方面,都是透明公開的。所以只有不斷加速迭代,才能保持領先。
  3. 社群:更多依賴社群的資源。比如拿測試來說,在傳統軟體開發中,原來釋出一個產品的話,產品做好以後,內部要做好幾輪測試,然後再推出來。區塊鏈完全不一樣,區塊鏈是不斷的釋出,不斷更新測試網路,社群通過測試網路去進行測試,並反饋結果,當然也會得到回報。好的專案,社群會爭先恐後的去做測試,我認為這樣的測試是最充分的測試,會比傳統形態要充分、靈活和有效的多。這就是依靠社群資源的一個例子。

我們遇到的坑

區塊鏈關鍵技術點在應用實踐中的解決方案 - 李晨 | JTalk 第五期

  • 命名服務。區塊鏈上的地址,大家用任何一種代幣,你的錢包就是一個地址,這個東西不適合人類去閱讀,也沒辦法記,我現在也背不出我錢包的地址是多少,因為太長了。所以這對真正想將這個系統落地、想將它企業化來說是特別大的一個坑。
  • 准入機制。原來企業內部系統,不管是CRM起來ERP,都需要CA認證,但是區塊鏈沒有這樣一個認證體系。
  • 合約升級。因為每個智慧合約都不能像過去的軟體一樣被解除安裝後重新部署,原來寫了這樣一個業務邏輯,過兩個月不符合了,只能重新建一個智慧合約,這樣做太麻煩,合約裡的資料又該如何處理。

應用案例

**聯盟鏈優化資料交換平臺

區塊鏈關鍵技術點在應用實踐中的解決方案 - 李晨 | JTalk 第五期
假設這樣一個業務,資料交換平臺,通過平臺交換資料,大家都信任這個平臺。原來你把這個資料給平臺不放心,因為平臺可以做惡。現在有了區塊鏈,完全可以把什麼時候用了資料,用了哪些資料,全部記在賬本上,跑在合約裡,參與方都相信演算法和機器。還有一種更好的方法,引入和聯盟鏈中其他人沒有任何關係的第三方來記賬,這樣更加具有公信力。

關於萬雲

區塊鏈關鍵技術點在應用實踐中的解決方案 - 李晨 | JTalk 第五期

最後送給大家的幾句話

五年前跟現在區塊鏈一樣,大家都在討論雲端計算,當時很大的問題是雲端計算一直飄在雲上,什麼時候落地,五年後的今天雲端計算已經落地了。兩年前,大家都在討論大資料,我理解兩年前的大資料其實應該叫資料大,有大量的資料,但沒有挖掘資料的價值,2018年來看,大資料行業已經顯現出其價值。區塊鏈和雲端計算、大資料特別像,如今大家都在討論區塊鏈,特別熱特別火,但似乎落地的還不多,我相信一段時間以後區塊鏈一定真正的落地,幫助到各行各業。


以上是《給開發者的區塊鏈技術指南 | JTalk 掘金線下活動第五期》 講師李晨的分享,如果你對掘金的 JTalk 線下活動感興趣,可以關注掘金活動頁面的 JTalk 活動報名。掘金 JTalk 目前已舉辦5期,每月一期的 JTalk 會邀請垂直行業的優秀工程師來分享優秀的實踐經驗,技巧方法。旨在為開發者提供線下技術交流互動機會,幫助開發者成長。

JTalk 預告

JTalk 第六期即將在杭州舉辦。

  • 主題:從前端到“後端”
  • 時間:5.20

相關文章