getDeployedCode
Signature
Section titled “Signature”function getDeployedCode(string calldata) external returns (bytes memory);Description
Section titled “Description”This cheatcode works similar to getCode but only returns the deployed bytecode (aka runtime
bytecode) for a contract in the project given the path to the contract.
The main use case for this cheatcode is as a shortcut to deploy stateless contracts to arbitrary addresses.
The calldata parameter can either be in the form ContractFile.sol (if the filename and contract name are the same)
, ContractFile.sol:ContractName, or the path to an artifact, relative to the root of your project.
Examples
Section titled “Examples”Deploy a stateless contract at an arbitrary address using getDeployedCode and etch.
// A stateless contract that we want deployed at a specific addresscontract Override { event Payload(address sender, address target, bytes data);
function emitPayload( address target, bytes calldata message ) external payable returns (uint256) { emit Payload(msg.sender, target, message); return 0; }}
// get the **deployedBytecode**bytes memory code = vm.getDeployedCode("Override.sol:Override");
// set the code of an arbitrary addressaddress overrideAddress = address(64);vm.etch(overrideAddress, code);assertEq(overrideAddress.code, code);Supported formats
Section titled “Supported formats”You can fetch artifacts by either contract path or contract name. Fetching artifacts for a specific version is also supported. If not provided, cheatcode will default to the version of a test being executed or the only version artifact was compiled with.
vm.getDeployedCode("MyContract.sol:MyContract");vm.getDeployedCode("MyContract");vm.getDeployedCode("MyContract.sol:0.8.18");vm.getDeployedCode("MyContract:0.8.18");SEE ALSO
Section titled “SEE ALSO”Forge Standard Library