什么是Solana智能合约?简而言之,Solana智能合约是在Solana网络上运行的合约。但是,为了更充分地回答“什么是Solana智能合约?”这个问题,最好先分别深入研究Solana和智能合约的复杂性。所以,让我们从仔细研究Solana网络开始这篇文章!Solan
<!--StartFragment-->
简而言之,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 智能合约开发。我们将向您展示如何从测试应用程序编写、部署和调用智能合约。该应用程序将是一个简单的“Hello World!”项目,用户可以按下“运行程序”按钮来调用智能合约。此外,UI(用户界面)如下所示:
该应用程序利用了 Moralis 的以太坊样板,使我们能够更有效地构建此智能合约测试应用程序。例如,该模板具有 Moralis 的Web3 Auth API,使我们能够轻松实现各种身份验证机制。如果您想了解有关不同替代方案的更多信息,例如,您可以查看我们的指南!
尽管如此,一旦用户点击上面的“运行程序”按钮,它应该会提示他们的Web3 钱包,允许他们通过签署消息来调用智能合约。一旦签名,应用程序将返回来自智能合约的数据日志。在这种情况下,应用程序返回“Hello World!!”消息:
为了使本教程的结构更加简单,我们将编写 Solana 智能合约的过程分为以下三个部分:
值得注意的是,我们将在整篇文章中使用 macOS 设备。因此,如果您使用的是 Windows,请记住该过程可能偶尔会有所不同。尽管如此,如果这听起来很有趣,并且您想自己编写 Solana 智能合约,请加入我们并了解有关 Solana 智能合约开发所需的一切!
在本教程的初始部分,我们将展示如何设置 Rust 和 Solana CLI。如果您已经安装了这些,请随意跳过此部分并直接跳到下一节。否则,加入我们,我们将首先向您展示如何设置 Rust。
首先,打开一个新的 Unix 终端并运行以下命令:
curl --proto '=https' --tlsv1.2 -sSf https: //sh.rustup.rs|sh
运行该命令后,您必须在几种安装类型中进行选择。在本例中,我们建议选择默认选项,方法是输入“1”并按回车键:
Rust 成功安装后,下一步就是安装 Solana CLI。要安装 CLI,您只需要几个命令,您可以先在终端中输入以下内容并按回车键:
sh -c "$(curl -sSfL https\://release.solana.com/stable/install)"
当安装完成后,您需要设置“环境路径”,您可以在终端日志中找到它。
从那里,通过以下命令创建一个新的本地 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,您可以通过单击顶部的“终端”并点击“新终端”来执行此操作:
接下来,通过在终端输入以下命令,使用 Cargo 创建一个新的 Rust 项目:
货物初始化 hello_world --lib
按下回车键并运行命令后,将生成一个简单的 Cargo 库,该库将添加到 IDE 的目录中。它在 VSC 中的样子如下:
从那里,继续使用此命令导航到正确的位置:
你好世界
然后,您可以通过添加以下代码片段来更新“Cargo.toml”文件:
[库]
名称= “hello_world”
板条箱类型 = [ “cdylib” ,“lib” ]
现在看起来应该是这样的:
接下来,删除 ”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:
然后,您可以再次打开您最喜欢的 IDE,创建一个文件夹并启动一个新终端。从那里,使用 repo URL 输入以下命令将项目克隆到本地目录:
git clone “REPOSITORY_URL”
克隆项目后,打开包含多个环境变量的“.env.local.example”文件。在这种情况下,您需要将 Moralis Web3 API 密钥添加到“ MORALIS_API_KEY ”变量中。要获取密钥,请登录 Moralis。然后,导航到“帐户”,选择“密钥”选项卡,并复制 Web3 API 密钥:
将 API 密钥添加到环境变量后,您可以导航到 ”/src/components/templates/helloWorld/HelloWorld.tsx” 文件。从那里,向下滚动到第十九行并实现部署合约时获取的程序 ID。
将这两个组件添加到代码后,您应该能够在浏览器中启动和测试该应用程序。此外,如果一切正常,您现在应该能够单击“运行程序”按钮,签署消息并运行智能合约。此外,您应该收到“Hello World!!”消息!
<!--EndFragment-->
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!