菜单

Forc 工具

相关源文件

Forc (Fuel Orchestrator) 是 Sway 编程语言的命令行工具和构建系统。它提供了创建、构建、测试和部署 Sway 项目的功能。Forc 之于 Sway,如同 Cargo 之于 Rust——是一个全面的包管理器和构建工具,能够处理整个开发生命周期。

有关 forc buildforc test 等特定 Forc 命令的信息,请参阅 CLI 接口。如果您正在寻找关于测试 Sway 代码的信息,请参阅 测试基础设施

Forc 概述

Forc 为开发者提供了以下工具:

  1. 创建具有适当脚手架的新的 Sway 项目
  2. 管理项目依赖
  3. 将 Sway 代码构建为 Fuel VM 的字节码
  4. 使用单元测试和集成测试测试 Sway 代码
  5. 将合约部署到 Fuel 网络
  6. 支持多项目存储库的工作区管理

来源

CLI 架构

Forc 被构建为一个命令行工具,拥有多个子命令,每个子命令负责特定的功能。主二进制文件处理命令行解析,并将请求分派给相应的处理程序。

来源

命令执行流程

当您运行 Forc 命令时,会发生以下一系列事件:

  1. 主 CLI 解析命令行参数
  2. 初始化日志跟踪订阅者
  3. 分派到相应的命令处理程序
  4. 命令处理程序执行请求的操作
  5. 向用户报告结果或错误

来源

包管理

Forc 通过类似于 Cargo 的系统管理包及其依赖项。这包括依赖项解析、构建规划和工作区管理。

构建计划和依赖解析

Forc 包管理的核心是 BuildPlan,它代表了构建项目的完整计划,包括所有依赖项及其编译顺序。

来源

打包构建过程

构建过程涉及多个步骤:

  1. 通过解析依赖项来创建构建计划
  2. 按依赖顺序编译每个包
  3. 生成字节码、ABI 和存储槽等工件

来源

项目管理

Forc 提供管理 Sway 项目的工具,包括创建新项目、更新依赖项和组织工作区。

项目初始化

当使用 forc newforc init 创建新的 Sway 项目时,Forc 会生成必要的文件和目录。

来源

项目类型和模板

Forc 支持不同的项目类型:

项目类型入口点描述
合约main.sw可部署到 Fuel VM 的智能合约
脚本main.sw可在 Fuel VM 上运行的可执行脚本
谓词main.sw求值为布尔值的谓词脚本
lib.sw可供其他 Sway 项目使用的库
工作区(无)一组相关的 Sway 项目

来源

构建系统

Forc 的构建系统负责将 Sway 代码编译成可在 Fuel VM 上执行的字节码。此过程涉及多个组件协同工作。

构建选项

构建系统接受广泛的选项来定制构建过程。

来源

构建工件

构建 Sway 项目时,Forc 会根据项目类型生成多个工件。

项目类型生成产物
合约字节码、ABI JSON、存储槽 JSON
脚本字节码、字节码哈希
谓词字节码、谓词根
ABI JSON(如果公开了函数)

来源

测试框架

Forc 包含一个 Sway 代码的测试框架,允许开发人员编写和运行单元测试。

测试发现与执行

Sway 中的测试是用 #[test] 属性注释的函数。Forc 会发现、编译和执行这些测试。

来源

测试类型和条件

Sway 测试可以通过不同的条件通过:

测试条件描述
ShouldNotRevert执行无错误完成则测试通过
ShouldRevert执行回退(revert)但未指定代码时测试通过
ShouldRevert(code)执行回退(revert)且代码与指定代码匹配时测试通过

来源

部署

Forc 通过 forc-client 插件提供将 Sway 合约部署到 Fuel 网络的工具。

合约部署流程

部署过程包括几个步骤:

来源

代理合约

Forc 支持使用代理模式部署合约,从而实现合约的可升级性。

  1. 代理合约会将调用转发给实现合约。
  2. 代理所有者可以更新实现合约的地址。
  3. 这使得在保持状态和合约 ID 的同时升级合约逻辑成为可能。

来源

命令参考

以下是 Forc 主要命令的摘要:

命令描述
forc new创建新的 Sway 项目,并进行脚手架搭建。
forc init在现有目录中初始化 Sway 项目。
forc build编译项目并生成产物。
forc test运行项目中的单元测试。
forc deploy构建合约并将其部署到 Fuel 网络。
forc run在 Fuel 网络上执行脚本。
forc check在不构建的情况下检查项目是否存在错误。
forc clean移除构建产物
forc update更新依赖
forc contract-id计算合约的合约 ID。
forc plugins列出可用的插件。

来源

插件系统

Forc 具有插件系统,允许扩展其功能。插件是名为 forc-<plugin-name> 的独立可执行文件,可以通过 forc <plugin-name> 调用。

来源

总结

Forc 是 Sway 开发的一个综合性工具链,提供了编写、构建、测试和部署 Sway 代码所需的所有基本工具。其模块化架构允许通过插件进行扩展,并且其构建系统可以有效地处理依赖管理和编译。

来源