ethereum: add arrayElementLocation() test helper
Review feedback from @kcsongor in #3363
This commit is contained in:
parent
d9aacf1485
commit
a9437e8dc2
|
@ -517,7 +517,7 @@ contract TestGovernance is TestUtils {
|
|||
for(uint8 i = 0; i < newGuardianSet.length; i++) {
|
||||
vm.assume(newGuardianSet[i] != address(0));
|
||||
// New GuardianSet key array elements should be initialized from zero to non-zero
|
||||
vm.assume(storageSlot != bytes32(uint256(keccak256(abi.encodePacked(hashedLocationOffset(1, GUARDIANSETS_SLOT, 0)))) + i));
|
||||
vm.assume(storageSlot != arrayElementLocation(hashedLocationOffset(1, GUARDIANSETS_SLOT, 0), i));
|
||||
}
|
||||
|
||||
vm.chainId(EVMCHAINID);
|
||||
|
@ -769,7 +769,7 @@ contract TestGovernance is TestUtils {
|
|||
for(uint8 i = 0; i < newGuardianSet.length; i++) {
|
||||
vm.assume(newGuardianSet[i] != address(0));
|
||||
// New GuardianSet key array elements should be initialized from zero to non-zero
|
||||
vm.assume(storageSlot != bytes32(uint256(keccak256(abi.encodePacked(hashedLocationOffset(1, GUARDIANSETS_SLOT, 0)))) + i));
|
||||
vm.assume(storageSlot != arrayElementLocation(hashedLocationOffset(1, GUARDIANSETS_SLOT, 0), i));
|
||||
}
|
||||
|
||||
vm.chainId(EVMCHAINID);
|
||||
|
|
|
@ -184,4 +184,10 @@ contract TestUtils is Test, KEVMCheats {
|
|||
|
||||
signature = abi.encodePacked(r, s,(v - 27));
|
||||
}
|
||||
|
||||
// @dev compute the storage slot of an array based on its key and offset
|
||||
// @dev `keyHash` is generally from `hashedLocationOffset()`
|
||||
function arrayElementLocation(bytes32 keyHash, uint8 arrayOffset) public pure returns (bytes32) {
|
||||
return bytes32(uint256(keccak256(abi.encodePacked(keyHash))) + arrayOffset);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue