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++) {
|
for(uint8 i = 0; i < newGuardianSet.length; i++) {
|
||||||
vm.assume(newGuardianSet[i] != address(0));
|
vm.assume(newGuardianSet[i] != address(0));
|
||||||
// New GuardianSet key array elements should be initialized from zero to non-zero
|
// 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);
|
vm.chainId(EVMCHAINID);
|
||||||
|
@ -769,7 +769,7 @@ contract TestGovernance is TestUtils {
|
||||||
for(uint8 i = 0; i < newGuardianSet.length; i++) {
|
for(uint8 i = 0; i < newGuardianSet.length; i++) {
|
||||||
vm.assume(newGuardianSet[i] != address(0));
|
vm.assume(newGuardianSet[i] != address(0));
|
||||||
// New GuardianSet key array elements should be initialized from zero to non-zero
|
// 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);
|
vm.chainId(EVMCHAINID);
|
||||||
|
|
|
@ -184,4 +184,10 @@ contract TestUtils is Test, KEVMCheats {
|
||||||
|
|
||||||
signature = abi.encodePacked(r, s,(v - 27));
|
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