@tatumio/transaction-simulator
Version:
Transaction Simulation Extension
32 lines • 1.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.matchStorageSlotsToAddresses = void 0;
const ethers_1 = require("ethers");
const matchStorageSlotsToAddresses = (addresses, storageAddresses) => {
const matchedAddresses = {};
for (const address of addresses) {
for (let position = 0; position <= 1000; position++) {
const soliditySlot = getStorageSlotSolidity(address, position);
const vyperSlot = getStorageSlotVyper(address, position);
if (storageAddresses.includes(soliditySlot)) {
matchedAddresses[address] = soliditySlot;
break;
}
else if (storageAddresses.includes(vyperSlot)) {
matchedAddresses[address] = vyperSlot;
break;
}
}
}
return matchedAddresses;
};
exports.matchStorageSlotsToAddresses = matchStorageSlotsToAddresses;
const getStorageSlotSolidity = (address, position) => {
const addressStripped = address.slice(2);
return ethers_1.ethers.keccak256(ethers_1.AbiCoder.defaultAbiCoder().encode(['address', 'uint'], [addressStripped, position]));
};
const getStorageSlotVyper = (address, position) => {
const addressStripped = address.slice(2);
return ethers_1.ethers.keccak256(ethers_1.AbiCoder.defaultAbiCoder().encode(['uint', 'address'], [position, addressStripped]));
};
//# sourceMappingURL=utils.js.map