当前位置: 首页 > wzjs >正文

百度站长链接提交平台即刻搜索引擎入口

百度站长链接提交平台,即刻搜索引擎入口,b2b平台特点,什么网站做新闻更好在本节中,您将使用 Anchor 框架构建、部署和测试一个简单的 Solana 程序(智能合约)。一步一步跟着我来,将完成第一个程序部署到 Solana 区块链上。 目录 1.创建 Anchor 项目 2.构建和部署程序 3.测试程序 4.关闭程序 本节的目…

在本节中,您将使用 Anchor 框架构建、部署和测试一个简单的 Solana 程序(智能合约)。一步一步跟着我来,将完成第一个程序部署到 Solana 区块链上。

目录

1.创建 Anchor 项目

2.构建和部署程序

3.测试程序

4.关闭程序


本节的目的是让您熟悉 Solana Playground。本指南介绍了程序派生地址 (PDA) 和跨程序调用 (CPI) 部分中的更详细示例。有关更多详细信息,请参阅 Solana 上的程序页面。

1.创建 Anchor 项目

首先,在新的浏览器选项卡中打开 https://beta.solpg.io。

单击左侧面板上的 “Create a new project” 按钮。

输入项目名称,选择 Anchor 作为框架,然后单击 “Create” 按钮。

您将在 src/lib.rs 文件中看到一个使用程序代码创建的新项目。

这个基本的 Solana 程序会创建一个新帐户并在其中存储一个数字。该程序包含一个指令 (initialize),该指令将 u64 数字作为输入,创建一个新帐户,并将该数字保存在该帐户的数据中。当您调用该指令时,它还会将一条消息记录到事务的程序日志中。

(我把它的内容贴下来:)

use anchor_lang::prelude::*;// This is your program's public key and it will update
// automatically when you build the project.
declare_id!("11111111111111111111111111111111");#[program]
mod hello_anchor {use super::*;pub fn initialize(ctx: Context<Initialize>, data: u64) -> Result<()> {ctx.accounts.new_account.data = data;msg!("Changed data to: {}!", data); // Message will show up in the tx logsOk(())}
}#[derive(Accounts)]
pub struct Initialize<'info> {// We must specify the space in order to initialize an account.// First 8 bytes are default account discriminator,// next 8 bytes come from NewAccount.data being type u64.// (u64 = 64 bits unsigned integer = 8 bytes)#[account(init, payer = signer, space = 8 + 8)]pub new_account: Account<'info, NewAccount>,#[account(mut)]pub signer: Signer<'info>,pub system_program: Program<'info, System>,
}#[account]
pub struct NewAccount {data: u64
}

 解释:

declare_id!macro 指定程序的链上地址。Solana Playground 会在您下一步构建程序时自动更新此地址。

declare_id!("11111111111111111111111111111111");

 

#[program] 属性对包含表示程序指令的函数的模块进行注释。

#[program]
mod hello_anchor {use super::*;pub fn initialize(ctx: Context<Initialize>, data: u64) -> Result<()> {ctx.accounts.new_account.data = data;msg!("Changed data to: {}!", data); // Message will show up in the tx logsOk(())}
}

在此示例中,initialize 指令采用两个参数:

1.ctx: Context<Initialize> - 将此指令所需的帐户传递给函数,如 Initialize 结构中所指定。

2.data: u64 - 调用指令时必须提供的自定义参数。

函数体将 new_account 的 data 字段设置为提供的 data 参数,然后将消息打印到程序日志中。

#[derive(Accounts)]
pub struct Initialize<'info> {#[account(init, payer = signer, space = 8 + 8)]pub new_account: Account<'info, NewAccount>,#[account(mut)]pub signer: Signer<'info>,pub system_program: Program<'info, System>,
}

该 #[derive(Accounts)] 属性定义了一个结构体,该结构体指定特定指令所需的账户,其中每个字段代表一个单独的账户。

Anchor通过字段类型(例如Signer<'info>)和约束(例如#[account(mut)])自动处理与帐户验证相关的常见安全检查。

(简单来说,就是有个结构体,能创建账户,并且里面能校验)

#[account] 属性定义了一个结构体,该结构体表示此程序创建和拥有的账户的数据类型。

 

#[account]
pub struct NewAccount {data: u64
}

2.构建和部署程序

要构建程序,只需在终端中运行 build 即可。

(构建成功)

Solana Playground 更新了 declare_id 年的地址 !().此地址代表您的程序的链上地址(程序 ID)。

(如图所示!)

 构建程序后,在终端中运行 deploy,将程序部署到网络(默认为 devnet)。程序部署需要将 SOL 分配给存储程序的链上账户。

(进度条在动!)

(部署完成,会弹出一个链接,点开后看到部署详情)

在部署之前,请确保您有足够的 SOL。您可以通过在 Playground 终端中运行 solana airdrop 5 或使用 空投。

您还可以使用左侧面板上的 Build (构建 ) 和 Deploy (部署) 按钮。

3.测试程序

起始代码包括一个位于 tests/anchor.test.ts 中的测试文件。此文件演示如何从客户端调用程序上的 initialize 指令。

 (我把它贴下来:)

// No imports needed: web3, anchor, pg and more are globally availabledescribe("Test", () => {it("initialize", async () => {// Generate keypair for the new accountconst newAccountKp = new web3.Keypair();// Send transactionconst data = new BN(42);const txHash = await pg.program.methods.initialize(data).accounts({newAccount: newAccountKp.publicKey,signer: pg.wallet.publicKey,systemProgram: web3.SystemProgram.programId,}).signers([newAccountKp]).rpc();console.log(`Use 'solana confirm -v ${txHash}' to see the logs`);// Confirm transactionawait pg.connection.confirmTransaction(txHash);// Fetch the created accountconst newAccount = await pg.program.account.newAccount.fetch(newAccountKp.publicKey);console.log("On-chain data is:", newAccount.data.toString());// Check whether the data on-chain is equal to local 'data'assert(data.eq(newAccount.data));});
});

部署程序后,要运行测试文件,请在终端中运行 test

(结果如下:)

查找确认测试成功通过的输出。

还可以使用 Test (测试 ) 左侧面板上的按钮。

 然后,您可以通过运行 solana confirm -v 来查看交易日志 命令并从测试输出中指定交易哈希(签名):

solana confirm -v [TxHash]

您还可以查看交易详情 SolanaFM 或 Solana Explorer 通过搜索交易签名(哈希)进行搜索。

请记住在用于匹配 Solana Playground 的 Explorer 上更新集群(网络)连接。Solana Playground 默认使用 devnet 集群。

4.关闭程序

最后,关闭程序可以完全恢复分配给链上程序的 SOL。

您可以通过运行以下命令并指定在 declare_id 中找到的程序地址来关闭程序 !()

solana program close [ProgramID]

(余额已经恢复!)

 

Congratulations!

恭喜你!刚刚使用 Anchor 框架构建并部署了您的第一个 Solana 程序。 

参考:链接

http://www.dtcms.com/wzjs/286910.html

相关文章:

  • wordpress 分布式怎么去优化关键词
  • 涿鹿镇做网站营销推广手段有什么
  • 打击地上黑庄做网站百度推广落地页
  • 设计类专业学校株洲seo排名
  • 企业网站建设与推广范文seo查询网站是什么
  • 做b2b网站的公司写软文一篇多少钱合适
  • 接网站建设 网站设计中国万网域名注册
  • 建设厅试验员考试报名网站河南网站推广多少钱
  • 河南微网站开发app推广方案模板
  • 安徽 电子政务网站定制网络推广课程培训
  • 网站建设 三牛包就业的培训机构
  • 吉林响应式网站价格深圳排名seo
  • 网站怎么做自己站长app拉新推广怎么做
  • 做渠道该从哪些网站入手今日军事新闻最新消息
  • 温州文成县高端网站设计seo推广策划
  • 利用angular做的网站怎样提高百度推广排名
  • 做网站的公司主要做shm电脑优化大师下载安装
  • 动态网页的文件扩展名新人学会seo
  • 网站开发发帖语言seo推广编辑
  • 网站排名 算法百度网站大全
  • 如何撰写一个网站规划建设方案入门seo技术教程
  • 做公司的网站企业网站管理系统
  • 莆田网站制作公司推广链接点击器网页
  • 仿站网站域名网站推广代理
  • 高端网站建设哪家好百度站长工具怎么用
  • 免费java源码分享网站源码关键词搜索数据
  • 网站怎么做防御成都网站建设方案托管
  • 云南建设厅查证网站武汉网络推广广告公司
  • 上海知名网站建基本营销策略有哪些
  • 网站数字签名seo查询优化