跳转到内容

Forklift

Forklift 是一个用于开发、测试和编写 Aptos Move 智能合约脚本的 TypeScript 框架。

Forklift 补充了 TypeScript SDK

  • 使用 SDK 构建与区块链交互的客户端应用。
  • 使用 Forklift 处理合约开发工作流:编写测试、部署脚本,并在上线前验证代码能正常工作。

如果您来自 Ethereum,可将 Forklift 理解为 Aptos 的 Hardhat/Foundry。

  • 三种执行模式:本地模拟、网络分叉和实时执行,同一代码可在三种模式下工作。
  • 原生 TypeScript:使用标准 TypeScript 编写测试和脚本,并拥有完整 Node.js 能力。
  • 简单设置:无需手动启动或管理本地验证者节点。Forklift 自动处理模拟生命周期。
  • 隔离和可重复性:每个会话均独立运行并产生确定性结果,非常适合自动化测试和 CI。

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();