讲师中心 微信公众号

工具推荐

视频效率加速
立刻MV
立刻MV

低成本歌曲 MV、视频生成

Seko
Seko

AI短剧一键生成成片

updream

一键生成高质量推广成片

剧云
剧云

中文短剧剧本制作平台

Cannon

Polar Sponsor
爱发电 赞助
.NET 9.0

用于以太坊部署的Cannon包管理器。适用于构建、测试、部署或检查Cannon包,涵盖cannonfile语法、CLI命令等。

炮兵: 读取此首页

功能概述

炮兵: 读取此首页是一项面向实际任务的技能,主要用于有些炮兵命令是 IRREVERSIBLE 并处理真实值;注意: :. 炮兵建造( 不使用干线运行) , 部署合同在真实的网络上;

核心要点

  • Cannon pub。
  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。

使用与执行

该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

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. 始终优先使用 --dry-run —— 在真实网络执行前先进行模拟
  2. 确保所有操作对用户完全透明 —— 执行前明确告知将发生什么
  3. 部署前必须获得确认 —— 未经显式授权,不得使用真实私钥
  4. 优先本地测试 —— 在目标链之前,先在链 ID 13370(Cannon Network)上测试
  5. 保护私钥 —— 推荐使用 CANNON_PRIVATE_KEY 环境变量或 --impersonate 参数

模型推荐

为 Cannon 相关任务选用当前最先进的模型。 部署脚本处理真实资产 —— 切勿因节省成本而降低模型能力。优先选用 Claude、GPT-4 或具备同等能力的高阶模型,而非更廉价的替代方案。

Schema 参考

如需完整的 cannonfile 语法校验与编辑器自动补全,请参考官方 JSON Schema:

  • 完整 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 引用:

#: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

验证安装是否成功:

node --version && pnpm --version
forge --version && anvil --version
cannon --version

快速参考

完整 CLI 参数说明详见 references/cli.md。

CLI 命令

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 语法

包元数据与文件包含

name = "my-package"
version = "1.0.0"
description = "My package description"
tags = ["defi", "token"]
preset = "main"

# 包含额外的动作定义文件(适用于大型包)
include = ["./deposits.toml", "./withdrawals.toml"]

使用 include 可将大型 cannonfile 拆分为多个文件。被包含的文件遵循 fragment schema,可包含任意动作(deploy、invoke、clone 等)。

现代语法使用 [var.label] 定义配置项(已弃用旧语法:[setting.name])。

变量

[var.chainId]
defaultValue = 1

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

部署合约

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

调用函数

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

导入 / 克隆包

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

何时使用 clone 与 import:

  • clone — 将另一个包作为“蓝图”重新部署。务必正确设置 target(若你拥有该包,则可与 source 相同;否则应指定新名称)。
  • import — 从已部署的包中拉取数据,无需重复部署。

从包中拉取数据

[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 %> —— 已导入合约

动作(Actions)

动作 描述
deploy 部署合约
invoke 调用合约函数
clone 以另一包为蓝图部署新包
import 从已部署包中拉取数据
pull (已弃用)import 的别名
var 定义计算型变量
router 创建 router 合约以绕过合约大小限制(常与 UUPS 代理配合使用)
diamond 创建符合 EIP-2535 标准的 Diamond 合约及其 facets

本地开发

⚠️ 在向目标链部署前,请务必使用链 ID 13370(Cannon Network)进行本地测试。

默认链 ID:13370(Cannon Network)

# 使用本地 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 进行验证。

# 部署至主网
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

测试

# 使用 forge 运行测试
cannon test

# 测试特定合约
cannon test --match-path "test/MyContract.t.sol"

在 Forge 测试中使用 cannon-std:

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/ 大型二进制数据块

常用模式

Router 模式(绕过合约大小限制)

创建一个 router 合约,高效地将调用转发至下游合约。与 UUPS 代理结合时尤为强大。

[deploy.CoreImplementation]
artifact = "Core"

[deploy.AnotherImplementation]
artifact = "Another"

[router.CoreRouter]
dependencies = ["CoreImplementation", "AnotherImplementation"]

Diamond 模式(EIP-2535)

[deploy.Diamond]
artifact = "Diamond"

[deploy.FacetA]
artifact = "FacetA"

[deploy.FacetB]
artifact = "FacetB"

[diamond.Diamond]
facets = ["FacetA", "FacetB"]

链接库(Linked Libraries)

[deploy.Library]
artifact = "Library"

[deploy.Contract]
artifact = "Contract"
libraries = { Library = "<%= contracts.Library.address %>" }

调试工具

Cannon 提供了用于解码字节码、追踪交易及与已部署合约交互的命令。

decode

利用包的 ABI 解码十六进制数据(函数调用、事件、错误等):

cannon decode synthetix-omnibus --chain-id 8453 --preset main 0x...

trace

获取交易的人类可读堆栈追踪信息:

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

interact

通过 CLI 向已部署合约发送交易:

cannon interact synthetix-omnibus --chain-id 8453 --contract CoreProxy

包状态操作(alter)

alter 命令可在常规构建流程之外修改已有 Cannon 包。适用于故障排查、迁移或修复损坏的包状态。

⚠️ 仅当无其他可行方案时才使用 alter。

子命令

命令 描述
import 将现有资源导入部署步骤(适用于迁移场景)
set-contract-address 修改部署中某合约的地址
mark-complete 将某部署步骤标记为已完成
mark-incomplete 将某部署步骤标记为未完成
set-url 更新部署 URL 引用
set-misc 更新杂项数据 URL
clean-unused 移除未使用的部署状态
migrate-212 将包从 2.12 版本格式迁移

示例:导入已有部署

# 通过创建交易哈希导入已部署合约
cannon alter my-package:1.0.0 --chain-id 1 import deploy MyContract 0x...txhash

# 导入已执行的交易
cannon alter my-package:1.0.0 --chain-id 1 import invoke initialize 0x...txhash

GitOps 工作流

Cannon 通过网站界面支持 GitOps 风格的部署。

通过 GitOps 排队部署

可通过 Cannon 网站直接从 GitHub 仓库或 IPFS 哈希部署包:

  • 执行前预览交易
  • 查看变更的 Git Diff
  • 通过 Safe 多签钱包执行
  • 部署完成后发布至注册表

参见:https://usecannon.com/deploy

部署仓库

为部署配置单独建立一个 Git 仓库(与源代码仓库分离):

  • 在保持智能合约源码私有的前提下,实现部署过程透明化
  • 支持团队协作管理部署
  • 保留清晰的审计轨迹

从其他工具迁移

从 hardhat-deploy、Foundry 脚本或其他部署框架迁移:

  1. 手动重建部署为 cannonfile.toml(通常较快)
  2. 本地构建生成模板:cannon build(保存其 IPFS 哈希)
  3. 针对每个网络,导入已有部署:
    # 将包 URL 设为本地模板
    cannon alter my-package --chain-id 1 set-url 
    
    # 导入各已部署合约/交易
    cannon alter my-package --chain-id 1 import deploy MyContract 0x...txhash
    
  4. 验证:运行构建命令(不应执行任何步骤):cannon build --chain-id 1

高级主题

详细信息请参阅:

  • CLI 参考:参见 references/cli.md
  • Cannonfile 规范:参见 references/cannonfile.md
  • 测试模式:参见 references/testing.md
  • 注册表与发布:参见 references/registry.md

故障排查

问题 解决方案
“deployment not found” 该链 ID 下未发布对应包。请检查 --chain-id
构建失败并提示 “artifact not found” 请先运行 forge build,或检查 artifact 路径是否正确
IPFS 超时 检查网络连接,可能需要配置 IPFS 网关
注册表发布失败 请确认你对该包名称具有写入权限
部署到了错误链 务必反复核对 --chain-id —— 部署操作无法撤销
发布了错误的包 注册表发布是永久性的 —— 请务必先验证版本号与资源内容

开发工作流

  1. 使用 Foundry 开发合约
  2. 编写 cannonfile.toml 定义部署逻辑
  3. 本地构建:cannon build(链 ID 13370)
  4. 测试:cannon test
  5. 目标链模拟:--dry-run ⚠️ 此步必须首先执行
  6. 部署:cannon build --chain-id ⚠️ 在非本地网络上不可逆(链 ID 13370 上安全)
  7. 验证:使用 cannon verify 在 Etherscan 上验证合约
  8. 发布:cannon publish ⚠️ 链上操作永久生效

关键文件

文件 用途
cannonfile.toml 包定义
cannonfile.lock 锁定依赖项
.cannon/ 构建缓存(已加入 .gitignore)
deployments/ 部署产物
目录

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

0

2026.11.06

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

0

2026.11.06

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

0

2026.11.06

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

0

2026.11.05

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

0

2026.11.05

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

0

2026.11.04

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

0

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

0

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

0

2026.11.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn