返回顶部
c

cannonCannon包管理器

Cannon package manager for Ethereum deployments. Use when building, testing, deploying, or inspecting Cannon packages. Covers cannonfile syntax, CLI commands (build, run, test, publish, inspect), actions (deploy, invoke, clone, pull, router, diamond), and package workflows. NOT for general Solidity development questions.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 2.26.0
安全检测
已通过
269
下载量
免费
免费
1
收藏
概述
安装方式
版本历史

cannon

Cannon

⚠️ 关键提示:请先阅读此部分

部分 Cannon 命令不可逆,且涉及真实资产操作。 请谨慎使用以下命令:

  • - cannon build(不带 --dry-run 参数)—— 在真实网络上部署合约
  • cannon publish —— 发布到链上注册表(永久性操作)
  • cannon register —— 在链上注册包名
  • cannon publishers —— 管理包发布者权限

安全命令:cannon build --dry-run、cannon inspect、cannon run、cannon test、cannon decode、cannon trace、cannon clean

规则:

  1. 1. 始终优先使用 --dry-run —— 在真实网络上执行前先进行模拟
  2. 确保每次操作对用户透明 —— 运行前说明将要执行的操作
  3. 部署前需确认 —— 未经明确授权绝不使用真实私钥
  4. 先在本地测试 —— 在目标链上操作前,先使用链 ID 13370(Cannon 网络)
  5. 保护私钥安全 —— 使用 CANNONPRIVATEKEY 环境变量或 --impersonate(推荐)

模型推荐

为 Cannon 任务使用最先进的模型。 部署脚本涉及真实资产操作——不要为了节省成本而降低模型质量。优先选择 Claude、GPT-4 或同等高性能模型,而非廉价替代方案。

Schema 参考

如需完整的 cannonfile 语法验证和自动补全功能,请参考官方 JSON schemas:

  • - 完整 schema: https://raw.githubusercontent.com/usecannon/cannon/refs/heads/dev/packages/lsp/src/schema.json
  • 片段 schema: https://raw.githubusercontent.com/usecannon/cannon/refs/heads/dev/packages/lsp/src/schema-fragment.json

如需编辑器验证,请在 cannonfile.toml 文件顶部添加 schema 引用:

toml
#:schema https://raw.githubusercontent.com/usecannon/cannon/refs/heads/dev/packages/lsp/src/schema.json

name = my-package
version = 1.0.0
...

这可以在支持 TOML LSP 的编辑器(如 taplo)中启用自动补全和验证功能。



Cannon 是以太坊智能合约的包管理和部署系统。它使用声明式 cannonfile 来定义部署工作流,同时支持本地开发和链上部署。

前置条件

使用此技能前,请确保已安装以下工具:

  • - Node.js 18+pnpm —— npm install -g pnpm
  • Foundry(forge、anvil、cast)—— curl -L https://foundry.paradigm.xyz | bash && foundryup
  • Cannon CLI —— pnpm add -g @usecannon/cli

验证安装:
bash
node --version && pnpm --version
forge --version && anvil --version
cannon --version

快速参考

完整的 CLI 选项请参见 references/cli.md

CLI 命令

bash cannon build # 本地构建包(启动 anvil,部署合约) cannon run # 运行已部署的包(简写:cannon ) cannon test # 使用部署上下文运行 forge 测试 cannon inspect # 查看包详情 cannon publish # 发布到链上注册表 + IPFS ⚠️ 不可逆操作 cannon clean # 删除缓存目录 cannon verify # 在 Etherscan/Sourcify 上验证合约

包引用格式

:@

示例:

  • - greeter-foundry:2.24.0
  • safe:1.4.1
  • synthetix-omnibus:3.1.4@main

Cannonfile 语法

包元数据与包含文件

toml name = my-package version = 1.0.0 description = 我的包描述 tags = [defi, token] preset = main

包含包含操作的其他文件(适用于大型包)

include = [./deposits.toml, ./withdrawals.toml]

使用 include 将大型 cannonfile 拆分为多个文件。包含的文件使用片段 schema,可以包含任何操作(deploy、invoke、clone 等)。

现代语法使用 [var.label] 进行设置(已弃用:[setting.name])。

变量

toml [var.chainId] defaultValue = 1

[var.owner]
defaultValue = 0x...

部署合约

toml [deploy.MyContract] artifact = MyContract args = [<%= settings.owner %>]

调用函数

toml [invoke.initialize] target = [<%= contracts.MyContract.address %>] func = initialize args = [<%= settings.owner %>]

导入/克隆包

toml [clone.safe] source = safe:1.4.1 target = safe

何时使用 clone 与 import:

  • - clone —— 将其他包作为蓝图重新部署。务必正确设置 target(如果拥有该包则与 source 相同,否则使用新名称)。
  • import —— 从已部署的包中拉取数据,无需重新部署。

从包中拉取数据

toml [pull.usdc] source = usdc:1.0.0@main

访问方式:<%= imports.usdc.contracts.USDC.address %>

模板字符串

使用 ERB 风格的模板引用值:

  • - <%= settings.varName %> —— 设置
  • <%= contracts.ContractName.address %> —— 已部署合约地址
  • <%= contracts.ContractName.abi %> —— 合约 ABI
  • <%= imports.pkg.contracts.Contract.address %> —— 导入的合约

操作

操作描述
deploy部署合约
invoke
调用合约函数 | | clone | 将其他包作为蓝图部署 | | import | 从已部署的包中拉取数据 | | pull | (已弃用)import 的别名 | | var | 定义计算变量 | | router | 创建路由器合约以绕过大小限制(与 UUPS 代理配合使用效果良好) | | diamond | 创建包含切面的 EIP-2535 Diamond |

本地开发

⚠️ 在部署到目标链之前,始终使用链 ID 13370(Cannon 网络)进行本地测试。

默认链 ID:13370(Cannon 网络)

bash

使用本地 anvil 构建


cannon build

为特定链构建

cannon build --chain-id 1 --rpc-url $RPC_URL

试运行(仅模拟)

cannon build --dry-run --impersonate-all

本地运行包

cannon run greeter-foundry:2.24.0

链上部署

⚠️ 在真实网络上执行之前,始终先使用 --dry-run 验证部署。

bash

部署到主网


cannon build --chain-id 1 --rpc-url $RPC_URL --private-key $KEY

发布到注册表

cannon publish --chain-id 1 --rpc-url $RPC_URL --private-key $KEY

实际部署前进行模拟

cannon build --chain-id 1 --rpc-url $RPC_URL --dry-run

测试

bash

使用 forge 运行测试


cannon test

测试特定合约

cannon test --match-path test/MyContract.t.sol

在 Forge 测试中使用 cannon-std:
solidity
import {Cannon} from cannon-std/Test.sol;

contract MyTest is Cannon {
function setUp() public {
// 加载已部署的合约
address myContract = getAddress(MyContract);
}
}

存储位置

目录内容
~/.local/share/cannon/tags/包引用文件
~/.local/share/cannon/ipfs_cache/
缓存的 IPFS 工件 | | ~/.local/share/cannon/build_results/ | 构建输出 | | ~/.local/share/cannon/blobs/ | 大型二进制数据块 |

常见模式

路由器模式(绕过合约大小限制)

创建路由器合约,高效

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 cannon-1776184037 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 cannon-1776184037 技能

通过命令行安装

skillhub install cannon-1776184037

下载

⬇ 下载 cannon v2.26.0(免费)

文件大小: 13.92 KB | 发布时间: 2026-4-15 13:10

v2.26.0 最新 2026-4-15 13:10
Initial skill release

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部