123456789101112131415161718192021222324 |
- 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 web3.eth.getStorageAt(
- web3.utils.isAddress(address) ? address : address.address,
- web3.utils.isHex(slot) ? slot : labelToSlot(slot),
- );
- }
- module.exports = {
- ImplementationLabel,
- AdminLabel,
- BeaconLabel,
- ImplementationSlot: labelToSlot(ImplementationLabel),
- AdminSlot: labelToSlot(AdminLabel),
- BeaconSlot: labelToSlot(BeaconLabel),
- getSlot,
- };
|