Skip to main content

快速路徑與共識 (Fast Path and Consensus)

物件模型允許依物件的擁有權類型而有不同的交易執行路徑。交易執行路徑決定了網路如何處理與驗證該交易。在本節中,我們將探討 Sui 中不同的交易執行路徑,以及它們如何與共識機制互動。

併發挑戰 (Concurrency Challenge)

區塊鏈技術的核心面臨一項根本性的併發挑戰:在去中心化環境中,多方可能同時嘗試修改或存取同一份資料。這需要一套系統來排序與驗證交易,以支援網路的一致性。Sui 透過共識機制來解決這項挑戰,確保所有節點對交易的順序與狀態達成共識。

考慮一個市場情境:Alice 和 Bob 同時嘗試購買同一項資產。網路必須解決這個衝突以防止雙重花費,確保最多只有一筆交易成功,另一筆則被正當地拒絕。

快速路徑 (Fast Path)

然而,並非所有交易都需要相同層級的驗證。如果 Alice 將她擁有的物件轉移給 Bob,一開始就不會有其他方碰過這個物件——Alice 是它唯一的擁有者。沒有需要解決的衝突,因此網路不需要將這筆交易與網路中所有其他交易一起排序。只存取帳戶擁有物件的交易會走快速路徑 (fast path):它們略過完整的排序,並被快速處理。這是單一擁有者模型的直接回報——獨佔存取徹底消除了併發問題。

不可變物件同樣符合快速路徑的資格。由於凍結物件永遠不會改變,任意數量的交易都可以同時讀取它,而不需要任何排序。

共識路徑 (Consensus Path)

存取共享物件的交易,正是共識存在的用途:多方可能同時嘗試修改同一個物件,因此網路必須就這些修改的順序達成共識。這類交易會走共識路徑 (consensus path)——它們在執行前會由共識協定進行排序,以維持所有節點間狀態的一致性。

Party 物件也會走共識路徑,儘管它們只有單一擁有者——這正是它們的取捨:只有擁有者能存取,但需要共識排序。

一個重要的細節:Sui 上的共識是依物件排序,而非全域排序。兩筆交易若碰觸到兩個不相關的共享物件,彼此並不會互相競爭——只有存取同一個共享物件的交易才需要相對排序。這正是 Sui 能夠平行執行不衝突交易的原因。

單一筆交易可以混合輸入:如果它同時存取擁有物件與共享物件,就會走共識路徑——執行路徑由「最慢」的輸入決定。在設計應用程式時,這一點值得謹記:你的核心狀態是共享物件,還是完全留在擁有物件內,將直接影響使用者交易的執行方式。

物件擁有的物件 (Objects Owned by Objects)

最後,被其他物件擁有的物件會遵循其父物件的執行路徑——子物件只能透過其父物件存取,因此存取它就意味著要先存取父物件。如果父物件是共享的,處理子物件就需要共識;如果父物件是帳戶擁有的,整條鏈都符合快速路徑的資格。

摘要 (Summary)

  • 快速路徑 (Fast Path): 只涉及帳戶擁有或不可變物件的交易會被快速處理,不需要完整的共識排序。
  • 共識路徑 (Consensus Path): 涉及共享或 party 物件的交易會由共識排序——依物件進行,讓不衝突的交易可以平行執行。
  • 混合輸入 (Mixed Inputs): 同時涉及擁有物件與共享物件的交易會走共識路徑。
  • 物件擁有的物件 (Objects Owned by Objects): 子物件會遵循其父物件的執行路徑。

下一步 (Next Steps)

這結束了物件模型的概念導覽:你已經了解什麼是物件、誰可以擁有它,以及擁有權如何形塑執行。下一章——使用物件——會將這些概念轉化為程式碼:如何在 Move 模組中定義物件,以及如何轉移、共享與凍結它。