false
true
0

Contract Address Details

0xB24969123B1DC397B5d470E9dd8ba0B7BC28b6Fa

Contract Name
IterableMapping
Creator
0x46bd6f–3120bf at 0xaf59c9–cfff0f
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
0 Transactions
Transfers
0 Transfers
Gas Used
Fetching gas used...
Last Balance Update
25899105
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

Verify & Publish
0x6104e761003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061006c5760003560e01c806317e142d1146100715780634c60db9c14610097578063732a2ccf146100b9578063bc2b405c146100e6578063d1aa9e7e14610106578063deb3d89614610131575b600080fd5b61008461007f3660046103dd565b610143565b6040519081526020015b60405180910390f35b8180156100a357600080fd5b506100b76100b23660046103dd565b610191565b005b6100846100c73660046103dd565b6001600160a01b03166000908152600191909101602052604090205490565b8180156100f257600080fd5b506100b7610101366004610409565b6102cc565b61011961011436600461043e565b610375565b6040516001600160a01b03909116815260200161008e565b61008461013f3660046103c4565b5490565b6001600160a01b038116600090815260038301602052604081205460ff1661016e575060001961018b565b506001600160a01b03811660009081526002830160205260409020545b92915050565b6001600160a01b038116600090815260038301602052604090205460ff166101b7575050565b6001600160a01b03811660009081526003830160209081526040808320805460ff191690556001808601835281842084905560028601909252822054845490929161020191610460565b9050600084600001828154811061021a5761021a61049b565b60009182526020808320909101546001600160a01b039081168084526002890190925260408084208790559087168352822091909155855490915081908690859081106102695761026961049b565b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905584548590806102a3576102a3610485565b600082815260209020810160001990810180546001600160a01b03191690550190555050505050565b6001600160a01b038216600090815260038401602052604090205460ff1615610311576001600160a01b03821660009081526001840160205260409020819055505050565b6001600160a01b03821660008181526003850160209081526040808320805460ff19166001908117909155878101835281842086905587546002890184529184208290558101875586835291200180546001600160a01b0319169091179055505050565b600082600001828154811061038c5761038c61049b565b6000918252602090912001546001600160a01b03169392505050565b80356001600160a01b03811681146103bf57600080fd5b919050565b6000602082840312156103d657600080fd5b5035919050565b600080604083850312156103f057600080fd5b82359150610400602084016103a8565b90509250929050565b60008060006060848603121561041e57600080fd5b8335925061042e602085016103a8565b9150604084013590509250925092565b6000806040838503121561045157600080fd5b50508035926020909101359150565b60008282101561048057634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea26469706673582212209cc0beb4e385f5ba742f836ed5fa42eaeecea63b7fc1ff9ac66660b964b1e6a964736f6c63430008070033

Deployed ByteCode

0x73b24969123b1dc397b5d470e9dd8ba0b7bc28b6fa301460806040526004361061006c5760003560e01c806317e142d1146100715780634c60db9c14610097578063732a2ccf146100b9578063bc2b405c146100e6578063d1aa9e7e14610106578063deb3d89614610131575b600080fd5b61008461007f3660046103dd565b610143565b6040519081526020015b60405180910390f35b8180156100a357600080fd5b506100b76100b23660046103dd565b610191565b005b6100846100c73660046103dd565b6001600160a01b03166000908152600191909101602052604090205490565b8180156100f257600080fd5b506100b7610101366004610409565b6102cc565b61011961011436600461043e565b610375565b6040516001600160a01b03909116815260200161008e565b61008461013f3660046103c4565b5490565b6001600160a01b038116600090815260038301602052604081205460ff1661016e575060001961018b565b506001600160a01b03811660009081526002830160205260409020545b92915050565b6001600160a01b038116600090815260038301602052604090205460ff166101b7575050565b6001600160a01b03811660009081526003830160209081526040808320805460ff191690556001808601835281842084905560028601909252822054845490929161020191610460565b9050600084600001828154811061021a5761021a61049b565b60009182526020808320909101546001600160a01b039081168084526002890190925260408084208790559087168352822091909155855490915081908690859081106102695761026961049b565b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905584548590806102a3576102a3610485565b600082815260209020810160001990810180546001600160a01b03191690550190555050505050565b6001600160a01b038216600090815260038401602052604090205460ff1615610311576001600160a01b03821660009081526001840160205260409020819055505050565b6001600160a01b03821660008181526003850160209081526040808320805460ff19166001908117909155878101835281842086905587546002890184529184208290558101875586835291200180546001600160a01b0319169091179055505050565b600082600001828154811061038c5761038c61049b565b6000918252602090912001546001600160a01b03169392505050565b80356001600160a01b03811681146103bf57600080fd5b919050565b6000602082840312156103d657600080fd5b5035919050565b600080604083850312156103f057600080fd5b82359150610400602084016103a8565b90509250929050565b60008060006060848603121561041e57600080fd5b8335925061042e602085016103a8565b9150604084013590509250925092565b6000806040838503121561045157600080fd5b50508035926020909101359150565b60008282101561048057634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea26469706673582212209cc0beb4e385f5ba742f836ed5fa42eaeecea63b7fc1ff9ac66660b964b1e6a964736f6c63430008070033