Migrate MerkleProof tests among other testing utilities (#4689)
This commit is contained in:
@ -1,3 +1,4 @@
|
||||
const { ethers } = require('hardhat');
|
||||
const { getStorageAt, setStorageAt } = require('@nomicfoundation/hardhat-network-helpers');
|
||||
|
||||
const ImplementationLabel = 'eip1967.proxy.implementation';
|
||||
@ -5,29 +6,27 @@ const AdminLabel = 'eip1967.proxy.admin';
|
||||
const BeaconLabel = 'eip1967.proxy.beacon';
|
||||
|
||||
function labelToSlot(label) {
|
||||
return '0x' + web3.utils.toBN(web3.utils.keccak256(label)).subn(1).toString(16);
|
||||
return ethers.toBeHex(BigInt(ethers.keccak256(ethers.toUtf8Bytes(label))) - 1n);
|
||||
}
|
||||
|
||||
function getSlot(address, slot) {
|
||||
return getStorageAt(
|
||||
web3.utils.isAddress(address) ? address : address.address,
|
||||
web3.utils.isHex(slot) ? slot : labelToSlot(slot),
|
||||
ethers.isAddress(address) ? address : address.address,
|
||||
ethers.isBytesLike(slot) ? slot : labelToSlot(slot),
|
||||
);
|
||||
}
|
||||
|
||||
function setSlot(address, slot, value) {
|
||||
const hexValue = web3.utils.isHex(value) ? value : web3.utils.toHex(value);
|
||||
|
||||
return setStorageAt(
|
||||
web3.utils.isAddress(address) ? address : address.address,
|
||||
web3.utils.isHex(slot) ? slot : labelToSlot(slot),
|
||||
web3.utils.padLeft(hexValue, 64),
|
||||
ethers.isAddress(address) ? address : address.address,
|
||||
ethers.isBytesLike(slot) ? slot : labelToSlot(slot),
|
||||
value,
|
||||
);
|
||||
}
|
||||
|
||||
async function getAddressInSlot(address, slot) {
|
||||
const slotValue = await getSlot(address, slot);
|
||||
return web3.utils.toChecksumAddress(slotValue.substring(slotValue.length - 40));
|
||||
return ethers.getAddress(slotValue.substring(slotValue.length - 40));
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
|
||||
Reference in New Issue
Block a user