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

企业网站实施方案鹤岗市建设局网站

企业网站实施方案,鹤岗市建设局网站,网站后台用户名不存在,做一个卖车的网站该怎么做简介:通过 IDL 生成代码 调用 anchor 智能合约。 全网首发 使用 anchor 可以快速开发 solana 上面的智能合约 , 在本案例中我们 先使用 anchor 创建一个只能合约( 多个函数方法)。 部署到 dev 链上。 通过 anchor 的 IDL 生成 代码…

简介:通过 IDL 生成代码 调用 anchor 智能合约。 全网首发

        使用 anchor 可以快速开发 solana 上面的智能合约 , 在本案例中我们 先使用 anchor 创建一个只能合约( 多个函数方法)。 部署到 dev 链上。 通过 anchor 的 IDL 生成 代码, ( 我这边是go 框架代码这里别的语言也是可以的), 然后编写代码 调用 通过 IDL 生成的代码 来 调用 anchor 智能合约的函数

1.编写 anchor 只能合约 部署上链

1.1 anchor 智能合约的编写: 

◒:案例中使用 rust 编写 anchor 只能合约,一共四个方法,用户操作 pad 账户中的一个数值

  • initialize  初始化函数  只能调用一次

  • reset 重置为一个指定的值,可多次调用

  • increment 累加 可多次调用

  • subtract 累减 可多次调用

use anchor_lang::prelude::*;// This is your program's public key and it will update
// automatically when you build the project.
declare_id!("HKvWCsAhzhXRfj8zNhNrofjV3dDjSmm42EguMKK3X5n");#[program]
pub mod anchor_counter {use super::*;//初始化pub fn initialize(ctx: Context<Initialize>, init_data: u64) -> Result<()> {msg!("initialize from: {:?}", ctx.program_id);//直接给pad 账户复制ctx.accounts.counter.count = init_data;Ok(())}//重置 数据到指定 值pub fn reset(ctx: Context<UpdateCount>, init_data: u64) -> Result<()> {let counter = &mut ctx.accounts.counter;msg!("increment from: {:?}", ctx.program_id);msg!("previous counter: {:?}", counter.count);counter.count = init_data;//counter.count -= 2;msg!("after counter: {:?}", counter.count);Ok(())}//累加pub fn increment(ctx: Context<UpdateCount>) -> Result<()> {let counter = &mut ctx.accounts.counter;msg!("increment from: {:?}", ctx.program_id);msg!("previous counter: {:?}", counter.count);counter.count = counter.count.checked_add(1).unwrap();//counter.count -= 2;msg!("after counter: {:?}", counter.count);Ok(())}//累减pub fn subtract(ctx: Context<UpdateCount>, count: u64) -> Result<()> {let counter = &mut ctx.accounts.counter;msg!("increment from: {:?}", ctx.program_id);msg!("previous counter: {:?}", counter.count);//counter.count = counter.count.checked_add(1).unwrap();counter.count -= count;msg!("after counter: {:?}", counter.count);Ok(())}
}#[derive(Accounts)]
pub struct Initialize<'info> {#[account(mut)]// user 调用者 签名者, 是否 mut有权限修改信息pub user: Signer<'info>,// counter 数据账户  pda 派生#[account(init,seeds = [b"counter_seed"],bump,payer = user,space = 8 + 8)]pub counter: Account<'info, Counter>,// 程序账户pub system_program: Program<'info, System>,
}#[derive(Accounts)]
pub struct UpdateCount<'info> {// user 调用者 签名者pub user: Signer<'info>,#[account(mut)]pub counter: Account<'info, Counter>,
}#[account]
pub struct Counter {count: u64,
}
 1.2 部署智能合约。  导出 IDL 文件 

2.通过 anchor 智能合约 IDL 文件,生成代码

导出 anchor 智能合约的 IDL 文件我们可以 得到一个  idl.json 文件。因为我空间选取的是 go,所以我这边需要使用  anchor-go 库, 来把  idl.json 配置文件 生成一个 go 脚本。 

github.com/gagliardetto/anchor-go

 go run github.com/gagliardetto/anchor-go --src=idl.json

 运行上面命令。就会在当前项目中生成一个  generated 文件夹  以ancho 智能合约 项目名为 文件夹的目录。

3.使用 IDL 生成的代码,代用智能合约

这里直接值 使用生成的代码 构造合约,然后调用,调用完我们通过 区块链浏览器查看 发现数据已经变化了。 说明调用时成功的  

package mainimport ("anchor-go/generated/anchor_counter""fmt""github.com/gagliardetto/solana-go""github.com/gagliardetto/solana-go/rpc"confirm "github.com/gagliardetto/solana-go/rpc/sendAndConfirmTransaction""github.com/gagliardetto/solana-go/rpc/ws""golang.org/x/net/context"
)//TIP <p>To run your code, right-click the code and select <b>Run</b>.</p> <p>Alternatively, click
// the <icon src="AllIcons.Actions.Execute"/> icon in the gutter and select the <b>Run</b> menu item from here.</p>func main() {// 创建 RPC 客户端rpcClient := rpc.New(rpc.DevNet_RPC)wsClient, err := ws.Connect(context.Background(), rpc.DevNet_WS)if err != nil {panic(err)}response, err := rpcClient.GetVersion(context.TODO())if err != nil {panic(err)}fmt.Println("version", response.SolanaCore)// 交易签名账户 密钥对fromPrivateKey, err := solana.PrivateKeyFromBase58("你 anchor 所属 钱包 私钥") // 私钥if err != nil {panic(err)}fromPublicKey := fromPrivateKey.PublicKey()// 获取最新的区块哈希recent, err := rpcClient.GetLatestBlockhash(context.TODO(), rpc.CommitmentFinalized)if err != nil {panic(err)}//anchor 只能合约 地址anchorID := solana.MustPublicKeyFromBase58("HKvWCsAhzhXRfj8zNhNrofjV3dDjSmm42EguMKK3X5n")anchor_counter.SetProgramID(anchorID)// 通过随机因子 获取 PDA 账号padPublicKey, _, _ := solana.FindProgramAddress([][]byte{[]byte("counter_seed")}, anchorID)//调用 anchor 智能合约的  累加方法transferInstruction := anchor_counter.NewIncrementInstruction(fromPublicKey, padPublicKey)//调用 anchor 智能合约的  重置方法//transferInstruction := anchor_counter.NewResetInstruction(2025, fromPublicKey, padPublicKey)// 创建交易tx, err := solana.NewTransaction([]solana.Instruction{transferInstruction.Build()},recent.Value.Blockhash,solana.TransactionPayer(fromPublicKey),)if err != nil {panic(err)}fmt.Println(tx)// 签名交易_, err = tx.Sign(func(key solana.PublicKey) *solana.PrivateKey {if fromPrivateKey.PublicKey().Equals(key) {return &fromPrivateKey}return nil},)if err != nil {panic(fmt.Errorf("unable to sign transaction: %w", err))}//发送并等待交易确认sig, err := confirm.SendAndConfirmTransaction(context.TODO(),rpcClient,wsClient,tx,)if err != nil {panic(err)}fmt.Println("Transaction confirmed:", sig)
}
  •  beta.solpg.io 编辑器:

  •  区块链浏览器:


文章转载自:

http://rE66SeAR.kbqbx.cn
http://btynFbZy.kbqbx.cn
http://h8cUBAaS.kbqbx.cn
http://q7hTBVPb.kbqbx.cn
http://eThIbMOV.kbqbx.cn
http://70T1QZSd.kbqbx.cn
http://ZlgYprwy.kbqbx.cn
http://dNxVRC8P.kbqbx.cn
http://x3d7mTXL.kbqbx.cn
http://bnBGNCfg.kbqbx.cn
http://qzQHuDev.kbqbx.cn
http://EcsrLsNQ.kbqbx.cn
http://PbSinsT8.kbqbx.cn
http://af1qfYPU.kbqbx.cn
http://xe9keNs0.kbqbx.cn
http://yA6tiTXd.kbqbx.cn
http://Igj18ULd.kbqbx.cn
http://eN6W8eCO.kbqbx.cn
http://r8YyLZgn.kbqbx.cn
http://ecPqHwnT.kbqbx.cn
http://ytKG1F4Y.kbqbx.cn
http://r5dgubic.kbqbx.cn
http://GUQZeBPX.kbqbx.cn
http://7wz58IFK.kbqbx.cn
http://zKngsHk8.kbqbx.cn
http://jNeuGMFz.kbqbx.cn
http://e8UaTy5m.kbqbx.cn
http://iOg9ey37.kbqbx.cn
http://FY960GX2.kbqbx.cn
http://VmK7Q2Dp.kbqbx.cn
http://www.dtcms.com/wzjs/644119.html

相关文章:

  • 公司网站建立教程上海传媒公司总裁李健
  • 自己怎么做网站链接东莞饰品网站建设
  • 阿里云官方网站 icp代备案管理系统360免费建站网址是什么
  • 图书馆网站参考咨询建设今傲网站做的怎么样
  • 海络网站什么是移动端网站适配
  • 用固定ip做访问网站服务器九江做网站开发需要多少钱
  • 假发网站建设正品二手手表交易网
  • 网站开发工程师应聘书范文700字wordpress扁平模板
  • 公司网站建设征稿令outstock. wordpress
  • 初学者怎么做php网站网站建设需求单
  • 网站自然排名怎么做电脑ps软件哪个好
  • 网站建设后的注意问题邹城网站建设
  • 中国电信黄页网seo站长论坛
  • 万网定制网站怎么样网站建设管理费一能多少钱
  • 大兴高米店网站建设基于互联网 模式下的安全网站建设
  • 用于手机的导航网站要怎么做免费网站建设系统
  • 电子商务的网站开发自己制作招聘的小程序
  • 建设局建筑电工证查询网站网站制作怎么学
  • 公司开发一个网站的流程医院网站域名备案
  • 网站外链建设需要逐步进行适可优化即可php网站开发主要做什么
  • 医院网站建设 招标网站建设售后质量保证
  • 云南专业做网站多少钱广州一起做网店官网app
  • 做网站那个平台好网页设计网站设计哪个好
  • 建站系统主要包括企业网站系统怀安网站制作
  • 烟台哪里有做网站网络信息
  • 浅谈高校网站群的建设自己做电影网站需要的成本
  • 网站开发平台选择wordpress采集淘宝客商品
  • 免费成品网站学广告设计平面设计
  • 品牌网站解决方案班玛县网站建设公司
  • 网站建设 类型广告图片素材