Solana 程序库是什么?
在本文中,我们将探索 Solana 的世界,并了解如何使用 Solana 程序库快速开发。无论您是 Solana 新手还是经验丰富的开发人员,您都可以轻松地使用 SPL 创建和部署自己的自定义代币或去中心化交易所。
Solana 是一个高速可编程区块链,允许开发人员构建和部署去中心化应用程序。Solana 维护一个专用文档库,称为 Solana 程序库 - 一组预编译、部署和优化的程序(即智能合约),供在 Solana 区块链上使用。
Solana 中有哪些项目?
Solana 中的程序是存储在称为帐户的缓冲存储器中的可执行代码,可以通过交易执行,类似于以太坊或任何其他可编程区块链上的智能合约。然而,与以太坊不同,在以太坊中程序和状态一起存储在智能合约中,而 Solana 采用了无状态程序模型方法,其中数据和程序存储在帐户中。
Solana 中的账户是什么?
根据 Solana 文档,“账户是 Solana 分类账中的一条记录,它要么保存数据,要么是可执行程序。 ”
可以将 Solana 视为一个数据库,其中帐户是行,公钥充当 ID,值是存储在帐户中的信息。现在,这些信息可以是程序(即智能合约)的形式,也可以是程序的数据/状态。
账户可以通过唯一的公钥(256 字节)来识别,通常类似于:“DM6n1qcUCLzJ1RaAuA4gUbBZ9sfHP6KvEwX8oExQqPhk”。
Solana 在代码和数据之间有逻辑分离,这导致存在两种类型的账户——可执行账户和不可执行账户。
1.可执行账户
仅存储不可变的程序代码并标记为“可执行文件”的帐户。
2. 不可执行账户
这些账户存储了程序可能使用的所有数据,包括程序的变量、资产和状态。尽管任何人都可以读取这些账户中的数据,但只有程序的所有者(部署者)可以更改它。
这些账户由验证器节点维护,验证器节点收取称为“租金”的维护费用,以换取用于存储上述信息的内存空间。租金以lampor支付——SOL(Solana 的原生代币)的小数面额。
由于采用了称为Sealevel Parallel Runtime 的系统,Solana 的代码和程序数据是分开维护的。
什么是 Sealevel 并行运行时?
Sealevel Parallel Runtime 是 Solana 对并行交易处理系统的实现。像以太坊这样的传统单线程区块链一次只能处理一笔交易,以避免并发。这是因为以太坊智能合约是有状态的——这意味着状态和代码都耦合在同一个合约中。
借助 Sealevel,Solana 可以并行处理数千个不冲突的交易。利用多个验证器核心,Solana 还可以以 400 毫秒的块时间执行高达 50,000 Tps 的交易。这是可能的,因为交易指令是无状态的,它们会预先决定要修改哪个帐户的数据。因此,不共享相同帐户数据的程序可以同时运行。
Solana 有哪些类型的项目?
Solana 的生态系统由两种不同类型的程序组成——原生程序和链上程序。让我们来看看这两种程序。
什么是本机程序?
本机程序负责实现 Solana 网络的核心功能,例如管理账户存储的分配、创建新账户、处理交易以及执行 Solana 网络的规则。
原生程序是 Solana 核心区块链模型不可或缺的一部分。它们通常用 Rust 和 C/C++ 等针对性能和安全性进行了优化的低级语言编写。任何程序/用户都可以调用原生程序,而操作系统中的内核级程序则不能被用户直接调用和访问。
更新这些程序只能作为核心区块链升级或集群升级的一部分进行,以添加功能、修复错误或提高性能。
有许多本机程序可帮助保护验证器。 其中一些是:
1.系统程序
系统程序负责创建新账户、在两个账户之间转移 SOL、分配账户所有权以及执行更多此类账户管理操作。
2.伯克利数据包过滤器(BPF):
Berkeley Packet Filter 处理链上程序的部署、升级和执行。
3. 权益计划
Stake 程序 负责管理 Solana 区块链上的 SOL 代币质押。
什么是链上程序?
链上程序是直接部署在区块链上的用户编写的程序(即智能合约)。这些程序可以是 dapp、交易所、实践合约、多重签名钱包实现或任何其他通用程序。
与 Native 程序不同,链上程序并不构成 Solana 集群的核心。相反,它们是由开发人员在 Solana 区块链上创建和部署的自定义程序。这意味着链上程序在 Solana 区块链的运行中并非必不可少。
它们建立在 Native 程序提供的核心基础设施之上,允许开发人员在 Solana 区块链上构建广泛的应用程序和服务。
程序交互的数据分别存放在单独的数据账户中,通过指令传入引用,只有账户所有者才能升级程序数据。

Solana 程序库是什么?
Solana 程序库 (SPL) 是一组预先编写的模块化程序,可用于在 Solana 区块链上构建去中心化应用程序 (dapps)。SPL旨在通过提供一组可重复使用的模块化组件,让开发人员更容易创建 dapps,这些组件可以轻松集成到他们的应用程序中,从而减少开发人员从头开始编写复杂代码的需要。
因此,SPL 允许开发人员使用“构建块”方法构建 dapps ,其中每个组件都可以轻松集成到应用程序中。
SPL 包含多个链上通用程序,其中 Token 程序及其变体最为流行,可以帮助将它们合并到您的项目中,而无需从头开始实现它们。
SPL 先决条件
要与 SPL 交互,您可以选择 CLI 方法或常用的 JS 方法,该方法灌输了 solana/web3.js 以将您的 Javascript 代码与 Solana 区块链进行交互。
要与任何 Solana 集群交互,您还必须设置 Solana CLI(命令行界面)。对于新手开发人员来说,CLI 可能不是最友好的,但它提供了对您的 Solana 帐户最直接、最安全的访问。此外,CLI 是 Solana 核心开发人员部署新功能的第一个地方。
什么是 SPL 代币计划?
SPL Token 程序是 Solana 区块链上可替代和不可替代代币的通用实现。它提供了一个接口和详细的实现,允许开发人员创建自己的代币。代码是用 Rust 编写的,其自动生成的绑定以 C 和 JavaScript 提供。源代码可在SPL GitHub repo中找到。
在以太坊中,ERC20 Token 程序的工作方式与以太坊 ERC-20 合约不同。让我们举一个例子来了解区别:
假设您想在以太坊区块链上发布三种不同的代币。为此,您必须为每种代币部署 3 个单独的合约。并且每个代币合约都将跟踪其各自的状态(例如余额和转账)。
对于 Solana,无需部署三个单独的代币程序。相反,你可以部署一个可以在多个帐户(例如铸造帐户和接收帐户)上运行的通用代币程序。
铸币地址将唯一标识代币类型。此信息可以作为参数传递给已部署在 Solana 链上的单个静态 ERC20 程序实例。
如何使用 SPL 代币程序创建可替代代币
使用 SPL 代币计划,您只需几个步骤即可创建可替代代币。在深入研究代币计划之前,请确保您已设置 CLI 钱包,或将您的 Phantom 钱包连接到 Solana 的 Devnet,并将足够的 devnet SOL 空投到您的钱包中。
步骤 1:创建你的同质化代币
创建代币命令是指示链上 SPL 代币程序创建新代币的指令。成功创建代币后,我们将收到代币 ID 以及交易签名。但是,是的,我们仍然必须铸造它们。
这是令牌命令:spl-token create-token

第 2 步:创建代币账户
将与我们的代币相关的信息存储在单独的数据帐户中。代币帐户由 SPL-Token 程序拥有,该程序控制对这些代币的访问以及所有者字段(即可以使用/转移代币的 Token-ID)。
由于这是一个数据账户,因此其数据可以通过代币程序通过添加/铸造、转移或销毁代币来修改。
这是代币账户创建命令:spl-token create-account
如下所示,我们创建代币及其关联账户时损失了一些 SOL 作为交易费。另外,请注意,初始供应量为零。这意味着我们必须通过铸造代币来增加所需的供应量。

步骤3:铸造所需数量的代币。
要铸造给定数量的代币,请运行以下命令:
spl-token mint
一旦执行该命令,所述数量的代币将被铸造到您的文件系统钱包中,并且代币供应量将得到更新。

您可以通过运行以下命令检查当前代币供应量以及与代币关联的帐户:
spl-token supply
spl-token accounts

现在,让我们将代币转移到我们的Phantom 钱包— — Solana 上流行的钱包。
步骤 4:转移代币
该计划是将“x”数量的代币转移给接收者——我们的 Phantom 钱包。如果接收者没有代币账户,则“资金接收者”负责为其创建一个代币账户。这称为创建关联代币账户。
以下是转移代币的命令:
spl-token transfer --fund-recipient

转移成功后您将收到一条成功消息。

您可以通过运行以下命令来验证传输: spl-token accounts
注意:如果您运行 token supply 命令,它仍将显示 2,000 个代币,因为 supply 表示网络中流通的代币数量,而 balance 是指您的代币账户拥有的代币数量。

步骤 5:限制代币供应
合约安全和需求的关键方面之一是限制代币供应。要禁用铸币功能,请将铸币权限设置为“无”。
禁用代币铸造权限的命令: spl-token authorize mint --disable


步骤 6:销毁代币
如果您想减少代币的供应量,您可以选择销毁它。
以下是其命令:spl-token burn

一旦销毁,供应量和余额都会减少。如您在示例中所见,我们的余额从 4,978 降至 3,978,供应量减少至 4,000。

SPL 提供了有关如何使用 Token 程序执行更多操作的完整参考指南,例如:
- 将 SOL 包装在令牌中。
- 将代币转移到明确的接收者代币账户。
- 创建一个不可替代的代币。
本文由 SlerfTools 翻译自 What is the Solana Program Library?