遠觀從中本聰提出比特幣,再到v神提出以太坊,至今正好過去十年。區塊鏈技術從一個小規模的加密貨幣實驗,發展到每天有數百萬、數千萬帳號參與的大規模分散式www.cppcns.com應用。區塊鏈的一個重要方向是利用數字貨幣與傳統銀行和金融市場做對接。值得可喜的是越來越多的人蔘與到行業中必然會引入更多的資金並推動區塊鏈程式設計客棧更好的發展,與之相對應,對於現有區塊鏈2. 0 基於以太坊實現的效能要求也將隨之升高。
當下,以太坊的效能提升面臨多項瓶頸,區塊鏈技術革新的需求應運而生。相信下一個牛市之前,區塊鏈將會有顯著的改善與提升。khipu對以太坊所面臨的問題進行探索與革新更顯現出了必要性和前瞻性。
以太坊的瓶頸究竟在**?
我們把以太坊作為典型案例,是因為它是在通往分散式計算終極形態的道路上不做出任一項妥協的區塊鏈實現。那麼,究竟以太坊在單節點上執行區塊的極限在**?瓶頸又在**呢?
以太坊對於企業應用來mzeumelozw說,當前的主要瓶頸是tps。tps 的提升,一個方案是分片,比如以目前的處理能力(tps理論值 25 左右),100 條分片鏈就可能達到 2,500 tps,代價是原來比如能有 5 萬個節點背書一條鏈,現在變成每條鏈只有 1/100 ,也即 500 個節點,tps 上去了,但安全和可信度下降。所以提升單鏈的 tps (也即單節點的 tps)是最關鍵的,比如提升到 1,000 tps,那麼10 條分片鏈就可能達到 10,000 tps,這時每條鏈仍然保證 5,000 個節點背書。tps關係到cpu的提升,現在只能單執行緒序列執行交易,只有實現並行執行交易的能力才能達到cpu突破程式設計客棧。
區塊內合約並行執行的難度在於我們並不預先知道合約彼此之間的依賴關係。以太坊合約可能存在併發競態的地方體現在對同一地址的account, storage和evn code的存取。假如讓使用者在編寫合約時識別和標明會發生競態衝突的地址範圍,從以上三種可能出現的競態來看,讓使用者識別和標明並保證不出錯且無遺漏顯然是不現實的。競態究竟是否會出現、在何處出現、在什麼條件分叉下會出現,只有當確定性地獲得涉及的當前狀態後才可能作出判斷。這種判斷,以目前的合約程式語言,幾乎不可能通過對**的靜態分析來獲得完全正確且無遺漏的結果。
但這並不意味區塊內合約的並行執行一定不可能做到。有意思的是這個問題以太坊提出來好幾年了,但並沒有人真正去嘗試一下。其實,目前這個問題更是個工程問題而非理論或設計,在工程實施過程中能摸索到設計中存在的問題,接下來才能提出更好的設計。
khipu突破2. 0 瓶頸,解決實際困難
khipu 領先在這方面作出了較全面的嘗試,並完成了工程實現。
khipu 的實現方案是每條交易都從前一期區塊的世界狀態開始,分別並行執行,在執行過程中記下所有理想經歷路徑上遇到的以上三種競態。在並行階段結束後,轉入合併階段。合併階段開始逐條合併並行的世界狀態,每合併一條交易時,先從記錄下來的競態條件中判斷是否與前面已經合併的競態條件有衝突,如果沒有,直接合並;如果有,則將這條交易以前面已經合併的世界狀態為起點再執行一次。最後合併的世界狀態,將用區塊的雜湊做最後的校驗,這是最後一道防線,如果校驗有誤,則放棄前面的並行方案,將區塊內的交易重新按序列執行。
khipu 在這裡引入了一個並行度指標,即某一區塊內能夠不需要再次執行就可以直接合並結果的交易的比例。從 khipu 實際測試的結果看,這個並行比例平均可達 80%。
總體而言,如果計算任務可以被完全的並行化,單鏈的可擴充套件性就會是無限的:你可以往每一個節點裡新增更多的 cpu 核心數量。若事實不是這樣,則最大的理論速率就受限於安達爾定理(amdahl’s law):你能給系統進行提速的極限取決於那些不能進行並行化的部分的倒數。如果你可以進行 99% 的並行化,那麼你就可以提速到 100 倍;但如果只能實現 95% 的並行化,那麼就只能提速到 20 倍。在以太坊的例子中,若有 80% 的並行化,則有 20% 是不能並行化的,那麼 20%的倒數即 5,所以khipu可提速的極限是 5 倍。
以太坊的另一個侷限在於單機在有上一級trie node時的存取效率,這個漏洞使得以太坊在 2016 年遭受ddos的攻擊。khipu在分析現有的儲存引擎漏洞以及區塊鏈資料特點後,專門開發了一個適合區塊鏈kv資料的儲存引擎kesque。新型的引擎測試結果表明對於上億規模的以太坊kv資料記錄,發生衝突碰撞的概率只有千分之一。那麼在99%的情況下,給定一個key,磁碟io最多隻要一次就可以載入到準確的對應記錄。這個新設計的儲存引擎,在處理上億以太坊典型資料時,隨機讀的能力比 leveldb 高出一個數量級。
khipu成為目前世界上最快的以太坊實現
khipu 對於以太坊交易並行執行及專門設計的儲存引擎kesque的優化,使得khipu在一臺 32g 記憶體,sata ssd 硬碟、 intel xeon e3-1231 v3 @ 3.40ghz 四核 cpu 的機器上,批量處理 640 多萬號的 6184 個區塊,khipu 的效能達到了:每秒處理 4.11 區塊,實際 384 tps,每秒能執行 23.5 mgas,並行度 80%,處理速度為 rust 語言開發的 parity-2.1.5 的 2 倍,成為目前世界上最快的以太坊實現。
khipu並行執行的突破是歷史性的革新,以太坊的效能由此向前邁出一大步,為未來區塊鏈行業發展鑄造了一個新的臺階。khipu也將有效的將自身技術的優勢應用到多種場景中,第一個推出的將是去中心化的khipu搜尋引擎。在此基礎上khipu也會實現更多的應用場景。khipu程式設計客棧技術也會繼續尋求更高的突破,創造更多可能。
本文地址: