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 中排名

Download history 274/week @ 2024-06-06 179/week @ 2024-06-13 16/week @ 2024-07-04 6/week @ 2024-07-11

每月下载量 151 次

MIT 许可证

43KB
1K SLoC

Df Sol

Df Sol 是一个为帮助您轻松创建模板仓库以在 Solana 上启动 anchor 框架而设计的 Rust 包。此 README.md 文件将指导您完成此包的安装、使用和贡献过程。

目录

  1. 设置环境
  2. 创建新项目
  3. 编写和编译智能合约
  4. 测试合约
  5. 部署到实际网络
  6. 与前端集成

设置环境

要使用此包,您需要在系统上安装 Rust、nodejs 和 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网络,请按照以下步骤操作

  1. 配置Solana URL到Devnet

    solana config set --url https://api.devnet.solana.com
    
  2. 向地址空投SOL

  • 要将程序部署到devnet网络,请确保您的钱包中有SOL。SOL的数量取决于程序的大小。

  • 获取钱包地址

    solana address --keypair wallet.json
    
  • 向您的地址空投SOL

    solana airdrop 2 <address>
    
  • 检查地址的余额

    solana balance <address>
    
  1. 部署程序

    anchor deploy
    
  2. 测试程序

    anchor test --skip-deploy
    

与前端集成

将生成的TypeScript模块导入您的前端应用程序中,并使用它与您的程序交互。该模块提供了与您在IDL中定义的函数相对应的函数。

将程序的idltarget/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