MetaForce佛薩奇2.0系統丨MetaForce佛薩奇2.0系統開發(方案及詳細)

Tg_StPv888發表於2023-02-16

  隨機性排程演算法:即針對同一批交易排程產生的交易執行順序是隨機的,即使同一節點針對同一批交易連續執行兩次排程演算法產生的結果也可能不同。此類演算法往往排程速度較快,其難點在於驗證節點如何保證執行順序與提案節點一致並得到相同的執行結果。因此,交易的執行順序必須打包至區塊中並由其他節點據此驗證。


  確定性排程演算法:即針對同一批交易排程產生的交易執行順序是確定的。此類演算法的優點是交易執行順序產生穩定且可復現,因此理論上講交易執行順序的資訊可不包含在區塊內,各驗證節點執行並行排程演算法即可進行校驗。


  主要步驟:


  長安鏈排程模組將所有交易並行執行,並在執行中將所有交易的寫操作都記錄在記憶體快取中;


  After the execution of each transaction,check whether all the keys in the read set are modified by other transactions.If not,write the set of the transaction into effect(ApplyTxSimContext).If modified by other transactions,add the transaction back to the queue to be executed for re-execution;


  待所有交易執行完畢後,透過分析所有交易的讀寫集構建DAG。若交易間存在“讀-寫”、“寫-讀”、“寫-寫”衝突,根據執行時的先後順序構建DAG中的邊。


  因存在衝突的交易執行時間存在隨機性,最終構建的DAG也無法預測,所以此演算法為隨機性排程演算法。在進行衝突檢測時,長安鏈應用了點陣圖等資料結構進行工程最佳化,極大地提升了交易的執行效率。


  Liquid網路核心包裡包含了框架核心介面定義、通用型別定義及概念抽象定義。


  核心包內每個子包說明如下:


  core/basic基礎介面包,包含Starter、Stopper以及兩者組合封裝介面Switcher。


  core/blacklist黑名單介面定義。


  core/broadcast PubSub訊息釋出/訂閱功能介面定義。


  core/discovery節點發現相關介面定義,包含Announcer、Discoverer以及兩者組合封裝介面Discovery。


  core/groupmulticast組播元件介面定義。


  core/handler用於回撥的處理器函式型別定義。


  core/host網路Host介面定義、網路活動事件通知介面定義。


  core/mgr管理元件介面定義,包含連線管理(ConnMgr)、連線狀態維護(ConnSupervisor)、應用協議管理器(ProtocolManager)、應用協議交換機(ProtocolExchanger)、傳送流池(SendStreamPool)、傳送流池管理(SendStreamPoolManager)、接收流管理(ReceiveStreamManager)等介面定義。


  core/network傳輸層網路狀態機相關介面定義,包含傳送流(SendStream)、接收流(ReceiveStream)、雙向流(Stream)、連線(Conn)、狀態(Stat)、撥號器(Dialer)、監聽器(Listener)、網路狀態機(network)等以及相關的其他的介面或型別定義。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70016646/viewspace-2935621/,如需轉載,請註明出處,否則將追究法律責任。

相關文章