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

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


目录

一、编写目的

二、安装步骤

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)的编写,并且可以进行快速的前端测试。但安装时需要很多步骤,并且在测试时也有些错误需要注意。在这里对步骤和相关版本进行记录,作为记录和过程分享。

二、安装步骤

测试使用版本

RustUp 1.27.1
Node.js v18.20.4
solana-cli 2.0.16
anchor-cli 0.30.1

2.1 安装Rust

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

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

image.gif

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

设置rustup镜像

# 临时替换
export RUSTUP_UPDATE_ROOT=https://mirrors.aliyun.com/rustup/rustup
export RUSTUP_DIST_SERVER=https://mirrors.aliyun.com/rustup

image.gif

# 永久替换
# 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

image.gif

安装Rust

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

image.gif

页面出现

Rust is installed now. Great!

image.gif

表示安装成功!

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

image.gif

安装完成后会输出以下内容(这里的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"

image.gif

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

打印版本号:

solana --version

image.gif

输出:

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

image.gif

2.4 安装Anchor CLI

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

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

image.gif

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

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

avm install latest
avm use latest

image.gif

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

三、Program测试

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

anchor init test-program

image.gif

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

image.gif 编辑

这里的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 {}

image.gif

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

EFEJVy8RKikt28Xf7APGsrJLvkeKuBMGQ9yY3iTNCSFG

image.gif

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);
  });
});

image.gif

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

image.gif 编辑

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

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

image.gif

image.gif 编辑

可以看到这里模拟的链上执行打印出了

Greetings from: EFEJVy8RKikt28Xf7APGsrJLvkeKuBMGQ9yY3iTNCSFG

表示链上程序被正常执行。

四、可能出现的问题

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

image.gif 编辑

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

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

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

image.gif 编辑

目录
相关文章
|
JavaScript 前端开发
React craco 解决 webpack < 5 used to include polyfills for node.js core ...
React craco 解决 webpack < 5 used to include polyfills for node.js core ...
1183 0
|
SQL Java 关系型数据库
如何系统学习Java:从零基础到项目实战的完整指南
本指南为Java系统化学习路线,涵盖从基础语法到项目实战的全过程。分为四大阶段:Java基础、核心技术、数据库与框架、项目实战,结合学习资源与实践策略,助你高效掌握编程技能,迈向Java工程师之路。
734 0
|
设计模式 Java uml
01.面向对象设计思想
本内容系统讲解面向对象设计思想,涵盖从面向过程到面向对象的演变、面向对象的核心理念、编程实践、与面向过程的对比分析等。通过案例解析,帮助理解类与对象、封装、继承、多态等关键概念,提升代码的可维护性与扩展性。同时结合设计模式与UML建模工具,深入探讨面向对象分析与设计的方法与应用场景。适合希望掌握面向对象编程思想、提升软件设计能力的开发者学习与参考。
414 0
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
构建AI智能体:八十九、Encoder-only与Decoder-only模型架构:基于ModelScope小模型的实践解析
本文深入解析大模型两大主流架构:Encoder-only与Decoder-only。前者如BERT,擅长双向理解,适用于文本分类、情感分析等任务;后者如GPT,基于自回归生成,适用于内容创作、对话系统等场景。二者代表不同技术路径,分别聚焦“深度理解”与“持续生成”,是开发者选型的重要依据。
658 7
|
11月前
|
算法 Java API
用录像代替视频聊天,虚拟视频聊天软件微信QQ, 微信第三方插件虚拟视频插件
核心视频处理模块使用JavaCV实现视频捕获、特效处理和虚拟设备输出 Xposed模块通过Hook微信摄像头相关方法实现视频流替换
|
9月前
|
机器学习/深度学习 SQL 编解码
基于信息论的OTFS雷达波形设计——论文阅读
本文提出一种基于条件互信息(CMI)的OTFS雷达波形设计方法,首次将信息论准则引入延迟-多普勒域波形优化。通过建立扩展目标回波模型,推导出CMI与波形自相关旁瓣及互相关的等价关系,并提出Multi-CAN算法优化恒模波形。仿真表明,优化波形显著降低旁瓣电平,提升信息获取能力,增强高动态环境下雷达检测性能。
484 0
|
区块链
小试牛刀-区块链Solana多签账户
在 Solana 区块链中,多签账户(Multisig Account)是一种智能合约账户,允许多个签名者共同管理和控制账户上的资产或操作。这种机制增强了账户的安全性和灵活性,特别适用于需要多个权限共同批准的操作场景,如资产管理、资金转移、或项目治理。
690 2
|
机器学习/深度学习 存储 算法
Transformer、RNN和SSM的相似性探究:揭示看似不相关的LLM架构之间的联系
通过探索大语言模型(LLM)架构之间的潜在联系,我们可能开辟新途径,促进不同模型间的知识交流并提高整体效率。尽管Transformer仍是主流,但Mamba等线性循环神经网络(RNN)和状态空间模型(SSM)展现出巨大潜力。近期研究揭示了Transformer、RNN、SSM和矩阵混合器之间的深层联系,为跨架构的思想迁移提供了可能。本文深入探讨了这些架构间的相似性和差异,包括Transformer与RNN的关系、状态空间模型在自注意力机制中的隐含作用以及Mamba在特定条件下的重写方式。
949 7
Transformer、RNN和SSM的相似性探究:揭示看似不相关的LLM架构之间的联系
|
监控 供应链 数据可视化
深入探索研究TOGAF
【10月更文挑战第15天】
697 0

热门文章

最新文章