Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 19 from a total of 19 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Ownersh... | 18331798 | 352 days ago | IN | 0 ETH | 0.00013985 | ||||
Add Or Update Se... | 18331797 | 352 days ago | IN | 0 ETH | 0.00327487 | ||||
Remove Impl Addr... | 18331793 | 352 days ago | IN | 0 ETH | 0.00228666 | ||||
Transfer Ownersh... | 18330238 | 353 days ago | IN | 0 ETH | 0.00016663 | ||||
Transfer Ownersh... | 18030266 | 395 days ago | IN | 0 ETH | 0.00051347 | ||||
Add Or Update Se... | 18015449 | 397 days ago | IN | 0 ETH | 0.01209268 | ||||
Add Or Update Se... | 18014770 | 397 days ago | IN | 0 ETH | 0.00251959 | ||||
Add Or Update Se... | 18014764 | 397 days ago | IN | 0 ETH | 0.00302761 | ||||
Add Or Update Se... | 17773223 | 431 days ago | IN | 0 ETH | 0.01545618 | ||||
Remove Impl Addr... | 17773222 | 431 days ago | IN | 0 ETH | 0.01033852 | ||||
Transfer Ownersh... | 17772140 | 431 days ago | IN | 0 ETH | 0.00089062 | ||||
Transfer Ownersh... | 17005891 | 539 days ago | IN | 0 ETH | 0.00057552 | ||||
Set Fallback Imp... | 16994909 | 540 days ago | IN | 0 ETH | 0.00094086 | ||||
Add Or Update Se... | 16994908 | 540 days ago | IN | 0 ETH | 0.01360865 | ||||
Add Or Update Se... | 16994907 | 540 days ago | IN | 0 ETH | 0.01350532 | ||||
Add Or Update Se... | 16994906 | 540 days ago | IN | 0 ETH | 0.01219687 | ||||
Add Or Update Se... | 16994905 | 540 days ago | IN | 0 ETH | 0.00582819 | ||||
Add Or Update Se... | 16994904 | 540 days ago | IN | 0 ETH | 0.03089084 | ||||
0x60806040 | 16994897 | 540 days ago | IN | 0 ETH | 0.03186145 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
AddressRelay
Compiler Version
v0.8.18+commit.87f61d96
Optimization Enabled:
Yes with 15000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.18; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; import {IAddressRelay, Implementation} from "./interfaces/IAddressRelay.sol"; import {IERC165} from "./interfaces/IERC165.sol"; import {IERC173} from "./interfaces/IERC173.sol"; /** * @author Created by HeyMint Launchpad https://join.heymint.xyz * @notice This contract contains the base logic for ERC-721A tokens deployed with HeyMint */ contract AddressRelay is IAddressRelay, Ownable { mapping(bytes4 => address) public selectorToImplAddress; mapping(bytes4 => bool) public supportedInterfaces; bytes4[] selectors; address[] implAddresses; address public fallbackImplAddress; bool public relayFrozen; constructor() { supportedInterfaces[0x01ffc9a7] = true; // IERC165 supportedInterfaces[0x7f5828d0] = true; // IERC173 supportedInterfaces[0x80ac58cd] = true; // IERC721 supportedInterfaces[0x5b5e139f] = true; // IERC721Metadata supportedInterfaces[0x2a55205a] = true; // IERC2981 supportedInterfaces[0xad092b5c] = true; // IERC4907 } /** * @notice Permanently freezes the relay so no more selectors can be added or removed */ function freezeRelay() external onlyOwner { relayFrozen = true; } /** * @notice Adds or updates selectors and their implementation addresses * @param _selectors The selectors to add or update * @param _implAddress The implementation address the selectors will point to */ function addOrUpdateSelectors( bytes4[] memory _selectors, address _implAddress ) external onlyOwner { require(!relayFrozen, "RELAY_FROZEN"); for (uint256 i = 0; i < _selectors.length; i++) { bytes4 selector = _selectors[i]; selectorToImplAddress[selector] = _implAddress; selectors.push(selector); } bool implAddressExists = false; for (uint256 i = 0; i < implAddresses.length; i++) { if (implAddresses[i] == _implAddress) { implAddressExists = true; break; } } if (!implAddressExists) { implAddresses.push(_implAddress); } } /** * @notice Removes selectors * @param _selectors The selectors to remove */ function removeSelectors(bytes4[] memory _selectors) external onlyOwner { require(!relayFrozen, "RELAY_FROZEN"); for (uint256 i = 0; i < _selectors.length; i++) { bytes4 selector = _selectors[i]; delete selectorToImplAddress[selector]; for (uint256 j = 0; j < selectors.length; j++) { if (selectors[j] == selector) { // this just sets the value to 0, but doesn't remove it from the array delete selectors[j]; break; } } } } /** * @notice Removes an implementation address and all the selectors that point to it * @param _implAddress The implementation address to remove */ function removeImplAddressAndAllSelectors( address _implAddress ) external onlyOwner { require(!relayFrozen, "RELAY_FROZEN"); for (uint256 i = 0; i < implAddresses.length; i++) { if (implAddresses[i] == _implAddress) { // this just sets the value to 0, but doesn't remove it from the array delete implAddresses[i]; break; } } for (uint256 i = 0; i < selectors.length; i++) { if (selectorToImplAddress[selectors[i]] == _implAddress) { delete selectorToImplAddress[selectors[i]]; delete selectors[i]; } } } /** * @notice Returns the implementation address for a given function selector * @param _functionSelector The function selector to get the implementation address for */ function getImplAddress( bytes4 _functionSelector ) external view returns (address) { address implAddress = selectorToImplAddress[_functionSelector]; if (implAddress == address(0)) { implAddress = fallbackImplAddress; } require(implAddress != address(0), "Function does not exist"); return implAddress; } /** * @notice Returns the implementation address for a given function selector. Throws an error if function does not exist. * @param _functionSelector The function selector to get the implementation address for */ function getImplAddressNoFallback( bytes4 _functionSelector ) external view returns (address) { address implAddress = selectorToImplAddress[_functionSelector]; require(implAddress != address(0), "Function does not exist"); return implAddress; } /** * @notice Returns all the implementation addresses and the selectors they support * @return impls_ An array of Implementation structs */ function getAllImplAddressesAndSelectors() external view returns (Implementation[] memory) { uint256 trueImplAddressCount = 0; uint256 implAddressesLength = implAddresses.length; for (uint256 i = 0; i < implAddressesLength; i++) { if (implAddresses[i] != address(0)) { trueImplAddressCount++; } } Implementation[] memory impls = new Implementation[]( trueImplAddressCount ); for (uint256 i = 0; i < implAddressesLength; i++) { if (implAddresses[i] == address(0)) { continue; } address implAddress = implAddresses[i]; bytes4[] memory selectors_; uint256 selectorCount = 0; uint256 selectorsLength = selectors.length; for (uint256 j = 0; j < selectorsLength; j++) { if (selectorToImplAddress[selectors[j]] == implAddress) { selectorCount++; } } selectors_ = new bytes4[](selectorCount); uint256 selectorIndex = 0; for (uint256 j = 0; j < selectorsLength; j++) { if (selectorToImplAddress[selectors[j]] == implAddress) { selectors_[selectorIndex] = selectors[j]; selectorIndex++; } } impls[i] = Implementation(implAddress, selectors_); } return impls; } /** * @notice Return all the function selectors associated with an implementation address * @param _implAddress The implementation address to get the selectors for */ function getSelectorsForImplAddress( address _implAddress ) external view returns (bytes4[] memory) { uint256 selectorCount = 0; uint256 selectorsLength = selectors.length; for (uint256 i = 0; i < selectorsLength; i++) { if (selectorToImplAddress[selectors[i]] == _implAddress) { selectorCount++; } } bytes4[] memory selectorArr = new bytes4[](selectorCount); uint256 selectorIndex = 0; for (uint256 i = 0; i < selectorsLength; i++) { if (selectorToImplAddress[selectors[i]] == _implAddress) { selectorArr[selectorIndex] = selectors[i]; selectorIndex++; } } return selectorArr; } /** * @notice Sets the fallback implementation address to use when a function selector is not found * @param _fallbackAddress The fallback implementation address */ function setFallbackImplAddress( address _fallbackAddress ) external onlyOwner { require(!relayFrozen, "RELAY_FROZEN"); fallbackImplAddress = _fallbackAddress; } /** * @notice Updates the supported interfaces * @param _interfaceId The interface ID to update * @param _supported Whether the interface is supported or not */ function updateSupportedInterfaces( bytes4 _interfaceId, bool _supported ) external onlyOwner { supportedInterfaces[_interfaceId] = _supported; } /** * @notice Returns whether the interface is supported or not * @param _interfaceId The interface ID to check */ function supportsInterface( bytes4 _interfaceId ) external view returns (bool) { return supportedInterfaces[_interfaceId]; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.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 anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing 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 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; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.18; struct Implementation { address implAddress; bytes4[] selectors; } interface IAddressRelay { /** * @notice Returns the fallback implementation address */ function fallbackImplAddress() external returns (address); /** * @notice Adds or updates selectors and their implementation addresses * @param _selectors The selectors to add or update * @param _implAddress The implementation address the selectors will point to */ function addOrUpdateSelectors( bytes4[] memory _selectors, address _implAddress ) external; /** * @notice Removes selectors * @param _selectors The selectors to remove */ function removeSelectors(bytes4[] memory _selectors) external; /** * @notice Removes an implementation address and all the selectors that point to it * @param _implAddress The implementation address to remove */ function removeImplAddressAndAllSelectors(address _implAddress) external; /** * @notice Returns the implementation address for a given function selector * @param _functionSelector The function selector to get the implementation address for */ function getImplAddress( bytes4 _functionSelector ) external view returns (address implAddress_); /** * @notice Returns all the implementation addresses and the selectors they support * @return impls_ An array of Implementation structs */ function getAllImplAddressesAndSelectors() external view returns (Implementation[] memory impls_); /** * @notice Return all the fucntion selectors associated with an implementation address * @param _implAddress The implementation address to get the selectors for */ function getSelectorsForImplAddress( address _implAddress ) external view returns (bytes4[] memory selectors_); /** * @notice Sets the fallback implementation address to use when a function selector is not found * @param _fallbackAddress The fallback implementation address */ function setFallbackImplAddress(address _fallbackAddress) external; /** * @notice Updates the supported interfaces * @param _interfaceId The interface ID to update * @param _supported Whether the interface is supported or not */ function updateSupportedInterfaces( bytes4 _interfaceId, bool _supported ) external; /** * @notice Returns whether the interface is supported or not * @param _interfaceId The interface ID to check */ function supportsInterface( bytes4 _interfaceId ) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.18; interface IERC165 { /// @notice Query if a contract implements an interface /// @param interfaceId The interface identifier, as specified in ERC-165 /// @dev Interface identification is specified in ERC-165. This function /// uses less than 30,000 gas. /// @return `true` if the contract implements `interfaceID` and /// `interfaceID` is not 0xffffffff, `false` otherwise function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.18; /// @title ERC-173 Contract Ownership Standard /// Note: the ERC-165 identifier for this interface is 0x7f5828d0 /* is ERC165 */ interface IERC173 { /// @dev This emits when ownership of a contract changes. event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /// @notice Get the address of the owner /// @return owner_ The address of the owner. function owner() external view returns (address owner_); /// @notice Set the address of the new owner of the contract /// @dev Set _newOwner to address(0) to renounce any ownership. /// @param _newOwner The address of the new owner of the contract function transferOwnership(address _newOwner) external; }
{ "optimizer": { "enabled": true, "runs": 15000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"bytes4[]","name":"_selectors","type":"bytes4[]"},{"internalType":"address","name":"_implAddress","type":"address"}],"name":"addOrUpdateSelectors","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fallbackImplAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeRelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAllImplAddressesAndSelectors","outputs":[{"components":[{"internalType":"address","name":"implAddress","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}],"internalType":"struct Implementation[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_functionSelector","type":"bytes4"}],"name":"getImplAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_functionSelector","type":"bytes4"}],"name":"getImplAddressNoFallback","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_implAddress","type":"address"}],"name":"getSelectorsForImplAddress","outputs":[{"internalType":"bytes4[]","name":"","type":"bytes4[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"relayFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_implAddress","type":"address"}],"name":"removeImplAddressAndAllSelectors","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4[]","name":"_selectors","type":"bytes4[]"}],"name":"removeSelectors","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"selectorToImplAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_fallbackAddress","type":"address"}],"name":"setFallbackImplAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"supportedInterfaces","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"},{"internalType":"bool","name":"_supported","type":"bool"}],"name":"updateSupportedInterfaces","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5061001a3361012e565b60026020527f71203db6a8b906f8e7c7701ea536708e3d7c6018d3ad50e5680c3241edacce178054600160ff1991821681179092557f78f52cb004db167c8f5d234094ad3cdb9f2eb775244b109350230eab2d3d350b80548216831790557fe93570590271d95518ca425fa83dfa75d04081fc79a4d9a58f39c8df65a8e7a180548216831790557fe7f4f15f8a9f2f6fc23737b039e4cbf51e96102d2c02d512a4356c0910a430f580548216831790557f5d063669f9b1c173848d23e3517fac39e0180ef9dc06c66ffdb87bfddd239c938054821683179055632b424ad760e21b6000527f07e71b91f21e90aaa1349afc7bbbbad733cad72a11691aeaf6a2bcb1c07eecfa8054909116909117905561017e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611a9c8061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c8063836875f8116100b2578063c2c9581411610081578063e34a59e311610066578063e34a59e31461031a578063f2fde38b1461032d578063fc1e79591461034057600080fd5b8063c2c95814146102f4578063c9ce75f71461030757600080fd5b8063836875f8146102735780638c8ab2dd146102a95780638da5cb5b146102b1578063bffb3593146102cf57600080fd5b80632d06691411610109578063474e8dbb116100ee578063474e8dbb1461022b578063494807781461024b578063715018a61461026b57600080fd5b80632d066914146102055780632ecf0b701461021857600080fd5b806301ffc9a71461013b5780630a85121a146101955780631584ba38146101aa5780632ac5365f146101cd575b600080fd5b610180610149366004611665565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081526002602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101a86101a3366004611687565b610355565b005b6101806101b8366004611665565b60026020526000908152604090205460ff1681565b6101e06101db366004611665565b6103bf565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161018c565b6101a86102133660046116e7565b610479565b6101a86102263660046117f1565b61054d565b61023e6102393660046116e7565b6107d6565b60405161018c919061183f565b6005546101e09073ffffffffffffffffffffffffffffffffffffffff1681565b6101a8610a37565b6101e0610281366004611665565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6101a8610a4b565b60005473ffffffffffffffffffffffffffffffffffffffff166101e0565b6005546101809074010000000000000000000000000000000000000000900460ff1681565b6101e0610302366004611665565b610a94565b6101a86103153660046116e7565b610b79565b6101a86103283660046118a5565b610e49565b6101a861033b3660046116e7565b611047565b6103486110fe565b60405161018c91906118e2565b61035d61153a565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526001602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f46756e6374696f6e20646f6573206e6f7420657869737400000000000000000060448201526064015b60405180910390fd5b92915050565b61048161153a565b60055474010000000000000000000000000000000000000000900460ff1615610506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f52454c41595f46524f5a454e0000000000000000000000000000000000000000604482015260640161046a565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61055561153a565b60055474010000000000000000000000000000000000000000900460ff16156105da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f52454c41595f46524f5a454e0000000000000000000000000000000000000000604482015260640161046a565b60005b82518110156106df5760008382815181106105fa576105fa6119d8565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081526001928390526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff881617905560038054938401815590527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b6008830401805463ffffffff60079094166004026101000a938402191660e09290921c9290920217905550806106d781611a07565b9150506105dd565b506000805b60045481101561075a578273ffffffffffffffffffffffffffffffffffffffff1660048281548110610718576107186119d8565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1603610748576001915061075a565b8061075281611a07565b9150506106e4565b50806107d157600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790555b505050565b600354606090600090815b818110156108a4578473ffffffffffffffffffffffffffffffffffffffff166001600060038481548110610817576108176119d8565b6000918252602080832060088304015460079092166004026101000a90910460e01b7fffffffff0000000000000000000000000000000000000000000000000000000016835282019290925260400190205473ffffffffffffffffffffffffffffffffffffffff1603610892578261088e81611a07565b9350505b8061089c81611a07565b9150506107e1565b5060008267ffffffffffffffff8111156108c0576108c0611702565b6040519080825280602002602001820160405280156108e9578160200160208202803683370190505b5090506000805b83811015610a2c578673ffffffffffffffffffffffffffffffffffffffff166001600060038481548110610926576109266119d8565b6000918252602080832060088304015460079092166004026101000a90910460e01b7fffffffff0000000000000000000000000000000000000000000000000000000016835282019290925260400190205473ffffffffffffffffffffffffffffffffffffffff1603610a1a57600381815481106109a6576109a66119d8565b90600052602060002090600891828204019190066004029054906101000a900460e01b8383815181106109db576109db6119d8565b7fffffffff000000000000000000000000000000000000000000000000000000009092166020928302919091019091015281610a1681611a07565b9250505b80610a2481611a07565b9150506108f0565b509095945050505050565b610a3f61153a565b610a4960006115bb565b565b610a5361153a565b600580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526001602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610afc575060055473ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff8116610473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f46756e6374696f6e20646f6573206e6f74206578697374000000000000000000604482015260640161046a565b610b8161153a565b60055474010000000000000000000000000000000000000000900460ff1615610c06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f52454c41595f46524f5a454e0000000000000000000000000000000000000000604482015260640161046a565b60005b600454811015610cbf578173ffffffffffffffffffffffffffffffffffffffff1660048281548110610c3d57610c3d6119d8565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1603610cad5760048181548110610c7757610c776119d8565b600091825260209091200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610cbf565b80610cb781611a07565b915050610c09565b5060005b600354811015610e45578173ffffffffffffffffffffffffffffffffffffffff166001600060038481548110610cfb57610cfb6119d8565b6000918252602080832060088304015460079092166004026101000a90910460e01b7fffffffff0000000000000000000000000000000000000000000000000000000016835282019290925260400190205473ffffffffffffffffffffffffffffffffffffffff1603610e33576001600060038381548110610d7f57610d7f6119d8565b6000918252602080832060088304015460079092166004026101000a90910460e01b7fffffffff00000000000000000000000000000000000000000000000000000000168352820192909252604001902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556003805482908110610e0a57610e0a6119d8565b90600052602060002090600891828204019190066004026101000a81549063ffffffff02191690555b80610e3d81611a07565b915050610cc3565b5050565b610e5161153a565b60055474010000000000000000000000000000000000000000900460ff1615610ed6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f52454c41595f46524f5a454e0000000000000000000000000000000000000000604482015260640161046a565b60005b8151811015610e45576000828281518110610ef657610ef66119d8565b6020908102919091018101517fffffffff000000000000000000000000000000000000000000000000000000008116600090815260019092526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905591505b60035481101561103257817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660038281548110610f9957610f996119d8565b90600052602060002090600891828204019190066004029054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036110205760038181548110610ff357610ff36119d8565b90600052602060002090600891828204019190066004026101000a81549063ffffffff0219169055611032565b8061102a81611a07565b915050610f5c565b5050808061103f90611a07565b915050610ed9565b61104f61153a565b73ffffffffffffffffffffffffffffffffffffffff81166110f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161046a565b6110fb816115bb565b50565b600454606090600090815b8181101561118357600073ffffffffffffffffffffffffffffffffffffffff166004828154811061113c5761113c6119d8565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614611171578261116d81611a07565b9350505b8061117b81611a07565b915050611109565b5060008267ffffffffffffffff81111561119f5761119f611702565b6040519080825280602002602001820160405280156111e557816020015b6040805180820190915260008152606060208201528152602001906001900390816111bd5790505b50905060005b8281101561153257600073ffffffffffffffffffffffffffffffffffffffff166004828154811061121e5761121e6119d8565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16146115205760006004828154811061125a5761125a6119d8565b600091825260208220015460035473ffffffffffffffffffffffffffffffffffffffff909116925060609190815b8181101561134b578473ffffffffffffffffffffffffffffffffffffffff1660016000600384815481106112be576112be6119d8565b6000918252602080832060088304015460079092166004026101000a90910460e01b7fffffffff0000000000000000000000000000000000000000000000000000000016835282019290925260400190205473ffffffffffffffffffffffffffffffffffffffff1603611339578261133581611a07565b9350505b8061134381611a07565b915050611288565b508167ffffffffffffffff81111561136557611365611702565b60405190808252806020026020018201604052801561138e578160200160208202803683370190505b5092506000805b828110156114d1578573ffffffffffffffffffffffffffffffffffffffff1660016000600384815481106113cb576113cb6119d8565b6000918252602080832060088304015460079092166004026101000a90910460e01b7fffffffff0000000000000000000000000000000000000000000000000000000016835282019290925260400190205473ffffffffffffffffffffffffffffffffffffffff16036114bf576003818154811061144b5761144b6119d8565b90600052602060002090600891828204019190066004029054906101000a900460e01b858381518110611480576114806119d8565b7fffffffff0000000000000000000000000000000000000000000000000000000090921660209283029190910190910152816114bb81611a07565b9250505b806114c981611a07565b915050611395565b5060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581525087878151811061150f5761150f6119d8565b602002602001018190525050505050505b8061152a81611a07565b9150506111eb565b509392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161046a565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461166057600080fd5b919050565b60006020828403121561167757600080fd5b61168082611630565b9392505050565b6000806040838503121561169a57600080fd5b6116a383611630565b9150602083013580151581146116b857600080fd5b809150509250929050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461166057600080fd5b6000602082840312156116f957600080fd5b611680826116c3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261174257600080fd5b8135602067ffffffffffffffff8083111561175f5761175f611702565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811084821117156117a2576117a2611702565b6040529384528581018301938381019250878511156117c057600080fd5b83870191505b848210156117e6576117d782611630565b835291830191908301906117c6565b979650505050505050565b6000806040838503121561180457600080fd5b823567ffffffffffffffff81111561181b57600080fd5b61182785828601611731565b925050611836602084016116c3565b90509250929050565b6020808252825182820181905260009190848201906040850190845b818110156118995783517fffffffff00000000000000000000000000000000000000000000000000000000168352928401929184019160010161185b565b50909695505050505050565b6000602082840312156118b757600080fd5b813567ffffffffffffffff8111156118ce57600080fd5b6118da84828501611731565b949350505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156119c9578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00186528251805173ffffffffffffffffffffffffffffffffffffffff168552880151888501889052805188860181905290890190839060608701905b808310156119b45783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611972565b50978a0197955050509187019160010161190a565b50919998505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611a5f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220fddd4691f28f8d5ae2f0c867e1c15ca3611affaa0f00a820d2d2861063869ff064736f6c63430008120033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101365760003560e01c8063836875f8116100b2578063c2c9581411610081578063e34a59e311610066578063e34a59e31461031a578063f2fde38b1461032d578063fc1e79591461034057600080fd5b8063c2c95814146102f4578063c9ce75f71461030757600080fd5b8063836875f8146102735780638c8ab2dd146102a95780638da5cb5b146102b1578063bffb3593146102cf57600080fd5b80632d06691411610109578063474e8dbb116100ee578063474e8dbb1461022b578063494807781461024b578063715018a61461026b57600080fd5b80632d066914146102055780632ecf0b701461021857600080fd5b806301ffc9a71461013b5780630a85121a146101955780631584ba38146101aa5780632ac5365f146101cd575b600080fd5b610180610149366004611665565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081526002602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101a86101a3366004611687565b610355565b005b6101806101b8366004611665565b60026020526000908152604090205460ff1681565b6101e06101db366004611665565b6103bf565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161018c565b6101a86102133660046116e7565b610479565b6101a86102263660046117f1565b61054d565b61023e6102393660046116e7565b6107d6565b60405161018c919061183f565b6005546101e09073ffffffffffffffffffffffffffffffffffffffff1681565b6101a8610a37565b6101e0610281366004611665565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6101a8610a4b565b60005473ffffffffffffffffffffffffffffffffffffffff166101e0565b6005546101809074010000000000000000000000000000000000000000900460ff1681565b6101e0610302366004611665565b610a94565b6101a86103153660046116e7565b610b79565b6101a86103283660046118a5565b610e49565b6101a861033b3660046116e7565b611047565b6103486110fe565b60405161018c91906118e2565b61035d61153a565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526001602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f46756e6374696f6e20646f6573206e6f7420657869737400000000000000000060448201526064015b60405180910390fd5b92915050565b61048161153a565b60055474010000000000000000000000000000000000000000900460ff1615610506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f52454c41595f46524f5a454e0000000000000000000000000000000000000000604482015260640161046a565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61055561153a565b60055474010000000000000000000000000000000000000000900460ff16156105da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f52454c41595f46524f5a454e0000000000000000000000000000000000000000604482015260640161046a565b60005b82518110156106df5760008382815181106105fa576105fa6119d8565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081526001928390526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff881617905560038054938401815590527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b6008830401805463ffffffff60079094166004026101000a938402191660e09290921c9290920217905550806106d781611a07565b9150506105dd565b506000805b60045481101561075a578273ffffffffffffffffffffffffffffffffffffffff1660048281548110610718576107186119d8565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1603610748576001915061075a565b8061075281611a07565b9150506106e4565b50806107d157600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790555b505050565b600354606090600090815b818110156108a4578473ffffffffffffffffffffffffffffffffffffffff166001600060038481548110610817576108176119d8565b6000918252602080832060088304015460079092166004026101000a90910460e01b7fffffffff0000000000000000000000000000000000000000000000000000000016835282019290925260400190205473ffffffffffffffffffffffffffffffffffffffff1603610892578261088e81611a07565b9350505b8061089c81611a07565b9150506107e1565b5060008267ffffffffffffffff8111156108c0576108c0611702565b6040519080825280602002602001820160405280156108e9578160200160208202803683370190505b5090506000805b83811015610a2c578673ffffffffffffffffffffffffffffffffffffffff166001600060038481548110610926576109266119d8565b6000918252602080832060088304015460079092166004026101000a90910460e01b7fffffffff0000000000000000000000000000000000000000000000000000000016835282019290925260400190205473ffffffffffffffffffffffffffffffffffffffff1603610a1a57600381815481106109a6576109a66119d8565b90600052602060002090600891828204019190066004029054906101000a900460e01b8383815181106109db576109db6119d8565b7fffffffff000000000000000000000000000000000000000000000000000000009092166020928302919091019091015281610a1681611a07565b9250505b80610a2481611a07565b9150506108f0565b509095945050505050565b610a3f61153a565b610a4960006115bb565b565b610a5361153a565b600580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526001602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610afc575060055473ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff8116610473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f46756e6374696f6e20646f6573206e6f74206578697374000000000000000000604482015260640161046a565b610b8161153a565b60055474010000000000000000000000000000000000000000900460ff1615610c06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f52454c41595f46524f5a454e0000000000000000000000000000000000000000604482015260640161046a565b60005b600454811015610cbf578173ffffffffffffffffffffffffffffffffffffffff1660048281548110610c3d57610c3d6119d8565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1603610cad5760048181548110610c7757610c776119d8565b600091825260209091200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610cbf565b80610cb781611a07565b915050610c09565b5060005b600354811015610e45578173ffffffffffffffffffffffffffffffffffffffff166001600060038481548110610cfb57610cfb6119d8565b6000918252602080832060088304015460079092166004026101000a90910460e01b7fffffffff0000000000000000000000000000000000000000000000000000000016835282019290925260400190205473ffffffffffffffffffffffffffffffffffffffff1603610e33576001600060038381548110610d7f57610d7f6119d8565b6000918252602080832060088304015460079092166004026101000a90910460e01b7fffffffff00000000000000000000000000000000000000000000000000000000168352820192909252604001902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556003805482908110610e0a57610e0a6119d8565b90600052602060002090600891828204019190066004026101000a81549063ffffffff02191690555b80610e3d81611a07565b915050610cc3565b5050565b610e5161153a565b60055474010000000000000000000000000000000000000000900460ff1615610ed6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f52454c41595f46524f5a454e0000000000000000000000000000000000000000604482015260640161046a565b60005b8151811015610e45576000828281518110610ef657610ef66119d8565b6020908102919091018101517fffffffff000000000000000000000000000000000000000000000000000000008116600090815260019092526040822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905591505b60035481101561103257817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660038281548110610f9957610f996119d8565b90600052602060002090600891828204019190066004029054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036110205760038181548110610ff357610ff36119d8565b90600052602060002090600891828204019190066004026101000a81549063ffffffff0219169055611032565b8061102a81611a07565b915050610f5c565b5050808061103f90611a07565b915050610ed9565b61104f61153a565b73ffffffffffffffffffffffffffffffffffffffff81166110f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161046a565b6110fb816115bb565b50565b600454606090600090815b8181101561118357600073ffffffffffffffffffffffffffffffffffffffff166004828154811061113c5761113c6119d8565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614611171578261116d81611a07565b9350505b8061117b81611a07565b915050611109565b5060008267ffffffffffffffff81111561119f5761119f611702565b6040519080825280602002602001820160405280156111e557816020015b6040805180820190915260008152606060208201528152602001906001900390816111bd5790505b50905060005b8281101561153257600073ffffffffffffffffffffffffffffffffffffffff166004828154811061121e5761121e6119d8565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16146115205760006004828154811061125a5761125a6119d8565b600091825260208220015460035473ffffffffffffffffffffffffffffffffffffffff909116925060609190815b8181101561134b578473ffffffffffffffffffffffffffffffffffffffff1660016000600384815481106112be576112be6119d8565b6000918252602080832060088304015460079092166004026101000a90910460e01b7fffffffff0000000000000000000000000000000000000000000000000000000016835282019290925260400190205473ffffffffffffffffffffffffffffffffffffffff1603611339578261133581611a07565b9350505b8061134381611a07565b915050611288565b508167ffffffffffffffff81111561136557611365611702565b60405190808252806020026020018201604052801561138e578160200160208202803683370190505b5092506000805b828110156114d1578573ffffffffffffffffffffffffffffffffffffffff1660016000600384815481106113cb576113cb6119d8565b6000918252602080832060088304015460079092166004026101000a90910460e01b7fffffffff0000000000000000000000000000000000000000000000000000000016835282019290925260400190205473ffffffffffffffffffffffffffffffffffffffff16036114bf576003818154811061144b5761144b6119d8565b90600052602060002090600891828204019190066004029054906101000a900460e01b858381518110611480576114806119d8565b7fffffffff0000000000000000000000000000000000000000000000000000000090921660209283029190910190910152816114bb81611a07565b9250505b806114c981611a07565b915050611395565b5060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581525087878151811061150f5761150f6119d8565b602002602001018190525050505050505b8061152a81611a07565b9150506111eb565b509392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161046a565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461166057600080fd5b919050565b60006020828403121561167757600080fd5b61168082611630565b9392505050565b6000806040838503121561169a57600080fd5b6116a383611630565b9150602083013580151581146116b857600080fd5b809150509250929050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461166057600080fd5b6000602082840312156116f957600080fd5b611680826116c3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261174257600080fd5b8135602067ffffffffffffffff8083111561175f5761175f611702565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811084821117156117a2576117a2611702565b6040529384528581018301938381019250878511156117c057600080fd5b83870191505b848210156117e6576117d782611630565b835291830191908301906117c6565b979650505050505050565b6000806040838503121561180457600080fd5b823567ffffffffffffffff81111561181b57600080fd5b61182785828601611731565b925050611836602084016116c3565b90509250929050565b6020808252825182820181905260009190848201906040850190845b818110156118995783517fffffffff00000000000000000000000000000000000000000000000000000000168352928401929184019160010161185b565b50909695505050505050565b6000602082840312156118b757600080fd5b813567ffffffffffffffff8111156118ce57600080fd5b6118da84828501611731565b949350505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156119c9578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00186528251805173ffffffffffffffffffffffffffffffffffffffff168552880151888501889052805188860181905290890190839060608701905b808310156119b45783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611972565b50978a0197955050509187019160010161190a565b50919998505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611a5f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220fddd4691f28f8d5ae2f0c867e1c15ca3611affaa0f00a820d2d2861063869ff064736f6c63430008120033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.