什麼是 Solana Program Library?
Solana 是一條高速的可程式化區塊鏈,讓開發者能夠建構並部署去中心化應用程式。Solana 維護著一個專屬的文件庫,稱為 Solana Program Library——這是一組預先編譯、部署並優化過的程式(即智能合約),可用於 Solana 區塊鏈上。
在這篇文章中,我們將探索 Solana 的世界,並了解如何運用 Solana Program Library 快速進行開發。無論你是 Solana 新手還是經驗豐富的開發者,都能透過 SPL 輕鬆建立並部署自己的自訂代幣或去中心化交易所。
Solana 中的程式是什麼?
Solana 中的程式是儲存在稱為帳戶的緩衝儲存空間中的可執行程式碼,可透過交易來執行,類似於 Ethereum 或其他可程式化區塊鏈上的智能合約。 然而,與 Ethereum 不同的是,Ethereum 將程式與狀態一併儲存在智能合約中,而 Solana 採用的是無狀態程式模型,將資料與程式分別儲存在帳戶中。
Solana 中的帳戶是什麼?
根據 Solana 文件的說法:「帳戶是 Solana 帳本中的一筆紀錄,可以是儲存資料,也可以是可執行的程式。」
可以把 Solana 想像成一個資料庫,帳戶就是資料列,公鑰扮演 ID 的角色,而值則是帳戶中儲存的資訊。這些資訊可以是程式(即智能合約),也可以是程式的資料/狀態。
帳戶由唯一的公鑰(256 位元組)識別,其形式通常類似於:「DM6n1qcUCLzJ1RaAuA4gUbBZ9sfHP6KvEwX8oExQqPhk」。
Solana 在邏輯上將程式碼與其資料分開,因此存在兩種帳戶類型——可執行帳戶與不可執行帳戶。
1. 可執行帳戶
只儲存不可變的程式碼、被標記為「可執行」的帳戶。
2. 不可執行帳戶
這類帳戶儲存程式可能會使用到的所有資料,包括變數、資產以及程式的狀態。雖然任何人都能讀取這些帳戶中的資料,但只有程式的擁有者(部署者)能夠變更它。
這些帳戶由驗證節點維護,驗證節點會收取一種稱為「租金」的維護費用,以換取儲存上述資訊所需的記憶體空間。租金以 lamports 支付——這是 SOL(Solana 的原生代幣)的最小計價單位。
Solana 之所以將程式碼與程式資料分開維護,是由於一套名為 Sealevel Parallel Runtime 的系統。
什麼是 sealevel parallel runtime?
Sealevel Parallel Runtime 是 Solana 對平行交易處理系統的實作。 像 Ethereum 這類傳統的單執行緒區塊鏈,一次只能處理一筆交易,以避免並行問題。這是因為 Ethereum 智能合約是有狀態的——意味著狀態與程式碼耦合在同一個合約中。
在 Sealevel 的協助下,Solana 能夠並行處理數千筆不衝突的交易。透過運用多個驗證核心,Solana 還能以 400 毫秒的區塊時間,達到最高 50,000 Tps 的執行能力。這之所以可行,是因為交易指令本身是無狀態的,且會事先決定要修改哪個帳戶的資料。因此,不共用同一帳戶資料的程式可以同時執行。
Solana 有哪些類型的程式?
Solana 的生態系統由兩種截然不同的程式類型組成——原生程式與鏈上程式。我們來分別看看這兩種。
什麼是原生程式?
原生程式負責實作 Solana 網路的核心功能,例如管理帳戶儲存空間的分配、建立新帳戶、處理交易,以及執行 Solana 網路的規則。
原生程式是 Solana 核心區塊鏈模型不可或缺的一部分。它們通常以 Rust 和 C/C++ 等低階語言撰寫,這些語言針對效能與安全性做了優化。原生程式可以被任何程式/使用者呼叫,這一點與作業系統中的核心層級程式不同——後者無法被使用者直接呼叫與存取。
這些程式的更新只能作為核心區塊鏈升級或叢集升級的一部分進行,以新增功能、修復錯誤或改善效能。
有許多原生程式有助於保護驗證器的安全,其中一些包括:
1. System program
System program 負責建立新帳戶、在兩個帳戶之間轉移 SOL、分配帳戶所有權,以及執行更多此類帳戶管理操作。
2. Berkeley packet filter (bpf):
Berkeley Packet Filter 負責處理鏈上程式的部署、升級與執行。
3. Stake program
Stake program 負責管理 Solana 區塊鏈上 SOL 代幣的質押(staking)。
什麼是鏈上程式?
鏈上程式是使用者撰寫的程式(即智能合約),直接部署在區塊鏈上。 這些程式的範圍可以是 dapp、交易所、練習用合約、多簽錢包的實作,或任何其他一般性的程式。
與原生程式不同的是,鏈上程式並不構成 Solana 叢集的核心。相反地,它們是由開發者建立並部署在 Solana 區塊鏈上的自訂程式。這意味著鏈上程式對於 Solana 區塊鏈的運作而言並非必要。
它們是建構在原生程式所提供的核心基礎設施之上,讓開發者能夠在 Solana 區塊鏈上建構各式各樣的應用程式與服務。
程式所互動的資料儲存在獨立的資料帳戶中,並透過指令以引用的方式傳入。只有帳戶擁有者才能升級程式資料。

什麼是 Solana Program Library?
Solana Program Library(SPL)是一組預先撰寫、模組化的程式集合,可用於在 Solana 區塊鏈上建構去中心化應用程式。SPL 的目標是透過提供一組可重複使用、模組化的元件,讓開發者更容易建立應用程式,這些元件能輕鬆整合進他們的應用程式中,減少開發者從頭撰寫複雜程式碼的需求。
因此,SPL 讓開發者能夠採用「積木」的方式來建構應用程式,每個元件都能輕鬆整合進應用程式中。
SPL 包含多個鏈上通用程式,其中 Token program 及其各種變體最為普遍,可以幫助你將它們整合進自己的專案,而不必從頭實作。
SPL 的先決條件
要與 SPL 互動,你可以選擇 CLI 方式,或是較常見的 JS 方式——後者會使用 solana/web3.js 讓你的 JavaScript 程式碼與 Solana 區塊鏈互動。
要與任何 Solana 叢集互動,你也必須設定好 Solana CLI(命令列介面)。對於新手開發者來說,CLI 或許不是最友善的工具,但它提供了對你 Solana 帳戶最直接、最安全的存取方式。此外,CLI 也是 Solana 核心開發者最先部署新功能的地方。
什麼是 SPL token program?
SPL Token program 是 Solana 區塊鏈上同質化與非同質化代幣的通用實作。 它提供了一套介面與詳細的實作,讓開發者能夠建立自己的代幣。該程式碼原生以 Rust 撰寫,其自動產生的綁定則有 C 與 JavaScript 版本。原始碼可在 SPL GitHub 儲存庫中取得。
在 Ethereum 中,ERC20 Token program 的運作方式與 Ethereum ERC-20 合約不同。讓我們透過一個例子來理解這個差異:
假設你想在 Ethereum 區塊鏈上發行三種不同的代幣。要這麼做,你必須為每個代幣分別部署 3 個獨立的合約。每個代幣合約都會各自追蹤自己的狀態(例如餘額與轉帳紀錄)。
而在 Solana 中,則不需要部署三個獨立的 token program。相反地,你可以部署一個通用的 token program,讓它在多個帳戶上運作(例如鑄造帳戶與接收帳戶)。
鑄造地址(mint address)將唯一識別代幣的類型。這項資訊可以作為參數,傳遞給一個已經部署在 Solana 鏈上、單一靜態的 ERC20 程式實例。
如何使用 SPL token program 建立同質化代幣
透過 SPL Token Program,你可以透過幾個步驟建立自己的同質化代幣。在深入了解 Token program 之前,請確認你已設定好 CLI 錢包,或是已將 Phantom 錢包連接到 Solana 的 Devnet,並且已空投足夠的 devnet SOL 到你的錢包中。
步驟 1:建立你的同質化代幣
create token 指令是給鏈上 SPL Token Program 的指示,用來建立新的 Token。在代幣成功建立後,我們會收到一個 Token ID 以及交易簽章。不過沒錯,我們仍然需要鑄造它們。
指令如下:spl-token create-token

步驟 2:建立代幣帳戶
用來將與我們代幣相關的資訊儲存在一個獨立的資料帳戶中。這個代幣帳戶由 SPL-Token Program 所擁有,該程式會控制對這些代幣的存取,並搭配 owner 欄位(也就是我們可以用來花費/轉移代幣的 Token-ID)。
由於這是一個資料帳戶,其資料可以透過 Token Program 進行修改,例如新增/鑄造、轉移或銷毀代幣。
建立代幣帳戶的指令如下:spl-token create-account
如下圖所示,我們在建立代幣及其相關帳戶時損失了一小部分 SOL 作為交易手續費。另外請注意,初始供應量為零。這代表我們必須透過鑄造來新增所需數量的供應量。

步驟 3:鑄造所需數量的代幣
要鑄造指定數量的代幣,請執行以下指令:
指令執行完成後,指定數量的代幣就會被鑄造進你的檔案系統錢包中,代幣供應量也會隨之更新。

你可以透過執行以下指令,查看目前的代幣供應量以及與該代幣關聯的帳戶:

現在,讓我們把代幣轉移到我們的 Phantom 錢包——這是 Solana 上一款熱門的錢包。
步驟 4:轉移代幣
計畫是將「x」數量的代幣轉移給接收方——也就是我們的 Phantom 錢包。「fund recipient」負責在接收方尚未擁有代幣帳戶時,為其建立一個代幣帳戶。這個過程稱為建立關聯代幣帳戶(Associated Token Account)。
以下是轉移代幣的指令:

轉移成功後,你會收到一則成功訊息。

你可以透過執行以下指令來驗證轉移結果:*spl-token accounts
注意:如果你執行 token supply 指令,仍然會顯示 2,000 個代幣,因為 supply(供應量)指的是網路中流通的代幣數量,而 balance(餘額)指的則是你的代幣帳戶所擁有的代幣數量。

步驟 5:限制代幣供應量
合約安全性與需求的關鍵環節之一,就是限制代幣供應量。要停用鑄造功能,可以將 mint authority 設為「None」。
停用 token mint authority 的指令:*spl-token authorize mint --disable


步驟 6:銷毀代幣
如果你想減少某個代幣的供應量,可以選擇將其銷毀。
以下是相關指令:spl-token burn

銷毀之後,供應量與餘額都會隨之減少。如範例所示,我們的餘額從 4,978 降到 3,978,供應量則減少至 4,000。

SPL 提供了一份完整的參考指南,說明如何運用 Token program 執行更多操作,例如:
- 將 SOL 包裝成代幣。
- 將代幣轉移給明確指定的接收方代幣帳戶。
- 建立非同質化代幣。
透過 SPL 展開你的 Solana 開發之旅
Solana Program Library 提供了大量預先發布的鏈上程式,可以輕鬆與其互動。透過 SPL,開發者可以專注於自家應用程式的獨特功能,而不必花時間在基本、樣板式的代幣建立程式碼上。
如果你是初學者,想要展開自己的 Solana 開發之旅,第一步就是探索 SPL 以及 Alchemy 的 Solana API,並申請一個免費的 Solana RPC 節點帳戶。這些工具將幫助你快速讓自己的程式運作起來。
相關總覽
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 開發者產品與工具,並提供資源、社群與卓越的支援。