Update docs

This commit is contained in:
github-actions
2023-09-19 19:19:10 +00:00
commit dbe796d542
624 changed files with 107720 additions and 0 deletions

43
test/helpers/erc1967.js Normal file
View File

@ -0,0 +1,43 @@
const { getStorageAt, setStorageAt } = require('@nomicfoundation/hardhat-network-helpers');
const ImplementationLabel = 'eip1967.proxy.implementation';
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);
}
function getSlot(address, slot) {
return getStorageAt(
web3.utils.isAddress(address) ? address : address.address,
web3.utils.isHex(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),
);
}
async function getAddressInSlot(address, slot) {
const slotValue = await getSlot(address, slot);
return web3.utils.toChecksumAddress(slotValue.substring(slotValue.length - 40));
}
module.exports = {
ImplementationLabel,
AdminLabel,
BeaconLabel,
ImplementationSlot: labelToSlot(ImplementationLabel),
AdminSlot: labelToSlot(AdminLabel),
BeaconSlot: labelToSlot(BeaconLabel),
setSlot,
getSlot,
getAddressInSlot,
};