程序
在 Solana 生态系统中,“智能合约”被称为程序。 每 个程序都是一个链上账户,存储可执行逻 辑,组织成特定的函数,称 为指令(instructions) 。
关键点 #
-
程序是包含可执行代码的链上账户。 此代码组织成不同函数,称为指令。
-
程序是无状态的,但可以包含创建新账户的指令,用于存储和管理程序状态。
-
程序可以由升级权限更新。 当升级权限设置为 null 时,程序变为不可变。
-
Verifiable builds enable users to verify that onchain programs match the publicly available source code.
编写 Solana 程序 #
Solana 程序主要用 Rust 编程语言编写,开发有两 种常见方法:
-
Anchor: A framework designed for Solana program development. It provides a faster and simpler way to write programs, using Rust macros to significantly reduce boilerplate code. For beginners, it is recommended to start with the Anchor framework.
-
Native Rust:这种方法涉 及在不使用任何框架的情况下用 Rust 编写 Solana 程序。 它提供了更多的灵活性,但 也增加了复杂性。
更新 Solana 程序 #
链上程序可以由指定为“升级权限”的账 户直接修改 ,通常是最初部署程序的账户。
如
果升级权限被
撤销并设置为None
,程序将变为不可变,无法再更新。
可验证的程序 #
确保链上代码的完整性和可验证性至关重要。 可验证的构建确保部署在链上的可执行代码 可以由任何第三方独立验证,以匹配其公开的源代码。 此过程增强了透明度和信任,使得 能够检测源代码与部署程序之间的差异。
The Solana developer community has introduced tools to support verifiable builds, enabling both developers and users to verify that onchain programs accurately reflect their publicly shared source code.
-
搜索已验证的程序:要快速检查已验证的程序,用户可以在 SolanaFM 浏览器上搜索程序地址并导航到“Verification”选项 卡。 在这里查 看一个已验证程序的示例。
-
Verification Tools: The Solana Verifiable Build CLI by Ellipsis Labs enables users to independently verify onchain programs against published source code.
-
Anchor 中对可验证构建的支持:Anchor 提供了对可验证构建的内置支持。 详情请 参阅 Anchor 文档 。
伯克利包过滤器 (BPF) #
Solana 利用 LLVM 编译器基础设施将程序编译 成可执行和链接格式 (ELF) 文件。 这些文件包括一个修改版 的伯克利包过滤器 (eBPF) 字节码,用于Solana 程序,称为“Solana 字节码格式” (sBPF)。
使用 LLVM 使 Solana 能够潜在支持任何可以编译到 LLVM 的 BPF 后端的编程语言。 这显 著增强了 Solana 作为开发平台的灵活性。