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

小试牛刀-Anchor安装和基础测试

目录

一、编写目的

二、安装步骤

2.1 安装Rust

设置rustup镜像

 安装Rust

2.2 安装node.js

2.3 安装Solana-CLI

2.4 安装Anchor CLI

三、Program测试

四、可能出现的问题


Welcome to Code Block's blog

本篇文章主要介绍了

[Anchor安装和基础测试]
博主广交技术好友,喜欢的可以关注一下

一、编写目的

        Anchor是一个SOL链的开发框架,可以很方便的完成链上程序(Program)的编写,并且可以进行快速的前端测试。但安装时需要很多步骤,并且在测试时也有些错误需要注意。在这里对步骤和相关版本进行记录,作为记录和过程分享。

二、安装步骤

测试使用版本
RustUp1.27.1
Node.jsv18.20.4
solana-cli2.0.16
anchor-cli0.30.1

2.1 安装Rust

        编写Program链上程序需要使用rust语言,所以需要先进行Rust语言环境安装,使用以下命令完成安装:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

这里的安装速度可能会很慢,所以可以使用国内的镜像库:


设置rustup镜像

# 临时替换
export RUSTUP_UPDATE_ROOT=https://mirrors.aliyun.com/rustup/rustup
export RUSTUP_DIST_SERVER=https://mirrors.aliyun.com/rustup
# 永久替换# bash用户
echo 'export RUSTUP_UPDATE_ROOT=https://mirrors.aliyun.com/rustup/rustup' >> ~/.bash_profile
echo 'export RUSTUP_DIST_SERVER=https://mirrors.aliyun.com/rustup' >> ~/.bash_profile
source ~/.bash_profile# zsh用户
echo 'export RUSTUP_UPDATE_ROOT=https://mirrors.aliyun.com/rustup/rustup' >> ~/.zshrc
echo 'export RUSTUP_DIST_SERVER=https://mirrors.aliyun.com/rustup' >> ~/.zshrc
source ~/.zshrc

安装Rust

# 使用阿里云安装脚本
curl --proto '=https' --tlsv1.2 -sSf https://mirrors.aliyun.com/repo/rust/rustup-init.sh | sh

 页面出现

Rust is installed now. Great!

 表示安装成功!

2.2 安装node.js

        安装node.js是为了使用其中的yarn命令,这里可以在Node.js — Run JavaScript Everywhere
官网进行下载压缩包,解压后通过软链接的方式使node命令生效.


2.3 安装Solana-CLI

        安装solana的客户端程序,以完成solana相关命令的使用.使用以下命令进行安装:

sh -c "$(curl -sSfL https://release.anza.xyz/stable/install)"

安装完成后会输出以下内容(这里的export命令可能会不同):

Close and reopen your terminal to apply the PATH changes or run the following in your existing shell:export PATH="/Users/test/.local/share/solana/install/active_release/bin:$PATH"

运行export命令即可完成安装.

打印版本号:

solana --version

输出:

solana-cli 1.18.22 (src:9efdd74b; feat:4215500110, client:Agave)

2.4 安装Anchor CLI

Anchor使用AVM管理工具进行管理,所以先使用以下命令进行AVM安装:

cargo install --git https://github.com/coral-xyz/anchor avm --force

安装完成后同样使用avm --version命令进行测试输出版本.

使用以下命令安装和使用anchor的最新版本:

avm install latest
avm use latest

安装完成后使用 anchor --version命令进行版本打印以进行打印版本测试.

三、Program测试

使用以下命令创建一个测试项目

anchor init test-program

创建完成后,创建一个新的项目文件夹,使用vscode打开该文件夹,文件的目录如下:

这里的programs/test-program/src/libs.rs为要编写program合约代码,初始化内容如下:

use anchor_lang::prelude::*;
#定义program地址,部署的地址
declare_id!("EFEJVy8RKikt28Xf7APGsrJLvkeKuBMGQ9yY3iTNCSFG");
#标记为program程序入口
#[program]
pub mod test_program {use super::*;pub fn initialize(ctx: Context<Initialize>) -> Result<()> {msg!("Greetings from: {:?}", ctx.program_id);Ok(())}
}
#标记为传递的Accounts结构体
#[derive(Accounts)]
pub struct Initialize {}

 这里功能为调用initialize方法,并输出当前program_id.即:

EFEJVy8RKikt28Xf7APGsrJLvkeKuBMGQ9yY3iTNCSFG

tests/test-program.ts文件夹内为测试文件,内容如下:

import * as anchor from "@coral-xyz/anchor";
import { Program } from "@coral-xyz/anchor";
import { TestProgram } from "../target/types/test_program";describe("test-program", () => {// Configure the client to use the local cluster.anchor.setProvider(anchor.AnchorProvider.env());const program = anchor.workspace.TestProgram as Program<TestProgram>;it("Is initialized!", async () => {// Add your test here.const tx = await program.methods.initialize().rpc();console.log("Your transaction signature", tx);});
});

在文件夹内使用anchor test进行测试,这里会自动调用(anchor build)进行program部署并在测试环境下发送一个方法请求(模拟请求链上程序),获得一个打印输出:

要查看具体的链上调用成功的信息(tx),可以使用以下内容获取具体的transaction信息:

const logs =await anchor.AnchorProvider.env().connection.getParsedTransaction(tx, {commitment: "confirmed",});
console.log("Solana Logs", logs);

可以看到这里模拟的链上执行打印出了 
Greetings from: EFEJVy8RKikt28Xf7APGsrJLvkeKuBMGQ9yY3iTNCSFG
表示链上程序被正常执行。

四、可能出现的问题

Solana-CLI可能会使用dev net或test net节点,需要配置为本地环境,运行以下命令将Solana-CLI配置为本地测试环境.

本代码均在测试网络进行,不涉及任何如投资等方面的建议!

如果你对区块链感兴趣,可以浏览我的专栏:区块链

感谢您的关注和收藏!!!!!!

17a5b84bdcbb4896bda2b8481c3a53ce.jpeg

相关文章:

小试牛刀-Anchor安装和基础测试

目录 一、编写目的 二、安装步骤 2.1 安装Rust 设置rustup镜像 安装Rust 2.2 安装node.js 2.3 安装Solana-CLI 2.4 安装Anchor CLI 三、Program测试 四、可能出现的问题 Welcome to Code Blocks blog 本篇文章主要介绍了 [Anchor安装和基础测试] 博主广交技术好友&…...

51单片机基础01 单片机最小系统

目录 一、什么是51单片机 二、51单片机的引脚介绍 1、VCC GND 2、XTAL1 2 3、RST 4、EA 5、PSEN 6、ALE 7、RXD、TXD 8、INT0、INT1 9、T0、T1 10、MOSI、MISO、SCK 11、WR、RD 12、通用IO P0 13、通用IO P1 14、通用IO P2 三、51单片机的最小系统 1、供电与…...

RocketMQ文件刷盘机制深度解析与Java模拟实现

引言 在现代分布式系统中&#xff0c;消息队列&#xff08;Message Queue, MQ&#xff09;作为一种重要的中间件&#xff0c;扮演着连接不同服务、实现异步通信和消息解耦的关键角色。Apache RocketMQ作为一款高性能的分布式消息中间件&#xff0c;广泛应用于实时数据流处理、…...

python语言基础-5 进阶语法-5.3 流式编程

声明&#xff1a;本内容非盈利性质&#xff0c;也不支持任何组织或个人将其用作盈利用途。本内容来源于参考书或网站&#xff0c;会尽量附上原文链接&#xff0c;并鼓励大家看原文。侵删。 5.3 流式编程&#xff08;参考链接&#xff1a;https://www.zhihu.com/question/59062…...

JVM性能分析工具JProfiler的使用

一、基本概念 JProfiler&#xff1a;即“Java Profiler”&#xff0c;即“Java分析器”或“Java性能分析工具”。它是一款用于Java应用程序的性能分析和调试工具&#xff0c;主要帮助开发人员识别和解决性能瓶颈问题。 JVM&#xff1a;即“Java Virtual Machine”&#xff0c…...

面试题: Spring中的事务是如何实现的?

Spring中的事务是如何实现的? 背景个人原因的背景正规一点的背景 答案一些思绪和灵感个人理解程度拓展知识Spring的事务管理主要涉及哪几个类?在Spring中&#xff0c;事务管理的流程是怎样的? 背景 个人原因的背景 想换工作, 刷面试题看到的问题, 简单记录一下, 算是个人…...

vue2-代理服务器插槽

解决跨域问题 配置代理服务器 代理服务器位于前端应用(客户端)和真实的后端服务器之间。当配置了代理服务器后&#xff0c;前端应用的请求不再直接发送到后端服务器&#xff0c;而是发送到代理服务器。代理服务器在接收到请求后&#xff0c;会根据预先配置的规则将请求转发到真…...

(python)unittest框架

unittest unnitest介绍 TestCase测试用例 书写真正的用例脚本...

网安基础知识|IDS入侵检测系统|IPS入侵防御系统|堡垒机|VPN|EDR|CC防御|云安全-VDC/VPC|安全服务

网安基础知识|IDS入侵检测系统|IPS入侵防御系统|堡垒机|VPN|EDR|CC防御|云安全-VDC/VPC|安全服务 IDS入侵检测系统 Intrusion Detection System 安全检测系统&#xff0c;通过监控网络流量、系统日志等信息&#xff0c;来检测系统中的安全漏洞、异常行为和入侵行为。 分为&am…...

面试小结(一)

1、hashmap的底层设计原理以及扩容规则&#xff0c;是否线程安全&#xff0c;如何线程安全。 底层原理&#xff1a;数组 链表 红黑树。HashMap 的底层实现是一个数组&#xff0c;数组中的每个元素是一个链表或红黑树&#xff08;JDK 1.8 以后&#xff0c;当链表长度超过一定…...

笔试-笔记2

1.设存在函数int max(int,int)返回两参数中较大值&#xff0c;若求22&#xff0c;59&#xff0c;70三者中最大值&#xff0c;下列表达式不正确的是() A.int mmax(22,59,70); B.int mmax(22,max(59,70)); C.int mmax(max(22,59),70); D.int mmax(59,max(22,70)); 解析&#xf…...

html5复习二

知识点&#xff1a; 1、音频标签 <audio controls"controls" loop"loop" preload"auto" src"张恒远 - 追梦赤子心.mp3" muted"muted" > </audio> controls:显示控件 必须写 loop&#xff1a;循环播放&#x…...

大模型呼入机器人系统如何建设?

大模型呼入机器人系统如何建设&#xff1f; 作者&#xff1a;开源呼叫中心系统 FreeIPCC, Github地址&#xff1a;https://github.com/lihaiya/freeipcc 大模型呼叫中心呼入机器人系统的建设是一个涉及多个环节和领域的综合性工程。以下是一个详细的步骤指南&#xff0c;涵盖了…...

docker 部署 kvm 图形化管理工具 WebVirtMgr

镜像构建 官方最后一次更新已经是 2015年6月22日 了&#xff0c;官方也没有 docker 镜像&#xff0c;这边选择咱们自己构建如果你的服务器有魔法&#xff0c;可以直接 git clone 一下 webvirtmgr 的包&#xff0c;没有的话&#xff0c;可以和我一样&#xff0c;提前从 github 上…...

【Unity How】Unity中如何实现物体的匀速往返移动

直接上代码 using UnityEngine;public class CubeBouncePingPong : MonoBehaviour {[Header("移动参数")][Tooltip("移动速度")]public float moveSpeed 2f; // 控制移动的速度[Tooltip("最大移动距离")]public float maxDistance 5f; // 最大…...

Block Successive Upper Bound Minimization Method(BSUM)算法

BSUM优化方法学习 先验知识参考资料1 A Unified Convergence Analysis of Block Successive Minimization Methods for Nonsmooth OptimizationSUCCESSIVE UPPER-BOUND MINIMIZATION (SUM) 连续上限最小化算法THE BLOCK SUCCESSIVE UPPER-BOUND MINIMIZATION ALGORITHM 块连续上…...

力扣2388. 将表中的空值更改为前一个值

一、数据 2388. 将表中的空值更改为前一个值 表: CoffeeShop ---------------------- | Column Name | Type | ---------------------- | id | int | | drink | varchar | ---------------------- id 是该表的主键&#xff08;具有唯一值的列&#xf…...

【从零开始的LeetCode-算法】3233. 统计不是特殊数字的数字数量

给你两个 正整数 l 和 r。对于任何数字 x&#xff0c;x 的所有正因数&#xff08;除了 x 本身&#xff09;被称为 x 的 真因数。 如果一个数字恰好仅有两个 真因数&#xff0c;则称该数字为 特殊数字。例如&#xff1a; 数字 4 是 特殊数字&#xff0c;因为它的真因数为 1 和…...

Redis配置主从架构、集群架构模式 redis主从架构配置 redis主从配置 redis主从架构 redis集群配置

Redis配置主从架构、集群架构模式 redis主从架构配置 redis主从配置 redis主从架构 redis集群配置 1、主从模式1.1、主节点配置1.2、从节点配置1.3、测试 2、集群模式 1、主从模式 1.1、主节点配置 # 监听所有网络接口 bind 0.0.0.0# cluster-enabled表示为集群模式&#xff…...

2024 APMCM亚太数学建模C题 - 宠物行业及相关产业的发展分析和策略 完整参考论文(2)

5.2 问题一模型的建立与求解 5.2.1 分析发展情况 为了更好地理解数据的变化趋势,利用matlab通过六个子图对宠物行业中的关键变量进行了可视化展示。 图 1. 宠物数量变化展示了 猫数量、狗数量 和 总宠物数量 在 2019-2023 年间的变化趋势。结果显示:猫的数量呈逐年上升的趋…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...