Latest 25 from a total of 3,805 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Apply List Ops | 41299665 | 2 hrs ago | IN | 0 ETH | 0.0000006 | ||||
| Apply List Ops | 41299376 | 2 hrs ago | IN | 0 ETH | 0.00000053 | ||||
| Apply List Ops | 41299362 | 2 hrs ago | IN | 0 ETH | 0.00000067 | ||||
| Apply List Ops | 41299334 | 2 hrs ago | IN | 0 ETH | 0.00000087 | ||||
| Apply List Ops | 41299310 | 2 hrs ago | IN | 0 ETH | 0.00000073 | ||||
| Apply List Ops | 41299287 | 2 hrs ago | IN | 0 ETH | 0.00000075 | ||||
| Apply List Ops | 41299250 | 2 hrs ago | IN | 0 ETH | 0.00000075 | ||||
| Apply List Ops | 41299228 | 2 hrs ago | IN | 0 ETH | 0.00000077 | ||||
| Apply List Ops | 41299192 | 2 hrs ago | IN | 0 ETH | 0.00000076 | ||||
| Apply List Ops | 41299149 | 2 hrs ago | IN | 0 ETH | 0.0000007 | ||||
| Apply List Ops | 41299115 | 2 hrs ago | IN | 0 ETH | 0.00000066 | ||||
| Apply List Ops | 41298958 | 2 hrs ago | IN | 0 ETH | 0.00000091 | ||||
| Apply List Ops | 41298921 | 2 hrs ago | IN | 0 ETH | 0.00000123 | ||||
| Apply List Ops | 41298892 | 3 hrs ago | IN | 0 ETH | 0.00000088 | ||||
| Apply List Ops | 41298852 | 3 hrs ago | IN | 0 ETH | 0.00000063 | ||||
| Apply List Ops | 41298792 | 3 hrs ago | IN | 0 ETH | 0.00000069 | ||||
| Apply List Ops | 41298766 | 3 hrs ago | IN | 0 ETH | 0.00000066 | ||||
| Apply List Ops | 41298744 | 3 hrs ago | IN | 0 ETH | 0.00000085 | ||||
| Apply List Ops | 41298644 | 3 hrs ago | IN | 0 ETH | 0.00000084 | ||||
| Apply List Ops | 41298568 | 3 hrs ago | IN | 0 ETH | 0.00000086 | ||||
| Apply List Ops | 41298542 | 3 hrs ago | IN | 0 ETH | 0.00000093 | ||||
| Apply List Ops | 41298514 | 3 hrs ago | IN | 0 ETH | 0.0000006 | ||||
| Apply List Ops | 41298495 | 3 hrs ago | IN | 0 ETH | 0.00000062 | ||||
| Apply List Ops | 41298463 | 3 hrs ago | IN | 0 ETH | 0.00000091 | ||||
| Apply List Ops | 41298437 | 3 hrs ago | IN | 0 ETH | 0.0000011 |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
EFPListRecords
Compiler Version
v0.8.23+commit.f704f362
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.23;
import {Ownable} from 'lib/openzeppelin-contracts/contracts/access/Ownable.sol';
import {Pausable} from 'lib/openzeppelin-contracts/contracts/security/Pausable.sol';
import {IEFPListMetadata, IEFPListRecords} from './interfaces/IEFPListRecords.sol';
import {ENSReverseClaimer} from './lib/ENSReverseClaimer.sol';
/**
* @title ListMetadata
* @author Cory Gabrielsen (cory.eth)
* @custom:contributor throw; (0xthrpw.eth)
* @custom:benediction DEVS BENEDICAT ET PROTEGAT CONTRACTVS MEAM
*
* @notice Manages key-value pairs associated with EFP List NFTs.
* Provides functionalities for list managers to set and retrieve metadata for their lists.
*/
abstract contract ListMetadata is IEFPListMetadata, Pausable, Ownable {
error SlotAlreadyClaimed(uint256 slot, address manager);
// error NotListManager(address manager);
///////////////////////////////////////////////////////////////////////////
// Data Structures
///////////////////////////////////////////////////////////////////////////
/// @dev The key-value set for each token ID
mapping(uint256 => mapping(string => bytes)) private values;
/////////////////////////////////////////////////////////////////////////////
// Pausable
/////////////////////////////////////////////////////////////////////////////
/**
* @dev Pauses the contract. Can only be called by the contract owner.
*/
function pause() public onlyOwner {
_pause();
}
/**
* @dev Unpauses the contract. Can only be called by the contract owner.
*/
function unpause() public onlyOwner {
_unpause();
}
/////////////////////////////////////////////////////////////////////////////
// Helpers
/////////////////////////////////////////////////////////////////////////////
function bytesToAddress(bytes memory b) internal pure returns (address) {
require(b.length == 20, 'Invalid length');
address addr;
assembly {
addr := mload(add(b, 20))
}
return addr;
}
/////////////////////////////////////////////////////////////////////////////
// Getters
/////////////////////////////////////////////////////////////////////////////
/**
* @dev Retrieves metadata value for token ID and key.
* @param tokenId The token Id to query.
* @param key The key to query.
* @return The associated value.
*/
function getMetadataValue(uint256 tokenId, string calldata key) external view returns (bytes memory) {
return values[tokenId][key];
}
/**
* @dev Retrieves metadata values for token ID and keys.
* @param tokenId The token Id to query.
* @param keys The keys to query.
* @return The associated values.
*/
function getMetadataValues(uint256 tokenId, string[] calldata keys) external view returns (bytes[] memory) {
uint256 length = keys.length;
bytes[] memory result = new bytes[](length);
for (uint256 i = 0; i < length;) {
string calldata key = keys[i];
result[i] = values[tokenId][key];
unchecked {
++i;
}
}
return result;
}
/////////////////////////////////////////////////////////////////////////////
// Setters
/////////////////////////////////////////////////////////////////////////////
/**
* @dev Sets metadata records for token ID with the unique key key to value,
* overwriting anything previously stored for token ID and key. To clear a
* field, set it to the empty string.
* @param slot The slot corresponding to the list to update.
* @param key The key to set.
* @param value The value to set.
*/
function _setMetadataValue(uint256 slot, string memory key, bytes memory value) internal {
values[slot][key] = value;
emit UpdateListMetadata(slot, key, value);
}
/**
* @dev Sets metadata records for token ID with the unique key key to value,
* overwriting anything previously stored for token ID and key. To clear a
* field, set it to the empty string. Only callable by the list manager.
* @param slot The slot corresponding to the list to update.
* @param key The key to set.
* @param value The value to set.
*/
function setMetadataValue(uint256 slot, string calldata key, bytes calldata value)
external
whenNotPaused
onlyListManager(slot)
{
_setMetadataValue(slot, key, value);
}
/**
* @dev Sets an array of metadata records for a token ID. Each record is a
* key/value pair.
* @param slot The slot corresponding to the list to update.
* @param records The records to set.
*/
function _setMetadataValues(uint256 slot, KeyValue[] calldata records) internal {
uint256 length = records.length;
for (uint256 i = 0; i < length;) {
KeyValue calldata record = records[i];
_setMetadataValue(slot, record.key, record.value);
unchecked {
++i;
}
}
}
/**
* @dev Sets an array of metadata records for a token ID. Each record is a
* key/value pair. Only callable by the list manager.
* @param slot The slot corresponding to the list to update.
* @param records The records to set.
*/
function setMetadataValues(uint256 slot, KeyValue[] calldata records) external whenNotPaused onlyListManager(slot) {
_setMetadataValues(slot, records);
}
///////////////////////////////////////////////////////////////////////////
// Modifiers
///////////////////////////////////////////////////////////////////////////
/**
* @notice Ensures that the caller is the manager of the specified list.
* @param slot The unique identifier of the list.
* @dev Used to restrict function access to the list's manager.
*/
modifier onlyListManager(uint256 slot) {
bytes memory existing = values[slot]['manager'];
// if not set, claim for msg.sender
if (existing.length != 20) {
_claimListManager(slot, msg.sender);
} else {
address existingManager = bytesToAddress(existing);
if (existingManager == address(0)) {
_claimListManager(slot, msg.sender);
} else {
require(existingManager == msg.sender, 'Not list manager');
}
}
_;
}
///////////////////////////////////////////////////////////////////////////
// List Manager - Claim
///////////////////////////////////////////////////////////////////////////
/**
* @notice Allows an address to claim management of an unclaimed list slot.
* @param slot The slot that the sender wishes to claim.
* @param manager The address to be set as the manager.
* @dev This function establishes the first-come-first-serve basis for slot claiming.
*/
function _claimListManager(uint256 slot, address manager) internal {
bytes memory existing = values[slot]['manager'];
// require(existing.length != 20 || bytesToAddress(existing) == manager, "slot already claimed");
if (existing.length == 20) {
address existingManager = bytesToAddress(existing);
if (existingManager != manager) {
revert SlotAlreadyClaimed(slot, existingManager);
}
}
_setMetadataValue(slot, 'manager', abi.encodePacked(manager));
}
/**
* @notice Allows the sender to claim management of an unclaimed list slot.
* @param slot The slot that the sender wishes to claim.
*/
function claimListManager(uint256 slot) external whenNotPaused {
_claimListManager(slot, msg.sender);
}
/**
* @notice Allows the sender to transfer management of a list to a new address.
* @param slot The list's unique identifier.
* @param manager The address to be set as the new manager.
*/
function claimListManagerForAddress(uint256 slot, address manager) external whenNotPaused {
_claimListManager(slot, manager);
}
///////////////////////////////////////////////////////////////////////////
// List Manager - Read
///////////////////////////////////////////////////////////////////////////
/**
* @notice Retrieves the address of the manager for a specified list slot.
* @param slot The list's unique identifier.
* @return The address of the manager.
*/
function getListManager(uint256 slot) external view returns (address) {
bytes memory existing = values[slot]['manager'];
return existing.length != 20 ? address(0) : bytesToAddress(existing);
}
///////////////////////////////////////////////////////////////////////////
// List Manager - Write
///////////////////////////////////////////////////////////////////////////
/**
* @notice Allows the current manager to transfer management of a list to a new address.
* @param slot The list's unique identifier.
* @param manager The address to be set as the new manager.
* @dev Only the current manager can transfer their management role.
*/
function setListManager(uint256 slot, address manager) external whenNotPaused onlyListManager(slot) {
_setMetadataValue(slot, 'manager', abi.encodePacked(manager));
}
///////////////////////////////////////////////////////////////////////////
// List User - Read
///////////////////////////////////////////////////////////////////////////
/**
* @notice Retrieves the address of the list user for a specified list
* slot.
* @param slot The list's unique identifier.
* @return The address of the list user.
*/
function getListUser(uint256 slot) external view returns (address) {
bytes memory existing = values[slot]['user'];
return existing.length != 20 ? address(0) : bytesToAddress(existing);
}
///////////////////////////////////////////////////////////////////////////
// List Manager - Write
///////////////////////////////////////////////////////////////////////////
/**
* @notice Allows the current manager to change the list user to a new
* address.
* @param slot The list's unique identifier.
* @param user The address to be set as the new list user.
* @dev Only the current manager can change the list user.
*/
function setListUser(uint256 slot, address user) external whenNotPaused onlyListManager(slot) {
_setMetadataValue(slot, 'user', abi.encodePacked(user));
}
}
/**
* @title EFPListRecords
* @notice Manages a dynamic list of records associated with EFP List NFTs.
* Provides functionalities for list managers to apply operations to their lists.
*/
abstract contract ListRecords is IEFPListRecords, ListMetadata {
///////////////////////////////////////////////////////////////////////////
// Data Structures
///////////////////////////////////////////////////////////////////////////
/// @notice Stores a sequence of operations for each list identified by its slot.
/// @dev Each list can have multiple operations performed over time.
mapping(uint256 => bytes[]) public listOps;
///////////////////////////////////////////////////////////////////////////
// List Operation Functions - Read
///////////////////////////////////////////////////////////////////////////
/**
* @notice Retrieves the number of operations performed on a list.
* @param slot The list's unique identifier.
* @return The number of operations performed on the list.
*/
function getListOpCount(uint256 slot) external view returns (uint256) {
return listOps[slot].length;
}
/**
* @notice Retrieves the operation at a specified index for a list.
* @param slot The list's unique identifier.
* @param index The index of the operation to be retrieved.
* @return The operation at the specified index.
*/
function getListOp(uint256 slot, uint256 index) external view returns (bytes memory) {
return listOps[slot][index];
}
/**
* @notice Retrieves a range of operations for a list.
* @param slot The list's unique identifier.
* @param start The starting index of the range.
* @param end The ending index of the range.
* @return The operations in the specified range.
*/
function getListOpsInRange(uint256 slot, uint256 start, uint256 end) external view returns (bytes[] memory) {
if (start > end) {
revert('Invalid range');
}
bytes[] memory ops = new bytes[](end - start);
for (uint256 i = start; i < end;) {
ops[i - start] = listOps[slot][i];
unchecked {
++i;
}
}
return ops;
}
/**
* @notice Retrieves all operations for a list.
* @param slot The list's unique identifier.
* @return The operations performed on the list.
*/
function getAllListOps(uint256 slot) external view returns (bytes[] memory) {
return listOps[slot];
}
///////////////////////////////////////////////////////////////////////////
// List Operation Functions - Write
///////////////////////////////////////////////////////////////////////////
/**
* @notice Applies a single operation to the list.
* @param slot The list's unique identifier.
* @param op The operation to be applied.
*/
function _applyListOp(uint256 slot, bytes calldata op) internal {
listOps[slot].push(op);
emit ListOp(slot, op);
}
/**
* @notice Public wrapper for `_applyOp`, enabling list managers to apply a single operation.
* @param slot The list's unique identifier.
* @param op The operation to be applied.
*/
function applyListOp(uint256 slot, bytes calldata op) external whenNotPaused onlyListManager(slot) {
_applyListOp(slot, op);
}
/**
* @notice Allows list managers to apply multiple operations in a single transaction.
* @param slot The list's unique identifier.
* @param ops An array of operations to be applied.
*/
function _applyListOps(uint256 slot, bytes[] calldata ops) internal {
uint256 len = ops.length;
for (uint256 i = 0; i < len;) {
_applyListOp(slot, ops[i]);
unchecked {
++i;
}
}
}
/**
* @notice Allows list managers to apply multiple operations in a single transaction.
* @param slot The list's unique identifier.
* @param ops An array of operations to be applied.
*/
function applyListOps(uint256 slot, bytes[] calldata ops) external whenNotPaused onlyListManager(slot) {
_applyListOps(slot, ops);
}
/**
* @notice Allows list managers to set metadata values and apply list ops
* in a single transaction.
* @param slot The list's unique identifier.
* @param records An array of key-value pairs to set.
* @param ops An array of operations to be applied.
*/
function setMetadataValuesAndApplyListOps(uint256 slot, KeyValue[] calldata records, bytes[] calldata ops)
external
whenNotPaused
onlyListManager(slot)
{
_setMetadataValues(slot, records);
_applyListOps(slot, ops);
}
}
contract EFPListRecords is IEFPListRecords, ListRecords, ENSReverseClaimer {}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which allows children to implement an emergency stop
* mechanism that can be triggered by an authorized account.
*
* This module is used through inheritance. It will make available the
* modifiers `whenNotPaused` and `whenPaused`, which can be applied to
* the functions of your contract. Note that they will not be pausable by
* simply including this module, only once the modifiers are put in place.
*/
abstract contract Pausable is Context {
/**
* @dev Emitted when the pause is triggered by `account`.
*/
event Paused(address account);
/**
* @dev Emitted when the pause is lifted by `account`.
*/
event Unpaused(address account);
bool private _paused;
/**
* @dev Initializes the contract in unpaused state.
*/
constructor() {
_paused = false;
}
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*
* Requirements:
*
* - The contract must not be paused.
*/
modifier whenNotPaused() {
_requireNotPaused();
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*
* Requirements:
*
* - The contract must be paused.
*/
modifier whenPaused() {
_requirePaused();
_;
}
/**
* @dev Returns true if the contract is paused, and false otherwise.
*/
function paused() public view virtual returns (bool) {
return _paused;
}
/**
* @dev Throws if the contract is paused.
*/
function _requireNotPaused() internal view virtual {
require(!paused(), "Pausable: paused");
}
/**
* @dev Throws if the contract is not paused.
*/
function _requirePaused() internal view virtual {
require(paused(), "Pausable: not paused");
}
/**
* @dev Triggers stopped state.
*
* Requirements:
*
* - The contract must not be paused.
*/
function _pause() internal virtual whenNotPaused {
_paused = true;
emit Paused(_msgSender());
}
/**
* @dev Returns to normal state.
*
* Requirements:
*
* - The contract must be paused.
*/
function _unpause() internal virtual whenPaused {
_paused = false;
emit Unpaused(_msgSender());
}
}// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.23;
/**
* @title IEFPListMetadata
*/
interface IEFPListMetadata {
event UpdateListMetadata(uint256 indexed slot, string key, bytes value);
struct KeyValue {
string key;
bytes value;
}
function getMetadataValue(uint256 slot, string calldata key) external view returns (bytes memory);
function getMetadataValues(uint256 slot, string[] calldata keys) external view returns (bytes[] memory);
function setMetadataValue(uint256 slot, string calldata key, bytes calldata value) external;
function setMetadataValues(uint256 slot, KeyValue[] calldata records) external;
// List Manager Functions
function claimListManager(uint256 slot) external;
function claimListManagerForAddress(uint256 slot, address manager) external;
function getListManager(uint256 slot) external view returns (address);
function setListManager(uint256 slot, address manager) external;
// List User Functions
function getListUser(uint256 slot) external view returns (address);
function setListUser(uint256 slot, address user) external;
}
/**
* @title IEFPListRecords
* @notice Interface for the ListRecords contract.
*/
interface IEFPListRecords is IEFPListMetadata {
// Events
event ListOp(uint256 indexed slot, bytes op);
// List Operation Functions - Read
function getListOpCount(uint256 slot) external view returns (uint256);
function getListOp(uint256 slot, uint256 index) external view returns (bytes memory);
function getListOpsInRange(uint256 slot, uint256 start, uint256 end) external view returns (bytes[] memory);
function getAllListOps(uint256 slot) external view returns (bytes[] memory);
// List Operation Functions - Write
function applyListOp(uint256 slot, bytes calldata op) external;
function applyListOps(uint256 slot, bytes[] calldata ops) external;
function setMetadataValuesAndApplyListOps(uint256 slot, KeyValue[] calldata records, bytes[] calldata ops) external;
}//SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;
import {Ownable} from 'lib/openzeppelin-contracts/contracts/access/Ownable.sol';
interface ENS {
/**
* @dev Returns the address that owns the specified node.
* @param node The specified node.
* @return address of the owner.
*/
function owner(bytes32 node) external view returns (address);
}
interface IReverseRegistrar {
/**
* @dev Transfers ownership of the reverse ENS record associated with the
* calling account.
* @param owner The address to set as the owner of the reverse record in ENS.
* @return The ENS node hash of the reverse record.
*/
function claim(address owner) external returns (bytes32);
/**
* @dev Sets the `name()` record for the reverse ENS record associated with
* the calling account. First updates the resolver to the default reverse
* resolver if necessary.
* @param name The name to set for this address.
* @return The ENS node hash of the reverse record.
*/
function setName(string memory name) external returns (bytes32);
}
/**
* @title ENSReverseClaimer
* @dev This contract is used to claim reverse ENS records.
*/
abstract contract ENSReverseClaimer is Ownable {
/// @dev The namehash of 'addr.reverse', the domain at which reverse records
/// are stored in ENS.
bytes32 constant ADDR_REVERSE_NODE = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;
/**
* @dev Transfers ownership of the reverse ENS record associated with the
* contract.
* @param ens The ENS registry.
* @param claimant The address to set as the owner of the reverse record in
* ENS.
* @return The ENS node hash of the reverse record.
*/
function claimReverseENS(ENS ens, address claimant) external onlyOwner returns (bytes32) {
return IReverseRegistrar(ens.owner(ADDR_REVERSE_NODE)).claim(claimant);
}
/**
* @dev Sets the reverse ENS record associated with the contract.
* @param ens The ENS registry.
* @param name The name to set as the reverse record in ENS.
* @return The ENS node hash of the reverse record.
*/
function setReverseENS(ENS ens, string calldata name) external onlyOwner returns (bytes32) {
return IReverseRegistrar(ens.owner(ADDR_REVERSE_NODE)).setName(name);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}{
"remappings": [
"ERC721A/=lib/ERC721A/contracts/",
"ds-test/=lib/forge-std/lib/ds-test/src/",
"erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
"forge-std/=lib/forge-std/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"openzeppelin/=lib/openzeppelin-contracts/contracts/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "paris",
"viaIR": false,
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"uint256","name":"slot","type":"uint256"},{"internalType":"address","name":"manager","type":"address"}],"name":"SlotAlreadyClaimed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"slot","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"op","type":"bytes"}],"name":"ListOp","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"slot","type":"uint256"},{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"bytes","name":"value","type":"bytes"}],"name":"UpdateListMetadata","type":"event"},{"inputs":[{"internalType":"uint256","name":"slot","type":"uint256"},{"internalType":"bytes","name":"op","type":"bytes"}],"name":"applyListOp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"slot","type":"uint256"},{"internalType":"bytes[]","name":"ops","type":"bytes[]"}],"name":"applyListOps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"slot","type":"uint256"}],"name":"claimListManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"slot","type":"uint256"},{"internalType":"address","name":"manager","type":"address"}],"name":"claimListManagerForAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ENS","name":"ens","type":"address"},{"internalType":"address","name":"claimant","type":"address"}],"name":"claimReverseENS","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"slot","type":"uint256"}],"name":"getAllListOps","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"slot","type":"uint256"}],"name":"getListManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"slot","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getListOp","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"slot","type":"uint256"}],"name":"getListOpCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"slot","type":"uint256"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"getListOpsInRange","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"slot","type":"uint256"}],"name":"getListUser","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"key","type":"string"}],"name":"getMetadataValue","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string[]","name":"keys","type":"string[]"}],"name":"getMetadataValues","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"listOps","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"slot","type":"uint256"},{"internalType":"address","name":"manager","type":"address"}],"name":"setListManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"slot","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"setListUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"slot","type":"uint256"},{"internalType":"string","name":"key","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"name":"setMetadataValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"slot","type":"uint256"},{"components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct IEFPListMetadata.KeyValue[]","name":"records","type":"tuple[]"}],"name":"setMetadataValues","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"slot","type":"uint256"},{"components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct IEFPListMetadata.KeyValue[]","name":"records","type":"tuple[]"},{"internalType":"bytes[]","name":"ops","type":"bytes[]"}],"name":"setMetadataValuesAndApplyListOps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ENS","name":"ens","type":"address"},{"internalType":"string","name":"name","type":"string"}],"name":"setReverseENS","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b506000805460ff1916905561002433610029565b610082565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6124ab806100916000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80637a58aa72116100de57806387d40dab11610097578063aed5dafd11610071578063aed5dafd1461036e578063c553f29c14610381578063ec379ab914610394578063f2fde38b146103a757600080fd5b806387d40dab146103325780638da5cb5b146103455780639b7f61321461035b57600080fd5b80637a58aa72146102cb5780638007c940146102de5780638214bd41146102f157806382820b07146103045780638456cb59146103175780638780b3801461031f57600080fd5b806351c0dfbd1161014b5780636950320b116101255780636950320b1461028a5780636f1fe79d1461029d5780636fcab637146102b0578063715018a6146102c357600080fd5b806351c0dfbd1461024e5780635c975abb1461026157806361e7792a1461027757600080fd5b806302dc2af914610193578063268d387f146101c6578063324eaf7a146101f15780633f4ba83a1461020657806340783baa1461020e5780634846b5161461022e575b600080fd5b6101b36101a1366004611cc1565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6101d96101d4366004611cc1565b6103ba565b6040516001600160a01b0390911681526020016101bd565b6102046101ff366004611d23565b610496565b005b6102046105dc565b61022161021c366004611d6f565b6105ee565b6040516101bd9190611de1565b61024161023c366004611e39565b6106a7565b6040516101bd9190611e78565b61022161025c366004611d23565b61081c565b60005460ff1660405190151581526020016101bd565b610204610285366004611edc565b6108e1565b610204610298366004611cc1565b610a89565b6101d96102ab366004611cc1565b610a9e565b6102046102be366004611f56565b610abb565b610204610bfc565b6101b36102d9366004611fd4565b610c0e565b6101b36102ec366004612010565b610d18565b6102046102ff366004612049565b610e21565b61024161031236600461206e565b610fae565b610204611140565b61020461032d366004611e39565b611150565b610221610340366004611d6f565b611286565b60005461010090046001600160a01b03166101d9565b610241610369366004611cc1565b611345565b61020461037c366004612049565b611431565b61020461038f366004611e39565b611447565b6102046103a2366004612049565b61157d565b6102046103b536600461209a565b6116ed565b6000818152600160205260408082209051633ab9b2b960e11b81528291906004015b908152602001604051809103902080546103f5906120b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610421906120b7565b801561046e5780601f106104435761010080835404028352916020019161046e565b820191906000526020600020905b81548152906001019060200180831161045157829003601f168201915b50505050509050805160140361048c5761048781611763565b61048f565b60005b9392505050565b61049e6117af565b6000838152600160205260408082209051859291906104bc906120f1565b908152602001604051809103902080546104d5906120b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610501906120b7565b801561054e5780601f106105235761010080835404028352916020019161054e565b820191906000526020600020905b81548152906001019060200180831161053157829003601f168201915b50505050509050805160141461056d5761056882336117f5565b6105ca565b600061057882611763565b90506001600160a01b0381166105975761059283336117f5565b6105c8565b6001600160a01b03811633146105c85760405162461bcd60e51b81526004016105bf90612104565b60405180910390fd5b505b6105d5858585611951565b5050505050565b6105e46119ba565b6105ec611a1a565b565b6002602052816000526040600020818154811061060a57600080fd5b90600052602060002001600091509150508054610626906120b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610652906120b7565b801561069f5780601f106106745761010080835404028352916020019161069f565b820191906000526020600020905b81548152906001019060200180831161068257829003601f168201915b505050505081565b60608160008167ffffffffffffffff8111156106c5576106c561212e565b6040519080825280602002602001820160405280156106f857816020015b60608152602001906001900390816106e35790505b50905060005b828110156108125736600087878481811061071b5761071b612144565b905060200281019061072d919061215a565b91509150600160008a815260200190815260200160002082826040516107549291906121a1565b9081526020016040518091039020805461076d906120b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610799906120b7565b80156107e65780601f106107bb576101008083540402835291602001916107e6565b820191906000526020600020905b8154815290600101906020018083116107c957829003601f168201915b50505050508484815181106107fd576107fd612144565b602090810291909101015250506001016106fe565b5095945050505050565b60606001600085815260200190815260200160002083836040516108419291906121a1565b9081526020016040518091039020805461085a906120b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610886906120b7565b80156108d35780601f106108a8576101008083540402835291602001916108d3565b820191906000526020600020905b8154815290600101906020018083116108b657829003601f168201915b505050505090509392505050565b6108e96117af565b600085815260016020526040808220905187929190610907906120f1565b90815260200160405180910390208054610920906120b7565b80601f016020809104026020016040519081016040528092919081815260200182805461094c906120b7565b80156109995780601f1061096e57610100808354040283529160200191610999565b820191906000526020600020905b81548152906001019060200180831161097c57829003601f168201915b5050505050905080516014146109b8576109b382336117f5565b610a0c565b60006109c382611763565b90506001600160a01b0381166109e2576109dd83336117f5565b610a0a565b6001600160a01b0381163314610a0a5760405162461bcd60e51b81526004016105bf90612104565b505b610a808787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b018190048102820181019092528981529250899150889081908401838280828437600092019190915250611a6c92505050565b50505050505050565b610a916117af565b610a9b81336117f5565b50565b60008181526001602052604080822090518291906103dc906120f1565b610ac36117af565b600085815260016020526040808220905187929190610ae1906120f1565b90815260200160405180910390208054610afa906120b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610b26906120b7565b8015610b735780601f10610b4857610100808354040283529160200191610b73565b820191906000526020600020905b815481529060010190602001808311610b5657829003601f168201915b505050505090508051601414610b9257610b8d82336117f5565b610be6565b6000610b9d82611763565b90506001600160a01b038116610bbc57610bb783336117f5565b610be4565b6001600160a01b0381163314610be45760405162461bcd60e51b81526004016105bf90612104565b505b610bf1878787611adb565b610a80878585611ba1565b610c046119ba565b6105ec6000611be2565b6000610c186119ba565b6040516302571be360e01b81527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260048201526001600160a01b038516906302571be390602401602060405180830381865afa158015610c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca091906121b1565b6001600160a01b031663c47f002784846040518363ffffffff1660e01b8152600401610ccd9291906121f7565b6020604051808303816000875af1158015610cec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d10919061220b565b949350505050565b6000610d226119ba565b6040516302571be360e01b81527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260048201526001600160a01b038416906302571be390602401602060405180830381865afa158015610d86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610daa91906121b1565b604051630f41a04d60e11b81526001600160a01b0384811660048301529190911690631e83409a906024016020604051808303816000875af1158015610df4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e18919061220b565b90505b92915050565b610e296117af565b600082815260016020526040808220905184929190610e47906120f1565b90815260200160405180910390208054610e60906120b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8c906120b7565b8015610ed95780601f10610eae57610100808354040283529160200191610ed9565b820191906000526020600020905b815481529060010190602001808311610ebc57829003601f168201915b505050505090508051601414610ef857610ef382336117f5565b610f4c565b6000610f0382611763565b90506001600160a01b038116610f2257610f1d83336117f5565b610f4a565b6001600160a01b0381163314610f4a5760405162461bcd60e51b81526004016105bf90612104565b505b610fa8846040518060400160405280600781526020016636b0b730b3b2b960c91b81525085604051602001610f94919060609190911b6001600160601b031916815260140190565b604051602081830303815290604052611a6c565b50505050565b606081831115610ff05760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642072616e676560981b60448201526064016105bf565b6000610ffc8484612224565b67ffffffffffffffff8111156110145761101461212e565b60405190808252806020026020018201604052801561104757816020015b60608152602001906001900390816110325790505b509050835b8381101561113757600086815260026020526040902080548290811061107457611074612144565b906000526020600020018054611089906120b7565b80601f01602080910402602001604051908101604052809291908181526020018280546110b5906120b7565b80156111025780601f106110d757610100808354040283529160200191611102565b820191906000526020600020905b8154815290600101906020018083116110e557829003601f168201915b50505050508286836111149190612224565b8151811061112457611124612144565b602090810291909101015260010161104c565b50949350505050565b6111486119ba565b6105ec611c3b565b6111586117af565b600083815260016020526040808220905185929190611176906120f1565b9081526020016040518091039020805461118f906120b7565b80601f01602080910402602001604051908101604052809291908181526020018280546111bb906120b7565b80156112085780601f106111dd57610100808354040283529160200191611208565b820191906000526020600020905b8154815290600101906020018083116111eb57829003601f168201915b5050505050905080516014146112275761122282336117f5565b61127b565b600061123282611763565b90506001600160a01b0381166112515761124c83336117f5565b611279565b6001600160a01b03811633146112795760405162461bcd60e51b81526004016105bf90612104565b505b6105d5858585611adb565b6000828152600260205260409020805460609190839081106112aa576112aa612144565b9060005260206000200180546112bf906120b7565b80601f01602080910402602001604051908101604052809291908181526020018280546112eb906120b7565b80156113385780601f1061130d57610100808354040283529160200191611338565b820191906000526020600020905b81548152906001019060200180831161131b57829003601f168201915b5050505050905092915050565b606060026000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015611426578382906000526020600020018054611399906120b7565b80601f01602080910402602001604051908101604052809291908181526020018280546113c5906120b7565b80156114125780601f106113e757610100808354040283529160200191611412565b820191906000526020600020905b8154815290600101906020018083116113f557829003601f168201915b50505050508152602001906001019061137a565b505050509050919050565b6114396117af565b61144382826117f5565b5050565b61144f6117af565b60008381526001602052604080822090518592919061146d906120f1565b90815260200160405180910390208054611486906120b7565b80601f01602080910402602001604051908101604052809291908181526020018280546114b2906120b7565b80156114ff5780601f106114d4576101008083540402835291602001916114ff565b820191906000526020600020905b8154815290600101906020018083116114e257829003601f168201915b50505050509050805160141461151e5761151982336117f5565b611572565b600061152982611763565b90506001600160a01b0381166115485761154383336117f5565b611570565b6001600160a01b03811633146115705760405162461bcd60e51b81526004016105bf90612104565b505b6105d5858585611ba1565b6115856117af565b6000828152600160205260408082209051849291906115a3906120f1565b908152602001604051809103902080546115bc906120b7565b80601f01602080910402602001604051908101604052809291908181526020018280546115e8906120b7565b80156116355780601f1061160a57610100808354040283529160200191611635565b820191906000526020600020905b81548152906001019060200180831161161857829003601f168201915b5050505050905080516014146116545761164f82336117f5565b6116a8565b600061165f82611763565b90506001600160a01b03811661167e5761167983336117f5565b6116a6565b6001600160a01b03811633146116a65760405162461bcd60e51b81526004016105bf90612104565b505b610fa884604051806040016040528060048152602001633ab9b2b960e11b81525085604051602001610f94919060609190911b6001600160601b031916815260140190565b6116f56119ba565b6001600160a01b03811661175a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105bf565b610a9b81611be2565b600081516014146117a75760405162461bcd60e51b815260206004820152600e60248201526d092dcecc2d8d2c840d8cadccee8d60931b60448201526064016105bf565b506014015190565b60005460ff16156105ec5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105bf565b600082815260016020526040808220905161180f906120f1565b90815260200160405180910390208054611828906120b7565b80601f0160208091040260200160405190810160405280929190818152602001828054611854906120b7565b80156118a15780601f10611876576101008083540402835291602001916118a1565b820191906000526020600020905b81548152906001019060200180831161188457829003601f168201915b5050505050905080516014036119045760006118bc82611763565b9050826001600160a01b0316816001600160a01b031614611902576040516378a6c03d60e11b8152600481018590526001600160a01b03821660248201526044016105bf565b505b61194c836040518060400160405280600781526020016636b0b730b3b2b960c91b81525084604051602001610f94919060609190911b6001600160601b031916815260140190565b505050565b60008381526002602090815260408220805460018101825590835291200161197a828483612295565b50827fb067630e3908f166069c77766250c553414e2745e742a562d533f29744a91a7383836040516119ad9291906121f7565b60405180910390a2505050565b6000546001600160a01b036101009091041633146105ec5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105bf565b611a22611c78565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b806001600085815260200190815260200160002083604051611a8e9190612355565b90815260200160405180910390209081611aa89190612371565b50827f59ae30478c6dc6ad258000ec5c1e2da773a457572397f6b85ddd54ab719ecd5483836040516119ad929190612431565b8060005b818110156105d55736848483818110611afa57611afa612144565b9050602002810190611b0c919061245f565b9050611b9886611b1c838061215a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b5e92505050602085018561215a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a6c92505050565b50600101611adf565b8060005b818110156105d557611bda85858584818110611bc357611bc3612144565b9050602002810190611bd5919061215a565b611951565b600101611ba5565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b611c436117af565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611a4f3390565b60005460ff166105ec5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105bf565b600060208284031215611cd357600080fd5b5035919050565b60008083601f840112611cec57600080fd5b50813567ffffffffffffffff811115611d0457600080fd5b602083019150836020828501011115611d1c57600080fd5b9250929050565b600080600060408486031215611d3857600080fd5b83359250602084013567ffffffffffffffff811115611d5657600080fd5b611d6286828701611cda565b9497909650939450505050565b60008060408385031215611d8257600080fd5b50508035926020909101359150565b60005b83811015611dac578181015183820152602001611d94565b50506000910152565b60008151808452611dcd816020860160208601611d91565b601f01601f19169290920160200192915050565b602081526000610e186020830184611db5565b60008083601f840112611e0657600080fd5b50813567ffffffffffffffff811115611e1e57600080fd5b6020830191508360208260051b8501011115611d1c57600080fd5b600080600060408486031215611e4e57600080fd5b83359250602084013567ffffffffffffffff811115611e6c57600080fd5b611d6286828701611df4565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015611ecf57603f19888603018452611ebd858351611db5565b94509285019290850190600101611ea1565b5092979650505050505050565b600080600080600060608688031215611ef457600080fd5b85359450602086013567ffffffffffffffff80821115611f1357600080fd5b611f1f89838a01611cda565b90965094506040880135915080821115611f3857600080fd5b50611f4588828901611cda565b969995985093965092949392505050565b600080600080600060608688031215611f6e57600080fd5b85359450602086013567ffffffffffffffff80821115611f8d57600080fd5b611f9989838a01611df4565b90965094506040880135915080821115611fb257600080fd5b50611f4588828901611df4565b6001600160a01b0381168114610a9b57600080fd5b600080600060408486031215611fe957600080fd5b8335611ff481611fbf565b9250602084013567ffffffffffffffff811115611d5657600080fd5b6000806040838503121561202357600080fd5b823561202e81611fbf565b9150602083013561203e81611fbf565b809150509250929050565b6000806040838503121561205c57600080fd5b82359150602083013561203e81611fbf565b60008060006060848603121561208357600080fd5b505081359360208301359350604090920135919050565b6000602082840312156120ac57600080fd5b813561048f81611fbf565b600181811c908216806120cb57607f821691505b6020821081036120eb57634e487b7160e01b600052602260045260246000fd5b50919050565b6636b0b730b3b2b960c91b815260070190565b60208082526010908201526f2737ba103634b9ba1036b0b730b3b2b960811b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261217157600080fd5b83018035915067ffffffffffffffff82111561218c57600080fd5b602001915036819003821315611d1c57600080fd5b8183823760009101908152919050565b6000602082840312156121c357600080fd5b815161048f81611fbf565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610d106020830184866121ce565b60006020828403121561221d57600080fd5b5051919050565b81810381811115610e1b57634e487b7160e01b600052601160045260246000fd5b601f82111561194c576000816000526020600020601f850160051c8101602086101561226e5750805b601f850160051c820191505b8181101561228d5782815560010161227a565b505050505050565b67ffffffffffffffff8311156122ad576122ad61212e565b6122c1836122bb83546120b7565b83612245565b6000601f8411600181146122f557600085156122dd5750838201355b600019600387901b1c1916600186901b1783556105d5565b600083815260209020601f19861690835b828110156123265786850135825560209485019460019092019101612306565b50868210156123435760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60008251612367818460208701611d91565b9190910192915050565b815167ffffffffffffffff81111561238b5761238b61212e565b61239f8161239984546120b7565b84612245565b602080601f8311600181146123d457600084156123bc5750858301515b600019600386901b1c1916600185901b17855561228d565b600085815260208120601f198616915b82811015612403578886015182559484019460019091019084016123e4565b50858210156124215787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260006124446040830185611db5565b82810360208401526124568185611db5565b95945050505050565b60008235603e1983360301811261236757600080fdfea2646970667358221220db6aca8b1dc54087d11400b442c45f398a7f0ab7c1fcaae17d5bae216bfcf67964736f6c63430008170033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80637a58aa72116100de57806387d40dab11610097578063aed5dafd11610071578063aed5dafd1461036e578063c553f29c14610381578063ec379ab914610394578063f2fde38b146103a757600080fd5b806387d40dab146103325780638da5cb5b146103455780639b7f61321461035b57600080fd5b80637a58aa72146102cb5780638007c940146102de5780638214bd41146102f157806382820b07146103045780638456cb59146103175780638780b3801461031f57600080fd5b806351c0dfbd1161014b5780636950320b116101255780636950320b1461028a5780636f1fe79d1461029d5780636fcab637146102b0578063715018a6146102c357600080fd5b806351c0dfbd1461024e5780635c975abb1461026157806361e7792a1461027757600080fd5b806302dc2af914610193578063268d387f146101c6578063324eaf7a146101f15780633f4ba83a1461020657806340783baa1461020e5780634846b5161461022e575b600080fd5b6101b36101a1366004611cc1565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6101d96101d4366004611cc1565b6103ba565b6040516001600160a01b0390911681526020016101bd565b6102046101ff366004611d23565b610496565b005b6102046105dc565b61022161021c366004611d6f565b6105ee565b6040516101bd9190611de1565b61024161023c366004611e39565b6106a7565b6040516101bd9190611e78565b61022161025c366004611d23565b61081c565b60005460ff1660405190151581526020016101bd565b610204610285366004611edc565b6108e1565b610204610298366004611cc1565b610a89565b6101d96102ab366004611cc1565b610a9e565b6102046102be366004611f56565b610abb565b610204610bfc565b6101b36102d9366004611fd4565b610c0e565b6101b36102ec366004612010565b610d18565b6102046102ff366004612049565b610e21565b61024161031236600461206e565b610fae565b610204611140565b61020461032d366004611e39565b611150565b610221610340366004611d6f565b611286565b60005461010090046001600160a01b03166101d9565b610241610369366004611cc1565b611345565b61020461037c366004612049565b611431565b61020461038f366004611e39565b611447565b6102046103a2366004612049565b61157d565b6102046103b536600461209a565b6116ed565b6000818152600160205260408082209051633ab9b2b960e11b81528291906004015b908152602001604051809103902080546103f5906120b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610421906120b7565b801561046e5780601f106104435761010080835404028352916020019161046e565b820191906000526020600020905b81548152906001019060200180831161045157829003601f168201915b50505050509050805160140361048c5761048781611763565b61048f565b60005b9392505050565b61049e6117af565b6000838152600160205260408082209051859291906104bc906120f1565b908152602001604051809103902080546104d5906120b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610501906120b7565b801561054e5780601f106105235761010080835404028352916020019161054e565b820191906000526020600020905b81548152906001019060200180831161053157829003601f168201915b50505050509050805160141461056d5761056882336117f5565b6105ca565b600061057882611763565b90506001600160a01b0381166105975761059283336117f5565b6105c8565b6001600160a01b03811633146105c85760405162461bcd60e51b81526004016105bf90612104565b60405180910390fd5b505b6105d5858585611951565b5050505050565b6105e46119ba565b6105ec611a1a565b565b6002602052816000526040600020818154811061060a57600080fd5b90600052602060002001600091509150508054610626906120b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610652906120b7565b801561069f5780601f106106745761010080835404028352916020019161069f565b820191906000526020600020905b81548152906001019060200180831161068257829003601f168201915b505050505081565b60608160008167ffffffffffffffff8111156106c5576106c561212e565b6040519080825280602002602001820160405280156106f857816020015b60608152602001906001900390816106e35790505b50905060005b828110156108125736600087878481811061071b5761071b612144565b905060200281019061072d919061215a565b91509150600160008a815260200190815260200160002082826040516107549291906121a1565b9081526020016040518091039020805461076d906120b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610799906120b7565b80156107e65780601f106107bb576101008083540402835291602001916107e6565b820191906000526020600020905b8154815290600101906020018083116107c957829003601f168201915b50505050508484815181106107fd576107fd612144565b602090810291909101015250506001016106fe565b5095945050505050565b60606001600085815260200190815260200160002083836040516108419291906121a1565b9081526020016040518091039020805461085a906120b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610886906120b7565b80156108d35780601f106108a8576101008083540402835291602001916108d3565b820191906000526020600020905b8154815290600101906020018083116108b657829003601f168201915b505050505090509392505050565b6108e96117af565b600085815260016020526040808220905187929190610907906120f1565b90815260200160405180910390208054610920906120b7565b80601f016020809104026020016040519081016040528092919081815260200182805461094c906120b7565b80156109995780601f1061096e57610100808354040283529160200191610999565b820191906000526020600020905b81548152906001019060200180831161097c57829003601f168201915b5050505050905080516014146109b8576109b382336117f5565b610a0c565b60006109c382611763565b90506001600160a01b0381166109e2576109dd83336117f5565b610a0a565b6001600160a01b0381163314610a0a5760405162461bcd60e51b81526004016105bf90612104565b505b610a808787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b018190048102820181019092528981529250899150889081908401838280828437600092019190915250611a6c92505050565b50505050505050565b610a916117af565b610a9b81336117f5565b50565b60008181526001602052604080822090518291906103dc906120f1565b610ac36117af565b600085815260016020526040808220905187929190610ae1906120f1565b90815260200160405180910390208054610afa906120b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610b26906120b7565b8015610b735780601f10610b4857610100808354040283529160200191610b73565b820191906000526020600020905b815481529060010190602001808311610b5657829003601f168201915b505050505090508051601414610b9257610b8d82336117f5565b610be6565b6000610b9d82611763565b90506001600160a01b038116610bbc57610bb783336117f5565b610be4565b6001600160a01b0381163314610be45760405162461bcd60e51b81526004016105bf90612104565b505b610bf1878787611adb565b610a80878585611ba1565b610c046119ba565b6105ec6000611be2565b6000610c186119ba565b6040516302571be360e01b81527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260048201526001600160a01b038516906302571be390602401602060405180830381865afa158015610c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca091906121b1565b6001600160a01b031663c47f002784846040518363ffffffff1660e01b8152600401610ccd9291906121f7565b6020604051808303816000875af1158015610cec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d10919061220b565b949350505050565b6000610d226119ba565b6040516302571be360e01b81527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260048201526001600160a01b038416906302571be390602401602060405180830381865afa158015610d86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610daa91906121b1565b604051630f41a04d60e11b81526001600160a01b0384811660048301529190911690631e83409a906024016020604051808303816000875af1158015610df4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e18919061220b565b90505b92915050565b610e296117af565b600082815260016020526040808220905184929190610e47906120f1565b90815260200160405180910390208054610e60906120b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8c906120b7565b8015610ed95780601f10610eae57610100808354040283529160200191610ed9565b820191906000526020600020905b815481529060010190602001808311610ebc57829003601f168201915b505050505090508051601414610ef857610ef382336117f5565b610f4c565b6000610f0382611763565b90506001600160a01b038116610f2257610f1d83336117f5565b610f4a565b6001600160a01b0381163314610f4a5760405162461bcd60e51b81526004016105bf90612104565b505b610fa8846040518060400160405280600781526020016636b0b730b3b2b960c91b81525085604051602001610f94919060609190911b6001600160601b031916815260140190565b604051602081830303815290604052611a6c565b50505050565b606081831115610ff05760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642072616e676560981b60448201526064016105bf565b6000610ffc8484612224565b67ffffffffffffffff8111156110145761101461212e565b60405190808252806020026020018201604052801561104757816020015b60608152602001906001900390816110325790505b509050835b8381101561113757600086815260026020526040902080548290811061107457611074612144565b906000526020600020018054611089906120b7565b80601f01602080910402602001604051908101604052809291908181526020018280546110b5906120b7565b80156111025780601f106110d757610100808354040283529160200191611102565b820191906000526020600020905b8154815290600101906020018083116110e557829003601f168201915b50505050508286836111149190612224565b8151811061112457611124612144565b602090810291909101015260010161104c565b50949350505050565b6111486119ba565b6105ec611c3b565b6111586117af565b600083815260016020526040808220905185929190611176906120f1565b9081526020016040518091039020805461118f906120b7565b80601f01602080910402602001604051908101604052809291908181526020018280546111bb906120b7565b80156112085780601f106111dd57610100808354040283529160200191611208565b820191906000526020600020905b8154815290600101906020018083116111eb57829003601f168201915b5050505050905080516014146112275761122282336117f5565b61127b565b600061123282611763565b90506001600160a01b0381166112515761124c83336117f5565b611279565b6001600160a01b03811633146112795760405162461bcd60e51b81526004016105bf90612104565b505b6105d5858585611adb565b6000828152600260205260409020805460609190839081106112aa576112aa612144565b9060005260206000200180546112bf906120b7565b80601f01602080910402602001604051908101604052809291908181526020018280546112eb906120b7565b80156113385780601f1061130d57610100808354040283529160200191611338565b820191906000526020600020905b81548152906001019060200180831161131b57829003601f168201915b5050505050905092915050565b606060026000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015611426578382906000526020600020018054611399906120b7565b80601f01602080910402602001604051908101604052809291908181526020018280546113c5906120b7565b80156114125780601f106113e757610100808354040283529160200191611412565b820191906000526020600020905b8154815290600101906020018083116113f557829003601f168201915b50505050508152602001906001019061137a565b505050509050919050565b6114396117af565b61144382826117f5565b5050565b61144f6117af565b60008381526001602052604080822090518592919061146d906120f1565b90815260200160405180910390208054611486906120b7565b80601f01602080910402602001604051908101604052809291908181526020018280546114b2906120b7565b80156114ff5780601f106114d4576101008083540402835291602001916114ff565b820191906000526020600020905b8154815290600101906020018083116114e257829003601f168201915b50505050509050805160141461151e5761151982336117f5565b611572565b600061152982611763565b90506001600160a01b0381166115485761154383336117f5565b611570565b6001600160a01b03811633146115705760405162461bcd60e51b81526004016105bf90612104565b505b6105d5858585611ba1565b6115856117af565b6000828152600160205260408082209051849291906115a3906120f1565b908152602001604051809103902080546115bc906120b7565b80601f01602080910402602001604051908101604052809291908181526020018280546115e8906120b7565b80156116355780601f1061160a57610100808354040283529160200191611635565b820191906000526020600020905b81548152906001019060200180831161161857829003601f168201915b5050505050905080516014146116545761164f82336117f5565b6116a8565b600061165f82611763565b90506001600160a01b03811661167e5761167983336117f5565b6116a6565b6001600160a01b03811633146116a65760405162461bcd60e51b81526004016105bf90612104565b505b610fa884604051806040016040528060048152602001633ab9b2b960e11b81525085604051602001610f94919060609190911b6001600160601b031916815260140190565b6116f56119ba565b6001600160a01b03811661175a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105bf565b610a9b81611be2565b600081516014146117a75760405162461bcd60e51b815260206004820152600e60248201526d092dcecc2d8d2c840d8cadccee8d60931b60448201526064016105bf565b506014015190565b60005460ff16156105ec5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105bf565b600082815260016020526040808220905161180f906120f1565b90815260200160405180910390208054611828906120b7565b80601f0160208091040260200160405190810160405280929190818152602001828054611854906120b7565b80156118a15780601f10611876576101008083540402835291602001916118a1565b820191906000526020600020905b81548152906001019060200180831161188457829003601f168201915b5050505050905080516014036119045760006118bc82611763565b9050826001600160a01b0316816001600160a01b031614611902576040516378a6c03d60e11b8152600481018590526001600160a01b03821660248201526044016105bf565b505b61194c836040518060400160405280600781526020016636b0b730b3b2b960c91b81525084604051602001610f94919060609190911b6001600160601b031916815260140190565b505050565b60008381526002602090815260408220805460018101825590835291200161197a828483612295565b50827fb067630e3908f166069c77766250c553414e2745e742a562d533f29744a91a7383836040516119ad9291906121f7565b60405180910390a2505050565b6000546001600160a01b036101009091041633146105ec5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105bf565b611a22611c78565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b806001600085815260200190815260200160002083604051611a8e9190612355565b90815260200160405180910390209081611aa89190612371565b50827f59ae30478c6dc6ad258000ec5c1e2da773a457572397f6b85ddd54ab719ecd5483836040516119ad929190612431565b8060005b818110156105d55736848483818110611afa57611afa612144565b9050602002810190611b0c919061245f565b9050611b9886611b1c838061215a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b5e92505050602085018561215a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a6c92505050565b50600101611adf565b8060005b818110156105d557611bda85858584818110611bc357611bc3612144565b9050602002810190611bd5919061215a565b611951565b600101611ba5565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b611c436117af565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611a4f3390565b60005460ff166105ec5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105bf565b600060208284031215611cd357600080fd5b5035919050565b60008083601f840112611cec57600080fd5b50813567ffffffffffffffff811115611d0457600080fd5b602083019150836020828501011115611d1c57600080fd5b9250929050565b600080600060408486031215611d3857600080fd5b83359250602084013567ffffffffffffffff811115611d5657600080fd5b611d6286828701611cda565b9497909650939450505050565b60008060408385031215611d8257600080fd5b50508035926020909101359150565b60005b83811015611dac578181015183820152602001611d94565b50506000910152565b60008151808452611dcd816020860160208601611d91565b601f01601f19169290920160200192915050565b602081526000610e186020830184611db5565b60008083601f840112611e0657600080fd5b50813567ffffffffffffffff811115611e1e57600080fd5b6020830191508360208260051b8501011115611d1c57600080fd5b600080600060408486031215611e4e57600080fd5b83359250602084013567ffffffffffffffff811115611e6c57600080fd5b611d6286828701611df4565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015611ecf57603f19888603018452611ebd858351611db5565b94509285019290850190600101611ea1565b5092979650505050505050565b600080600080600060608688031215611ef457600080fd5b85359450602086013567ffffffffffffffff80821115611f1357600080fd5b611f1f89838a01611cda565b90965094506040880135915080821115611f3857600080fd5b50611f4588828901611cda565b969995985093965092949392505050565b600080600080600060608688031215611f6e57600080fd5b85359450602086013567ffffffffffffffff80821115611f8d57600080fd5b611f9989838a01611df4565b90965094506040880135915080821115611fb257600080fd5b50611f4588828901611df4565b6001600160a01b0381168114610a9b57600080fd5b600080600060408486031215611fe957600080fd5b8335611ff481611fbf565b9250602084013567ffffffffffffffff811115611d5657600080fd5b6000806040838503121561202357600080fd5b823561202e81611fbf565b9150602083013561203e81611fbf565b809150509250929050565b6000806040838503121561205c57600080fd5b82359150602083013561203e81611fbf565b60008060006060848603121561208357600080fd5b505081359360208301359350604090920135919050565b6000602082840312156120ac57600080fd5b813561048f81611fbf565b600181811c908216806120cb57607f821691505b6020821081036120eb57634e487b7160e01b600052602260045260246000fd5b50919050565b6636b0b730b3b2b960c91b815260070190565b60208082526010908201526f2737ba103634b9ba1036b0b730b3b2b960811b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261217157600080fd5b83018035915067ffffffffffffffff82111561218c57600080fd5b602001915036819003821315611d1c57600080fd5b8183823760009101908152919050565b6000602082840312156121c357600080fd5b815161048f81611fbf565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610d106020830184866121ce565b60006020828403121561221d57600080fd5b5051919050565b81810381811115610e1b57634e487b7160e01b600052601160045260246000fd5b601f82111561194c576000816000526020600020601f850160051c8101602086101561226e5750805b601f850160051c820191505b8181101561228d5782815560010161227a565b505050505050565b67ffffffffffffffff8311156122ad576122ad61212e565b6122c1836122bb83546120b7565b83612245565b6000601f8411600181146122f557600085156122dd5750838201355b600019600387901b1c1916600186901b1783556105d5565b600083815260209020601f19861690835b828110156123265786850135825560209485019460019092019101612306565b50868210156123435760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60008251612367818460208701611d91565b9190910192915050565b815167ffffffffffffffff81111561238b5761238b61212e565b61239f8161239984546120b7565b84612245565b602080601f8311600181146123d457600084156123bc5750858301515b600019600386901b1c1916600185901b17855561228d565b600085815260208120601f198616915b82811015612403578886015182559484019460019091019084016123e4565b50858210156124215787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260006124446040830185611db5565b82810360208401526124568185611db5565b95945050505050565b60008235603e1983360301811261236757600080fdfea2646970667358221220db6aca8b1dc54087d11400b442c45f398a7f0ab7c1fcaae17d5bae216bfcf67964736f6c63430008170033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.