如何编写 Solana 智能合约?

什么是Solana智能合约?简而言之,Solana智能合约是在Solana网络上运行的合约。但是,为了更充分地回答“什么是Solana智能合约?”这个问题,最好先分别深入研究Solana和智能合约的复杂性。所以,让我们从仔细研究Solana网络开始这篇文章!Solan

<!--StartFragment-->

什么是 Solana 智能合约?

简而言之,Solana 智能合约是在 Solana 网络上运行的合约。但是,为了更充分地回答“什么是 Solana 智能合约?”这个问题,最好先分别深入研究 Solana 和智能合约的复杂性。所以,让我们从仔细研究 Solana 网络开始这篇文章! 

Solana 标志。

Solana 于 2017 年由 Solana Labs 首次推出,该组织是 Solana 网络背后的组织。Solana 是一个开源、可编程的区块链,表明该网络支持智能合约。区块链强调速度和可扩展性,因为 Solana 可以比以太坊等更经济、更快地处理交易。 

Solana 的本币称为 SOL,用于确保网络安全。此外,区块链的独特之处在于 Solana 实现了两种共识机制:PoH(历史证明)和 PoS(权益证明)。这种混合共识机制使 Solana 能够保持较高的交易速度,同时保持较低的成本。 

在对 Solana 有了简要了解之后,现在是时候深入了解智能合约了。因此,让我们尝试回答这个问题:“什么是智能合约?”

智能合约,也称为 Web3 合约,是存储在区块链网络上的程序。这些程序在满足预定义条件后立即执行预定义操作。因此,智能合约非常适合自动在两个或多个参与者之间达成协议,以便每个参与者都可以确定特定的结果。此外,由于代码是智能合约的中介,这意味着参与者不必担心中介或不必要的损失。 

在 Solana 的背景下,智能合约本质上是存储在 Solana 网络上的合约。现在,让我们仔细看看如何编写 Solana 智能合约! 

编写 Solana 智能合约 – 完整解析

现在您已经对 Solana 智能合约更加熟悉了,以下部分将深入介绍 Solana 智能合约开发。我们将向您展示如何从测试应用程序编写、部署和调用智能合约。该应用程序将是一个简单的“Hello World!”项目,用户可以按下“运行程序”按钮来调用智能合约。此外,UI(用户界面)如下所示: 

Solana 示例 dapp UI。

该应用程序利用了 Moralis 的以太坊样板,使我们能够更有效地构建此智能合约测试应用程序。例如,该模板具有 Moralis 的Web3 Auth API,使我们能够轻松实现各种身份验证机制。如果您想了解有关不同替代方案的更多信息,例如,您可以查看我们的指南! 

尽管如此,一旦用户点击上面的“运行程序”按钮,它应该会提示他们的Web3 钱包,允许他们通过签署消息来调用智能合约。一旦签名,应用程序将返回来自智能合约的数据日志。在这种情况下,应用程序返回“Hello World!!”消息: 

Solana dapp 显示“hello world”消息。

为了使本教程的结构更加简单,我们将编写 Solana 智能合约的过程分为以下三个部分: 

  • 安装 Rust 和 Solana CLI
  • 创建并部署智能合约
  • 调用智能合约 – 测试应用程序

值得注意的是,我们将在整篇文章中使用 macOS 设备。因此,如果您使用的是 Windows,请记住该过程可能偶尔会有所不同。尽管如此,如果这听起来很有趣,并且您想自己编写 Solana 智能合约,请加入我们并了解有关 Solana 智能合约开发所需的一切!

安装 Rust 和 Solana CLI

在本教程的初始部分,我们将展示如何设置 Rust 和 Solana CLI。如果您已经安装了这些,请随意跳过此部分并直接跳到下一节。否则,加入我们,我们将首先向您展示如何设置 Rust。 

首先,打开一个新的 Unix 终端并运行以下命令: 

curl --proto '=https' --tlsv1.2 -sSf https: //sh.rustup.rs|sh

运行该命令后,您必须在几种安装类型中进行选择。在本例中,我们建议选择默认选项,方法是输入“1”并按回车键: 

在终端中选择 #1 替代方案。

Rust 成功安装后,下一步就是安装 Solana CLI。要安装 CLI,您只需要几个命令,您可以先在终端中输入以下内容并按回车键: 

sh -c "$(curl -sSfL https\://release.solana.com/stable/install)"

当安装完成后,您需要设置“环境路径”,您可以在终端日志中找到它。 

Rust 成功消息。

从那里,通过以下命令创建一个新的本地 Solana 密钥对: 

mkdir \~/my-solana-wallet

solana-keygen new --outfile \~/my-solana-wallet/my- keypair.json

一旦您的机器上有了 Solana 钱包,请通过以下输入获取钱包地址: 

solana 地址

通过输入以下命令将 devnet 集群设置为与本地事务一起使用: 

solana 配置设置--url https\://api.devnet.solana.com

最后,通过在终端中运行以下命令将测试 SOL 代币空投到钱包: 

solana 空投1

这就是本教程的初始部分。我们现在将深入探讨本教程的核心部分,并向您展示如何编写 Solana 智能合约!

创建并部署智能合约

现在是时候编写 Solana 智能合约了。要启动此过程,请继续打开您喜欢的 IDE。我们将使用 VSC(Visual Studio Code);但是,您可以自由选择任何您更喜欢使用的 IDE。打开 IDE 后,创建一个新文件夹并启动一个新终端。如果您像我们一样使用 VSC,您可以通过单击顶部的“终端”并点击“新终端”来执行此操作: 

打开一个新的终端 VSC。

接下来,通过在终端输入以下命令,使用 Cargo 创建一个新的 Rust 项目: 

货物初始化 hello_world --lib

按下回车键并运行命令后,将生成一个简单的 Cargo 库,该库将添加到 IDE 的目录中。它在 VSC 中的样子如下: 

新的 Cargo 项目结构。

从那里,继续使用此命令导航到正确的位置: 

你好世界

然后,您可以通过添加以下代码片段来更新“Cargo.toml”文件: 

[库]

名称= “hello_world”

板条箱类型 = [ “cdylib” ,“lib” ]

现在看起来应该是这样的: 

Cargo.toml 配置。

接下来,删除 ”src/lib.rs” 文件中的所有代码。然后,您可以通过运行以下命令将 Solana 程序包添加到项目中: 

货物添加 solana_program

剩下的就是将合约代码添加到 ”src/lib.rs” 文件中。首先,你需要导入 Solana 程序: 

使用 solana_program:: {

account_info::账户信息,

入口点,

入口点::ProgramResult,

公钥::公钥,

信息,

} ;

接下来,使用“ *process_instruction ”函数定义“ *entrypoint ” : **

入口点!(process_instruction );

最后,创建“ process_instruction ”函数本身并添加用于记录“ Hello World !! ”消息的代码: 

pub fn进程指令(

程序 ID:\&Pubkey,

账户:&[账户信息] ,

指令数据:& [ u8 ]

) - >程序结果{

msg! ( "你好,世界!" ) ;

好的(())

}

这将是“src/lib.rs”文件的最终版本的代码: 

使用 solana_program:: {

account_info::账户信息,

入口点,

入口点::ProgramResult,

公钥::公钥,

信息,

} ;

入口点!(process_instruction );

pub fn进程指令(

程序 ID:\&Pubkey,

账户:&[账户信息] ,

指令数据:& [ u8 ]

) - >程序结果{

msg! ( "你好,世界!" ) ;

好的(())

}

从那里,通过在终端输入以下命令来构建项目: 

货物建造-bpf

项目搭建完成后,通过“ solana program deploy ”命令部署智能合约,并指定”./target/deploy/hello_world.so”路径: 

solana 程序部署./target/deploy/hello_world.so

运行此命令将返回程序 ID,您将在最后一节中需要它: 

部署消息。

调用智能合约 – 测试应用程序 

在最后一节中,我们将向您展示如何创建可用于调用和测试刚刚创建的 Solana 智能合约的应用程序。我们将克隆一个已经开发的模板,以使流程尽可能无缝。从那里,您只需通过添加 Moralis Web3 API 密钥和程序 ID 来稍微配置代码。不过,您会在下面找到该应用程序的 GitHub 存储库: 

Solana 智能合约测试应用程序文档 – <https://github.com/johnvsnagendra/solana-smart-contract-helloWorld

首先,打开上面的链接,点击绿色的“代码”按钮,然后复制存储库 URL: 

从 GitHub 复制代码库。

然后,您可以再次打开您最喜欢的 IDE,创建一个文件夹并启动一个新终端。从那里,使用 repo URL 输入以下命令将项目克隆到本地目录: 

git clone “REPOSITORY_URL”

克隆项目后,打开包含多个环境变量的“.env.local.example”文件。在这种情况下,您需要将 Moralis Web3 API 密钥添加到“ MORALIS_API_KEY ”变量中。要获取密钥,请登录 Moralis。然后,导航到“帐户”,选择“密钥”选项卡,并复制 Web3 API 密钥: 

如何从 Moralis 管理 UI 获取 API 密钥。

将 API 密钥添加到环境变量后,您可以导航到 ”/src/components/templates/helloWorld/HelloWorld.tsx” 文件。从那里,向下滚动到第十九行并实现部署合约时获取的程序 ID。

添加程序 ID。

测试应用程序

将这两个组件添加到代码后,您应该能够在浏览器中启动和测试该应用程序。此外,如果一切正常,您现在应该能够单击“运行程序”按钮,签署消息并运行智能合约。此外,您应该收到“Hello World!!”消息! 

Solana 示例 dapp UI。

<!--EndFragment-->

  • 原创
  • 学分: 0
  • 分类: Solana
  • 标签:
点赞 0
收藏 0
分享

0 条评论

请先 登录 后评论
加密女士
加密女士
无代码发币平台