在 Solana 生态系统中,“智能合约”被称为程序。 每 个程序都是一个链上账户,存储可执行逻 辑,组织成特定的函数,称 为指令(instructions) 。

关键点

  • 程序是包含可执行代码的链上账户。 此代码组织成不同函数,称为指令。
  • 程序是无状态的,但可以包含创建新账户的指令,用于存储和管理程序状态。
  • 程序可以由升级权限更新。 当升级权限设置为 null 时,程序变为不可变。
  • 可验证的构建使用户能够验证链上程序是否与公开的源代码相匹配。

编写 Solana 程序

Solana 程序主要用 Rust 编程语言编写,开发有两 种常见方法:

  • Anchor:专为 Solana 程序开发设计的框架。它提供了一种更快、更简单的编写程序的方式,使用 Rust 宏来显著减少样板代码。对于初学者,建议从 Anchor 框架开始。
  • Native Rust:这种方法涉 及在不使用任何框架的情况下用 Rust 编写 Solana 程序。 它提供了更多的灵活性,但 也增加了复杂性。

更新 Solana 程序

链上程序可以由指定为“升级权限”的账 户直接修改 ,通常是最初部署程序的账户。
如果升级权限被 撤销并设置为None,程序将变为不可变,无法再更新。

可验证的程序

确保链上代码的完整性和可验证性至关重要。 可验证的构建确保部署在链上的可执行代码 可以由任何第三方独立验证,以匹配其公开的源代码。 此过程增强了透明度和信任,使得 能够检测源代码与部署程序之间的差异。

Solana 开发者社区推出了支持可验证构建的工具,使开发者和用户能够验证链上程序是否准确反映其公开共享的源代码。

  • 搜索已验证的程序:要快速检查已验证的程序,用户可以在 SolanaFM 浏览器上搜索程序地址并导航到“Verification”选项 卡。 在这里查 看一个已验证程序的示例。
  • 验证工具: Ellipsis Labs 的Solana 可验证构建 CLI 使用户能够根据已发布的源代码独立验证链上程序。
  • Anchor 中对可验证构建的支持:Anchor 提供了对可验证构建的内置支持。 详情请 参阅 Anchor 文档

伯克利包过滤器 (BPF)

Solana 利用 LLVM 编译器基础设施将程序编译 成可执行和链接格式 (ELF) 文件。 这些文件包括一个修改版 的伯克利包过滤器 (eBPF) 字节码,用于Solana 程序,称为“Solana 字节码格式” (sBPF)。

使用 LLVM 使 Solana 能够潜在支持任何可以编译到 LLVM 的 BPF 后端的编程语言。 这显 著增强了 Solana 作为开发平台的灵活性。