隨着BTC系統的問世,區塊鏈技術在這10多年的時間裏被愈來愈多的人所認知,區塊鏈構築了數字經濟時代的價值網絡基礎。而區塊鏈公鏈背後的經濟模式、共識機制、密碼學等技術問題中,一直存在着一個有着持續熱度的「三元悖論」問題(也稱「不可能三角」問題),即在區塊鏈公鏈中,沒法將「去中心化」(Decentralization)、「安全性」(Security)、以及「可擴展性」(Scalability)三種特性很好的兼備。算法
事實上,在「三元悖論」中,三種特性都有各自獨立的技術發展路線,犧牲某一種特性,並不表明能夠換取另一種特性的提升,只是在現有技術條件下,一個區塊鏈系統想要將這三種特性最大化的融合,一般都會有所取捨;並且,若是拋開「三元」中的「去中心化」和「安全性」,那就根本談不上「區塊鏈「和」系統「,因此咱們看到這些年來,各區塊鏈公鏈系統在試圖突破「三元悖論」問題時,最常優先考慮的,就是經過提升TPS,來優化系統的性能。數據庫
因此做爲這個專題系列的第一篇文章,我想首先從可擴展性方面出發,講講目前可以帶來區塊鏈系統「可擴展性「提高的一些方法和技術路線;但願在閱讀這篇文章後,你們再看到相似「千萬TPS」之類的宣傳口號時,就會有更加深刻的理解。安全
在講可擴展性以前,咱們先來了解下可擴展性當中的核心指標「TPS「這個概念:網絡
TPS(Transaction Per Second)指的是系統平均每秒處理的交易數量,對一個區塊鏈公鏈系統來講,TPS是衡量系統性能的重要指標;TPS是計算出來的,即用一段時間的總的交易數除以這段時間的秒數,獲得的是一個平均值,這個平均值並不表明系統每秒都會處理等量的交易,系統實際在每一個時間段處理交易的數量是有高有低的,以比特幣爲例,由於比特幣的兩個區塊間隔時間爲10分鐘(600秒),若是在這段時間,打包塊裏面有2400筆交易,那比特幣的TPS就是2400/600=4,是的,實際上比特幣的TPS確實只有4左右。架構
比特幣歷史交易數量圖(上圖來自京東智聯雲BDS區塊鏈數據服務)併發
做爲對比,這裏給你們一些數據參考:Visa在1600TPS左右(峯值56000TPS),網聯雙11活動峯值在10萬TPS左右,目前主流的區塊鏈系統以太坊目前在20TPS左右,而中心化的區塊鏈系統XRP也只有1500TPS左右。異步
因此,在迴歸到現實應用中時,區塊鏈公鏈系統的TPS是一個沒法迴避的問題。ide
理論上,當在帶寬無限大、數據傳輸延遲無限小、計算能力無限強的狀況下,區塊鏈系統中數據達成共識的效率能夠無限高,TPS也就能夠無限高;但實際狀況中,參與區塊鏈系統大部分用戶的帶寬、計算機處理能力都是很是有限的,因此對於區塊鏈公鏈系統設計者來講,在保證網絡的性能最優的同時,將用戶網絡能耗降至最低,成爲了一項很是大的挑戰。性能
近幾年來,各公鏈項目方都爲了提高系統TPS而在技術上另闢蹊徑,行業內也不斷出現一些與之相關的專業術語,好比POW、POS、跨鏈、分片、DAG、異步共識組、零知識證實等。區塊鏈
NSDI上關於異步共識組的論文
而在這些技術中,目前提高區塊鏈公鏈系統可擴展性(主要是提高TPS)的主流方式大體爲如下幾種:一是改變共識機制,二是更換DAG網絡,三是採用跨鏈技術,四是採用分片技術。
1、改變共識機制:除了BTC系統所使用的POW(Proof-of-Work工做量證實)共識機制外,業內比較流行的還有POS(Proof-of-Stake權益證實)、DPoS(Delegated Proof of Stake委託權益證實)、Algorand(POS升級版,純股權證實)、PBFT(Practical Byzantine Fault Tolerance,實用拜占庭容錯算法)等,若是算上各類「升級版「、」改良版「的話,市面上至少有上百種共識機制可尋,但這些共識機制的出現,大都是爲了改善比特幣所使用的POW所致使的TPS不足,而在改良的過程當中,各共識機制也都採起了各類各樣的權衡與妥協。
因爲BTC系統所採用的PoW歷經10多年的風霜雪雨依然屹立不倒,因此起初不少共識機制都是在PoW的基礎上進行迭代來優化TPS,好比調整區塊大小,改變區塊結構,解耦區塊產生和交易打包過程等,然而這些調整在提升TPS的同時也帶來了一些新的問題,好比增長區塊大小雖然可使單個區塊存入更多的交易,但因爲區塊變大也會讓網絡傳輸延遲變高,從而增長分叉風險;再好比Bitcoin-NG能夠在PoW共識下達到很高的TPS,但也會形成個別節點權力過大的問題等。
基於此,PoS、Algorand等徹底違背PoW初衷的共識機制隨之出現,這些共識機制旨在顛覆PoW機制的「挖礦」概念,並向用戶宣導「系統中最大既得利益者不會去傷害系統」的共識理念(相似於傳統企業中的股東機制),因爲這些機制多或少的犧牲了去中心化,因此用戶基本無須挖礦且沒有繁重的哈希計算過程,故系統能夠很是快速的使用戶參與其中併產生相比於PoW更大尺寸的區塊,所以其TPS表現天然遠高於PoW(有些公鏈項目自稱可達百萬、千萬級TPS)。
2、更換DAG網絡:區塊鏈的基本結構,是以鏈的形式串連區塊,然而,DAG (Directed Acyclic Graph有向無環圖)將鏈式結構更換爲網式結構,取消了交易區塊的概念,更換爲將每筆交易都與其它多筆交易相連(後一筆交易驗證前一筆交易),各交易間相互驗證達成共識,從而實現靠交易量提高DAG總體驗證效率,最終達到提高TPS的目的。
DAG示意圖
不過,DAG的優缺點也都比較明顯,先說優勢,DAG的主要優勢有二,一是在有限帶寬的條件下,DAG能夠經過異步併發的方式記錄更多的數據,從而提高TPS,二是DAG結構避免了傳統鏈式結構在算力過大時的算力浪費,以及易分叉等問題;DAG的主要缺點也有二,一是最後交易的確認時長不可控(依賴不斷產生的新確認交易者)致使的穩定性不足,二是安全性方面沒有經歷過相似比特幣經歷的大規模驗證。
3、採用跨鏈技術:跨鏈分爲多鏈和側鏈兩種方式,多鏈,顧名思義就是採用多個鏈並行的方式進行交易,相較於單鏈方式,多條鏈並行的TPS必定是大於單鏈方式的,但隨着交易量的增長,跨鏈數據的互通需求隨時增多,一筆資金可能在多個鏈上進行流轉,一個帳戶也會在多個鏈上產生交易,這些會帶來管理難度的極大提高,因此,多鏈並行的實現中,計算TPS每每是簡單的累加。隨着預言機等跨鏈技術的成熟,多鏈勢必會有較大的發展前景。
跨鏈示意圖
側鏈技術也被稱爲「鏈下狀態通道(off-chain state channel)」,是在用戶間搭建臨時線下交易通道,全部中間交易都發生在鏈下,主區塊鏈上僅驗證最終狀態,解決同一對用戶的頻繁交易給區塊鏈系統帶來的TPS壓力,間接提高區塊鏈系統的可擴展性。好比有兩個商戶一天內屢次互相交易,可是當一天結束時,卻發現雙方你來我往了1000屢次交易,但來往金額卻恰好相抵歸零,這正是側鏈技術最適合運用的場景。其表明項目閃電網絡(Lightning Network)和以太坊的雷電網絡(Raiden)。不過,須要強調的是,側鏈雖然幫助區塊鏈系統減小了壓力,但它的TPS數量其實不該該計入區塊鏈系統的TPS。
4、採用分片技術:分片技術,即將每一個交易塊分解後的各個分片發佈到區塊鏈網絡中,各分片爲並行狀態,這樣每一個節點沒必要下載所有交易數據,從而大大提升區塊鏈系統的處理速度。須要注意的是,分片技術與跨鏈技術最大的區別是,全部分片仍然基於同一條鏈,所以,在不一樣的分片間高效協同以保持共識的有序性和正確性極具挑戰。
區塊鏈與數據庫分片對比示意圖
分片條件下的TPS計算,應以交易的終局狀態達成爲準。將各分片瞬時TPS累加進行宣傳是常見作法,但缺少實際意義。分片是目前的熱點方向,第一個使用分片技術的是Zilliqa,ETH2.0、Harmony等其餘項目也一直在努力將分片技術集成到區塊鏈系統中。
能夠看到,提升TPS的技術路線各有利弊與挑戰,但願經過京東智聯雲-區塊鏈公鏈「三元悖論「專題系列的文章,你們能夠從「去中心化」(Decentralization)、「安全性」(Security)、「可擴展性」(Scalability)這三個方面去了解區塊鏈公鏈系統的特性,以及在實際應用場景中可以更好的挑選一款合適的區塊鏈系統,去解決一些問題。
京東智聯雲區塊鏈數據服務【BDS】:京東智聯雲將區塊鏈的鏈式、非結構化數據經過技術手段進行結構化存儲,實時同步到高性能數據庫中,並據此推出了一款可視化的區塊鏈數據查詢服務(BDS),幫助用戶完成簡單的條件查詢和複雜的SQL原生查詢。
產品特色:
產品示例:
點擊【閱讀】,便可獲取區塊鏈主流公鏈最新數據