初始化应用程序

逐步设置基于应用链的应用程序,参考 Adrift 的模型

入门指南

本指南将帮助您设置一个新的基于应用链的项目,遵循 Adrift 的结构。您将创建一个包含 Next.js 前端、Ponder 索引器、Bun 驱动的后端和 Foundry 合约的单一代码库(monorepo)。

快速开始

1. 安装 Bun 和 Foundry

Bun 是一个快速、现代的 JavaScript/TypeScript 包管理器和运行时,在 Adrift 中用于安装依赖项、运行脚本和执行后端任务。Foundry 是一个强大的工具包,用于开发、测试和部署 Solidity 智能合约,因其速度和开发者体验而被选用。

请按照您的平台的官方说明安装这两个工具,然后继续。

2. 创建项目结构

Adrift 使用单一代码库(monorepo)结构,将前端、索引器、后端和合约组织在一个地方。这使得开发、依赖管理和部署对于复杂的多组件应用程序来说更加容易。

mkdir my-appchain-project && cd my-appchain-project
mkdir -p apps/site apps/indexer apps/cron contracts

3. 搭建前端(Next.js + Bun)

Next.js 是一个流行的 React 框架,用于构建快速、现代的 Web 应用程序。在 Adrift 中,它为用户界面和客户端逻辑提供支持。Bun 在这里用于依赖管理和运行应用程序。

bun create next ./apps/site
cd apps/site
bun install

4. 搭建索引器(Ponder)

Ponder 是一个以 TypeScript 为核心、对开发者友好的工具,用于索引区块链事件并将链上数据同步到本地数据库。Adrift 使用 Ponder 来跟踪游戏和玩家状态,从而轻松构建实时的链上驱动用户界面。

cd ../../apps/indexer
bun init
bun add ponder
# Add your ponder.config.ts and ponder.schema.ts (see Adrift for examples)

5. 搭建合约(Foundry)

Foundry 用于 Adrift 中所有智能合约的开发。它为 Solidity 合约提供快速的编译、测试和部署,并在以太坊生态系统中被广泛采用。

cd ../../contracts
forge init
# Add your contracts and scripts (see Adrift for factory pattern)

项目结构

这种结构使您的 appchain 项目的每个部分都保持模块化和可维护性,遵循 Adrift 的示例。

my-appchain-project/
  apps/
    site/      # Next.js frontend
    indexer/   # Ponder indexer
    cron/      # Backend/cron jobs
  contracts/   # Solidity contracts (Foundry)
  bun.lock     # Bun lockfile

安装依赖

cd apps/site && bun install
cd ../indexer && bun install
cd ../cron && bun install
cd ../../contracts && forge install

运行应用程序

  • 前端 (Next.js + Bun):

    cd apps/site
    bun run dev
  • 索引器 (Ponder):

    cd apps/indexer
    bun run dev
  • 合约:

    cd contracts
    forge build
    forge test
    # Deploy: forge script script/Deploy.s.sol:DeployFactories --rpc-url <your_rpc_url>

下一步

  • apps/site/utils/chain.ts 中配置您的链连接
  • 在前端使用 Wagmi 和 Para 设置钱包集成
  • 在索引器中定义您的 Ponder 模式和事件处理程序
  • contracts/ 中实现您的合约逻辑和部署脚本
  • 构建您的 UI 和钩子,用于游戏逻辑、玩家状态和随机性

有关更多详细信息,请参阅 Adrift 仓库 以及关于合约、钱包设置、排序、索引器和游戏逻辑的深入指南。