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

Ubuntu 搭建 Solana 区块链开发环境 + Anchor 智能合约完整教程

文章目录

  • 简介
  • 特征
  • 核心概念
  • Solana 的工作原理(简单版)
  • 为什么人们选择 Solana
  • 开发环境准备
  • Solana 官网
  • Solana 文档
  • Github
  • Rust SDK
  • 快速安装 Solana(推荐)
  • 单独安装 Solana
    • 安装依赖项
    • 安装 Solana CLI
  • 安装 Anchor CLI
    • 安装 AVM
    • 安装 Anchor CLI
  • 安装 Node
    • 安装 nvm
    • 安装 Node
    • 安装 yarn
  • Solana 官方示例
  • 创建 Anchor 项目
  • 测试 Anchor 程序

简介

一个快速、低成本的网络,能够实现价值转移、创建应用程序和在线互动的新方式。

Solana 是一个高性能网络,能够实现快速、安全且经济实惠的数字交易。它支持从支付、游戏到数字艺术和金融服务的数千种应用程序。

特征

  • 速度: 传统银行转账需要数天时间,信用卡交易需要几秒钟确认(但结算需要数天),而 Solana 的交易在不到一秒内完成。这种速度实现了其他地方无法实现的实时体验。像发送短信一样快速地进行国际汇款,或无需等待确认即可交易资产。

  • 成本: 在 Solana 上,交易费用通常为 $0.00025——也就是千分之一美元的四分之一。你可以用 1 美元进行 4,000 次交易,使得小额支付和频繁交互变得切实可行。这带来了新的可能性:用几分钱打赏创作者,频繁交易而不被费用侵蚀利润,或构建用户可以频繁交互而无需担心成本的应用。

  • 扩展性: Solana 每秒可以处理数千笔交易,与主要支付网络相当。这种能力意味着即使更多人使用,网络也不会变慢或变得昂贵。在高峰时段和非高峰时段,你的交易处理速度同样快——这是现实世界应用的关键。

  • 全球可访问性: 任何有互联网接入的人都可以使用 Solana。不需要银行账户、信用检查或地理限制。无论你在纽约、内罗毕还是其他任何地方,你的钱包都能以相同的方式工作。一个偏远地区的小企业可以获得与大城市企业相同的工具——真正实现了数字金融服务的平等访问。

核心概念

  • SOL: Solana 的原生货币,用于支付交易费用和参与网络安全。可以将其视为邮票,用于发送邮件——您需要少量的 SOL 才能使用网络。不到 1 美元的 SOL 就能覆盖数百笔交易。

  • 钱包: 存储您的数字资产并让您与应用程序交互的软件。您的钱包就像一个通用账户,可以在所有 Solana 应用程序中使用。一个钱包即可访问数千个应用程序,您的资产和历史记录随您而行。

  • 代币: 数字资产可以代表从货币到项目所有权份额的任何事物。就像手机上的应用程序一样,Solana 上存在数千种不同的代币。有些代币保持稳定的价值用于支付,另一些则代表项目的股份或服务的访问权限。

  • 验证者: 处理交易并保护网络的计算机。全球超过 1,000 个验证者确保 Solana 保持去中心化和可靠性。由全球独立运营者运行,这种分布式结构防止了任何单点故障或控制。

  • 智能合约: 在 Solana 上运行的程序,支持从简单的转账到复杂的应用程序的一切。它们完全按照编程执行,没有停机或干扰的可能性。就像数字服务的自动售货机——可预测、自动化,并且全天候可用。

Solana 的工作原理(简单版)

  1. 您在钱包中发起一个操作(例如发送 SOL)
  2. 您的交易被发送到验证者,验证者确认其合法性
  3. 验证者在不到一秒内达成共识
  4. 您的交易被确认并永久记录
  5. 接收方立即看到结果

为什么人们选择 Solana

  • 面向个人
    • 金融接入:无需银行即可享受银行服务
    • 真正的所有权:直接控制您的数字资产
    • 全球参与:与其他人享有同样的机会
    • 低门槛:只需几美元即可开始
  • 面向开发者
    • 高性能:构建响应迅速的应用程序
    • 低成本:用户不会因费用而被排除在外
    • 可组合性:像乐高积木一样组合现有程序
    • 不断增长的生态系统:充满活力的社区和资源
  • 面向企业
    • 高效性:降低支付处理成本
    • 创新性:创造新的商业模式
    • 全球覆盖:服务全球客户
    • 面向未来:基于尖端技术构建

开发环境准备

  • VirtualBox 安装 Ubuntu Server 系统及 Ubuntu 初始配置
  • Ubuntu 安装 Rustup 管理 Rust 版本
  • Trae 通过 SSH 连接远程 Ubuntu Server 环境进行开发

Solana 官网

  • https://solana.com/zh

Solana 文档

  • https://solana.com/zh/docs
  • https://solana.com/zh/docs/rpc

Github

  • https://github.com/anza-xyz/agave/releases

Rust SDK

  • https://solana.com/zh/docs/clients/rust

快速安装 Solana(推荐)

  • 安装所有依赖项
curl --proto '=https' --tlsv1.2 -sSfL https://solana-install.solana.workers.dev | bash

单独安装 Solana

注: 需要单独先安装 Rust 开发环境。

安装依赖项

sudo apt-get update
sudo apt-get install -y \build-essential \pkg-config \libudev-dev llvm libclang-dev \protobuf-compiler libssl-dev

安装 Solana CLI

Solana CLI 提供了构建和部署 Solana 程序所需的所有工具。

  • https://github.com/anza-xyz/agave/releases

在这里插入图片描述

  • 手动下载二进制文件
wget https://github.com/anza-xyz/agave/releases/download/v3.0.0/solana-release-x86_64-unknown-linux-gnu.tar.bz2
tar jxf solana-release-x86_64-unknown-linux-gnu.tar.bz2
./solana-release/bin/solana --version

在这里插入图片描述

  • 配置环境变量
echo 'export PATH="$HOME/solana-release/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
  • 检查 Solana CLI 的版本
solana --version

在这里插入图片描述

  • 将 Solana CLI 更新到最新版本
agave-install update

安装 Anchor CLI

Anchor 是一个用于开发 Solana 程序的框架。Anchor 框架利用 Rust 宏来简化编写 Solana 程序的过程。

  • Anchor 版本管理器 (AVM) - 推荐的安装方法
  • 不使用 AVM - 直接从 GitHub 安装

安装 AVM

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

在这里插入图片描述

  • 检查 avm 的版本
avm --version

安装 Anchor CLI

  • [https://github.com/solana-foundation/anchor/releases
# 列出版本
avm list# 安装最新版本(需要科学上网)
avm install latest
avm use latest# 或安装指定版本
avm install 0.31.1
avm use 0.31.1
  • 检查 Anchor CLI 的版本
anchor --version

安装 Node

安装 nvm

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
  • 添加环境变量
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
source ~/.zshrc
  • 检查 nvm 的版本
nvm -v
  • nvm 常用命令
# 列出可在线安装版本
nvm ls-remote
# 安装指定 node 版本
nvm install 22.19.0
# 查看当前已安装的 node 版本及当前使用的版本
nvm list# 使用指定 node 版本
nvm use 22.19.0
# 设置默认 node 版本
nvm alias default 22.19.0
# 卸载指定 node 版本
nvm deactivate
nvm uninstall 22.19.0

安装 Node

nvm ls-remote
nvm install 22.19.0
nvm alias default 22.19.0
  • 检查 node 的版本
node -v

安装 yarn

npm install --global yarn
  • 检查 yarn 的版本
yarn -v
  • yarn 常用命令
# 查询当前配置的镜像
yarn config get registry
# 设置成淘宝镜像
yarn config set registry http://registry.npm.taobao.org/
yarn config set registry https://registry.npmmirror.com/# 查看缓存列表
yarn cache list
# 查看缓存路径
yarn cache dir
# 清理缓存
yarn cache clean
# 安装依赖
yarn install

Solana 官方示例

  • https://github.com/solana-developers/program-examples

Solana 程序示例 GitHub 仓库提供了多个子文件夹,每个文件夹包含代码示例,帮助开发者学习和尝试 Solana 区块链开发。

您可以在 solana-developers/program-examples 中找到这些示例,以及 README 文件,这些文件会向您解释如何运行不同的示例。大多数示例是独立的,并以原生 Rust(即无框架)和 Anchor 提供。

git clone https://github.com/solana-developers/program-examples.git

创建 Anchor 项目

  • 检查 Anchor CLI 的版本
anchor -v
  • 创建新项目
# 默认生成的是 Typescript 测试文件
anchor init demo
# 或指定生成 Rust 测试文件
anchor init --test-template rust demo

在这里插入图片描述

cd demo
  • 默认的 Anchor 程序位于 demo/programs/demo/src/lib.rs
  • 默认的测试文件
    • Typescript 测试文件位于 demo/tests/demo.ts
    • Rust 测试文件位于 demo/tests/src/test_initialize.rs

在这里插入图片描述

  • Trae 通过 SSH 连接 Ubuntu Server 服务

在这里插入图片描述

  • 构建程序
cd demo
anchor build

在这里插入图片描述

测试 Anchor 程序

在 Solana 上,“智能合约”被称为程序。 程序被部署到链上的账户中,这些账户包含程序编译后的可执行二进制文件。用户通过发送包含 指令的交易与程序交互,这些指令告诉程序需要执行的操作。

  • 测试前准备
指定了 CLI 向其发送请求的 Solana 集群
solana config set -ul
# 创建钱包
solana-keygen new
# 查看您的钱包地址(公钥)
solana address

在这里插入图片描述

  • 需要单开一个新终端来启动本地验证器
solana config set -ul
solana-test-validator

在这里插入图片描述

  • 检查钱包 SOL 余额
solana balance
# 请求空投 SOL
solana airdrop 2

在这里插入图片描述

  • 默认情况下,Anchor.toml 配置文件会指定 localnet 集群。执行 anchor test 将自动:
    • 启动本地 Solana 验证器
    • 构建并部署你的程序到本地集群
    • tests运行文件夹中的测试
    • 停止本地 Solana 验证器
cd demo
anchor test
# 或本地验证器处理已在运行,则跳过启动本地验证器
anchor test --skip-local-validator

在这里插入图片描述

注: 执行完 test 后,钱包 SOL 余额减少了。

http://www.xdnf.cn/news/19195.html

相关文章:

  • Linux-搭建DNS服务器
  • C++异常处理指南:构建健壮程序的错误处理机制
  • WebSocket功能完整解析
  • 疯狂星期四文案网第54天运营日记
  • 【web3】十分钟了解web3是什么?
  • golang接口详细解释
  • Maya绑定:连接编辑器的简单使用
  • HGDB全文检索/中文分词的使用
  • 机器人电源电感的认证和认证细节,知多少?
  • Web网络开发 -- 常见CSS属性
  • 使用Docker搭建StackEdit在线MarkDown编辑器
  • 【论文阅读】CLIP: 从自然语言监督中学习可迁移的视觉模型
  • 【Depth与RGB对齐算法(D2C)】
  • 首次创建Django项目初始化
  • 沙箱操作工具
  • 计算机组成原理3-3-1:无符号数乘法运算的硬件逻辑实现
  • 学习做动画6.瞄准偏移
  • JavaScript初识:给小白的第一堂编程课
  • 大数据毕业设计选题推荐-基于大数据的痴呆症预测数据可视化分析系统-Spark-Hadoop-Bigdata
  • openEuler常用操作指令
  • AT_abc407_e [ABC407E] Most Valuable Parentheses
  • 客户案例 | 国际知名内衣品牌x甄知科技,领航IT服务新征程
  • 算法题打卡力扣第15题:三数之和(mid)
  • 用 PyTorch 搭建 CNN 实现 MNIST 手写数字识别
  • QT:【第一个QT程序】【信号和槽】
  • 2025通用证书研究:方法论、岗位映射与四证对比
  • 腾讯云重保流程详解:从预案到复盘的全周期安全防护
  • 【练习九】Java实现加油站支付小程序:存款与消费
  • 大数据原生集群 (Hadoop3.X为核心) 本地测试环境搭建三
  • Unity游戏打包——Android打包环境(Mac下)