---
title: "如何学习 Solana 开发"
description: "了解 Solana 开发的原理、核心概念,以及如何成为 Solana 开发者"
---

# 如何学习 Solana 开发

本文将解释为什么 Solana 开发适合用来构建程序和[应用](https://www.alchemy.com/dapps/top/defi-dapps)，介绍学习 Solana 开发的路线图，并最终回答关于 Solana 开发的问题。读完本文后，你将了解如何成为一名 Solana 开发者，并获得帮助你学习 Solana 开发的资源。

## **学习 Solana 开发的 4 个理由**

Solana 是一个快速、可扩展的区块链平台，专为去中心化应用而设计。它使开发者能够快速高效地构建和部署应用，是创建新颖、创新项目的理想平台。

想深入了解？以下是 Solana 开发适合用于构建 dApp 的更多理由。

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

Solana 以高可扩展性著称，能够每秒处理数万笔交易。这使其成为构建需要处理大量交易的应用（如去中心化交易所或游戏）的有吸引力的平台。

### **2. 先进特性**

Solana 提供了许多可用于构建创新应用的先进特性，例如对智能合约的支持、用于安全快速交易处理的历史证明\(PoH\)机制，以及像 Optimistic Rollup 这样的二层解决方案。

### **3. 强大的生态系统**

一个由开发者、投资者和创业者组成的蓬勃发展的[生态系统](https://www.alchemy.com/ecosystem/solana)，使其成为任何对区块链领域感兴趣的人的一个令人兴奋的去处。通过学习 Solana 开发，你可以成为这个社区的一员，并为该平台的成长和发展做出贡献。

### **4. 不断增长的需求**

随着基于 Solana 构建的应用需求不断增加，对具备 Solana 开发专长的开发者的需求也会相应增长。通过学习 Solana 开发，你可以将自己打造为希望在该平台上构建应用的公司眼中的宝贵人才。

## **如何成为一名 Solana 开发者**

在 [Solana 开发者路线图](https://vitto.cc/the-complete-solana-development-roadmap/)中，开发者需要学习的一些最重要的概念包括：

1. Solana 程序
1. 交易
1. Solana 账户模型
1. Solana 编程语言
1. 搭建 Solana 开发环境
1. 使用 Solana 开发框架
1. 开发程序
1. 部署程序
1. 测试程序
1. 构建应用

### **1. 了解 Solana 程序**

Solana 程序是 Solana 区块链上的智能合约，包含可执行代码，可用于解释区块链上交易中的指令。它们可以是原生程序，即内置于 Solana 区块链核心中、只能作为区块链软件更新的一部分进行升级的程序；也可以是链上程序，即由用户编写、可由各自的程序所有者直接在区块链上部署和更新的程序。

Solana 程序运行在 Sealevel 运行时上，这是 Solana 区块链的并行处理模型，有助于实现其高交易速度。程序被认为是无状态的，因为它们只包含编译后的代码，程序所有者可以对其进行升级。程序还可以拥有其他账户，并可以读取或向任何其他账户存入资金，但只能修改或扣除自己所拥有的账户中的数据。

### 2. 了解 Solana 交易

在 Solana 中，交易被提交到集群并由 Solana 运行时处理。交易包含一个签名的紧凑数组，后跟一条消息。该消息包括一个头部、一个账户地址的紧凑数组、一个区块哈希，以及一个指令的紧凑数组。指令指定一个单一的程序、应传递给该程序的交易账户子集，以及传递给该程序的数据字节数组。

程序会解释该数据数组，并对指令指定的账户进行操作。程序可以成功返回，也可以返回错误代码，后者会导致整个交易失败。交易会被验证签名数量是否正确，以及每个签名是否由消息账户地址数组中相同索引位置的公钥所对应的私钥签署。

### 3. 了解 Solana 账户模型

与 Ethereum 的虚拟机\(EVM\)相比，Solana 的 Sealevel 运行时拥有独特的[账户模型](https://www.alchemy.com/overviews/solana-account-model)。在 Sealevel 中，任何账户都可以存储状态，而在 Ethereum 中，只有智能合约才能在其存储中保存状态。在 Solana 中，智能合约的状态存储在其他账户中，每个账户都会指定一个所有者合约，由其对状态变更拥有独占控制权。

**Sealevel** 有两种类型的账户：可执行账户和不可执行账户。

1. **可执行账户** - 是不可变的，可以存储自己的可执行字节码，或存储指向具有可变可执行字节码的账户的代理地址
1. **不可执行账户** - 存储数据，可由其所有者修改，但任何其他程序所做的更改都会被回退

在 Sealevel 中，可执行账户存储一个用于标识该账户的公钥，以及在调用该账户时将被执行的程序的 BPF 字节码；不可执行账户则存储余额和数据。

### 4. 了解 Solana 编程语言

用于 Solana 开发的编程语言包括 [Rust](https://www.alchemy.com/overviews/solidity-vs-rust)、C 和 C\+\+。这些语言用于构建程序（也称为智能合约），这些程序被部署在 Solana 区块链上，并通过 Solana 运行时运行。

虽然掌握这些语言并编写程序并不是在 Solana 上构建应用的必要条件，但开发者可以选择学习这些语言来创建自己的程序。Solana 还提供了 JSON RPC API 以及多种 SDK，包括 solana-[web3.js](https://www.alchemy.com/dapps/web3-js)，以及针对 Java、C\#、Python、Go、Swift、Dart-Flutter 和 Kotlin 的 SDK，使开发者能够创建与传统 Web 或移动应用类似、并与中心化 API 交互的去中心化应用。

### **5. 了解如何搭建 Solana 开发环境**

要编写 Solana 程序，开发者需要使用[核心 Solana 开发者工具](https://www.alchemy.com/overviews/solana-developer-tools)（例如命令行界面和 Solana 工具套件）在本地开发环境中构建和测试程序。

如果你刚刚起步，可以参照这份[搭建本地环境的分步指南](https://www.alchemy.com/docs/reference/solana-api-quickstart)。

### **6. 了解 Solana 开发框架**

用于构建 Solana 应用的两个主要开发框架是 Anchor 和 Seahorse。Anchor 抽象掉了直接用 Rust 原生开发应用时的许多复杂性。Seahorse 与 Anchor 类似，但它是[面向 Python 开发者的 Solana 开发框架](https://www.alchemy.com/overviews/solana-seahorse)。

### **7. 了解如何开发一个 Solana 程序**

到路线图的这一步，你已经具备足够的关于 Solana 基础知识以及可用于构建应用的各种工具的概念性理解。要学习如何编写程序，可以跟随入门级的 ["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 上构建和部署应用的指南。

#### **3. Solana Cookbook**

[Solana Cookbook](https://solanacookbook.com/core-concepts/accounts.html#facts) 是一个开发者资源，提供了在 Solana 区块链上构建应用的信息和示例。它被划分为不同的章节，涵盖了 Solana 开发的核心概念、指南和参考资料。该项目对新开发者的贡献开放，并提供了相应的贡献指南。

#### **4. Solana 区块链开发者训练营**

[Solana 区块链开发者训练营](https://chain.link/bootcamp/solana-2022-on-demand)由 Solana 与 [Chainlink](https://www.alchemy.com/dapps/chainlink) 联合举办，帮助参与者了解 Solana 架构和编程模型的复杂细节。内容涵盖使用 Rust 在 Solana 上进行构建、部署、测试和交互的开发基础。开发者将在来自 Solana、Chainlink 及其他团队的支持下直接学习，构建 Solana 应用，开启新的旅程。

### 8. 了解如何部署一个 Solana 程序

代码编写完成后，你可以将代码编译为 BPF 字节码，并生成一个可以部署到区块链上的 .so 文件。

要[部署你的程序](https://docs.solana.com/cli/deploy-a-program)，可以使用 solana program deploy 命令，即在 solana program deploy 后面跟上编译后 .so 文件的路径。这会向区块链发送一笔交易，并将你的程序部署到指定地址。部署成功后会输出程序 ID。

### **9. 了解如何测试一个 Solana 程序**

Solana 提供了许多用于调试和测试程序的工具，包括 solana-program-test crate，它允许使用本地运行时环境对程序进行交互式测试和调试。solana-validator crate 可以在本地验证节点上进行更强大的测试，而 CLI 工具 solana-test-validator 则允许通过命令行为 Rust 或 Javascript/Typescript 应用测试和执行交易。

建议在程序中使用 msg! 宏来在测试和调试过程中记录信息，但在程序稳定后应将其移除，以避免超出计算单元（Compute Unit）预算。

也可以使用本地验证节点来测试程序，这种方式能进行更全面的测试，更接近程序部署到 Solana 网络后的实际运行表现。

### **10. 了解如何构建 Solana 应用**

要构建一个 Solana dapp，你需要熟悉 [Solana 生态系统](https://www.alchemy.com/dapps/ecosystem/solana)，并了解如何与区块链交互。为方便构建 Solana 应用，Solana 提供了众多 API 和 SDK，使开发者能够使用 JavaScript、Java、Python 和 Go 等常用编程语言构建应用。你可以在 Solana Developers 页面上获取这些 SDK。

## **开始在 Solana 上进行开发**

既然你已经了解了学习 Solana 开发的各个步骤，下一步就是在 Alchemy 注册一个[免费的 Solana 开发者账户](https://dashboard.alchemy.com/signup/?a=learn-solana-development)，然后开始构建吧！
