【Fractal】區塊鏈擴展性系列一:是什麼限制了吞吐率?

區塊鏈的鏈式結構爲參與者提供了一個全局一致的帳本(包括內容和順序的一致),可是爲了不過多的分叉,保證系統的安全性,經典的區塊鏈項目(BTC、ETH)對於出塊間隔時間和區塊大小都有較爲嚴格的限制,致使了其吞吐率的低下。安全

影響區塊鏈吞吐率的因素直觀而言有三點:其一是出塊間隔,即先後兩個區塊出現的時間差;其二是區塊容量,即每一個區塊中存儲的數據量;其三是區塊的並行性,即並行生成多個有效區塊。若是想要提升區塊鏈的擴展性,就要從這三個方面入手。減小出塊間隔能夠在單位時間產生更多區塊,增長區塊容量則可使得單個區塊包含更多交易,並行生成多個有效區塊也能夠在單位時間獲得更多區塊,所以這三個措施都能提升區塊鏈的吞吐率。網絡

可是因爲區塊鏈的安全性的要求,若是過分減小出塊間隔或者增長區塊容量,會致使區塊鏈安全性的降低。同時,因爲區塊鏈的鏈式結構,經過並行來提升吞吐率也十分的困難。下文將詳細解釋緣由。區塊鏈

減小出塊間隔

在真實的區塊鏈系統中,區塊傳播是依賴P2P的廣播協議實現的,所以存在較大的網絡傳播延遲。一個區塊傳遍整個網絡大多數節點的時間延遲一般在幾秒甚至幾十秒。爲了保證系統的安全性,出塊時間間隔必須足夠大。若將出塊時間間隔下降,則區塊鏈系統可能會產生較長的分叉,從而破壞系統共識的安全性。spa

假設將區塊傳播路徑上的節點進行線性排列,在區塊高度爲100時,第一個節點發出一個區塊B1,而後逐個向後面的節點進行傳遞。若是在B1到達全部節點以前,最後一個節點在同一高度也產生了一個區塊B2,而且向前傳播,如圖1所示。
圖片描述
圖 1.區塊在節點中的傳播orm

這樣,前一部分節點在高度100時的區塊爲B1,剩餘節點的區塊爲B2,則區塊鏈產生了分叉。若是這種現象出現的機率很小,則能夠經過長度競爭最終肯定並保留有效的區塊。若是區塊產生時間間隔很小,則這種現象不斷髮生,極端狀況是在同一高度還沒有競爭獲得最終結果時分別有新的區塊繼續產生,則分叉長度會不斷累積從而破壞共識的一致性。blog

下降區塊產生間隔還有其餘的反作用。當新節點沒有在全網同步時,誠實節點會在不一樣的分叉嘗試產生新的區塊,而這些結果最終經過競爭僅有一個最長鏈獲得保留,所以在同步的過程當中誠實節點的算力被浪費了。出塊間隔越小,誠實節點在無效分叉產生區塊所浪費的資源比例越大,所以分叉致使了誠實節點等效算力的降低。形成的結果是,攻擊者能夠用小於 50% 的算力來攻陷區塊鏈系統。圖2分析了區塊產生速度與系統安全門限比例之間的關係。圖片

圖片描述
圖 2.區塊間隔與安全性的關係資源

擴大區塊容量

擴大區塊容量是提升吞吐率的另一個直接方案,但直接的區塊擴容可能形成兩個問題。get

其一,隨着區塊的增大,其廣播到全網中全部節點的時間(網絡延遲)會線性增加,如圖3所示。根據前面的分析,網絡延遲的增長會致使更頻繁的分叉,影響系統的安全性。所以區塊擴容也將間接下降系統的安全性,爲了彌補安全性損失要增長出塊的時間間隔。同步

圖片描述

圖 3.傳播時延與區塊容量的關係

其二,當區塊容量增大,則出塊的節點所擁有的權利(打包交易的數量)隨之增大,這樣會致使某種意義上的中心化。能夠想像,若是塊大小無限大,那麼這就是一箇中心化的系統。

並行有效出塊

區塊鏈的鏈式結構,只容許區塊串行地打包交易,在不考慮網絡延遲和攻擊者的狀況下,全部的節點會在相同的區塊後面進行挖礦工做,當新的區塊被挖出後,節點放棄當前的挖礦工做,轉而在新區塊後進行挖礦,即區塊是一個接着一個產生的。

分片技術和閃電網絡都是嘗試經過並行提升區塊鏈的吞吐率,前者將網絡上的交易分紅不一樣的碎片,由不一樣的節點單獨處理,這使得節點能夠並行運算;後者經過使用狀態通道,將線上的交易在線下進行,從全局看,線下的交易並行處理從而提升系統的吞吐率。但兩種作法都存在必定的問題。

所以區塊鏈系統提升吞吐率是一個較爲複雜的綜合性問題,咱們會在以後的區塊鏈擴展性系列文章中詳細講述目前的吞吐率提高方案。

Facebook:https://www.facebook.com/Frac...
Twitter:https://twitter.com/fractalblock商務合做:Fractal@fractalblock.com​​​​

相關文章
相關標籤/搜索