5 个版本
0.1.4 | 2024年6月13日 |
---|---|
0.1.3 | 2024年6月13日 |
0.1.2 | 2024年6月8日 |
0.1.1 | 2024年6月8日 |
0.1.0 | 2024年6月8日 |
7 在 #sol 中排名
每月下载量 151 次
43KB
1K SLoC
Df Sol
Df Sol 是一个为帮助您轻松创建模板仓库以在 Solana 上启动 anchor 框架而设计的 Rust 包。此 README.md
文件将指导您完成此包的安装、使用和贡献过程。
目录
设置环境
要使用此包,您需要在系统上安装 Rust、nodejs 和 git。如果您还没有安装
- 从 rust-lang.org 安装
rust
- 从 nodejs.org 安装
node.js >=18.0
- 从 git 安装
git
安装这些包后,通过运行以下命令安装 df-sol
包
cargo install df-sol
创建新项目
要创建新项目,可以使用以下命令
df-sol init <name-project>
示例
df-sol init counter
使用可选模板创建项目
df-sol init <name-project> --template <template>
示例
df-sol init counter-program --template counter
程序模板包括
- 基本:生成基本模板
- 计数器:生成计数器模板
- 发行代币:生成发行代币模板
导航到您创建的文件夹,并使用 Devbox 安装环境。如果您不安装,请遵循安装指南。在文件夹中打开一个终端。
- 初始化 devbox
devbox init
- 启动新的 shell
devbox shell --pure
编写和编译智能合约
编写智能合约
首先创建一个名为 programs
的新目录,并将智能合约逻辑写入文件 ./src/lib.rs
。
编译合约
要编译合约,在终端中运行 anchor build
anchor build
测试合约
为您生成一个文件测试。测试的shell导入Anchor框架
文件并准备程序运行。使用mocha
测试框架进行测试,因此每个it
函数定义一个测试,可以使用describe来分组测试。
import * as anchor from "@coral-xyz/anchor";
import { Program } from "@coral-xyz/anchor";
import { Counter } from "../target/types/counter";
describe("counter", () => {
// Configure the client to use the local cluster.
anchor.setProvider(anchor.AnchorProvider.env());
const program = anchor.workspace.Counter as Program<Counter>;
it("Is initialized!", async () => {
// Add your test here.
const tx = await program.methods.initialize().rpc();
console.log("Your transaction signature", tx);
});
});
要运行测试,使用
anchor test
部署到实际网络
当您准备好与其他人分享您的dApp时,您可能希望将其部署到实时网络。这样,其他人就可以访问不在您系统本地运行的一个实例。
mainnet
Solana网络处理真实货币,但存在不处理的单独的devnet
网络。
要将应用程序部署到devnet
网络,请按照以下步骤操作
-
配置Solana URL到Devnet
solana config set --url https://api.devnet.solana.com
-
向地址空投SOL
-
要将程序部署到
devnet
网络,请确保您的钱包中有SOL。SOL的数量取决于程序的大小。 -
获取钱包地址
solana address --keypair wallet.json
-
向您的地址空投SOL
solana airdrop 2 <address>
-
检查地址的余额
solana balance <address>
-
部署程序
anchor deploy
-
测试程序
anchor test --skip-deploy
与前端集成
将生成的TypeScript模块导入您的前端应用程序中,并使用它与您的程序交互。该模块提供了与您在IDL中定义的函数相对应的函数。
将程序的idl
从target/idl/{project_name}.json
复制到前端项目文件夹中的idl.json
文件中。然后,按照以下代码进行操作
import { Program, AnchorProvider, setProvider } from "@project-serum/anchor";
import { Connection, KeyPair, PublicKey } from "@solana/web3.js";
import idl from "./idl.json";
import { Idl } from "@coral-xyz/anchor";
// where IDL is the .json created by anchor build
export const yourFunction = async () => {
const wallet = KeyPair.generate();
const connection = new Connection("https://api.devnet.solana.com");
const provider = new AnchorProvider(connection, wallet, {});
setProvider(provider);
const programId = new PublicKey(idl.address);
const program = new Program(idl as Idl, programId);
// ... your code
// e.g. await program.methods.yourMethod(YOUR_PARAMETERS).accounts({YOUR_ACCOUNTS}).rpc();
};
报告问题
如果您遇到任何问题,请在GitHub问题页面上报告。
感谢您使用Df Sol!我们希望这个包能帮助您有效地管理模板。如果您有任何问题或反馈,请随时在GitHub上创建问题。
依赖关系
~25–39MB
~695K SLoC