Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
- Contract name:
- IterableMapping
- Optimization enabled
- true
- Compiler version
- v0.8.7+commit.e28d00a7
- Optimization runs
- 200
- EVM Version
- istanbul
- Verified at
- 2024-12-18T19:03:57.786156Z
IterableMapping.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.7;
library IterableMapping {
struct Map {
address[] keys;
mapping(address => uint) values;
mapping(address => uint) indexOf;
mapping(address => bool) inserted;
}
function get(Map storage map, address key) public view returns (uint) {
return map.values[key];
}
function getIndexOfKey(Map storage map, address key) public view returns (int) {
if(!map.inserted[key]) {
return -1;
}
return int(map.indexOf[key]);
}
function getKeyAtIndex(Map storage map, uint index) public view returns (address) {
return map.keys[index];
}
function size(Map storage map) public view returns (uint) {
return map.keys.length;
}
function set(Map storage map, address key, uint val) public {
if (map.inserted[key]) {
map.values[key] = val;
} else {
map.inserted[key] = true;
map.values[key] = val;
map.indexOf[key] = map.keys.length;
map.keys.push(key);
}
}
function remove(Map storage map, address key) public {
if (!map.inserted[key]) {
return;
}
delete map.inserted[key];
delete map.values[key];
uint index = map.indexOf[key];
uint lastIndex = map.keys.length - 1;
address lastKey = map.keys[lastIndex];
map.indexOf[lastKey] = index;
delete map.indexOf[key];
map.keys[index] = lastKey;
map.keys.pop();
}
}
Compiler Settings
{"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","metadata"]}},"optimizer":{"runs":200,"enabled":true},"libraries":{},"evmVersion":"istanbul"}
Contract ABI
[]
Contract Creation Code
0x6104e761003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061006c5760003560e01c806317e142d1146100715780634c60db9c14610097578063732a2ccf146100b9578063bc2b405c146100e6578063d1aa9e7e14610106578063deb3d89614610131575b600080fd5b61008461007f3660046103dd565b610143565b6040519081526020015b60405180910390f35b8180156100a357600080fd5b506100b76100b23660046103dd565b610191565b005b6100846100c73660046103dd565b6001600160a01b03166000908152600191909101602052604090205490565b8180156100f257600080fd5b506100b7610101366004610409565b6102cc565b61011961011436600461043e565b610375565b6040516001600160a01b03909116815260200161008e565b61008461013f3660046103c4565b5490565b6001600160a01b038116600090815260038301602052604081205460ff1661016e575060001961018b565b506001600160a01b03811660009081526002830160205260409020545b92915050565b6001600160a01b038116600090815260038301602052604090205460ff166101b7575050565b6001600160a01b03811660009081526003830160209081526040808320805460ff191690556001808601835281842084905560028601909252822054845490929161020191610460565b9050600084600001828154811061021a5761021a61049b565b60009182526020808320909101546001600160a01b039081168084526002890190925260408084208790559087168352822091909155855490915081908690859081106102695761026961049b565b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905584548590806102a3576102a3610485565b600082815260209020810160001990810180546001600160a01b03191690550190555050505050565b6001600160a01b038216600090815260038401602052604090205460ff1615610311576001600160a01b03821660009081526001840160205260409020819055505050565b6001600160a01b03821660008181526003850160209081526040808320805460ff19166001908117909155878101835281842086905587546002890184529184208290558101875586835291200180546001600160a01b0319169091179055505050565b600082600001828154811061038c5761038c61049b565b6000918252602090912001546001600160a01b03169392505050565b80356001600160a01b03811681146103bf57600080fd5b919050565b6000602082840312156103d657600080fd5b5035919050565b600080604083850312156103f057600080fd5b82359150610400602084016103a8565b90509250929050565b60008060006060848603121561041e57600080fd5b8335925061042e602085016103a8565b9150604084013590509250925092565b6000806040838503121561045157600080fd5b50508035926020909101359150565b60008282101561048057634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea26469706673582212209cc0beb4e385f5ba742f836ed5fa42eaeecea63b7fc1ff9ac66660b964b1e6a964736f6c63430008070033
Deployed ByteCode
0x73b24969123b1dc397b5d470e9dd8ba0b7bc28b6fa301460806040526004361061006c5760003560e01c806317e142d1146100715780634c60db9c14610097578063732a2ccf146100b9578063bc2b405c146100e6578063d1aa9e7e14610106578063deb3d89614610131575b600080fd5b61008461007f3660046103dd565b610143565b6040519081526020015b60405180910390f35b8180156100a357600080fd5b506100b76100b23660046103dd565b610191565b005b6100846100c73660046103dd565b6001600160a01b03166000908152600191909101602052604090205490565b8180156100f257600080fd5b506100b7610101366004610409565b6102cc565b61011961011436600461043e565b610375565b6040516001600160a01b03909116815260200161008e565b61008461013f3660046103c4565b5490565b6001600160a01b038116600090815260038301602052604081205460ff1661016e575060001961018b565b506001600160a01b03811660009081526002830160205260409020545b92915050565b6001600160a01b038116600090815260038301602052604090205460ff166101b7575050565b6001600160a01b03811660009081526003830160209081526040808320805460ff191690556001808601835281842084905560028601909252822054845490929161020191610460565b9050600084600001828154811061021a5761021a61049b565b60009182526020808320909101546001600160a01b039081168084526002890190925260408084208790559087168352822091909155855490915081908690859081106102695761026961049b565b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905584548590806102a3576102a3610485565b600082815260209020810160001990810180546001600160a01b03191690550190555050505050565b6001600160a01b038216600090815260038401602052604090205460ff1615610311576001600160a01b03821660009081526001840160205260409020819055505050565b6001600160a01b03821660008181526003850160209081526040808320805460ff19166001908117909155878101835281842086905587546002890184529184208290558101875586835291200180546001600160a01b0319169091179055505050565b600082600001828154811061038c5761038c61049b565b6000918252602090912001546001600160a01b03169392505050565b80356001600160a01b03811681146103bf57600080fd5b919050565b6000602082840312156103d657600080fd5b5035919050565b600080604083850312156103f057600080fd5b82359150610400602084016103a8565b90509250929050565b60008060006060848603121561041e57600080fd5b8335925061042e602085016103a8565b9150604084013590509250925092565b6000806040838503121561045157600080fd5b50508035926020909101359150565b60008282101561048057634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea26469706673582212209cc0beb4e385f5ba742f836ed5fa42eaeecea63b7fc1ff9ac66660b964b1e6a964736f6c63430008070033