編者按:本文系萬雲區塊鏈的李晨講師,在掘金技術社區主辦的《給開發者的區塊鏈技術指南 | JTalk 掘金線下活動第五期》 活動上的分享整理。掘金 JTalk 目前已舉辦5期,每期 JTalk 會邀請垂直行業的優秀工程師來分享優秀的實踐經驗,技巧方法。旨在爲開發者提供線下技術交流互動機會,幫助開發者成長。前端
李晨,萬向首席架構師兼產品總監,具備多年區塊鏈和雲計算從業經驗, 5項相關的技術專利做者。區塊鏈社區活躍分子,專一於區塊鏈底層技術研究和架構演進。更早以前服務於通聯數據,擔任金融雲平臺負責人。本次分享將圍繞區塊鏈技術自己進行深度剖析,同時結合萬雲在區塊鏈開發道路上的應用實踐,但願給予開發者一個快速入門的技術指南。如下是JTalk演講實錄:算法
我以爲區塊鏈是一個特別新的東西,即便從2009年比特幣第一個區塊誕生,到如今有一段時間了,我依然以爲它仍是一個很是新的東西。在我看來,區塊鏈無論是在商業模式,仍是在技術階段,都仍處於很是早期的階段。 我我的一直有着一個觀點,即若是從價值觀上對一個新興事物的理解是不一樣的,作出來的東西必定是不同的。先介紹一下我對區塊鏈的理解。
從技術角度看區塊鏈
我是作技術出身,後來作了一段時間金融,作Fintech相關的東西,正由於我是作技術出身,因此對區塊的理解上走了一段彎路。2013年左右第一次接觸到區塊鏈,一開始對比特幣充滿了不屑感,從技術角度來看,以爲它很是不成熟,認爲它就是一個數據庫,這是我走過的彎路,我以爲(當時的)本身認識仍是很淺薄的。 後來我對它的認識有所不一樣,首先從技術角度去看比特幣網絡:
- 零故障。從2009年比特幣創始到如今,沒有出現任何故障,也就是說它的可用性是100%,我相信如今作得最好的產品,微信也好、支付寶也好,都沒有辦法作到百分之百的可用性。
- 零成本。比特幣網絡如此龐大規模的網絡,天天有大量交易和節點挖礦,卻沒有專職維護人員在維護。以支付寶和微信舉例,騰訊或阿里後面有多少運維人員在維護它,每一年付出維護方面的成本是多少,但比特幣網絡沒有作這個事情。
- 零錯誤。比特幣網絡沒有記錯任何一筆帳。
- 零風險。中本聰帳戶上大概100多萬枚比特幣,即便價格跌下來,也是很是大的一筆錢,我相信全世界的黑客必定在千方百計攻破比特幣網絡,可是到如今比特幣網絡上沒有消失過一分錢。所謂的掉錢,我認爲是一些幣比較多的人,他們的設備裏被植入了木馬。從比特幣網絡上來講,歷來沒有掉過一分錢,沒有被黑客攻破過一次。從這個角度來看,它比支付寶穩定性要好,比支付寶更安全,比支付寶成本更低。並且,連它的創始人中本聰,你們都不知道他到底是一我的、一個組織,仍是什麼。 在這樣一種模式下,可以創造出這樣一套達到如此高規格的系統,這是顛覆性的。
區塊鏈也是這樣一個情景,比特幣最先的白皮書就是點對點的現金系統,區塊鏈要作的事情就是創建一個去中心化的信息系統,可是我認爲區塊鏈發展到如今,並不只僅是點對點的現金系統。 數據庫
比特幣網絡特別簡單。
- 數據層。比特幣網絡最下面是一個數據層,數據層解決數據區塊、鏈式結構、時間戳,其實就解決了兩件事——即上面的數據不能夠被篡改、數據能夠被追蹤。
- 網絡層。比特幣網絡全部技術在比特幣提出來以前不少年早就提出了,都很是成熟。爲何要有P2P網絡,而不是其餘網絡?由於P2P網絡是對等網絡,它符合區塊鏈裏面去中心化的理念,不怕其中任何一個節點當機癱瘓。
- 共識層。共識這套邏輯多是中本聰創造的,就是一些很難的題目讓你們去解開,去爭取記帳權。
- 激勵層。有一套發行機制,和一套分配機制。 共識、網絡、數據所有是技術層面的東西,激勵層是經濟模型層面的東西。若是隻是下面三層,我以爲比特幣確定玩不起來,由於沒有激勵,只是一個純技術的東西,它的社羣不可能像如今這麼壯大。最根本的創新或最偉大的創新是在這上面有一層激勵層。經過代幣形式,造成對自我循環的機器模型,基於區塊鏈的技術。
POW的算法會消耗大量的算力,隨着挖礦節點愈來愈多,就會產生Block,這個帳本生成速度也會愈來愈慢,因此POW是形成如今比特幣網絡性能愈來愈慢的罪魁禍首。其實區塊鏈性能最大的一個問題是共識的算法。 若是說比特幣是區塊鏈1.0的話,以太坊就是區塊鏈2.0。它從根本上改變了比特幣只是一個電子現金的系統、只有一個代幣的情況。到了以太坊,就不同了,擁有智能合約,所寫的這個合約在任何區塊鏈網上都不會被篡改,這就是區塊鏈2.0,有了智能合約,就能夠作去中心化的應用。從技術角度來看,我認爲智能合約沒有特別大的創新,由於基於智能合約下面一個虛擬機EVM。 比特幣最大的創新是代幣機制和激勵機制,以太坊最大的創新是智能合約,智能合約是可編程的,讓數字貨幣可編程,比特幣真的就像中本聰同樣,是一個點對點的電子現金系統,其實就是支付系統,就是記帳。有了智能合約之後,以太坊可編程,這個變化就厲害了,最根本的革新是把商業邏輯能夠編程,能夠把業務邏輯放到區塊鏈上,業務邏輯透明、不可篡改。有了智能合約之後,它就是一個應用系統能夠把各類各樣商業邏輯放上去。 2.0帶來特別大的變革,最核心的東西就是將商業邏輯上鍊或讓數字貨幣有可編程能力。我我的認爲這就是所謂1.0和2.0之間核心的區別。 3.0是什麼?我也不知道。目前看來,有幾個方向可能會是3.0可以作的方向:
- 提高單條鏈的技術指標,其實無論是以太坊也好、比特幣也好,1.0、2.0性能都比較慢,這是它的核心問題,知足不了如今真正使用化的需求。有一些隱私方面的東西,可以保護,讓其餘一些商用標準,好比用在金融系統裏,必須符合加密標準,要符合一些認證的東西,這些都是目前全部區塊鏈項目當中沒有一個可以符合這個標準的。提升單鏈技術指標,多是區塊鏈3.0的第一個方向。
- 跨鏈。如今每一個鏈都是獨立的孤島,有本身的項目、有本身的社區、有本身的代幣,所謂的鏈和鏈之間不大相同,每一個鏈是獨立的王國。最後必定須要有一種機制能把這套鏈打通,不可能只是用一種數字代替,跨鏈會是區塊鏈3.0我我的看好的第二個方向。
關鍵技術點
共識性能
講到核心技術,目前你們吐槽最多的是區塊鏈性能很慢,轉移須要幾分鐘,要收取很高的礦工費用。這徹底很難知足如今的要求。我我的觀點是要提升性能核心是在共識上,目前看來共識有幾種:
- POW,說白了就是拼算力,大概10分鐘左右,它有兩個個問題,第一比較慢;第二耗費算力,聽說比特幣如今挖礦耗電量很大。以太坊如今還處於POS和POW兼有階段,POS是1%,POS是99%,POS是權益證實,誰擁有的幣更多誰更有可能挖到礦,基於擁有這麼多幣就不會破壞這個網絡,這個模式改善對資源的消耗。原來POS,只要每一個人有幣,均可以去挖礦,不是說幣少必定挖不到礦,也有可能挖到礦,只是挖到的機率會比較低一點。POS是網絡中每一個節點記全部的帳。DPOS是網絡當中部分節點記全部的帳。相似於現實世界中的形態,DPOS就是議會制,所謂選出來超級節點也好或其餘名字也好,就是議員,你們投票選議員,由議員來記帳。
- 犧牲容錯性。POS、POW都是50%的容錯性,因此安全性很高。爲了提升性能,拜佔廷算法容錯率降到30%,如今超過1/3的節點就能夠破壞這樣的賬號,犧牲一個技術指標裏提高另外一個技術指標,全部技術在某種意義上都是權衡的東西,不太可能作到每個都特別好。
- 犧牲安全性。假設這個網絡被篡改過。網絡的通信都是安全的。
從價值上來講也是兩條路:
- 並行。原來迅速地算,算完了第一個算第二個,如今就像食堂打飯同樣,原來就一個窗口,只有一條隊伍可排,如今多開幾個窗口,好比開十個窗口,性能就高了。用犧牲計算性能去作一些其餘的事情。可是並行有一個問題,並行特別難,不少算法,尤爲區塊鏈是時間序列的數據存儲方式,要讓它並行去作,當中會有不少矛盾,這條路並很差走。
- 分片。經過分而治之的方法去優化,也是很經典的作法了。
- 數據隱私
區塊鏈如今很難解決鏈上隱私的問題,鏈上的數據你們都能看獲得。比方說有一我的給你轉了幣,你想看看這我的多有錢,只要到網上一查,就看獲得有多少,包括他持有多少代幣,由於區塊鏈足夠安全,反正也偷不掉;但現實生活中有人經過銀行給你轉一筆帳,確定不知道他有多少存款。可能在某些場景下並不必定是咱們想作的事情,因此如今區塊鏈上全部的數據都是透明的,這個事情是否是符合實際需求,這很難說,至少在咱們看到的不少企業級應用項目中,對數據隱私有比較大的訴求。 解決數據隱私問題,也是兩條路。一個是
架構調整。
只存證不存儲,把你但願別人看不到你的數據,但讓他相信你有這個數據,作成一個Hash,讓這個Hash存在於這個鏈上。由於Hash不可逆,它能夠證實你有這樣一些數據。 另外一個是黑科技。好比
環簽名和
零知識證實。所謂的零知識證實,就是我沒必要向你展現我有一個東西,可是能夠告訴你我有。打個比方,我要證實我有這個房間的鑰匙,但我沒必要展現這邊鑰匙,只要告訴你這個房間裏一共有幾盞燈,其中哪幾盞是亮的,就能夠證實了。
跨鏈
跨鏈,就是鏈和鏈之間是打通的。從技術角度來看,跨鏈有三種實現——
側鏈、閃電網絡和中繼。 跨鏈種類有兩種:第一種是價值跨鏈,就是代幣跨鏈。好比,以太坊上能夠存比特幣,比特幣上能夠存以太幣。第二種是服務跨鏈,好比某條鏈能夠去調以太坊的智能合約。
區塊鏈帶來研發過程的改變
- 開源:區塊鏈全部的東西都是開源的,這樣就沒有技術壁壘。我要作一個分叉太簡單了,在早幾年,有不少染色幣,看看其中的代碼,跟比特幣代碼徹底同樣,就是換了兩個參數,甚至我看到一個染色幣就把名字換了一下,再部署一下。因此開源會帶來第一個問題就是沒有任何技術壁壘,從好的角度來講,由於全部的東西都公開,因此技術迭代會很是新,有一些新的技術成果你們都隨時能夠看到。從壞的角度來講,像空氣幣、泡沫幣會層出不窮,由於去複製一條鏈沒有任何成本。蘋果、微軟公司全部的東西都是閉源的,要作一個iPhone、Office軟件是很難的。因此開源帶來研發的改變,就是沒有任何技術壁壘。
- 迭代:區塊鏈的迭代特別的快,這是由於開源,也是由於區塊鏈的商業模式,讓項目不的不快。不管技術,產品以及其餘任何方面,都是透明公開的。因此只有不斷加速迭代,才能保持領先。
- 社區:更多依賴社區的資源。好比拿測試來講,在傳統軟件開發中,原來發佈一個產品的話,產品作好之後,內部要作好幾輪測試,而後再推出來。區塊鏈徹底不同,區塊鏈是不斷的發佈,不斷更新測試網絡,社區經過測試網絡去進行測試,並反饋結果,固然也會獲得回報。好的項目,社區會爭先恐後的去作測試,我認爲這樣的測試是最充分的測試,會比傳統形態要充分、靈活和有效的多。這就是依靠社區資源的一個例子。
咱們遇到的坑
- 命名服務。區塊鏈上的地址,你們用任何一種代幣,你的錢包就是一個地址,這個東西不適合人類去閱讀,也沒辦法記,我如今也背不出我錢包的地址是多少,由於太長了。因此這對真正想將這個系統落地、想將它企業化來講是特別大的一個坑。
- 准入機制。原來企業內部系統,無論是CRM起來ERP,都須要CA認證,可是區塊鏈沒有這樣一個認證體系。
- 合約升級。由於每一個智能合約都不能像過去的軟件同樣被卸載後從新部署,原來寫了這樣一個業務邏輯,過兩個月不符合了,只能從新建一個智能合約,這樣作太麻煩,合約裏的數據又該如何處理。
應用案例
**聯盟鏈優化數據交換平臺 編程
假設這樣一個業務,數據交換平臺,經過平臺交換數據,你們都信任這個平臺。原來你把這個數據給平臺不放心,由於平臺能夠作惡。如今有了區塊鏈,徹底能夠把何時用了數據,用了哪些數據,所有記在帳本上,跑在合約裏,參與方都相信算法和機器。還有一種更好的方法,引入和聯盟鏈中其餘人沒有任何關係的第三方來記帳,這樣更加具備公信力。
關於萬雲
最後送給你們的幾句話
五年前跟如今區塊鏈同樣,你們都在討論雲計算,當時很大的問題是雲計算一直飄在雲上,何時落地,五年後的今天雲計算已經落地了。兩年前,你們都在討論大數據,我理解兩年前的大數據其實應該叫數據大,有大量的數據,但沒有挖掘數據的價值,2018年來看,大數據行業已經顯現出其價值。區塊鏈和雲計算、大數據特別像,現在你們都在討論區塊鏈,特別熱特別火,但彷佛落地的還很少,我相信一段時間之後區塊鏈必定真正的落地,幫助到各行各業。後端
以上是《給開發者的區塊鏈技術指南 | JTalk 掘金線下活動第五期》 講師李晨的分享,若是你對掘金的 JTalk 線下活動感興趣,能夠關注掘金活動頁面的 JTalk 活動報名。掘金 JTalk 目前已舉辦5期,每個月一期的 JTalk 會邀請垂直行業的優秀工程師來分享優秀的實踐經驗,技巧方法。旨在爲開發者提供線下技術交流互動機會,幫助開發者成長。安全
JTalk 預告
JTalk 第六期即將在杭州舉辦。微信