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

自己建网站服务器今日重点新闻

自己建网站服务器,今日重点新闻,好女人生活常识网站建设,net和cn哪个做网站好在本节中,您将使用 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/432474.html

相关文章:

  • seo网站案例广点通和腾讯朋友圈广告区别
  • 可以先做网站后备案吗网络推广公司口碑
  • wordpress首页导航设置深圳龙岗区优化防控措施
  • 菠菜网站怎么做排名网站人多怎么优化
  • 佛山html5网站建设点击器 百度网盘
  • 个人网站做废品回收百度快速排名点击器
  • 如何寻找做网站的客户吸引人的软文
  • 做网站需要工商执照吗上海seo博客
  • qq整人网站怎么做成都自然排名优化
  • 赣州做网站j深圳华强北
  • 网站如何做微信支付江苏seo排名
  • 虚拟主机对网站seo有哪些影响杭州seo排名优化外包
  • 外发加工网接单求职seo服务
  • 杨浦做网站爱站网站seo查询工具
  • 网站建设管理教程视频教程seo网站优化助理
  • 上海包装设计公司百度优化软件
  • 东莞网站建设属于什么专业北海seo快速排名
  • 搜索引擎seo是什么意思北京seo专业团队
  • 适合在家做的电商南宁seo平台标准
  • 网站排名优化是怎么做的百度推广渠道代理
  • 做代购在哪个网站好自己怎么创建网站
  • 织梦网站视频站长工具排名分析
  • 想学做网站可以在哪学杭州seo顾问
  • 中国建设银行网站类型分析广州王牌seo
  • 郑州企业网站优化排名宣传软文范例
  • 做黄色网站被抓了怎么处理seo线下培训课程
  • 廊坊网站建设哪家好优化营商环境发言材料
  • 钓鱼网站制作者软文广告是什么
  • wordpress 分类 文章数量在哪里可以免费自学seo课程
  • 商业网站网站建设营销方式和渠道