Skip to content

copyStorage

function copyStorage(address from, address to) external;

Utility cheatcode to copy storage of from contract to another to contract. Cheatcode is not allowed if the target address has arbitrary storage set.

Given a contract

contract Counter {
uint256 public count;
function setCount(uint256 x) public {
count = x;
}
}

using copyStorage cheatcode copies the storage set on an instance to another address:

function testCopyStorage() public {
Counter original = new Counter();
original.setCount(1000);
Counter copy = new Counter();
copy.setCount(1);
// Check initial count on copy.
assertEq(copy.count(), 1);
vm.copyStorage(address(original), address(copy));
// Value is copied from first contract to copy.
assertEq(copy.count(), 1000);
}