Solana 文档开发程序
程序示例
Solana 程序示例 GitHub 仓库提供了多个子文件夹,每个文件夹包含代码示例,帮助开发者学习和尝试 Solana 区块链开发。
您可以在 solana-developers/program-examples
中找到这些示例,以及 README 文件,指导您如何运行不同的示例。大多数示例是独立的,并以原生 Rust(即无框架)和
Anchor 提供。
在该仓库中,您将找到以下子文件夹,每个文件夹中包含各种示例程序:
基础
包含一系列示例,展示了使用原生 Rust 库构建 Solana 程序的基础步骤。这些示例旨在帮助开发者理解 Solana 编程的核心概念。
示例名称 | 描述 | 语言 |
---|---|---|
账户数据 | 在账户中保存地址、姓名、门牌号、街道和城市。 | 原生, Anchor |
账户检查 | 安全课程,展示如何进行账户检查 | 原生, Anchor |
关闭账户 | 展示如何关闭账户以取回其租金。 | 原生, Anchor |
计数器 | 在所有不同架构中实现的简单计数器程序。 | 原生, Anchor, mpl-stack |
创建账户 | 如何在程序中创建系统账户。 | 原生, Anchor |
跨程序调用 | 使用手和杠杆的类比展示如何在程序中调用另一个程序。 | 原生, Anchor |
Hello Solana | Hello World 示例,仅在交易日志中打印 Hello World。 | 原生, Anchor |
PDA 租金支付 | 展示如何使用 PDA 的 lamports 支付新账户的费用。 | 原生, Anchor |
处理指令 | 展示如何处理指令数据字符串和 u32。 | 原生, Anchor |
程序派生地址 | 展示如何使用种子引用 PDA 并在其中保存数据。 | 原生, Anchor |
重新分配 | 展示如何增加和减少现有账户的大小。 | 原生, Anchor |
租金 | 在此您将学习如何在程序中计算租金要求。 | 原生, Anchor |
仓库布局 | 关于如何构建程序布局的建议。 | 原生, Anchor |
转移 SOL | 系统账户和 PDA 的不同 SOL 转移方法。 | 原生, Anchor, Seahorse |
代币
大多数 Solana 上的代币使用 Solana Program Library (SPL) 代币标准。在这里,您可以找到许多示例,了解如何铸造、转移、销毁代币,甚至如何在程序中与它们交互。
示例名称 | 描述 | 编程语言 |
---|---|---|
创建代币 | 如何创建代币并为其添加 Metaplex 元数据。 | Anchor, Native |
NFT 铸造器 | 仅铸造一个代币数量,然后移除铸造权限。 | Anchor, Native |
PDA 铸造权限 | 展示如何更改铸造的铸造权限,以便在程序中铸造代币。 | Anchor, Native |
SPL 代币铸造器 | 解释如何使用关联代币账户(Associated Token Accounts)来跟踪代币账户。 | Anchor, Native |
代币交换 | 一个详细的示例,展示如何为 SPL 代币构建一个 AMM(自动化做市商)池。 | Anchor |
转移代币 | 展示如何使用 CPI 将 SPL 代币转移到代币程序中。 | Anchor, Native |
Token-2022 | 查看 Token 2022(代币扩展)。 | Anchor, Native |
Token 2022(代币扩展)
Token 2022 是 Solana 上的一种新代币标准。它更加灵活,允许您为代币铸造添加 16 种不同的扩展功能。完整的扩展列表可以在入门指南中找到。
示例名称 | 描述 | 编程语言 |
---|---|---|
基础知识 | 如何创建代币、铸造和转移代币。 | Anchor |
默认账户状态 | 此扩展允许您创建具有特定状态(例如冻结)的代币账户。 | Anchor, Native |
铸造关闭权限 | 在旧的代币程序中无法关闭铸造,现在可以了。 | Anchor, Native |
多重扩展 | 展示如何为单个铸造添加多个扩展功能。 | Native |
NFT 元数据指针 | 可以使用元数据扩展创建 NFT 并添加动态链上元数据。 | Anchor |
不可转移 | 例如可用于成就、推荐计划或任何灵魂绑定代币。 | Anchor, Native |
转移费用 | 每次转移代币时,会在代币账户中保留一些代币,然后可以收集这些代币。 | Anchor, Native |
转移钩子 | 四个示例展示如何使用 CPI 从代币程序到您的程序中为代币添加额外功能。 | Anchor |
Is this page helpful?