chisel
快速、实用且冗长的 Solidity REPL
$ chisel --help
用法: chisel [选项] [命令]
命令:
list 列出所有缓存的会话
load 加载一个缓存的会话
view 查看缓存会话的源代码
clear-cache 清除缓存目录中的所有缓存 chisel 会话
eval 简单评估一个命令而不进入 REPL
help 打印此消息或给定子命令的帮助信息
选项:
-h, --help
打印帮助信息(使用 '-h' 查看摘要)
-V, --version
打印版本
REPL 选项:
--prelude <PRELUDE>
包含要导入的 Solidity 文件的目录路径,或单个 Solidity 文件的路径。
这些文件将在 REPL 的顶层之前进行评估,因此充当前奏
--no-vm
禁用默认的 `Vm` 导入。
如果 Solc 版本低于 0.6.2,则默认禁用该导入。
缓存选项:
--force
清除缓存和工件文件夹并重新编译
构建选项:
--no-cache
禁用缓存
--eof
使用启用 EOF 的 solc 二进制文件。通过 ir 启用并将 EVM 版本设置为
Prague。需要安装 Docker。
请注意,这是一个临时解决方案,直到 EOF 支持合并到主 solc 版本中。
--skip <SKIP>...
跳过构建名称包含给定过滤器的文件。
`test` 和 `script` 是 `.t.sol` 和 `.s.sol` 的别名。
链接器选项:
--libraries <LIBRARIES>
设置预链接库
[env: DAPP_LIBRARIES=]
编译器选项:
--ignored-error-codes <ERROR_CODES>
按错误代码忽略 solc 警告
--deny-warnings
警告将触发编译器错误
--no-auto-detect
不自动检测 `solc` 版本
--use <SOLC_VERSION>
指定要使用的 solc 版本,或本地 solc 的路径。
有效值的格式为 `x.y.z`、`solc:x.y.z` 或
`path/to/solc`。
--offline
不访问网络。
缺失的 solc 版本将不会被安装。
--via-ir
使用 Yul 中间表示法编译处理流程
--no-metadata
不将任何元数据附加到字节码。
这相当于将 `bytecode_hash` 设置为 `none` 和
`cbor_metadata` 设置为 `false`。
--silent
启动时不打印任何内容
--ast
在编译器输出中以 JSON 格式包含 AST
--evm-version <VERSION>
目标 EVM 版本
--optimize [<OPTIMIZE>]
激活 Solidity 优化器
[可能的值: true, false]
--optimizer-runs <RUNS>
运行次数大致指定每个操作码在合约生命周期内将被执行的频率。
这意味着它是代码大小(部署成本)和代码执行成本(部署后成本)之间的权衡参数。`optimizer_runs`
参数为 `1` 将生成短但昂贵的代码。相反,较大的 `optimizer_runs` 参数将生成更长但更节省 gas 的代码
--extra-output <SELECTOR>...
要包含在合约工件中的额外输出。
示例键: evm.assembly, ewasm, ir, irOptimized, metadata
有关完整描述,请参见
<https://docs.soliditylang.org/en/v0.8.13/using-the-compiler.html#input-description>
--extra-output-files <SELECTOR>...
要写入单独文件的额外输出。
有效值: metadata, ir, irOptimized, ewasm, evm.assembly
项目选项:
-o, --out <PATH>
合约工件文件夹的路径
--revert-strings <REVERT>
回退字符串配置。
可能的值为 "default"、"strip"(移除)、"debug"
(Solidity 生成的回退字符串)和 "verboseDebug"
--build-info
生成构建信息文件
--build-info-path <PATH>
构建信息文件将写入的输出路径
--root <PATH>
项目的根路径。
默认情况下为 Git 仓库的根目录(如果在其中),或当前工作目录。
-C, --contracts <PATH>
合约源目录
-R, --remappings <REMAPPINGS>
项目的重映射
--remappings-env <ENV>
项目的环境重映射
--cache-path <PATH>
编译器缓存的路径
--lib-paths <PATH>
库文件夹的路径
--hardhat
使用 Hardhat 风格的项目布局。
这与使用: `--contracts contracts --lib-paths
node_modules` 相同。
[别名: hh]
--config-path <FILE>
配置文件的路径
EVM 选项:
-f, --fork-url <URL>
通过远程端点获取状态,而不是从空状态开始。
如果你想从特定区块号获取状态,请参见
--fork-block-number。
[别名: rpc-url]
--fork-block-number <BLOCK>
通过远程端点从特定区块号获取状态。
请参见 --fork-url。
--fork-retries <RETRIES>
重试次数。
请参见 --fork-url。
--fork-retry-backoff <BACKOFF>
遇到错误时的初始重试退避。
请参见 --fork-url。
--no-storage-caching
明确禁用 RPC 缓存的使用。
所有存储槽都将完全从端点读取。
此标志覆盖项目的配置文件。
请参见 --fork-url。
--initial-balance <BALANCE>
部署测试合约的初始余额
--sender <ADDRESS>
将执行测试/脚本的地址
--ffi
启用 FFI cheatcode
--always-use-create-2-factory
在所有情况下,包括测试和非广播脚本中使用 create 2 工厂
-v, --verbosity...
EVM 的详细程度。
多次传递以增加详细程度(例如 -v, -vv, -vvv)。
详细程度级别:
- 2: 打印所有测试的日志
- 3: 打印失败测试的执行跟踪
- 4: 打印所有测试的执行跟踪,以及失败测试的设置跟踪
- 5: 打印所有测试的执行和设置跟踪
Fork 配置:
--compute-units-per-second <CUPS>
设置此提供程序每秒假定可用的计算单位数量
默认值: 330
另请参见 --fork-url 和
<https://docs.alchemy.com/reference/compute-units#what-are-cups-compute-units-per-second>
--no-rpc-rate-limit
禁用此节点提供程序的速率限制。
另请参见 --fork-url 和
<https://docs.alchemy.com/reference/compute-units#what-are-cups-compute-units-per-second>
[别名: no-rate-limit]
执行环境配置:
--gas-limit <GAS_LIMIT>
区块 gas 限制
--code-size-limit <CODE_SIZE>
EIP-170: 合约代码大小限制(以字节为单位)。由于测试,增加此限制是有用的。默认值为 0x6000 (~25kb)
--chain <CHAIN>
链名称或 EIP-155 链 ID
[别名: chain-id]
--gas-price <GAS_PRICE>
gas 价格
--block-base-fee-per-gas <FEE>
区块中的基础费用
[别名: base-fee]
--tx-origin <ADDRESS>
交易来源
--block-coinbase <ADDRESS>
区块的 coinbase
--block-timestamp <TIMESTAMP>
区块的时间戳
--block-number <BLOCK>
区块号
--block-difficulty <DIFFICULTY>
区块难度
--block-prevrandao <PREVRANDAO>
区块的 prevrandao 值。注意:合并之前,此字段为 mix_hash
--block-gas-limit <GAS_LIMIT>
区块 gas 限制
--memory-limit <MEMORY_LIMIT>
每次 EVM 执行的内存限制(以字节为单位)。如果超过此限制,将抛出 `MemoryLimitOOG` 结果。
默认值为 128MiB。
--disable-block-gas-limit
是否禁用区块 gas 限制检查
[别名: no-gas-limit]
--isolate
是否启用调用的隔离。在隔离模式下,所有顶层调用作为单独交易在单独的 EVM 上下文中执行,从而实现更精确的 gas 计量和交易状态更改
--alphanet
是否启用 Alphanet 功能