---
title: "如何學習 Solana 開發"
description: "了解 Solana 開發的運作方式、Solana 開發的核心概念,以及如何成為 Solana 開發者"
---

# 如何學習 Solana 開發

本文將說明為何 Solana 開發適合用來建構程式與 [apps](https://www.alchemy.com/dapps/top/defi-dapps)，介紹學習 Solana 開發的路線圖，最後回答關於 Solana 開發的常見問題。讀完本文後，你將了解如何成為 Solana 開發者，並取得協助你學習 Solana 開發的資源。

## **學習 Solana 開發的 4 個理由**

Solana 是一個快速且可擴展的區塊鏈平台，專為去中心化應用程式而設計。它讓開發者能夠快速有效率地建構並部署 apps，是打造新穎創新專案的理想平台。

想更深入了解嗎？以下是 Solana 開發適合用於建構 dApp 的幾個理由。

### **1. 高可擴展性**

Solana 以高可擴展性著稱，能夠每秒處理數萬筆交易。這使它成為建構需要處理大量交易的 apps 的理想平台，例如去中心化交易所或遊戲。

### **2. 進階功能**

Solana 提供多項可用於建構創新 apps 的進階功能，例如支援智慧合約、用於安全且快速交易處理的 proof of history（PoH），以及 Optimistic Rollup 之類的 Layer 2 解決方案。

### **3. 強大的生態系**

蓬勃發展的[生態系](https://www.alchemy.com/ecosystem/solana)聚集了開發者、投資人與創業者，是任何對區塊鏈領域感興趣的人都會覺得有趣的地方。透過學習 Solana 開發，你可以成為這個社群的一份子，並為平台的成長與發展做出貢獻。

### **4. 需求持續成長**

隨著建構在 Solana 上的 apps 需求增加，對具備 Solana 開發專業的開發者需求也會隨之增加。透過學習 Solana 開發，你可以讓自己成為想在該平台上建構 apps 的公司眼中有價值的人才。

## **如何成為 Solana 開發者**

在 [Solana Developer roadmap](https://vitto.cc/the-complete-solana-development-roadmap/) 中，開發者需要學習的一些最重要概念包括：

1. Solana programs
1. Transactions
1. Solana Account Model
1. Solana Programming Lnguages
1. Setting up the Solana development environment
1. Using Solana Development Frameworks
1. Developing Programs
1. Deploying Programs
1. Testing Programs
1. Building Apps

### **1. 學習 Solana programs**

Solana Programs 是 Solana 區塊鏈上的智慧合約，包含可執行的程式碼，可用來解讀區塊鏈上交易中的指令。它們可以是原生程式（native programs），內建於 Solana 區塊鏈核心，只能隨區塊鏈軟體更新一併升級；也可以是鏈上程式（on-chain programs），由使用者自行編寫，並可由各自的程式擁有者直接在區塊鏈上部署與更新。

Solana Programs 執行於 Sealevel runtime 上，這是 Solana 區塊鏈的平行處理模型，有助於實現其高交易速度。由於程式僅包含編譯後的程式碼，因此被視為無狀態（stateless），且可由其擁有者升級。它們也可以擁有其他帳戶，並可讀取或貸記任何其他帳戶，但只能變更或扣款自己所擁有的帳戶資料。

### 2. 學習 Solana transactions

在 Solana 中，transactions 會被提交至叢集（cluster），並由 Solana runtime 處理。Transaction 包含一組簽章的 compact-array，後面接著一則 message。Message 包含 header、帳戶位址的 compact-array、blockhash，以及指令（instructions）的 compact-array。指令會指定單一 program、應傳入該 program 的交易帳戶子集，以及傳入該 program 的資料位元組陣列。

Program 會解讀該資料陣列，並依照指令對指定帳戶進行操作。Program 可以執行成功，也可能回傳錯誤代碼，一旦發生錯誤，整筆 transaction 就會失敗。Transaction 會驗證簽章數量，並確認每個簽章是否由 message 帳戶位址陣列中相同索引位置的公鑰所對應的私鑰所簽署。

### 3. 學習 Solana account model

Solana 的 Sealevel runtime 具有與 Ethereum 的 Virtual Machine（EVM）不同的獨特[帳戶模型](https://www.alchemy.com/overviews/solana-account-model)。在 Sealevel 中，任何帳戶都可以儲存狀態，這與 Ethereum 不同——在 Ethereum 中只有智慧合約才能在其儲存空間中儲存狀態。在 Solana 中，智慧合約的狀態儲存在其他帳戶內，每個帳戶都會指定一個擁有者合約（owner contract），使其對狀態變更擁有專屬控制權。

**Sealevel** 有兩種帳戶類型：可執行（executable）與不可執行（non-executable）。

1. **可執行帳戶** - 是不可變的，可以儲存自己的可執行 bytecode，或是儲存另一個擁有可變可執行 bytecode 帳戶的代理位址
1. **不可執行帳戶** - 儲存資料，可由其擁有者修改，但其他 programs 所做的變更都會被還原

在 Sealevel 中，可執行帳戶儲存一個用於識別該帳戶的公鑰，以及被呼叫時將會執行的 program 的 BPF bytecode；而不可執行帳戶則儲存餘額與資料。

### 4. 學習 Solana programming languages

用於 Solana 開發的程式語言包括 [Rust](https://www.alchemy.com/overviews/solidity-vs-rust)、C 和 C++。這些語言用於建構 programs（也稱為智慧合約），這些 programs 會部署在 Solana 區塊鏈上，並透過 Solana Runtime 執行。

雖然理解這些語言並自行建立 programs 並非在 Solana 上開發的必要條件，開發者仍可以選擇學習它們，以建立自己的 programs。Solana 也提供 JSON RPC API 以及多種 SDK，包括 solana-[web3.js](https://www.alchemy.com/dapps/web3-js)，以及 Java、C#、Python、Go、Swift、Dart-Flutter 和 Kotlin，讓開發者能夠打造類似傳統網頁或行動 apps、並與集中式 APIs 互動的去中心化應用程式。

### **5. 學習如何設定你的 Solana 開發環境**

要撰寫 Solana Program，開發者需要使用[核心 Solana 開發者工具](https://www.alchemy.com/overviews/solana-developer-tools)，例如命令列介面與 Solana 工具套件，在本機開發環境中建構並測試自己的 programs。

如果你才剛開始接觸，可以依照這份[逐步設定本機環境指南](https://www.alchemy.com/docs/reference/solana-api-quickstart)進行操作。

### **6. 學習 Solana development frameworks**

用於建構 Solana 應用程式的兩大開發框架是 Anchor 與 Seahorse。Anchor 抽象化了許多以原生 Rust 開發應用程式時的複雜性。Seahorse 與 Anchor 類似，不過它是[為 Python 開發者打造的 Solana development framework](https://www.alchemy.com/overviews/solana-seahorse)。

### **7. 學習如何開發 Solana program**

走到路線圖的這一步，你應該已具備足夠的 Solana 基礎概念，以及可用於建構應用程式的各種工具知識。若要學習如何撰寫 program，可以參考入門的 ["Hello World" Solana 教學](https://www.alchemy.com/docs/hello-world-solana-program)，或是參考許多免費的開發者資源。

#### **1. Solana developers**

[Solana Developers](https://solana.com/developers) 是 Solana 團隊提供給對 Solana 區塊鏈平台學習與開發有興趣的開發者的資源網站。該網站提供豐富的資訊與資源，包括文件、教學和社群支援，協助開發者展開 Solana 開發。

#### **2. Solana docs**

[Solana Docs](https://solana.com/developers) 是 Solana 提供的資源與文件集合，內容涵蓋平台功能、技術細節，以及如何在 Solana 上建構與部署 apps 的指南。

#### **3. Solana cookbook**

[Solana Cookbook](https://solanacookbook.com/core-concepts/accounts.html#facts) 是一項開發者資源，提供在 Solana 區塊鏈上建構應用程式所需的資訊與範例。它被劃分為多個不同區塊，涵蓋 Solana 開發的核心概念、指南與參考資料。它也開放新進開發者貢獻內容，並提供貢獻指引。

#### **4. Solana blockchain developer bootcamp**

[Solana Blockchain Developer Bootcamp](https://chain.link/bootcamp/solana-2022-on-demand) 由 Solana 與 [Chainlink](https://www.alchemy.com/dapps/chainlink) 共同主辦，讓參與者學習 Solana 架構與程式設計模型的細節。內容涵蓋在 Solana 上使用 Rust 建構、部署、測試並與 Solana 區塊鏈互動的基礎知識。開發者能夠在來自 Solana、Chainlink 及其他團隊的直接支援下學習，建構 Solana apps 並展開全新的旅程。

### 8. 學習如何部署 Solana program

程式碼完成後，你可以將其編譯為 BPF bytecode，並建立一個可部署到區塊鏈上的 .so 檔案。

若要[部署你的 program](https://docs.solana.com/cli/deploy-a-program)，可以使用 solana program deploy 指令，也就是在 solana program deploy 後面加上你所編譯的 .so 檔案路徑。這會將一筆 transaction 送至區塊鏈，並將你的 program 部署到指定位址。部署成功後會輸出 program id。

### **9. 學習測試 Solana program**

Solana 提供多項工具，用於偵錯與測試 programs，包括 solana-program-test 這個 crate，可讓你使用本機 runtime 環境對 programs 進行互動式測試與偵錯。solana-validator 這個 crate 可在本機 validator 節點上進行更完整的測試，而 CLI 工具 solana-test-validator 則可讓你透過命令列，針對 Rust 或 Javascript/Typescript 應用程式進行測試與執行 transaction。

建議在測試與偵錯過程中，於 program 內使用 msg! 巨集來記錄資訊，但在 program 穩定後應將其移除，以避免超出 Compute Unit 預算。

你也可以使用本機 validator 節點來測試 programs，這樣能進行更全面的測試，行為也更貼近 program 部署到 Solana 網路上時的實際情況。

### **10. 學習建構 Solana apps**

要建構 Solana dapp，你需要熟悉 [Solana ecosystem](https://www.alchemy.com/dapps/ecosystem/solana)，並學習如何與區塊鏈互動。針對建構 Solana apps，Solana 提供多種 APIs 與 SDK，讓開發者能使用 JavaScript、Java、Python、Go 等常見程式語言建構 apps。你可以在 Solana Developers Page 上取得這些 SDK。

## **開始在 Solana 上進行開發**

現在你已經知道學習 Solana 開發的步驟，下一步就是註冊 Alchemy 提供的[免費 Solana 開發者帳號](https://dashboard.alchemy.com/signup/?a=learn-solana-development)，開始動手建構！
