
Solana 上的 Solidity——什么是 Solang?
概述
本周,Solana 的 Solidity 编译器 Solang 正式发布。它让 Ethereum Solidity 开发者能够迁移到 Solana,降低入门所需的学习成本和时间投入。在此之前,开发者只能使用 Rust、C 或 Python。
在 Solana 上发布 Solidity 编译器 Solang,主要目的是吸引经验丰富的开发者。这些开发者原本可能因为需要学习 Rust 或其他语言来创建程序而对 Solana 开发望而却步。
本文将介绍以下内容:
- 什么是编译器?
- 优势
- 对 Solana 程序的影响
- 开始使用
什么是编译器?
编译器是一种将高级源代码转换为目标平台可执行的低级表示形式的工具。对于 Solidity,需要使用 Solang 编译器将 Solidity 代码转换为与 Solana 区块链兼容的格式。它会经过多个阶段,将代码转换为可在 Solana 上执行的优化机器码或字节码。这确保 Solidity 开发者可以轻松、高效地在 Solana 上编写和部署智能合约。
在 Solana 中,Rust 是创建程序时常用的编程语言。下图详细展示了如何编译 Rust 和 Solidity,为 Solana 区块链生成程序指令:
优势
如上所述,在 Solana 上发布 Solidity 编译器 Solang,主要目的是吸引经验丰富的开发者。这些开发者可能因为需要学习 Rust 或其他用于在该平台创建程序的语言而不愿在 Solana 上构建应用。Solidity 开发者可以借此将自己的技能和知识迁移到 Solana,轻松释放构建去中心化应用的潜力。
对 Solana 程序的影响
Solang 作为 Solana 的 Solidity 编译器,可以改进开发流程,并鼓励经验丰富的 Solidity 开发者探索 Solana 区块链提供的机会。
就其对 Solana 程序的影响而言,Solang 并未带来任何重大变化。编译过程会将高级 Solidity 源代码转换为可在 Solana 区块链上执行的低级表示形式。这让使用不同语言编写程序的开发者可以实现互操作,并在 Solana 上通信。
从整体来看,Solang 支持:
- Solana 库(SPL-Token 和系统指令)
- 内置导入
Solana 库
Solana 库在 Solang GitHub 仓库中分为两个不同的库:
- SPL-Token
- 系统指令
1. SPL-Token
借助 SPL 支持,你可以使用 Solang Spl-Token 库创建、铸造、销毁和转移 SPL 代币。它为你提供了一套工具,可从 Solang 程序中管理 SPL 代币。
要在 Solidity 代码中使用它,可以先将 spl_token.sol 文件复制到源代码树中。
2. 系统指令
借助系统指令,开发者可以使用创建账户、转账、分配账户数据和支付交易费等常规功能。
你可以使用与 SPL 库相同的方法,将 system_instruction.sol 文件复制到源代码树中,然后开始在 Solidity 代码中使用它。
内置导入
内置导入专为 Solana 平台提供。
它们让你可以使用以下 Solana 程序功能:
- AccountInfo
- AccountMeta
- 程序派生地址(PDAs)
1. AccountInfo
AccountInfo 会收集传入交易的所有账户信息。你可以在此处了解更多信息。
2. AccountMeta
进行跨程序调用(CPI)时,你可以使用 Account Meta 指定应传入的账户。
3. PDAs
PDAs 支持在程序之间进行调用时,以编程方式创建和使用签名。
借助 Solang,你可以从已创建的合约中创建并检索由程序地址生成的 PDAs,从而增强应用的安全性。
你可以在此处查看 Solang 提供的其他内置功能。
开始使用
你可以通过此处的 Solana 文档开始学习 Solang。该指南将引导你完成 Anchor 程序构建,并使用 Solang 编译器创建你的第一个 Solidity/Solana 程序。
本指南将帮助你克服最初的学习曲线,理解 Ethereum 智能合约与 Solana 程序之间的区别,尤其是它们处理状态数据的方式。这是从 Ethereum 转向 Solana 开发时最大的障碍。
总结
总而言之,对于希望迁移到 Solana 的 Ethereum Solidity 开发者来说,Solang 是一项重大进步。作为 Solana 的 Solidity 编译器,Solang 降低了在该平台上开发的学习门槛,让经验丰富的 Solidity 开发者能够利用现有技能和知识。该编译器弥合了此前存在的鸿沟,吸引了原本可能因需要学习 Rust 或其他语言来创建 Solana 程序而犹豫不决的开发者。
相关文章
订阅 Helius
及时了解 Solana 开发的最新动态,并在我们发布新内容时收到更新


