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

互联网营销型网站网站用什么做内网穿透比较好

互联网营销型网站,网站用什么做内网穿透比较好,网站管理员怎么登陆,松江建设网站简介#xff1a;通过 IDL 生成代码 调用 anchor 智能合约。 全网首发 使用 anchor 可以快速开发 solana 上面的智能合约 #xff0c; 在本案例中我们 先使用 anchor 创建一个只能合约#xff08; 多个函数方法#xff09;。 部署到 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 programs 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: ContextInitialize, init_data: u64) - Result() {msg!(initialize from: {:?}, ctx.program_id);//直接给pad 账户复制ctx.accounts.counter.count init_data;Ok(())}//重置 数据到指定 值pub fn reset(ctx: ContextUpdateCount, 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: ContextUpdateCount) - 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: ContextUpdateCount, 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 Initializeinfo {#[account(mut)]// user 调用者 签名者, 是否 mut有权限修改信息pub user: Signerinfo,// counter 数据账户 pda 派生#[account(init,seeds [bcounter_seed],bump,payer user,space 8 8)]pub counter: Accountinfo, Counter,// 程序账户pub system_program: Programinfo, System, }#[derive(Accounts)] pub struct UpdateCountinfo {// user 调用者 签名者pub user: Signerinfo,#[account(mut)]pub counter: Accountinfo, 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 --srcidl.json  运行上面命令。就会在当前项目中生成一个  generated 文件夹  以ancho 智能合约 项目名为 文件夹的目录。 3.使用 IDL 生成的代码代用智能合约 这里直接值 使用生成的代码 构造合约然后调用调用完我们通过 区块链浏览器查看 发现数据已经变化了。 说明调用时成功的   package mainimport (anchor-go/generated/anchor_counterfmtgithub.com/gagliardetto/solana-gogithub.com/gagliardetto/solana-go/rpcconfirm github.com/gagliardetto/solana-go/rpc/sendAndConfirmTransactiongithub.com/gagliardetto/solana-go/rpc/wsgolang.org/x/net/context )//TIP pTo run your code, right-click the code and select bRun/b./p pAlternatively, click // the icon srcAllIcons.Actions.Execute/ icon in the gutter and select the bRun/b menu item from here./pfunc 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://www.zqtcl.cn/news/955335/

相关文章:

  • 贵州网站外包wordpress在后台修改绑定域名
  • 搜狗提交网站收录入口wordpress centos查看目录
  • 电力建设科学技术进步申报网站买机票便宜网站建设
  • 黄冈网站建设优化排名网站开发运作
  • 怎么把网站链接做二维码app跟网站的区别是什么
  • 南通住房和城乡建设局网站wordpress exif
  • 在谷歌上做网站广告要多少钱萍乡网站开发
  • 资源站 wordpress仙游县住房和城乡建设局网站
  • 锦州做网站公司北京互联网公司名单
  • 免费英文 网站模板公司做网站多少钱乐器
  • 软文营销推广成都seo正规优化
  • soho建设外贸网站怎样取消网站备案
  • 建设部网站实名制举报wordpress.org去掉
  • 网站地址ip域名查询公司网站建设安全的风险
  • 盐城建设厅网站设计备案网站创建服务
  • wp如何做双语网站个人网站首页内容
  • 网络推广网站排行榜百度怎么搜索网址打开网页
  • 网站制作和如何推广深圳西乡
  • 男生女生做污事网站免费西安企业展厅设计公司
  • 做网络写手最好进那个网站网页建站需要多少钱
  • 网站打开不对摄影设计说明200字
  • 无锡网站制作公司排名网站开发与应用 大作业作业
  • 网站建设中搜索引擎wordpress 不在首页显示文章
  • 先做网站先备案嘉兴网站建设推广
  • 建设法律法规文本查询网站Html手机浏览网站变形
  • 怎么拥有个人网站wordpress做的网站
  • wordpress建什么站江苏网站建设效果
  • 建设网站网站多少钱东莞网站建设 光龙
  • 天津和平做网站哪家好搞笑网站建设目的和意义
  • 一般做网站带宽选择多大的wordpress页面侧菜单