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

news/2024/11/20 3:39:47/

目录

一、编写目的

二、安装步骤

2.1 安装Rust

rustup%E9%95%9C%E5%83%8F-toc" style="margin-left:80px;">设置rustup镜像

 安装Rust

2.2 安装node.js

2.3 安装Solana-CLI

Anchor%20CLI-toc" style="margin-left:40px;">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%E9%95%9C%E5%83%8F">
设置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)

Anchor%20CLI">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合约代码,初始化内容如下:

rust">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


http://www.ppmy.cn/news/1548397.html

相关文章

Java面试之多线程并发篇(5)

前言 本来想着给自己放松一下&#xff0c;刷刷博客&#xff0c;突然被几道面试题难倒&#xff01;常用的线程池有哪些&#xff1f;简述一下你对线程池的理解&#xff1f;Java程序是如何执行的&#xff1f;锁的优化机制了解吗&#xff1f;说说进程和线程的区别&#xff1f;似乎…

查看docker日志 journalctl -u docker.service

查看docker命令其实很简单&#xff0c;如下 journalctl -u docker.service再使用上下方向键进行翻看&#xff0c;是不是很方便。

CSS 样式覆盖规则?

CSS样式覆盖规则决定了当多个样式规则应用于同一个元素时&#xff0c;哪一个样式将被使用。以下是一些关键的原则&#xff0c;用于确定CSS样式的优先级&#xff1a; 就近原则&#xff1a; 在同一文档中&#xff0c;离元素最近的规则&#xff08;即最后定义的规则&#xff09;具…

数据驱动的智能决策:民锋科技的量化分析方案

在现代市场环境中&#xff0c;智能决策依赖于海量数据的精准分析。民锋科技专注于构建高效的量化分析模型&#xff0c;帮助各类市场参与者在信息繁杂的环境中做出理性选择。通过创新算法和数据处理方案&#xff0c;民锋科技为客户提供多维度的市场洞察和预测支持。 #### 一、智…

ubuntu网络共享文件

参考 Ubuntu22.04设置与Windows共享文件夹&#xff08;samba&#xff09;

力扣(LeetCode)611. 有效三角形的个数(Java)

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f439;今日诗词:雾失楼台&#xff0c;月迷津渡&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&#x1f64f; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主…

Go-RPC框架分层设计

本地函数调用&#xff1a; 远程函数调用RPC &#xff1a;Remote Procedure Calls 网上商城和支付服务并不在同一个服务器 所以得远程函数调用 需要解决的问题&#xff1a; 1.函数映射&#xff08;映射到正确的函数 要付款而不是退款 每个函数得有自己的ID 才能找到&#xff0…

STM32低功耗设计NFC与无线距离感应智能钥匙扣

目录 目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 1.电路图采用Altium Designer进行设计&#xff1a; 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 在当今快速发展的物联网&#xff08;IoT&#xff09;时代&#xf…