什么是 Solana 智能合约?
简而言之,Solana 智能合约是在 Solana 网络上运行的合约。但是,为了更充分地回答“什么是 Solana 智能合约?”这个问题,最好先分别深入研究 Solana 和智能合约的复杂性。所以,让我们从仔细研究 Solana 网络开始这篇文章!
Solana 于 2017 年由 Solana Labs 首次推出,该组织是该网络背后的组织。Solana 是一个开源、可编程的区块链,表明该网络支持智能合约。区块链强调速度和可扩展性,因为 Solana 可以比以太坊等更经济、更快地处理交易。
Solana 的本币称为 SOL,用于确保网络安全。此外,区块链的独特之处在于 Solana 实现了两种共识机制:PoH(历史证明)和 PoS(权益证明)。这种混合共识机制使 Solana 能够保持较高的交易速度,同时保持较低的成本。
在对 Solana 有了简要的了解之后,现在是时候深入了解智能合约了。因此,让我们尝试回答这个问题:“什么是智能合约?”
智能合约,也称为 Web3 合约,是存储在区块链网络上的程序。这些程序会在预定义条件满足时立即执行预定义操作。因此,智能合约非常适合自动在两个或多个参与者之间达成协议,以便每个参与者都可以确定特定的结果。此外,由于代码是智能合约的中介,这意味着参与者不必担心中介或不必要的损失。
在 Solana 的背景下,智能合约本质上是存储在 Solana 网络上的合约。现在,让我们仔细看看如何编写 Solana 智能合约!
编写 Solana 智能合约 – 完整解析
现在您已经对 Solana 智能合约更加熟悉了,以下部分将深入介绍 Solana 智能合约开发。我们将向您展示如何从测试应用程序编写、部署和调用智能合约。该应用程序将是一个简单的“Hello World!”项目,用户可以按下“运行程序”按钮来调用智能合约。此外,UI(用户界面)如下所示:
该应用程序利用了 Moralis 的以太坊样板,使我们能够更有效地构建此智能合约测试应用程序。例如,该模板具有 Moralis 的Web3 Auth API,使我们能够轻松实现各种身份验证机制。如果您想了解有关不同替代方案的更多信息,例如,您可以查看我们的指南,了解如何使用 RainbowKit 添加登录!
尽管如此,一旦用户点击上面的“运行程序”按钮,它应该会提示他们的Web3 钱包,允许他们通过签署消息来调用智能合约。签名后,应用程序将返回来自智能合约的数据日志。在这种情况下,应用程序返回“Hello World!!”消息:
为了使本教程的结构更加简单,我们将编写 Solana 智能合约的过程分为以下三个部分:
安装 Rust 和 Solana CLI
创建并部署智能合约
调用智能合约 – 测试应用程序
值得注意的是,我们将在整篇文章中使用 macOS 设备。因此,如果您使用的是 Windows,请记住该过程可能偶尔会有所不同。尽管如此,如果这听起来很有趣,并且您想自己编写 Solana 智能合约,请加入我们并了解有关 Solana 智能合约开发所需的一切!
安装 Rust 和 Solana CLI
在本教程的初始部分,我们将展示如何设置 Rust 和 Solana CLI。如果您已经安装了这些,请随意跳过此部分并直接跳到下一节。否则,加入我们,我们将首先向您展示如何设置 Rust。
首先,打开一个新的 Unix 终端并运行以下命令:
运行该命令后,您必须在几种安装类型中进行选择。在本例中,我们建议输入“1”并按回车键来选择默认选项:
Rust 成功安装后,下一步就是安装 Solana CLI。要安装 CLI,您只需要几个命令,您可以先在终端中输入以下内容并按回车键:
当安装完成后,您需要设置“环境路径”,您可以在终端日志中找到它。
从那里,通过以下命令创建一个新的本地 Solana 密钥对:
一旦您的机器上有了 Solana 钱包,请通过以下输入获取钱包地址:
通过输入以下命令将 devnet 集群设置为与本地事务一起使用:
最后,通过在终端中运行以下命令将测试 SOL 代币空投到钱包:
这就是本教程的初始部分。我们现在将深入探讨本教程的核心部分,并向您展示如何编写 Solana 智能合约!
创建并部署智能合约
现在是时候编写 Solana 智能合约了。要启动此过程,请继续打开您喜欢的 IDE。我们将使用 VSC(Visual Studio Code);但是,您可以自由选择任何您更喜欢使用的 IDE。打开 IDE 后,创建一个新文件夹并启动一个新终端。如果您像我们一样使用 VSC,您可以通过单击顶部的“终端”并点击“新终端”来执行此操作:
接下来,通过在终端输入以下命令,使用 Cargo 创建一个新的 Rust 项目:
按下回车键并运行命令后,将生成一个简单的 Cargo 库,该库将添加到 IDE 的目录中。它在 VSC 中的样子如下:
从那里,继续使用此命令导航到正确的位置:
然后,您可以通过添加以下代码片段来更新“Cargo.toml”文件:
现在看起来应该是这样的:
接下来,删除 ”src/lib.rs” 文件中的所有代码。然后,您可以通过运行以下命令将 Solana 程序包添加到项目中:
剩下的就是将合约代码添加到 ”src/lib.rs” 文件中。首先,你需要导入 Solana 程序:
接下来,使用“ process_instruction ”函数定义“ entrypoint ” :
最后,创建“ process_instruction ”函数本身并添加用于记录“ Hello World !! ”消息的代码:
这将是“src/lib.rs”文件的最终版本的代码:
从那里,通过在终端输入以下命令来构建项目:
项目搭建完成后,通过“ solana program deploy ”命令部署智能合约,并指定”./target/deploy/hello_world.so”路径:
运行此命令将返回程序 ID,您将在最后一节中需要它:
调用智能合约 – 测试应用程序
在最后一节中,我们将向您展示如何创建可用于调用和测试刚刚创建的 Solana 智能合约的应用程序。我们将克隆一个已经开发的模板,以使流程尽可能无缝。从那里,您只需通过添加 Moralis Web3 API 密钥和程序 ID 来稍微配置代码。
首先,打开上面的链接,点击绿色的“代码”按钮,然后复制存储库 URL:
然后,您可以再次打开您最喜欢的 IDE,创建一个文件夹并启动一个新终端。从那里,使用 repo URL 输入以下命令将项目克隆到本地目录:
克隆项目后,打开包含多个环境变量的“.env.local.example”文件。在这种情况下,您需要将 Moralis Web3 API 密钥添加到“ MORALIS_API_KEY ”变量中。要获取密钥,请登录 Moralis。然后,导航到“帐户”,选择“密钥”选项卡,并复制 Web3 API 密钥:
将 API 密钥添加到环境变量后,您可以导航到 ”/src/components/templates/helloWorld/HelloWorld.tsx” 文件。从那里,向下滚动到第十九行并实现部署合约时获得的程序 ID。
测试应用程序
将这两个组件添加到代码后,您应该能够在浏览器中启动和测试该应用程序。此外,如果一切正常,您现在应该能够单击“运行程序”按钮,签署消息并运行智能合约。此外,您应该收到“Hello World!!”消息!