Fast, utilitarian, and verbose Solidity REPL
Usage: chisel [OPTIONS] [COMMAND]
Commands:
list List all cached sessions
load Load a cached session
view View the source of a cached session without restoring RPC credentials or compiling it
clear-cache Clear all cached chisel sessions from the cache directory
eval Simple evaluation of a command without entering the REPL
help Print this message or the help of the given subcommand(s)
Options:
-j, --threads <THREADS>
Number of threads to use. Specifying 0 defaults to the number of logical cores
[alias: --jobs]
--profile <PROFILE>
The configuration profile to use
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
Display options:
-v, --verbosity...
Verbosity level of the log messages.
Pass multiple times to increase the verbosity (e.g. -v, -vv, -vvv).
Depending on the context the verbosity levels have different meanings.
For example, the verbosity levels of the EVM are:
- 2 (-vv): Print logs for all tests.
- 3 (-vvv): Print execution traces for failing tests.
- 4 (-vvvv): Print execution traces for all tests, and setup traces for failing tests.
- 5 (-vvvvv): Print execution and setup traces for all tests, including storage changes
and
backtraces with line numbers.
-q, --quiet
Do not print log messages
--json
Format log messages as JSON
--md
Format log messages as Markdown
--color <COLOR>
The color of the log messages
Possible values:
- auto: Intelligently guess whether to use color output (default)
- always: Force color output
- never: Force disable color output
REPL options:
--prelude <PRELUDE>
Path to a directory containing Solidity files to import, or path to a single Solidity
file.
These files will be evaluated before the top-level of the REPL, therefore functioning as a
prelude
--no-vm
Disable the default `Vm` import.
The import is disabled by default if the Solc version is less than 0.6.2.
--ir-minimum
Enable viaIR with minimum optimization
This can fix most of the "stack too deep" errors while resulting a relatively accurate
source map.
Cache options:
--force
Clear the cache and artifacts folder and recompile
Build options:
--no-cache
Disable the cache
--no-dynamic-test-linking
Disable dynamic test linking
--skip <SKIP>...
Skip building files whose names contain the given filter.
`test` and `script` are aliases for `.t.sol` and `.s.sol`.
Linker options:
--disallow-linked-libraries
Reject contracts that depend on externally linked Solidity libraries.
Internal libraries and dynamic test linking remain available. Overrides
`allow_linked_libraries` in configuration and environment variables.
--libraries <LIBRARIES>
Set pre-linked libraries
[env: DAPP_LIBRARIES=]
Compiler options:
--ignored-error-codes <ERROR_CODES>
Ignore solc warnings by error code
-D, --deny <LEVEL>
A compiler error will be triggered at the specified diagnostic level.
Replaces the deprecated `--deny-warnings` flag.
Possible values: - `never`: Do not treat any diagnostics as errors. - `warnings`: Treat
warnings as errors. - `notes`: Treat both, warnings and notes, as errors.
Possible values:
- never: Always exit with zero code
- warnings: Exit with a non-zero code if any warnings are found
- notes: Exit with a non-zero code if any notes or warnings are found
--no-auto-detect
Do not auto-detect the `solc` version
--use <SOLC_VERSION>
Specify the solc version, path, or executable name on `PATH` to build with.
Valid values are in the format `x.y.z`, `solc:x.y.z`, `path/to/solc`, or `solc`.
--offline
Do not access the network.
Missing solc versions will not be installed.
--use-literal-content
Changes compilation to only use literal content and not URLs
--no-metadata
Do not append any metadata to the bytecode.
This is equivalent to setting `bytecode_hash` to `none` and `cbor_metadata` to `false`.
--ast
Includes the AST as JSON in the compiler output
--evm-version <VERSION>
The target EVM version
--optimize [<OPTIMIZE>]
Activate the Solidity optimizer
[possible values: true, false]
--optimizer-runs <RUNS>
The number of runs specifies roughly how often each opcode of the deployed code will be
executed across the life-time of the contract. This means it is a trade-off parameter
between code size (deploy cost) and code execution cost (cost after deployment). An
`optimizer_runs` parameter of `1` will produce short but expensive code. In contrast, a
larger `optimizer_runs` parameter will produce longer but more gas efficient code
--via-ir
Use the Yul intermediate representation compilation pipeline
--via-ssa-cfg
Turn on SSA CFG-based code generation via the IR (experimental).
This passes `--via-ssa-cfg` to solc. Implies `--via-ir`. Requires `--experimental` to be
set (as of Solidity 0.8.35+). This is false by default.
--experimental
Enable Solidity's experimental mode.
This passes `--experimental` to solc, which is required by Solidity 0.8.35+ for
experimental features.
--extra-output <SELECTOR>...
Extra output to include in the contract's artifact.
Example keys: evm.assembly, ewasm, ir, irOptimized, metadata
For a full description, see
<https://docs.soliditylang.org/en/v0.8.13/using-the-compiler.html#input-description>
--extra-output-files <SELECTOR>...
Extra output to write to separate files.
Valid values: metadata, ir, irOptimized, ewasm, evm.assembly
Project options:
-o, --out <PATH>
The path to the contract artifacts folder
--revert-strings <REVERT>
Revert string configuration.
Possible values are "default", "strip" (remove), "debug" (Solidity-generated revert
strings) and "verboseDebug"
--build-info
Generate build info files
--build-info-path <PATH>
Output path to directory that build info files will be written to
--root <PATH>
The project's root path.
By default root of the Git repository, if in one, or the current working directory.
-C, --contracts <PATH>
The contracts source directory
-R, --remappings <REMAPPINGS>
The project's remappings
--remappings-env <ENV>
The project's remappings from the environment
--cache-path <PATH>
The path to the compiler cache
--lib-paths <PATH>
The path to the library folder
--hardhat
Use the Hardhat-style project layout.
This is the same as using: `--contracts contracts --lib-paths node_modules`.
[alias: --hh]
--config-path <FILE>
Path to the config file.
The project root is the config file's parent directory.
EVM options:
-r, --rpc-url <URL>
The RPC endpoint
[alias: --fork-url]
-k, --insecure
Allow insecure RPC connections (accept invalid HTTPS certificates).
When the provider's inner runtime transport variant is HTTP, this configures the reqwest
client to accept invalid certificates.
--rpc-timeout <RPC_TIMEOUT>
Timeout for the RPC request in seconds.
The specified timeout will be used to override the default timeout for RPC requests.
Default value: 45
[env: ETH_RPC_TIMEOUT=]
--no-proxy
Disable automatic proxy detection.
Use this in sandboxed environments (e.g., Cursor IDE sandbox, macOS App Sandbox) where
system proxy detection causes crashes. When enabled, HTTP_PROXY/HTTPS_PROXY environment
variables and system proxy settings will be ignored.
--compute-units-per-second <CUPS>
Sets the number of assumed available compute units per second for this provider.
default value: 330
See also
<https://docs.alchemy.com/reference/compute-units#what-are-cups-compute-units-per-second>
--no-rpc-rate-limit
Disables rate limiting for this node's provider.
See also
<https://docs.alchemy.com/reference/compute-units#what-are-cups-compute-units-per-second>
[alias: --no-rate-limit]
--fork-block-number <BLOCK>
Fetch state from a specific block number over a remote endpoint.
See --rpc-url.
--fork-state-by-number
Fetch fork state by block number instead of hash.
Use for RPC endpoints that cannot serve state by block hash. Number-based reads cannot
guarantee a consistent snapshot if the remote chain reorganizes and do not use the disk
state cache. Transaction replay still requires hash-addressed state.
--fork-retries <RETRIES>
Number of retries.
See --rpc-url.
--fork-retry-backoff <BACKOFF>
Initial retry backoff on encountering errors.
See --rpc-url.
--no-storage-caching
Explicitly disables the use of RPC caching.
All storage slots are read entirely from the endpoint.
This flag overrides the project's configuration file.
See --rpc-url.
--no-fork-bal
Disable parent-block BAL cache prewarming for transaction-hash fork cheatcodes.
Preceding transactions are still replayed when prewarming is enabled.
--fork-prefetch
Prefetch a new fork block's cache from the keys of an older cached block on the same
chain.
Helps forks of `latest`, which start with an empty cache on each new head.
--initial-balance <BALANCE>
The initial balance of deployed test contracts
--sender <ADDRESS>
The address which will be executing tests/scripts
--ffi
Enable the FFI cheatcode
--live-logs
Whether to show `console.log` outputs in realtime during script/test execution
--always-use-create-2-factory
Use the create 2 factory in all cases including tests and non-broadcasting scripts
--create2-deployer <ADDRESS>
The CREATE2 deployer address to use, this will override the one in the config
Executor environment config:
--code-size-limit <CODE_SIZE>
EIP-170: Contract code size limit in bytes. Useful to increase this because of tests. By
default, it is 0x6000 (~25kb)
--chain <CHAIN>
The chain name or EIP-155 chain ID
[alias: --chain-id]
--gas-price <GAS_PRICE>
The gas price
--block-base-fee-per-gas <FEE>
The base fee in a block
[alias: --base-fee]
--tx-origin <ADDRESS>
The transaction origin
--block-coinbase <ADDRESS>
The coinbase of the block
--block-timestamp <TIMESTAMP>
The timestamp of the block
--block-number <BLOCK>
The block number
--block-difficulty <DIFFICULTY>
The block difficulty
--block-prevrandao <PREVRANDAO>
The block prevrandao value. NOTE: Before merge this field was mix_hash
--block-gas-limit <BLOCK_GAS_LIMIT>
The block gas limit
[alias: --gas-limit]
--memory-limit <MEMORY_LIMIT>
The memory limit per EVM execution in bytes. If this limit is exceeded, a `MemoryLimitOOG`
result is thrown.
The default is 128MiB.
--disable-block-gas-limit
Whether to disable the block gas limit checks
[aliases: --no-block-gas-limit, --no-gas-limit]
--enable-tx-gas-limit
Whether to enable tx gas limit checks as imposed by Osaka (EIP-7825)
[alias: --tx-gas-limit]
--isolate
Whether to enable isolation of calls. In isolation mode all top-level calls are executed
as a separate transaction in a separate EVM context, enabling more precise gas accounting
and transaction state changes
--no-isolate
Whether to disable isolation of calls
--hardfork <HARDFORK>
The runtime EVM hardfork to use.
Network-specific hardforks must be namespaced, for example `tempo:T5`.
Networks:
-n, --network <NETWORK>
Enable a specific network family
[possible values: ethereum, optimism, tempo, monad]
--celo
Enable Celo network features
Options (84)
| Option | Description | Source |
|---|---|---|
-j, --threads THREADS | Number of threads to use. | help |
--profile PROFILE | The configuration profile to use | help |
-h, --help | Print help (see a summary with '-h') | help |
-V, --version | Print version | help |
-v, --verbosity | Verbosity level of the log messages. | help |
-q, --quiet | Do not print log messages | help |
--json | Format log messages as JSON | help |
--md | Format log messages as Markdown | help |
--color COLOR | The color of the log messages | help |
--prelude PRELUDE | Path to a directory containing Solidity files to import, or path to a single Solidity file. | help |
--no-vm | Disable the default `Vm` import. | help |
--ir-minimum | Enable viaIR with minimum optimization | help |
--force | Clear the cache and artifacts folder and recompile | help |
--no-cache | Disable the cache | help |
--no-dynamic-test-linking | Disable dynamic test linking | help |
--skip SKIP>... | Skip building files whose names contain the given filter. | help |
--disallow-linked-libraries | Reject contracts that depend on externally linked Solidity libraries. | help |
--libraries LIBRARIES | Set pre-linked libraries | help |
--ignored-error-codes ERROR_CODES | Ignore solc warnings by error code | help |
-D, --deny LEVEL | A compiler error will be triggered at the specified diagnostic level. | help |
--no-auto-detect | Do not auto-detect the `solc` version | help |
--use SOLC_VERSION | Specify the solc version, path, or executable name on `PATH` to build with. | help |
--offline | Do not access the network. | help |
--use-literal-content | Changes compilation to only use literal content and not URLs | help |
--no-metadata | Do not append any metadata to the bytecode. | help |
--ast | Includes the AST as JSON in the compiler output | help |
--evm-version VERSION | The target EVM version | help |
--optimize OPTIMIZE | Activate the Solidity optimizer | help |
--optimizer-runs RUNS | The number of runs specifies roughly how often each opcode of the deployed code will be executed across the life-time of the contract. | help |
--via-ir | Use the Yul intermediate representation compilation pipeline | help |
--via-ssa-cfg | Turn on SSA CFG-based code generation via the IR (experimental). | help |
--experimental | Enable Solidity's experimental mode. | help |
--extra-output SELECTOR>... | Extra output to include in the contract's artifact. | help |
--extra-output-files SELECTOR>... | Extra output to write to separate files. | help |
-o, --out PATH | The path to the contract artifacts folder | help |
--revert-strings REVERT | Revert string configuration. | help |
--build-info | Generate build info files | help |
--build-info-path PATH | Output path to directory that build info files will be written to | help |
--root PATH | The project's root path. | help |
-C, --contracts PATH | The contracts source directory | help |
-R, --remappings REMAPPINGS | The project's remappings | help |
--remappings-env ENV | The project's remappings from the environment | help |
--cache-path PATH | The path to the compiler cache | help |
--lib-paths PATH | The path to the library folder | help |
--hardhat | Use the Hardhat-style project layout. | help |
--config-path FILE | Path to the config file. | help |
-r, --rpc-url URL | The RPC endpoint | help |
-k, --insecure | Allow insecure RPC connections (accept invalid HTTPS certificates). | help |
--rpc-timeout RPC_TIMEOUT | Timeout for the RPC request in seconds. | help |
--no-proxy | Disable automatic proxy detection. | help |
--compute-units-per-second CUPS | Sets the number of assumed available compute units per second for this provider. | help |
--no-rpc-rate-limit | Disables rate limiting for this node's provider. | help |
--fork-block-number BLOCK | Fetch state from a specific block number over a remote endpoint. | help |
--fork-state-by-number | Fetch fork state by block number instead of hash. | help |
--fork-retries RETRIES | Number of retries. | help |
--fork-retry-backoff BACKOFF | Initial retry backoff on encountering errors. | help |
--no-storage-caching | Explicitly disables the use of RPC caching. | help |
--no-fork-bal | Disable parent-block BAL cache prewarming for transaction-hash fork cheatcodes. | help |
--fork-prefetch | Prefetch a new fork block's cache from the keys of an older cached block on the same chain. | help |
--initial-balance BALANCE | The initial balance of deployed test contracts | help |
--sender ADDRESS | The address which will be executing tests/scripts | help |
--ffi | Enable the FFI cheatcode | help |
--live-logs | Whether to show `console.log` outputs in realtime during script/test execution | help |
--always-use-create-2-factory | Use the create 2 factory in all cases including tests and non-broadcasting scripts | help |
--create2-deployer ADDRESS | The CREATE2 deployer address to use, this will override the one in the config | help |
--code-size-limit CODE_SIZE | EIP-170: Contract code size limit in bytes. | help |
--chain CHAIN | The chain name or EIP-155 chain ID | help |
--gas-price GAS_PRICE | The gas price | help |
--block-base-fee-per-gas FEE | The base fee in a block | help |
--tx-origin ADDRESS | The transaction origin | help |
--block-coinbase ADDRESS | The coinbase of the block | help |
--block-timestamp TIMESTAMP | The timestamp of the block | help |
--block-number BLOCK | The block number | help |
--block-difficulty DIFFICULTY | The block difficulty | help |
--block-prevrandao PREVRANDAO | The block prevrandao value. | help |
--block-gas-limit BLOCK_GAS_LIMIT | The block gas limit | help |
--memory-limit MEMORY_LIMIT | The memory limit per EVM execution in bytes. | help |
--disable-block-gas-limit | Whether to disable the block gas limit checks | help |
--enable-tx-gas-limit | Whether to enable tx gas limit checks as imposed by Osaka (EIP-7825) | help |
--isolate | Whether to enable isolation of calls. | help |
--no-isolate | Whether to disable isolation of calls | help |
--hardfork HARDFORK | The runtime EVM hardfork to use. | help |
-n, --network NETWORK | Enable a specific network family | help |
--celo | Enable Celo network features | help |