Move 的演進 (Evolution of Move)
Move 誕生於 Diem,用來管理數位資產,其最初的儲存模型反映了該區塊鏈的設計。儲存是以帳戶為基礎的:每一份資料——稱為資源 (resource)——存在於某個帳戶地址底下,而模組只能在與其互動的帳戶底下儲存、讀取、移除資源。在最初的形式中,Move 有專屬的全域儲存運算子來處理這件事,而資源只有在該帳戶簽署交易同意後,才能被放置到該帳戶底下。
這個模型帶來了實際的後果,讓日常的資產操作變得出奇地困難:
- 沒有內建的轉帳操作。如果 Alice 想把資產 X 傳送給 Bob,定義 X 的模組必須自行實作轉帳邏輯:Bob 必須先在自己的帳戶底下發布一個「空的」資源(同意接收該資產),Alice 的交易才能把餘額移入其中。每個模組都得重新發明這套流程。
- 資產是依型別、依帳戶儲存的。管理一個異質集合——例如單一帳戶持有多種不同種類的物品——需要為每個新型別投入大量心力與事前準備。
- 由於資料存在於帳戶底下,資產本身沒有自己的身分:無法指向「這個特定的物品」並在不同擁有者之間追蹤它。
Sui 透過圍繞資產本身重新設計儲存模型,解決了這些問題。在 Sui 中,儲存的單位不是帳戶,而是物件 (object)——一個具有自己獨一無二識別碼、且擁有者由系統記錄的型別化值。所有權與轉帳成為原生操作:Alice 可以直接將資產 X 轉移給 Bob,而不需要 Bob 事先準備任何東西,且 Bob 可以持有任意數量、任意型別的資產。原始 Move 中的全域儲存運算子在 Move on Sui 中並不存在——在使用物件 (Using Objects)章節中,我們會看到它們被操作物件的函式所取代。
這些改變為物件模型 (Object Model) 奠定了基礎,我們將在下一節中說明。
總結 (Summary)
- 原始的 Move 使用以帳戶為基礎的全域儲存:資源存在於帳戶地址底下,沒有原生的轉帳操作,且異質集合難以管理。
- Sui 圍繞物件重新設計了儲存——具有自己身分且由系統追蹤所有權的型別化值——使轉帳成為原生操作。
- Move on Sui 移除了全域儲存運算子,改以物件儲存函式取代。
延伸閱讀 (Further Reading)
- Sam Blackshear 撰寫的 Why We Created Sui Move