理解了區塊鏈的三元悖論,就能理解為什麼大家一直說區塊鏈公鏈項目不能滿足商業需求的論述了。www.emoneybtc.com當前區塊鏈技術主要瓶頸就在於公鏈項目的可擴展性有限,而可擴展性最直接的表征一般采用TPS(Transactions Per Second)來間接描述。
TPS是一個有成熟定義的計算機術語,代表了系統每秒鐘能夠處理的業務數量,是衡量一個系統吞吐量的核心指標。簡單地說,TPS 越高,這個系統的事務處理能力越強,越不容易造成網絡擁堵,在高並發的業務領域和商業級應用場景中有很大的優勢。TPS 越低,意味著系統每秒能夠處理的事務數量越低,如果是在一個支付系統中,交易速度會越慢,對應的交易成本也會越高。由於TPS 是一個量化指標,所以其計算公式是確定的,即:
TPS = 系統並發數/ 平均響應時間
其中系統並發數指系統同時處理事務的最大數量,平均響應時間為系統處理一個事務平均花費的時間,所以不論是區塊鏈結構還是傳統結構,系統的TPS 都由系統的並發數和平均響應時間決定。
在區塊鏈中,TPS可以理解成每秒鐘處理的交易數。眾所周知,btc平均每10分鐘出一個塊,每個塊大小1MB,平均每筆交易的大小為600字節,那麼每個塊平均能夠處理1600筆交易,即TPS=1600/(10*60)=2.67,即使是高峰數據統計,比特幣的TPS也是個位數的,很多資料會以5~7TPS做為BTC的TPS值。
BTC每個塊的平均交易數
而ETH目前仍然是POW的挖礦方式,所以處於20~30TPS區間,即不到百位TPS檔位。熱門的EOS一直以並行百萬級宣傳,主網上線後,研究員們搭載的服務器測試結果並不足1000,隨著DPOS的正常運作,最新資料顯示已經達到3000+,在不考慮並行的情況下,相對中心方式的EOS最終TPS應該也是在千位檔,而並行實現百萬級的概念在看完本報告後相信大家會有一個新的見解。理論上,在相對同等狀態下,ETH POS+sharding應該和EOS的DPOS+LMAX同處於千位檔。
看完區塊鏈項目的數據,我們對比一下Visa的數據:Visa平均處理2000TPS,每日平均峰值可以達到4000TPS,理論上最高能夠支持5.6萬TPS;而Paypal全年處理490萬筆交易,性能可達10萬TPS;淘寶2017年雙十一交易創峰值32.5萬TPS,支付峰值25.6萬TPS。
在傳統集中式系統中,客戶端和服務器端的角色是分離的,即用戶所在的客戶端負責發起請求,然後中心服務器負責接收、驗證、處理等一系列工作,整個系統的數據儲存和記錄也都由中心服務器負責。所以在傳統的集中式系統中,事務處理流程很簡單,由客戶端發出請求,由服務器處理後更新數據庫,即可返回客戶端,是一種集中式數據庫系統。
傳統集中式系統單個事務請求的確認流程
因此在傳統的集中式系統中,不論是系統的並發量還是事務的平均處理速度都和中心服務器的性能有著直接的關系。中心服務器性能越強,內存越大,數據庫訪問速度越快,整個系統的TPS 就會越高。此外,傳輸過程中帶寬的增大,客戶端和服務器端物理距離的減少也可以使得系統平均響應時間減少,從而增大TPS。
而在區塊鏈分布式系統中沒有一個中心服務器來處理事務,每個節點都是一個中心,所以就必須要解決數據分布式存儲的公平性和一致性問題。所謂公平性,就是確保每個節點都能擁有記賬的權利,而不會出現某些節點壟斷記賬。所謂一致性,就是每個節點的數據賬本保持同步更新,這就要求每一條數據都需要經過多個節點甚至全網節點的驗證和確認。
區塊鏈的分布式
概括地說,在區塊鏈分布式系統中,一筆交易從發出請求到確認需要經歷以下步驟:
1)由節點發出交易請求,並且廣播至整個網絡;
2)其他節點接收交易請求,並且驗證,如果驗證通過,則放入待記錄交易列表(交易池);
3)各個節點爭搶記賬權(即搶奪新的區塊),成功獲得記賬權的節點將待記錄的交易請求記入新的區塊中,然後將區塊廣播至整個網絡;
4)網絡中其他節點接收區塊,並且驗證,如果驗證通過,則該節點確認區塊的合理性,將該區塊記錄自己的數據庫;
5)當有超過一定數量的節點都記錄了該區塊,表明整個區塊鏈系統認可了,此時最初的交易請求才算被確認。
在區塊鏈這種分布式系統中,一個事務的記賬權首先需要各個節點基於共識機制進行爭搶,這就需要消耗大量時間。其次,一筆事務還需要經過多個甚至全部節點的反復驗證和確認才能被寫入數據庫,這大大減慢了事務的處理速度。如果某個節點的響應速度很慢,整個系統的處理速度都會被拉低。而在傳統集中式系統中,事務永遠由中心服務器處理,也不需要多個節點的反復驗證和確認,所以區塊鏈的TPS 相較於傳統集中式系統的TPS 普遍要低,並且我們無法單純用強化中心服務器性能的方式來提升整個區塊鏈的TPS。同時,前文也提到淘寶雙十一TPS是有兩個數值的,一個是交易創建峰值,一個是支付峰值,在區塊鏈中,支付峰值才是確認的過程,會顯得更加重要和實際,嚴格的講,區塊鏈TPS的評估應該參考每秒確認交易數量CTPS(Confirmed Transactions Per Second)來描述一個系統的真實性能,不過鑒於公開資料並不嚴格區分TPS的細分定義,也不屬於本報告的重點,所以本報告也只采用TPS來整體描述,僅作對比參考之用。
由此可見,即使中心化的系統由於硬件等各種問題的制約,TPS的峰值不超過10萬級別,而正常日平均TPS也不超過1萬級別(參考Visa),作為一個底層分布式賬本的區塊鏈項目一味追求高TPS或者是宣傳極高TPS就值得大家仔細思考一下了。
考慮到日常應用的需求,區塊鏈主流公鏈項目BTC、ETH以當前最高1000TPS的目標也落地困難,於是便產生了可擴展性的討論。至於眾多號稱TPS破萬,甚至百萬的項目,在閱讀完本報告後,相信大家會有個更清晰的認識和理解。