Forklift
Forklift 是一个用于开发、测试和编写 Aptos Move 智能合约脚本的 TypeScript 框架。
Forklift 补充了 TypeScript SDK:
- 使用 SDK 构建与区块链交互的客户端应用。
- 使用 Forklift 处理合约开发工作流:编写测试、部署脚本,并在上线前验证代码能正常工作。
如果您来自 Ethereum,可将 Forklift 理解为 Aptos 的 Hardhat/Foundry。
- 三种执行模式:本地模拟、网络分叉和实时执行,同一代码可在三种模式下工作。
- 原生 TypeScript:使用标准 TypeScript 编写测试和脚本,并拥有完整 Node.js 能力。
- 简单设置:无需手动启动或管理本地验证者节点。Forklift 自动处理模拟生命周期。
- 隔离和可重复性:每个会话均独立运行并产生确定性结果,非常适合自动化测试和 CI。
Harness
Section titled “Harness”Forklift 提供统一的 Harness 类,可在三种执行模式下使用:
| 模式 | 作用 | 使用场景 |
|---|---|---|
| 本地模拟 | 完全在内存中运行,立即执行 | 开发、单元测试、CI |
| 网络分叉 | 获取真实链状态,在本地模拟 | 针对 Mainnet/Testnet 测试,无需支付 Gas |
| 实时执行 | 执行真实交易 | 实际部署和交互 |
网络分叉是核心功能:无需花费 Gas 或影响网络,即可针对真实部署的协议测试合约,并针对生产状态试运行部署脚本。
相同代码适用于所有三种模式。只编写一次工作流:在本地运行以快速迭代,分叉 Mainnet 以针对真实状态进行验证,然后在准备好时实时执行。
import { Harness } from "@aptos-labs/forklift";
const harness = Harness.createLocal(); // or createNetworkFork(), createLive()
harness.init_cli_profile("alice");harness.fundAccount("alice", 100_000_000);
const result = harness.deployCodeObject({ sender: "alice", packageDir: "./move/my_contract", packageAddressName: "my_contract",});
harness.runMoveFunction({ sender: "alice", functionId: "${result.Result.deployed_object_address}::my_module::my_function", args: ["u64:42"],});
harness.cleanup(); Forklift 仓库 文档、API 参考和安装说明
TipJar 教程 完整演练:开发 → 测试 → 部署 → 交互