跳至內容
0%

如何建立 Solana 錢包:技術指南

作者:Usman Asim

最後更新:2025年11月14日4 分鐘閱讀

過去幾年,Solana 迅速崛起,成為活躍度最高的區塊鏈網路之一,平均每日有超過 120 萬活躍用戶,每日交易量(非投票)超過 6,000 萬筆。這些活動來自 DeFi、DePIN、機構與企業等各方,交易速度極快,手續費也只需幾分之一分錢。

如果你想在 Solana 上開發並接觸這個快速成長的生態系,從錢包開始會是不錯的切入點。錢包是與任何鏈互動的入口:簽署交易、持有資產、驅動應用程式。

在這份指南中,我們會帶你使用 Alchemy 的穩定 RPC 端點建立一個一般的 Solana 錢包,實現無縫的網路連線,接著再比較一般錢包與智慧錢包的差異。我們先從 devnet 開始,讓你可以測試而不需要花真正的 SOL。

Solana 上錢包的基礎概念

在 Solana 上,錢包的運作方式跟你在 Ethereum 上熟悉的模式不太一樣。Solana 並沒有嚴格區分使用者控制的外部持有帳戶(EOA)與智慧合約,而是把所有東西都視為帳戶(accounts),也就是區塊鏈上的資料儲存單位。這裡的「錢包」通常只是一組金鑰對(公鑰與私鑰),讓你能控制一個或多個帳戶。帳戶可以持有 SOL 代幣、其他資產,甚至是程式(programs)的可執行程式碼(Solana 版本的智慧合約)。

這種統一的設計讓一些有趣的功能得以實現,像是程式衍生地址(PDA),程式可以產生地址,甚至能在不需要使用者私鑰的情況下代表使用者簽署交易。

這比 Ethereum 的模式更有彈性,Ethereum 中 EOA 純粹用於簽署,合約則單獨處理邏輯。若想深入了解 Solana 的帳戶模型,可參考 Solana 官方文件中關於帳戶與錢包的說明。

Solana 錢包大致分為兩類:

  • 一般錢包(以金鑰對為基礎):這是最基本的加密金鑰對,用於簽署交易與管理帳戶。適合用於腳本或測試,但你需要手動處理金鑰與手續費。
  • 智慧錢包(具備帳戶抽象化):這類錢包隱藏了金鑰管理等繁瑣細節,提升使用體驗。智慧錢包支援社交登入(例如用電子郵件或 passkey 登入,取代助記詞)、gas/rent 代付(由他人支付交易手續費)、批次交易(一次執行多個動作),甚至透過可程式化邏輯實現自動化行為。Solana 的設計讓這些功能特別強大,超越了 Ethereum ERC-4337 僅著重於使用者體驗調整的範疇。想深入了解 Solana 的帳戶抽象化,可參考 Solana Cookbook 中關於錢包管理的內容,以及 ERC-4337 在 Solana 上的深度解析。

在本教學中,我們會使用 Alchemy 的 RPC 端點建立一個一般錢包,讓你不需要自行架設節點就能穩定存取 Solana 網路。若要使用社交登入等智慧錢包功能,可將錢包供應商與 Alchemy 的基礎設施搭配使用。

前置準備:設定你的 Devnet 環境

在開始寫程式之前,先確認你已經準備就緒。本教學假設你已具備基本的 JavaScript 知識,但我們會沿途解釋相關概念,讓每個人都能跟上。你需要準備:

  • Node.js(v16 或以上版本)與 npm/yarn:這是在瀏覽器外執行 JS 程式碼的執行環境。如果還沒安裝,可以從 nodejs.org 下載。

  • 像是 VS Code 或 Cursor 這樣的程式碼編輯器:用來撰寫與除錯程式碼。VS Code 是免費的,而且有許多區塊鏈開發相關的擴充套件,可以從這裡設定。Cursor 則像是更酷、具備 AI 功能的 VS Code,可以從這裡了解更多。

  • 基本 JavaScript 知識:範例使用 Node.js 與 Solana web3.js。

  • 一個 Alchemy 帳號:到 dashboard.alchemy.com 免費註冊。建立新的 app,選擇 Solana(測試用 devnet,正式環境用 mainnet),並取得你的 API key。順便也可以啟用像 Sepolia 這樣的 EVM 鏈,以支援混合鏈應用,這對跨鏈應用很有幫助。

  • 一般錢包所需項目:安裝 Solana web3.js library,用於處理金鑰產生、連線與交易。這個函式庫是與 Solana 程式互動的首選工具。

    npm install @solana/web3.js

小提醒:所有內容先在 devnet 上建置。這是主要的測試環境,能完美模擬部署到 mainnet 的情境,讓你測試合約、驗證流程、確認一切正常運作。等你有信心、且已在 testnet 上部署並充分測試後,部署到 mainnet 只需要換掉 RPC URL 即可,不需要更動任何程式碼,直接切換就行。

了解 Solana 的錢包結構

在產生錢包之前,讓我們先退一步,快速說明 Solana 錢包的運作方式。這有助於你理解接下來要進行的步驟為何如此設計,尤其是如果你是從 Ethereum 轉過來的話。

  • 帳戶 vs. 錢包:在 Solana 中,錢包本質上是一組「擁有」帳戶的金鑰對。帳戶就像存放資料的容器:可以儲存你的 SOL 餘額、代幣,或程式碼。與 Ethereum 不同,Ethereum 中 EOA(使用者地址)與合約地址是分開的,但 Solana 模糊了這條界線:所有東西都是帳戶。這代表你可以隨時建立帳戶、分別為它們注資,甚至讓程式透過 PDA 來控制帳戶。產生金鑰時不會自動建立帳戶;你需要注資才能初始化帳戶。若想深入了解,可參考 Solana 的核心概念。
  • 以 rent 取代動態 gas 費:Solana 不像 Ethereum 那樣對每個計算單位收取 gas 費:交易採固定手續費(非常低廉,截至 2025 年平均約為 $0.00025),但如果帳戶餘額低於某個門檻(約每 KB 0.00089 SOL),帳戶就需要支付「rent」以維持資料持續儲存在鏈上。這就像儲存押金一樣:可以預付,或維持足夠的 SOL 以豁免此費用。這樣的機制能透過清除閒置帳戶讓網路保持精簡。交易仍然需要支付手續費,但 rent 是用於資料持久化的獨特機制。可以把它跟 Ethereum 的 gas 做比較,gas 是按每個操作收取,且在壅塞時可能暴增。Solana 的模型則優先考慮速度。詳情可參考 Solana 的 rent 文件。
  • PDA 與可程式化:程式可以衍生出「程式衍生地址」,這些地址看起來跟一般地址一樣,但由程式碼而非金鑰控制,這使得自動簽署等智慧錢包功能得以實現。這種機制比 Ethereum 的合約錢包更深植於 Solana 核心架構之中。

理解這些概念有助於你明白為什麼 Solana 錢包天生就感覺更「可程式化」。這一切都源自於帳戶的彈性設計。

如何建立一個一般 Solana 錢包:逐步教學

一般錢包是最基本的入門設定:一組用於簽署交易的簡單金鑰對。適合用於後端腳本、測試,或是你想要完全掌控而不使用抽象化功能的情境。在本教學中,我們會使用 @solana/web3.js 來產生金鑰對。

接著我們會使用 Alchemy 的 RPC 連接到網路;沒有 RPC 連線,你的錢包就無法查詢餘額或發送交易。

步驟一:產生金鑰對

在 Solana 上產生錢包,代表建立一組全新的加密金鑰對,也就是一對數學上相互關聯的金鑰。公鑰會成為你在 Solana 上的錢包地址,可以自由分享給任何需要向你付款或與你的帳戶互動的人。私鑰(也稱為 secret key)則用來證明你擁有該地址,並讓你能夠簽署交易。

這裡有一個與 Ethereum 重要的區別:在 Ethereum 上,當你產生一個外部持有帳戶(EOA)時,它會立即「就緒」並存在於區塊鏈上。而在 Solana 上,產生金鑰對只是建立了加密金鑰,實際的鏈上帳戶要等到有人為該地址注資後才會存在。這是 Solana 帳戶模型的一部分,帳戶需要具備 rent 豁免餘額才能在鏈上持續存在。

建立一個新的 JS 檔案(例如 regular-wallet.js),並執行以下程式碼片段:

javascript
Copied
import { Keypair } from '@solana/web3.js'; const wallet = Keypair.generate(); console.log('Public Key (Wallet Address):', wallet.publicKey.toString()); console.log('Secret Key:', wallet.secretKey); // Secure this immediately! Never log in production.

用 node.js 執行這個腳本,完成:你已經有一個錢包了。

以下是你應該會得到的回傳結果:

  • 公鑰(錢包地址):這是一組以 base58 編碼的字串,看起來會像 7xj9WkvP6Az8vG5nXJh4Fq3qY8kPqT9wXVZN2xMqGnD4。這是你想收款或與其他應用程式連線、查詢餘額時會分享出去的內容。可以把它想像成你的銀行帳號,公開分享是安全的。
  • Secret Key:這會以 Uint8Array(64 個位元組的陣列)的形式回傳。這是你的私鑰,也是你控制此錢包的加密證明。任何人只要取得這組 secret key,就能簽署交易並從你的錢包轉移資金。絕對不要分享它,也不要把它提交到版本控制系統。

關於 secret key 的關鍵安全實務:

  • 絕對不要在正式環境中記錄它:我們範例中的 console.log 在本機測試時沒問題,但在部署任何正式應用前務必移除。
  • 使用環境變數:將其儲存在加入 .gitignore 的 .env 檔案中,並在程式碼中用 process.env.PRIVATE\_KEY 存取。
  • 考慮使用硬體錢包:若正式應用涉及大額資金,可整合像 Ledger 或 Trezor 這類硬體錢包,將私鑰隔離在安全的硬體裝置中。
  • 儲存時務必加密:如果必須將 secret key 儲存在資料庫或檔案中,請先用強加密函式庫加密。

關於安全最佳實務,可參考 Solana 的安全指南。

步驟二:透過 Alchemy RPC 連接到網路

接下來,使用 RPC 端點將你的錢包連接到 Solana 的 devnet。這個「連線」物件讓你的程式碼能與區塊鏈溝通、查詢餘額、提交交易等等。Alchemy 的 RPC 就像是連接到 Solana 節點的強化代理,負責處理負載平衡,讓你的應用保持穩定回應。

把以下程式碼加入你的腳本中(將 <YOUR_API_KEY> 替換為你在 Alchemy dashboard 取得的 key):

javascript
Copied
import { Connection } from '@solana/web3.js'; const connection = new Connection( 'https://solana-devnet.g.alchemy.com/v2/<YOUR_API_KEY>', // Devnet for testing 'confirmed' // Commitment level: 'confirmed' for speed with some finality ); async function checkBalance(publicKey) { const balance = await connection.getBalance(publicKey); console.log('Balance:', balance / 1e9, 'SOL'); // Convert lamports (1 SOL = 1e9 lamports) } await checkBalance(wallet.publicKey);

這個連線讓你可以檢查錢包是否已注資,並與應用程式互動。執行腳本;如果尚未注資,回應會顯示 0 SOL。完整的 RPC 方法可參考 Solana 的 RPC 文件或我們的 Alchemy Solana RPC 指南。

步驟三:為錢包注資並與其互動

連線建立後,接下來就是實際在鏈上互動。這正是有趣的部分:透過 airdrop 注資(僅限 devnet)、簽署交易等等。這些基本操作讓你能夠轉移 SOL、呼叫程式,或建立簡單的工具。

請求 airdrop(在 devnet 上注資)

Devnet 提供免費的 SOL 供測試使用,讓你能為空帳戶注資,但要注意每個 IP 位址每天限額約為 24 SOL。

你需要為帳戶注資,以支付手續費中的 rent 豁免部分。此方法僅適用於 devnet。在正式環境中,手續費需以真正的 SOL 支付(而非測試用 SOL),你需要透過像 Coinbase 這樣的交易所購買/注資。詳見 Solana 的 Devnet SOL 指南。

javascript
Copied
const airdropSignature = await connection.requestAirdrop( wallet.publicKey, 1e9 // 1 SOL in lamports ); await connection.confirmTransaction(airdropSignature); console.log('Airdrop complete! Check balance again.');

以下是實際發生的步驟:

  • 請求 airdrop:connection.requestAirdrop\(\) 向 devnet 請求測試用 SOL。它會帶入你錢包的公鑰與金額(以 lamport 為單位,1e9 = 1 SOL),並回傳一個交易簽章,也就是此交易的唯一識別碼。
  • 確認交易:await connection.confirmTransaction\(\) 會等待網路處理這筆 airdrop。這一步很關鍵:如果不等待確認,即使 airdrop 已被請求,你的餘額可能仍會顯示 0 SOL。Solana 是以非同步方式處理交易的,所以需要等待。
  • 成功:確認完成後,再次執行 checkBalance\(\),你應該會看到錢包中有 1 SOL。

簽署並發送交易

接著我們來轉移 0.1 SOL 到另一個地址。此範例示範了交易簽署的過程,你的私鑰會對交易進行加密授權,證明你擁有發送方錢包。我們會建立一筆交易,用你的金鑰對簽署,並透過 RPC 廣播到網路上。交易手續費(約 0.000005 SOL)會自動從你的餘額中扣除。若要處理更複雜的操作,例如多指令交易或程式呼叫,可參考 Solana 的交易基礎文件。

執行以下程式碼來發送 SOL:

javascript
Copied
import { Transaction, SystemProgram, PublicKey, sendAndConfirmTransaction } from '@solana/web3.js'; const recipient = new PublicKey('recipient_address_here'); // Replace with a real address` const tx = new Transaction().add( SystemProgram.transfer({ fromPubkey: wallet.publicKey, toPubkey: recipient, lamports: 1e8 // 0.1 SOL }) ); // Simplest approach - handles blockhash and confirmation automatically const signature = await sendAndConfirmTransaction( connection, tx, [wallet] // Signers ); console.log('Transfer signature:', signature);

以下是實際發生的步驟:

  • 建立接收方:new PublicKey\(\) 將 base58 編碼的地址字串轉換為 Solana 可以處理的 PublicKey 物件。將 'recipient\_address\_here' 替換為實際的 Solana 地址(你甚至可以用自己錢包的公鑰測試發送給自己)。
  • 建立交易:new Transaction\(\).add\(\) 建立一筆交易並加入轉帳指令。SystemProgram.transfer\(\) 呼叫時會指定發送方(fromPubkey)、接收方(toPubkey),以及金額(以 lamport 為單位,1e8 = 0.1 SOL)。
  • 發送並確認:sendAndConfirmTransaction\(\) 是一個輔助函式,一次處理三個步驟:取得最新的 blockhash(所有 Solana 交易都需要)、用你的錢包金鑰對簽署交易、將交易發送到網路,並等待確認。\[wallet\] 陣列包含所有簽署者,在此範例中就只有你的錢包。
  • 交易簽章:回傳的簽章就是執行證明,是此筆特定交易在區塊鏈上的唯一識別碼。
  • 安全提醒:絕對不要把 secret key 寫死在程式碼中,應使用 process.env.PRIVATE\_KEY。在正式環境中,可整合硬體錢包以減少其他攻擊面。更多關於安全金鑰管理的內容,可參考我們的金鑰管理與安全最佳實務。

如果一切順利,你應該會收到一個成功的交易簽章!這個簽章就是該交易已在 Solana 區塊鏈上被處理的證明。你可以在 Solana Explorer 上查詢它,查看完整細節:發送方、接收方、支付的手續費,以及區塊確認狀態。

這就是在 devnet 上與簡單 Solana 錢包互動的核心內容:產生金鑰對、透過 RPC 連線、注資、簽署交易。這些基礎元件——金鑰對產生、網路連線、餘額查詢與交易簽署——是所有 Solana 開發工作的基石。

我們剛才互動的這類以金鑰對為基礎的一般錢包,非常適合需要程式化控制的後端腳本、測試與開發,以及偏好直接管理自己金鑰的開發者,還有像基本轉帳與程式互動這類簡單的使用情境。不過你也能看出這些錢包有其取捨:使用者必須自行管理金鑰、支付自己的手續費,並處理區塊鏈互動的技術複雜度。對於重視使用者體驗的消費端應用來說,這種摩擦可能是難以接受的。

這正是智慧錢包發揮作用的地方。它們把複雜度抽象化,同時提供社交登入、無 gas 交易、session key 等強大功能。

一般錢包 vs. 智慧錢包:快速比較

為了幫助你根據使用情境做出決定,以下表格整理了 Solana 上不同錢包類型的主要差異,讓你知道在專案中何時該使用哪一種。

Regular Wallet
Smart Wallet

Structure

Simple keypair (EOA-like)

Abstracted via AA; uses PDAs for programmable control

Features

Basic signing, manual fee handling

Social login, batching, sponsorship, automation

Complexity

Low, direct key management

Medium, Complex setup abstracted by SDK

Use Cases

Scripts, bots, testing setups

User-facing apps, seamless onboarding

vs. Ethereum

Uniform accounts; PDAs add flexibility

Solana-specific rent handling + EVM compatibility via SDK

Alchemy Role

RPC for reliable connections

SDK + RPC for full AA features

最佳實務:開發時的注意事項

在打造你的 Solana 錢包時,以下是一些最佳實務與提示,確保它安全、可擴展且對使用者友善。

  • 安全優先:對於一般錢包,在 mainnet 上務必使用硬體錢包(如 Ledger 或 Trezor),讓金鑰保持離線。使用智慧錢包時,可利用你的錢包供應商提供的 passkey 或多重驗證,避免使用助記詞以降低釣魚風險。絕對不要在程式碼中暴露 secret,應使用加密儲存。可用像 Solana 的安全指南這類工具來檢查你的設定。
  • 徹底測試:一律先在 devnet 或 testnet 上開始,以便反覆迭代而不產生成本。使用 Alchemy 的 dashboard 監控 RPC 使用量、交易失敗情況與效能指標,就像是為你的區塊鏈呼叫內建除錯工具。模擬網路壅塞等邊界情境,確保重試機制正常運作。
  • 錯誤處理與可靠性:將 RPC 呼叫包在 try-catch 區塊中,並加入指數退避重試機制(例如透過 p-retry 等函式庫)。Solana 的高速度可能導致競態條件,因此請使用 'finalized' commitment 來確認交易,以確保最大安全性。這能讓你的應用更穩健,尤其是對高流量應用而言。
  • 可擴展性考量:Alchemy 的基礎設施會針對高負載自動擴展,所以你不會在 RPC 上遇到瓶頸。使用智慧錢包時,盡量進行批次處理以減少交易數量。留意 rent 豁免狀況,避免產生意外費用。像 Solscan explorer 這類工具有助於追蹤。
  • 深入學習資源:持續關注 Alchemy 的 Solana 文件以掌握 SDK 更新,並參考 Solana 官方的 react 錢包轉接器來進行 UI 整合。

結語:開始在 Solana 上開發

到這裡,你已經學會如何借助 Alchemy 建立一般的 Solana 錢包,也了解了智慧錢包的比較。無論你是要撰寫簡單的轉帳腳本,還是打造具備無 gas 登入功能的強大 dApp,Solana 的生態系都已為創新做好準備。現在正是開始動手嘗試的時機。更多資源可參考我們的完整 Solana 開發者資源與 Solana 文件。祝開發順利——如果遇到問題,歡迎前往 Alchemy 支援中心。一起打造鏈上的精彩成果!

常見問題

什麼是 Solana 錢包?

Solana 錢包是一組金鑰對(公鑰與私鑰),讓你能控制 Solana 區塊鏈上的帳戶,這些帳戶可以持有 SOL 代幣、其他資產或可執行程式碼。與 Ethereum 的 EOA 模型不同,Solana 將所有東西都視為帳戶,結構更彈性、也更可程式化。

建立 Solana 錢包需要付費嗎?

不需要,產生金鑰對是免費的,但 Solana 上的帳戶需要支付 rent(約每 KB 0.00089 SOL)才能在鏈上持續存在,交易手續費平均為 $0.00025。在 devnet 上可以透過 airdrop 取得免費的測試用 SOL,但 mainnet 則需要購買 SOL。

一般錢包與智慧型 Solana 錢包有什麼差異?

一般錢包是基本的金鑰對,需要你手動管理金鑰並支付手續費,適合用於腳本與測試。智慧錢包則利用帳戶抽象化,提供社交登入、gas 代付、批次交易與可程式化邏輯,非常適合面向使用者的應用程式。

我可以用社交登入取代助記詞嗎?

可以,許多智慧錢包供應商讓使用者能透過電子郵件、Google 或 passkey 進行驗證,而不需要管理助記詞。這能消除使用者在傳統金鑰管理上的摩擦。

如何在 devnet 上為 Solana 錢包注資?

使用 connection.requestAirdrop() 可在 devnet 上取得免費的測試用 SOL(每個 IP 位址每天限額約 24 SOL)。若是 mainnet,你需要透過像 Coinbase 這樣的交易所購買 SOL。

Solana 上的 rent 是什麼?

Rent 是一種儲存押金機制,帳戶必須維持最低 SOL 餘額(約每 KB 0.00089 SOL)才能持續在鏈上保持活躍。它與 Ethereum 的 gas 費不同,能透過清除閒置帳戶來幫助維持網路效率。

智慧錢包可以代付使用者的交易手續費嗎?

可以,部分智慧錢包供應商支援 gas 與 rent 代付。這讓你的應用程式能替使用者支付手續費,實現無 gas 體驗,提升轉換率並簡化新手引導流程。

我需要自己架設 Solana 節點嗎?

不需要,我們的 RPC 端點提供穩定的 Solana 網路存取,無需自行架設節點。此服務負責處理負載平衡、擴展,並提供 HTTP 與 WebSocket 連線,支援即時更新。

Alchemy 電子報

搶先掌握最新發布消息

訂閱我們的電子報

取得 Alchemy 最新產品更新與資源

A
O
D
+
超過 80,000 名訂閱者

輸入您的電子郵件地址,即表示您同意接收我們的行銷通訊與產品更新。您了解 Alchemy 會依照我們的隱私權聲明處理所收到的資訊。您可以隨時取消訂閱。