Solana - 如何在Solana上使用Solidity编程 - Solang与Neon - Quicknode

  • QuickNode
  • 发布于 2025-01-30 20:43
  • 阅读 11

本文介绍了两个新兴项目Solang和Neon,它们使开发者能够使用Solidity编写智能合约并部署到Solana。文章深入探讨了Solana的基本特性、这两个工具的工作原理及其优缺点,并提供了如何开始使用它们的指南,适合对Solana生态系统有一定了解的开发者。

概述

Solana 开发者生态系统正在不断发展。最近,两个项目出现,使开发者可以使用 Solidity 编写智能合约并将其部署到 Solana。这些项目是 SolangNeon。本指南将提供这两个项目的概述,比较和对比它们,并显示你可以开始构建的地方。

你将需要的

Solana 基础知识

在我们深入到 Solang 和 Neon 之前,先了解一些对理解 Solana 有帮助的特性(如果你想更深入地了解 Solana,请查看我们的 参考指南)。

  • Solana 中的大多数组件都是账户,包括用户钱包、程序、数据日志,甚至系统程序。账户就像传统操作系统中的文件——它们可以被创建、修改和删除。它们可以存储数据或处理数据。
  • 智能合约在 Solana 中被称为“程序”。程序是存储可执行代码的账户,该代码处理交易并更新区块链的状态。
  • Solana 程序是无状态的(与状态有状态的 EVM 合约相比)。这意味着 Solana 程序不存储状态。相反,Solana 程序将状态存储在账户中。
  • Solana 账户最多可以存储 10 MB 的数据。
  • Solana 程序是可升级的。
  • Solana 账户地址使用 32 字节的公钥(与以太坊的 20 字节公钥相比)。

为什么要在 Solana 上构建?

Solana 为开发者提供了许多优势,包括:

  • 低Gas费用(每笔交易 < $0.01)
  • 高吞吐量(持续处理超过 3,000 笔交易每秒)
  • 快速确认(约 400 毫秒)
  • 通过可组合性访问不断增长的 NFT 和 DeFi 协议及工具生态系统

通过使用 Solang 或 Neon 构建,你可以享受 Solana 的速度、成本和用户群的优势,同时利用你现有的 Solidity 知识。

Solang 和 Neon

由于 Solana 的状态和账户架构与以太坊不同,因此无法简单地将以太坊智能合约部署到 Solana。Solang 和 Neon 是两个新的工具,它们抽象了许多 Solana 与以太坊的不同之处。这使得开发者能够使用 Solidity 编写智能合约,并将其部署到 Solana。

从高层来看,Solang 是一个 Solidity 编译器,它将 Solidity 智能合约编译为 Solana 程序。Neon 是一个在 Solana 上运行的 EVM 实现(安装在 Solana 账户中的整个 EVM 执行层),可以与 Solana 区块链交互。由于它们有很大不同,先让我们来看一下每一个。

什么是 Solang?

Solang 是一个将 Solidity 代码编译成 Solana 程序的 Solidity 编译器。大多数 Solana 开发使用 Rust 进行,并编译为可以由 Solana 运行时以字节码形式使用。Solang 是一种替代方法,它使用 LLVM 编译框架将 Solidity 代码编译为 Solana 字节码格式合约代码。这意味着已部署的程序可以直接访问 Solana 运行时。

主要特性:

什么是 Neon EVM?

Neon 是一个在 Solana 可执行账户中部署的以太坊虚拟机(Solana 智能合约中的整个 EVM 执行层)。这是因为 EVM 仅占 2MB,而 Solana 账户最多可以存储 10MB 的可执行数据。Neon 不是 L2 解决方案或侧链——Neon 是在 Solana 上运行的完整 EVM 实现。Neon 的类比可能是 WSL,它允许你在 Windows 上运行 Linux,同时仍然使用 Windows 应用程序。这是 Neon 工作原理的简化示意图:

Neon 示例 (来源:Neon 文档

为了在 Solana 上启用类 EVM 体验,Neon 向用户抽象了许多 Solana 账户和交易的细微差别。这意味着单个 Neon 交易可以生成并有效地包装多个 Solana 交易。例如,调用智能合约函数的 Neon 交易可能会生成一个 Solana 交易以创建一个新账户,一个 Solana 交易来转移代币,以及一个 Solana 交易来调用智能合约函数。你可以在 Neon Explorer 交易浏览器中看到这一点:

Neon Explorer

主要特性:

  • Neon 为 Solana 上的用户和开发者提供类似 ETH 的体验,这意味着两者都可以使用他们现有的技术栈(例如,Solidity、Hardhat 等)、钱包(例如,Metamask)等。
  • 用户可以利用 ERC20 代币(原生代币 NEON 可用于支付Gas费用——获取测试网 NEON 在这里
  • Neon 支持 EVM JSON-RPC 调用(例如,ethers.js)
  • ETH L1 兼容(代码应可直接从 ETH 迁移)

Solang 与 Neon

让我们对比一下 Solang 和 Neon:

属性 Solang Neon
浏览器 任何 Solana Explorer Neon Explorer
支持的代币 SPL 代币 ERC20 代币及<br>包装的 SPL 代币
开发工具 Solang, Anchor Solidity 工具(例如,Hardhat)
钱包 Solana 钱包<br>(例如 Phantom) EVM 钱包<br>(例如 Metamask)
Gas代币 SOL NEON
客户端工具 Solana-Web3.js Ethers.js
账户地址 32 字节公钥 20 字节公钥
结算层 Solana Solana
结算速度 约 400 毫秒 约 400 毫秒

安全性

重要的是要记住,Solang 和 Neon 都是新的工具。虽然它们都是开源并且经过审计,但它们仍然年轻。因此,使用这些工具时需要意识到风险。在使用 Solang 和 Neon 将 Solidity 智能合约部署到 Solana 时,有几个考虑区域很重要(注意:此列表并不详尽。如果你计划将合约部署到生产环境,请咨询安全专家。)。

  • 编译器和实现的完整性:注意你的 Solidity 代码如何编译和转换为 Solana 的架构,尤其是在使用 Solang 的编译器或 Neon's EVM 实现时。
  • 与现有工具的兼容性:Neon 与传统以太坊工具(如 Metamask)的兼容性可能具有一些应在开发过程中考虑的细微差别。
  • 智能合约最佳实践:与任何区块链一样,遵循智能合约安全的最佳实践依然至关重要。

Solang 和 Neon 都经过审核,并且都是开源的,体现了社区对安全性的承诺。关注开发者的更新、查看审核细节并与社区互动,可以帮助开发者利用这些工具,同时意识到相关风险。审核报告及更多信息的链接如下:

在 Solana 上使用 Solidity 构建

从 Solang 开始

要开始使用 Solang,请查看我们的 指南:如何使用 Solidity 和 Solang 创建 Solana 程序。该指南将带你逐步了解如何使用 Anchor 启动新项目,使用 Program Derived Addresses 等关键 Solana 概念以及将程序部署到 Solana。

从 Neon 开始

查看 Neon 的快速入门指南 在这里,以了解如何设置 Neon 项目、部署智能合约并使用 Metamask 与之进行交互:

有很多东西要学!

你现在对 Solang 和 Neon 及其如何在 Solana 上构建有了深入的了解。那么你还在等什么?行动起来,开始构建吧!

我们仍然处于在 Solana 上使用 Solidity 可以做的事情的早期阶段,因此我们非常期待看到你所构建的东西。请在我们的 Discord 上分享你的进展,并在 Twitter 上关注我们的最新动态!

我们 ❤️ 反馈!

告诉我们 如果你有任何反馈或对新主题的请求。我们期待听到你的声音。

其他资源

  • 原文链接: quicknode.com/guides/sol...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
QuickNode
QuickNode
江湖只有他的大名,没有他的介绍。