Solana 資料帳戶 vs. 程式帳戶
作者 Tau
Solana 是一個去中心化區塊鏈平台,透過獨特的帳戶模型來協調處理流程,目標是實現快速、安全且可擴展。典型的 Solana dApp 架構通常由三種帳戶類型組成:原生帳戶(native accounts)、資料帳戶(data accounts)以及程式帳戶(program accounts)。
本文將聚焦於 Solana 區塊鏈上的資料帳戶與程式帳戶,並探討它們與 Ethereum 上對應概念——Ethereum 智能合約——有何不同。
什麼是 Solana 資料帳戶?
Solana 資料帳戶是 Solana 區塊鏈上的一種帳戶類型,用來儲存代幣、文件或其他任何形式的資訊。 資料帳戶可以儲存狀態,但不可執行。
資料帳戶與其他區塊鏈平台上的帳戶類似,具有餘額,也能接收和發送交易。這些帳戶連同其中繼資料,會標示出擁有者身分以及執行期間可能進行互動的類型。錢包帳戶、mint 帳戶和代幣帳戶都是資料帳戶的典型例子,因為它們持有價值,並隸屬於某個使用者與程式帳戶。
什麼是 Solana 程式帳戶?
程式帳戶是 Solana 區塊鏈上的智能合約,用來執行程式碼,通常是由傳入的交易或時間經過所觸發。 程式帳戶可以與資料帳戶互動,讀取及寫入區塊鏈上的資料。程式帳戶本身無法儲存可變狀態,而是從資料帳戶呼叫這些狀態。
Solana 資料帳戶與程式帳戶的一項關鍵差異在於,程式帳戶只能由其他程式帳戶建立,而資料帳戶則可以由任何開發者或使用者建立。不過,程式帳戶可以用來建立更多程式帳戶,讓開發者能在 Solana EVM 上建立複雜的多層智能合約系統。
資料帳戶與程式帳戶如何協同運作?
資料帳戶可用來儲存程式帳戶所使用的資料,而程式帳戶則能與資料帳戶互動,讀取及寫入這些資料。資料帳戶與程式帳戶在 Solana 區塊鏈上共存並協作,支援廣泛的 dApp 功能與服務。
舉例來說,程式帳戶可用來建立一個簡單的代幣合約,讓使用者能在資料帳戶之間轉移代幣。在這種情況下,程式帳戶負責執行合約邏輯,而資料帳戶則用來儲存代幣餘額。
大致如下:
在這個範例中,我們建立了一個名為「transfer_tokens.wasm」的程式帳戶,其中包含將代幣從一個帳戶轉移到另一個帳戶的邏輯。接著可以使用 invoke 方法,將資料帳戶以及轉帳所需的參數以陣列形式傳入,把資料帳戶與程式帳戶連結起來。
當程式帳戶執行時,會使用資料帳戶中儲存的資料來完成代幣轉帳。在這個例子中,程式帳戶會從代幣帳戶轉出 100 個代幣到接收帳戶。
你可以用自己選擇的任何程式,或是 Solana Program Library(SPL)中的一些現成程式,來測試上述範例展示的程式流程。
Solana 帳戶與 Ethereum 智能合約的比較
Solana 資料帳戶與程式帳戶在概念上與 Ethereum 智能合約相似,但在儲存方式、呼叫方式、執行模型、gas 等方面存在一些關鍵差異。
Solana 資料帳戶與程式帳戶和 Ethereum 智能合約有何不同?
Solana 資料帳戶與程式帳戶在資料儲存方式、合約呼叫方式、執行模型、語言支援以及 gas 機制上,都與 Ethereum 智能合約有所不同。
1. 資料儲存
在 Solana 區塊鏈上,資料帳戶用來儲存資料;而在 Ethereum 區塊鏈上,資料則儲存在智能合約內部。這代表在 Solana 上,資料與操作資料的邏輯是分離的,而在 Ethereum 上,資料與邏輯則結合在同一個智能合約中。
2. 合約呼叫
在 Solana 區塊鏈上,程式帳戶是由傳入的交易、其他程式的呼叫(即跨程式呼叫,cross-program invocations),或時間經過所觸發。在 Ethereum 區塊鏈上,智能合約則是由傳入的交易觸發,也可以被其他智能合約呼叫。
3. 執行模型
Solana 資料帳戶與程式帳戶是由 Solana 網路中的驗證者(validators)執行,而 Ethereum 智能合約則是由個別節點上的 Ethereum Virtual Machine(EVM)執行。
4. EVM gas 與資料量的關係
Solana 資料帳戶可以儲存無限量的資料,而 Ethereum 的智能合約儲存空間則有限,其上限取決於執行時所消耗的 gas 量。
5. 語言支援
Solana 程式帳戶可以用任何能編譯成 WebAssembly(WASM)的語言撰寫,而 Ethereum 智能合約通常使用 Solidity 或 Vyper(一種以 Python 為基礎實作的 Solidity)撰寫。
Solana 資料帳戶與程式帳戶在哪些方面與 Ethereum 智能合約相似?
Solana 資料帳戶與程式帳戶在智能合約功能、去中心化、不可竄改性、透明度以及可程式性方面,都與 Ethereum 智能合約相似。
1. 智能合約功能
Solana 帳戶與 Ethereum 智能合約都可以用來促成交易並自動化流程,例如轉移資產或管理供應鏈物流。
2. 去中心化
Solana 帳戶與 Ethereum 智能合約都部署並執行在去中心化的公開區塊鏈網路上。
3. 不可竄改性
一旦 Solana 資料帳戶、程式帳戶或 Ethereum 智能合約部署到區塊鏈上,就無法再被修改或刪除。
4. 透明度
Solana 資料帳戶與程式帳戶,以及 Ethereum 智能合約中儲存的程式碼與資料都是公開可查閱的,具備透明度與可稽核性。
5. 可程式性
Solana 資料帳戶與程式帳戶,以及 Ethereum 智能合約都具備可程式性,意味著它們可以包含邏輯,並根據特定條件執行相應功能。在 Solana 上,程式帳戶可以建立其他程式帳戶;而在 Ethereum 上,智能合約可以呼叫其他智能合約。
Neon Labs 的 Solana EVM 如何處理程式、帳戶與智能合約?
Neon Labs 的 Solana EVM 是一項工具,讓開發者能使用 Solidity/Vyper 程式語言,在 Solana 區塊鏈上建立並部署 Ethereum 智能合約,方便將現有的 Ethereum 應用程式移植到 Solana。在 Neon EVM 於 Solana devnet 和主網(mainnet)推出之前,Ethereum 應用程式與 Solana 生態系統是不相容的。
Neon EVM 為智能合約提供了一個能像在 Ethereum 區塊鏈上一樣執行的平台,同時也能享有 Solana 區塊鏈上帳戶原本就具備的優勢,例如低 gas 費用與高吞吐量。
Solana EVM 的運作方式,是在 Solana 區塊鏈上模擬 Ethereum Virtual Machine,讓 Ethereum 智能合約能在 Solana 上以類似於在 Ethereum 區塊鏈上執行的方式運作。這代表開發者可以運用他們既有的 Solidity 程式語言知識以及對 Ethereum 生態系統的了解,在 Solana 上發布應用程式。
使用 Alchemy 建構 Solana 帳戶
一個建構在 Solana 上的去中心化應用程式,通常由原生帳戶、資料帳戶與程式帳戶組成。原生帳戶代表 Solana 上的程式,資料帳戶儲存資訊,而程式帳戶則在 Solana 上執行程式碼。如果你想開始建構應用程式,歡迎到 Alchemy 註冊免費的 Solana 開發者帳戶!
相關總覽
Solana2026年7月27日
Solana 節點:驗證者、RPC 節點與自架
說明 Solana 節點是什麼、驗證者、RPC 節點與次級資料系統的差異,以及何時該自架、何時該使用服務供應商。
Solana2026年7月22日
Solana 歸檔資料:如何查詢完整區塊與交易歷史
說明 Solana 歸檔資料:節點為何會修剪歷史資料、哪些 RPC 方法需要歸檔存取權限,以及如何大規模查詢完整區塊與交易歷史。
Solana2026年5月28日
Solana Agent Kit vs GOAT vs ElizaOS:該選哪個框架?
比較 Solana Agent Kit、GOAT 與 ElizaOS:Solana 原生深度、多鏈廣度,或完整的 agent runtime。附程式碼範例與選擇依據。

打造區塊鏈魔法
Alchemy 結合最強大的 Web3 開發者產品與工具,並提供資源、社群與卓越的支援。