當前位置:
首頁 > 最新 > 區塊鏈技術對比和實戰項目選型

區塊鏈技術對比和實戰項目選型

CTO區塊鏈

鏈接CTO,做區塊鏈佈道的前行者

正文共:4551 字 17 圖

預計閱讀時間: 12 分鐘

講到區塊鏈技術對比和實戰項目選型這個話題,我把這個內容分為三個部分。第一個部分:四大區塊鏈項目的介紹,第二個部分:區塊鏈技術對比,第三個部分:實戰項目解析即選擇用什麼區塊鏈技術。

第一部分講到比特幣,以太坊,EOS,和Linux下面的HyperLedger fabric聯盟鏈

第一個區塊鏈技術是1.0,區塊鏈技術的第一個應用。

以太坊被譽為區塊鏈2.0,是因為它在比特幣的基礎上引入智能合約,讓我們能夠更自由的在區塊鏈上進行編程。

第三個是被譽為區塊鏈3.0的EOS,因為比特幣和以太坊的TPS都比較低,EOS讓鏈可以承受企業級並發。

第四個Fabric主要是聯盟鏈類型的。

我們從比特幣出發,首先為大家介紹一下,現在區塊鏈典型鏈為形狀的數據結構。

第一層是數據層,是以區塊為單位的鏈狀數據塊結構。

第二層網路層,包括P2P網路、傳播機制、驗證機制。

第三層是共識層,就是我們平常說的POW,POS,DPOS這樣的共識演算法。

這三個是區塊鏈技術的核心,所有的區塊鏈技術一定會包含這三層。

再上面一層是激勵層,也就是我們如何給礦工發那些獎勵,在公鏈裡面這一層是一定會有的,但是在與一些私鏈裡面它可能並不需要去對他的礦工做一些獎勵,那麼也是可能沒有的。

再上面一層是合約層,因為比特幣出現的比較早,所以它的這一層是沒有的,在以太坊上面,這一個會做的比較好一點。

最上層是應用層,是我們什麼轉賬啊,或者做一些區塊鏈應用這樣一層結構。

這是我們區塊鏈整體的一個架構。

比特幣是最早也是全球最廣泛使用和真正意義的去中心化區塊鏈技術,但是不可否認的是它的pow演算法是比較低效的,並且也比較耗能耗電,所以它在整個技術上是不夠成熟的,但是不可否認的是它也是現在最大的一個鏈,畢竟最貴,因此它的開源技術體系非常值得參考。

以太坊是可編程的區塊鏈,也就是引入了我們所說的智能合約。

它第一個是有一個EVM虛擬機,第二個是指定Solidity這種編程語言。以太坊官方支持Solidity,LLL和Serpent三種語言,但是在我們平時的開發中,大家最喜歡也最常用的還是Solidity語言。

第二個以太坊是使用了內存需求較高的哈希函數。

第三個是引入了一個叔塊(Uncle Block)的激勵機制,簡單介紹一下叔塊就是我們在挖礦的時候有可能會出現分叉,上面的部分會變成孤兒區塊,那這個礦機之前所做的努力全部白費了,他也不會得到任何獎勵。

在以太坊中,如圖,高度三的最後這一塊,可以將這個黃色方塊的數據包含進去,那在這個黃色區塊對於它來說就是叫做叔塊。這一塊對這個叔塊可以獲得這樣一個獎勵。

以太坊之所以要引入這樣一個機制,主要是因為它的塊的生成時間比比特幣要快很多,所以也更容易出現這種情況,為了讓這個問題得到更好的解決,於是引入了叔塊機制。

第四就是挖礦的難度也會有一定的調整。

第五個是以太坊里的gas在以太坊上面運用智能合約是需要消耗gas的,引入這個是而為了避免循環攻擊。也就是說你寫一些智能合約難免會出現死循環的情況,可是在區塊鏈上又不像平時的應用直接重啟就可以。所以需要使用gas避免這種循環的情況,當gas用完了這個程序就不能繼續下去了,可以避免這種循環攻擊。

第六個是記錄當前狀態的哈希樹的根哈希值到區塊來實現輕量級客戶端。

下面介紹一下EOS,現在EOS公鏈公網都還沒有上線,但是即將上線了。

它第一個是引入了DPOS 共識演算法和石墨烯底層工具組,能夠滿足每秒上萬次,甚至每秒上百萬次交易請求的企業級應用需求。因為以太坊的並發太小了,很多項目都不能跑起來。

第二個EOS上轉賬交易與運行智能合約並不需要消耗系統代幣,這個是和以太坊不太相同的一點,那麼EOS上的代幣是用來幹什麼的呢?就是用來獲取系統資源的,就是我佔有所少的代幣,那麼我就可以獲取多少的系統資源。這樣我們的系統資源在別的項目出現比如泵塊的情況就不會影響到我,比如以太坊上面並發過大會導致全網癱瘓之類的。

第三個是EOS上面提出了「憲/法」這個概念,主要就是制定了一些大家需要共同遵守的一些約定還有就是出現一些錯誤的時候用於區分此錯誤是否確實為 bug,並判斷社區的修復舉措是否得當。

第四個是EOS 上也算是有設置以太虛擬機(EVM),能夠支持現有在以太坊運行的智能合約。現存在於以太坊的區塊鏈應用,通過添加少量適配,就能夠在 EOS 系統上運行。但是因為效率問題,官方還是推薦C++進行智能合約的編寫,他們認為C++是效率最高的。

第五點是 EOS 新增了官方的 WebAssembly 解釋器,用來解釋執行 WebAssembly 智能合約,加上之前的編譯執行,EOS 智能合約有了兩種執行方式。

前面公鏈項目介紹完之後我們來介紹一下HyperLedger fabric這個項目。fabric是一個帶有可插入各種功能模塊架構的區塊鏈實施方案,他的目標是打造成一個由全社會來共同維護的一個超級賬本。

主要核心邏輯分為三個部分。

1.Membership Services:就是許可權控制啊之類的用來管理節點身份、隱私、保密性、可審計性。在fabric升級到1.0之後Membership Services也改名為Fabric-ca,現在也作為了一個單獨的項目,大家也可以在網上看到。

2.Blockchain services:也就是平時說的區塊鏈的那一部分,採取可插拔的方式來根據具體需求來設置共識協議選擇共識演算法,比如PBFT,Raft,PoW和PoS等等,IBM首選PBFT演算法。

3.Chaincode services:提供一種安全且輕量級的沙盒運行模式,來在VP節點上執行chaincode邏輯,類似以太坊的EVM虛擬機及其他上面運行的智能合約。

Fabric是支持java,go和Nodejs語言的一個Chaincode。

介紹完四個項目後還要給大家介紹兩個重要的技術。

一個是閃電網路&雷電網路。其實這個就是為了解決比特幣區塊鏈的瓶頸處理能力而生的。

好像就是說我給你轉一筆錢,但是之前我們都需要去銀行排半天隊,還要花很多的手續費,我們才能進行這樣一個轉賬的操作,那麼當我的轉賬金額比較小或者是頻率較高的時候非常不划算,這樣我排隊的時間也非常長,我交的手續費也非常的多,那麼在這個時候就出現了一個閃電網路,我們也可以把它理解長支付寶。相當於我先花了一部分錢放到支付寶里,那麼我就可以用這一筆錢在支付寶內和你進行很多次的交易很多次操作。最後只有我在需要把這一筆錢提出來的時候我才需要再去銀行也就是比特幣上面排一次隊,做一次記錄操作。

我們可以簡單地這樣來理解這兩個網路的作用。其中的兩個核心概念一個是RSMC(Recoverable Sequence Maturity Contract)相當於一個保證金和 HTLC(Hashed Timelock Contract)。

前者解決了鏈下交易的確認問題,後者解決了支付通道的問題。這就是閃電網路。

雷電網路就可以理解為一種離線縮放解決方案,用於在Ethereum塊鏈中執行符合ERC20標準的令牌傳輸。 它是Ethereum的Bitcoin閃電網路版本,可實現近即時,低費用,可擴展和隱私保護的付款。

不同點是雷電網路除了可以支持以太幣以外也可以支持所有ERC20標準的令牌傳輸。

下面一個是0x協議。

0x協議,全稱OxProject。0x是一個點對點交易的開源協議,以促進以太坊區塊鏈中ERC20代幣的交易。

該協議旨在作為開放標準和通用構建模塊,推動包括交易所功能的去中心化應用(DApps)之間的互操作性。

0x是基於以太坊區塊鏈的去中心化交易所開源協議。這個協議是通過以太坊的智能合約來創建的,它可以讓任何人都能開設和運行去中心化交易所。

0x是基於以太坊區塊鏈的p2p的ERC20代幣交易所協議。它有標準的開源協議、通用的創建區塊,在分散式應用中實現交易功能的互操作性。基於0x協議的去中心化應用可以進入公開的流動池,或創建自己的流動池,並收取一定的手續費。

介紹完這些項目和技術的基本情況,下面這個圖就是一整個的對比。

第一個是賬戶設計,比特幣的賬戶設計是UTXO,是以餘額,就像是我的錢包里有120塊錢,你這個東西10塊錢,那麼我就拿10塊錢出來買就好了。其他的基於賬戶的就像微信支付這樣的,要支付首先我要看是否有這個賬戶,並且這個賬戶是否有足夠的餘額,在這兩者都滿足的情況下,我才能完成這一筆交易。

下面很大一個區別就是他們每一個的共識演算法都是不一樣的,比特幣是工作量證明機制,我只要滿足了我的工作量,誰第一個算出來誰就獲得這個計量群。

以太坊現在還是用的工作量證明機制,在未來的話他會用到POS,也就是說我的賬戶上如果有以太坊的幣的話,是根據我的幣的數量和和我存放幣的時間,那麼我可以獲得一個相應比例的降低難度。如果我的幣多,擁有的時間長,那麼我這一次算的難度就會減小,就可以更快的算出這個東西,就可以更快的獲得我的區塊。

EOS的DPOS就是委託權益證明機制,就是我可能會先投出21個節點,後面所有的記賬的任務都由這21個節點來做,那麼他們之間就是一個合作的關係,而不像前面兩個都是競爭的關係。

最後一個PBFT是一個拜占庭容錯演算法,這個的問題是它需要兩兩之間都可以互相通信,所以不適合在公網上使用,因為會增加網路成本。

最後面的智能合約C++/JAVA等語言對於程序員會更加友好,因為他們的功能更加完善,而Solidity則是需要自己完善很多的功能。

那在介紹完前面的內容之後,我們以兩個例子為例,來分析洗一下如何在實際的開發過程中,怎麼去選擇我們的區塊鏈。

第一個例子是:

我們可能在保險公司買了保險,那麼在面對保險公司的懷疑時,因為我們把數據放在了區塊鏈上,保證了數據的真實性,很多的問題因為這個被實時共享的信息而被解決,也不用擔心數據的有效性問題和安全性問題。這個時候很重要的一點是數據上鏈時候的真實性,就是我們要保證這個數據是真實的,此時每一個上鏈節點的身份是都是需要保證是真實的我們知道的。所以在這種情況下我們需要知道網路成員和上鏈人員的身份。同時我作為病人,數據的選擇公開性也是需要考慮的,這個時候更適合的是選用聯盟鏈即Fabric裡面的Membership Services可以幫助我們解決很多在身份認證上面的一些問題。

第二個例子是:

我們經常會看到很多籌集資金的項目,那麼在這些項目中,資金的去向,我們資金總數的真實性也是很重要的,把數據放在區塊鏈上,可以保證我們的資金的去向,可以保證公益項目的成功開展。

這樣的話可能就會選擇以太坊,一是因為有智能合約,可以保證我們的一開始輸入的金額的鎖定,以及後續的一些功能,我們都可以用智能合約的編寫來實現。第二個是以太坊的價值是被公眾普遍認可的,最後是所有數據公開透明,所有的交易都可以在以太坊上面查到。所以在這樣的情況下,我們更傾向於使用以太坊的官網來事先這樣一個公益眾籌平台項目。

那我今天所有的內容就結束了,謝謝大家。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CTO區塊鏈 的精彩文章:

TAG:CTO區塊鏈 |