好久没做solana了
现在重新搞一下
但是这次用anchor了
之前anchor生态还搞得不是很好
有非常多坑
现在我估计能好一点了吧
本来我这些博客都是随便乱写的
没人来看
但是最近看我博客的人越来越多了
搞得我压力很大
所以我要严正声明一下
我不是什么技术大神
就是一个很菜的程序员
大家最好不要看我的博客
因为肯定有很多很多的错误
打开Anchor文档
我们来装一下rust和solana
之前我也写过装rust和solana的步骤
但是如果去翻看以前的东西
就学不到新的东西
就不能走新的路
所以重新尝试是比较好的
再比如
之前一直是在wsl里面搞
如果现在可以在windows里直接搞
那么就是很牛的一件事了
当然我对此不报很高的期待
估计搞个半天还是得在wsl里面搞
打开Rust官网
Install Rust - Rust Programming Language
和以前一样
还是推荐我装windows版本
我有点忘记之前是rust失败还是solana失败了
应该是solana失败
rust应该是比较顺利的
所以这次依然是试一下windows
算了还是尝试windows环境了
因为要装c++环境
这个特别麻烦
还是老老实实wsl吧
先装一下wsl吧
整个流程下来还是挺麻烦的
先来安装一下
wsl --install
之前是要在系统设置里面打开和虚拟机相关的东西的
现在不知道还需不需要
希望windows也稍微智能一点
装完了
重启试试看
无法访问
那我们采用比较科学的方式进行上网试试看
出来了
我们装一下ubuntu吧
但是我们选择18还是20还是22呢
要不折中一下,选择20吧
wsl --install Ubuntu-20.04
网速还是挺快的,马上就装好了
又要重启一下
真麻烦
重启完
发现还是这样
看来还是得开启一下系统设置
无语了
搜索一下
启用或关闭windows功能
这里有一个
适用于linux的windows子系统
把这个打开
然后重启一下
遇到一个很尴尬的事情
刚刚电脑坏了
又重新买了一台电脑
无语
直接总结下装wsl的过程吧
1.wsl --install
2.启用windows功能的虚拟机平台和linux
3.wsl --install
其实我觉得正确的顺序应该是
先打开windows功能的虚拟机平台和linux
然后再wsl --install
但是我第一次就是这么尝试的
结果报错了
下次再试试吧
然后我们创建一下unix账户密码
然后我们创建成功了
可以使用wsl了
现在我们来装rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
试试看
一直卡在这
看来要用更加科学的上网办法了
但是这边不能分享这些东西
简单来说
搞完科学办法
成功了
我们就按回车
选择默认就可以了
成功了
然后我们来搞个rust的helloworld来试试看
但是我们要先装一下cargo
sudo apt update
sudo apt install cargo
然后
cargo init rust_test
然后进入文件夹
cargo run
成功啦
然后我们来装solana
sh -c "$(curl -sSfL https://release.solana.com/v1.18.4/install)"
sh -c "$(curl -sSfL https://release.solana.com/v1.18.4/install)"
sh -c "$(curl -sSfL https://release.solana.com/v1.18.4/install)"
安装成功了
但是这里他提示让我加个环境变量
那我们就加一下好了
打开/home/howger/.profile配置文件
然后把这行东西复制到里面
然后重启一下terminal
打开.profile发现
里面已经有这个环境变量了
那就不用管了
重启一下terminal
然后我们现在来用一下solana的东西
比如
solana --version
好了
现在我们来用一下solana/web3.js
npm install --save @solana/web3.js
先来试试airdrop
import {clusterApiUrl, Connection, Keypair, LAMPORTS_PER_SOL,} from '@solana/web3.js';
(async () => {
const secret = Uint8Array.from([]);
const payer = Keypair.fromSecretKey(secret);
const connection = new Connection(clusterApiUrl('devnet'), 'confirmed');
const airdropSignature = await connection.requestAirdrop(payer.publicKey, 1 * LAMPORTS_PER_SOL);
console.log(airdropSignature);
})();
然后我们来创建一个token
const mintAuthority = Keypair.generate();
const freezeAuthority = Keypair.generate();
const mint = await createMint(
connection,
payer,
mintAuthority.publicKey,
freezeAuthority.publicKey,
9
);
console.log(mint.toString());
然后我们来
查询一下token信息
const mintAuthority = Keypair.generate();
const freezeAuthority = Keypair.generate();
const mint = await createMint(
connection,
payer,
mintAuthority.publicKey,
freezeAuthority.publicKey,
9
);
console.log(mint.toString());
let mintInfo = await getMint(
connection,
mint
);
console.log(mintInfo.supply);
const tokenAccount = await getOrCreateAssociatedTokenAccount(
connection,
payer,
mint,
payer.publicKey
);
console.log(tokenAccount.address.toString());
let tokenAccountInfo = await getAccount(
connection,
tokenAccount.address
);
console.log(tokenAccountInfo.amount);
await mintTo(
connection,
payer,
mint,
tokenAccount.address,
mintAuthority,
100 * LAMPORTS_PER_SOL
);
mintInfo = await getMint(
connection,
mint
);
console.log(mintInfo.supply);
tokenAccountInfo = await getAccount(
connection,
tokenAccount.address
);
console.log(tokenAccountInfo.amount);
然后这些基础的东西就搞得差不多了
不错不错