Contract lifecycle commands and helpers for EVML scripts: deploy creation bytecode (CREATE, CREATE2, CREATE3, or mirroring an existing deployment), verify source code on Etherscan V2, inspect deployed code and storage, and compile Solidity from inline source or a URL with the @solidity helpers.
| Command | Description |
|---|
| contracts:deploy | Deploy a contract from raw creation bytecode. Binds the predicted address to . Mirror an existing deployment with --mirror-chain / --mirror-address (fetches the original creation bytecode from Etherscan). |
| contracts:verify | Submit Solidity Standard JSON Input source code to Etherscan V2 for verification at . Mirror an existing verification with --mirror-chain / --mirror-address, or supply source explicitly with --source. Inside sim:fork this becomes a local dry-run: the source is compiled and checked against the fork's deployed bytecode instead of being sent to Etherscan. |
| Helper | Returns | Description |
|---|
| @contracts:codeAt | bytes | Return the deployed bytecode at an address. |
| @contracts:next | address | Predict the next contract address deployed by a given account. |
| @contracts:slot.array | bytes32 | Derive the storage slot of element index of a dynamic array declared at a base slot: keccak256(base) + index. |
| @contracts:slot.erc7201 | bytes32 | Derive the root slot of an ERC-7201 namespaced storage layout: keccak256(abi.encode(uint256(keccak256(id)) - 1)) & ~0xff. |
| @contracts:slot.mapping | bytes32 | Derive the storage slot of mapping[key] for a mapping declared at a base slot: keccak256(h(key) . base). |
| @contracts:storageAt | bytes32 | Read a raw storage slot of a contract. |