copyStorage
签名
function copyStorage(address from, address to) external;
描述
实用的作弊代码,用于将 from
合约的存储复制到另一个 to
合约。
如果目标地址设置了任意存储,则不允许使用作弊代码。
示例
给定一个合约
contract Counter {
uint256 public count;
function setCount(uint256 x) public {
count = x;
}
}
使用 copyStorage
作弊代码将一个实例上的存储复制到另一个地址:
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);
}