Sui项目本地网络搭建与开发指南
前言
Sui作为新一代的高性能区块链平台,为开发者提供了完善的本地开发环境支持。本文将详细介绍如何搭建Sui本地网络环境,并利用其进行dApp开发和测试。
环境准备
在开始之前,请确保已正确安装Sui CLI工具链。Sui CLI是开发Sui应用的核心工具,提供了网络管理、交易签名、合约部署等关键功能。
启动本地网络
启动本地网络的基础命令如下:
RUST_LOG="off,sui_node=info" sui start --with-faucet --force-regenesis
这个命令做了以下几件事:
- 启动一个全新的Sui本地网络
- 附带启动水龙头服务(用于获取测试代币)
- 强制重新生成创世区块(每次启动都是全新网络)
参数解析
RUST_LOG
:控制日志级别,这里设置为仅显示sui_node的信息级别日志--with-faucet
:启动水龙头服务--force-regenesis
:强制重新生成创世区块
高级配置选项
Sui本地网络支持多种定制化配置:
服务组件
--with-indexer
:启动索引服务--with-graphql
:启动GraphQL服务--no-full-node
:不启动全节点
数据库配置
--pg-host
:PostgreSQL主机地址--pg-port
:PostgreSQL端口--pg-db-name
:数据库名称--pg-user
:数据库用户名--pg-password
:数据库密码
网络参数
--epoch-duration-ms
:设置纪元持续时间--fullnode-rpc-port
:全节点RPC端口
网络状态管理
持久化状态
默认情况下,Sui本地网络的状态会保存在~/.sui/sui_config
目录中。如果不使用--force-regenesis
参数,下次启动时会恢复之前的网络状态。
临时状态
使用--force-regenesis
参数时,每次启动都会创建全新的网络状态,适合需要干净测试环境的场景。
连接与交互
连接全节点
可以通过RPC接口与本地网络交互:
curl --location --request POST 'http://127.0.0.1:9000' \
--header 'Content-Type: application/json' \
--data-raw '{
"jsonrpc": "2.0",
"id": 1,
"method": "sui_getTotalTransactionBlocks",
"params": []
}'
配置Sui CLI
将Sui CLI切换到本地网络:
sui client new-env --alias local --rpc http://127.0.0.1:9000
sui client switch --env local
测试代币获取
本地网络提供了水龙头服务用于获取测试代币:
sui client faucet
查看账户gas余额:
sui client gas
开发测试
生成测试数据
可以使用TypeScript SDK生成测试数据:
pnpm --filter @mysten/sui test:e2e
监控网络
可以通过本地运行的区块浏览器监控网络活动,或者使用公开浏览器的"Custom RPC URL"功能连接本地网络。
常见问题
- Node.js版本问题:确保使用Node.js 18+版本,否则可能出现"fetch is not defined"错误
- 临时目录问题:如果/tmp目录不可用,可以通过设置TMPDIR环境变量指定其他目录
- SDK版本问题:确保使用的TypeScript SDK版本与本地网络版本兼容
最佳实践
- 开发阶段使用
--force-regenesis
确保每次测试环境干净 - 生产准备阶段使用持久化状态测试升级流程
- 合理配置日志级别,平衡调试需求和性能
- 使用GraphQL服务可以更方便地查询链上数据
通过本文介绍的方法,开发者可以快速搭建Sui本地开发环境,为dApp开发和测试提供完善的支撑。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考