Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
16328317 | 784 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Minter
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; import {AllowList} from "./abstract/AllowList.sol"; import {Controllable} from "./abstract/Controllable.sol"; import {IMinter} from "./interfaces/IMinter.sol"; import {ITokens} from "./interfaces/ITokens.sol"; import {IControllable} from "./interfaces/IControllable.sol"; /// @title Minter - Mints tokens /// @notice The only module authorized to directly mint tokens. Maintains an /// allowlist of external contracts with permission to mint. contract Minter is IMinter, AllowList { string public constant NAME = "Minter"; string public constant VERSION = "0.0.1"; address public tokens; constructor(address _controller) AllowList(_controller) {} /// @inheritdoc IMinter function mint(address to, uint256 id, uint256 amount, bytes memory data) external override onlyAllowed { ITokens(tokens).mint(to, id, amount, data); } /// @inheritdoc IControllable function setDependency(bytes32 _name, address _contract) external override (Controllable, IControllable) onlyController { if (_contract == address(0)) revert ZeroAddress(); else if (_name == "tokens") _setTokens(_contract); else revert InvalidDependency(_name); } function _setTokens(address _tokens) internal { emit SetTokens(tokens, _tokens); tokens = _tokens; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol) pragma solidity ^0.8.0; import "../utils/introspection/IERC165Upgradeable.sol"; /** * @dev Interface for the NFT Royalty Standard. * * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal * support for royalty payments across all NFT marketplaces and ecosystem participants. * * _Available since v4.5._ */ interface IERC2981Upgradeable is IERC165Upgradeable { /** * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of * exchange. The royalty amount is denominated and should be paid in that same unit of exchange. */ function royaltyInfo(uint256 tokenId, uint256 salePrice) external view returns (address receiver, uint256 royaltyAmount); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/IERC1155.sol) pragma solidity ^0.8.0; import "../../utils/introspection/IERC165Upgradeable.sol"; /** * @dev Required interface of an ERC1155 compliant contract, as defined in the * https://eips.ethereum.org/EIPS/eip-1155[EIP]. * * _Available since v3.1._ */ interface IERC1155Upgradeable is IERC165Upgradeable { /** * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`. */ event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); /** * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all * transfers. */ event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values ); /** * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to * `approved`. */ event ApprovalForAll(address indexed account, address indexed operator, bool approved); /** * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. * * If an {URI} event was emitted for `id`, the standard * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value * returned by {IERC1155MetadataURI-uri}. */ event URI(string value, uint256 indexed id); /** * @dev Returns the amount of tokens of token type `id` owned by `account`. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) external view returns (uint256); /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory); /** * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, * * Emits an {ApprovalForAll} event. * * Requirements: * * - `operator` cannot be the caller. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns true if `operator` is approved to transfer ``account``'s tokens. * * See {setApprovalForAll}. */ function isApprovedForAll(address account, address operator) external view returns (bool); /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) external; /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol) pragma solidity ^0.8.0; import "../IERC1155Upgradeable.sol"; /** * @dev Interface of the optional ERC1155MetadataExtension interface, as defined * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP]. * * _Available since v3.1._ */ interface IERC1155MetadataURIUpgradeable is IERC1155Upgradeable { /** * @dev Returns the URI for token type `id`. * * If the `\{id\}` substring is present in the URI, it must be replaced by * clients with the actual token type ID. */ function uri(uint256 id) external view returns (string memory); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165Upgradeable { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; import {Controllable} from "./Controllable.sol"; import {IAllowList} from "../interfaces/IAllowList.sol"; /// @title AllowList - Tracks approved addresses /// @notice An abstract contract for tracking allowed and denied addresses. abstract contract AllowList is IAllowList, Controllable { mapping(address => bool) public allowed; modifier onlyAllowed() { if (!allowed[msg.sender]) { revert Forbidden(); } _; } constructor(address _controller) Controllable(_controller) {} /// @inheritdoc IAllowList function denied(address caller) external view returns (bool) { return !allowed[caller]; } /// @inheritdoc IAllowList function allow(address caller) external onlyController { allowed[caller] = true; emit Allow(caller); } /// @inheritdoc IAllowList function deny(address caller) external onlyController { allowed[caller] = false; emit Deny(caller); } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; import {IControllable} from "../interfaces/IControllable.sol"; /// @title Controllable - Controller management functions /// @notice An abstract base contract for contracts managed by the Controller. abstract contract Controllable is IControllable { address public controller; modifier onlyController() { if (msg.sender != controller) { revert Forbidden(); } _; } constructor(address _controller) { if (_controller == address(0)) { revert ZeroAddress(); } controller = _controller; } /// @inheritdoc IControllable function setDependency(bytes32 _name, address) external virtual onlyController { revert InvalidDependency(_name); } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; import {IControllable} from "./IControllable.sol"; interface IAllowList is IControllable { event Allow(address caller); event Deny(address caller); /// @notice Check whether the given `caller` address is allowed. /// @param caller The caller address. /// @return True if caller is allowed, false if caller is denied. function allowed(address caller) external view returns (bool); /// @notice Check whether the given `caller` address is denied. /// @param caller The caller address. /// @return True if caller is denied, false if caller is allowed. function denied(address caller) external view returns (bool); /// @notice Add a caller address to the allowlist. /// @param caller The caller address. function allow(address caller) external; /// @notice Remove a caller address from the allowlist. /// @param caller The caller address. function deny(address caller) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; interface IAnnotated { /// @notice Get contract name. /// @return Contract name. function NAME() external returns (string memory); /// @notice Get contract version. /// @return Contract version. function VERSION() external returns (string memory); }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; interface ICommonErrors { /// @notice The provided address is the zero address. error ZeroAddress(); /// @notice The attempted action is not allowed. error Forbidden(); /// @notice The requested entity cannot be found. error NotFound(); }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; import {ICommonErrors} from "./ICommonErrors.sol"; interface IControllable is ICommonErrors { /// @notice The dependency with the given `name` is invalid. error InvalidDependency(bytes32 name); /// @notice Get controller address. /// @return Controller address. function controller() external returns (address); /// @notice Set a named dependency to the given contract address. /// @param _name bytes32 name of the dependency to set. /// @param _contract address of the dependency. function setDependency(bytes32 _name, address _contract) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; import {IERC1155MetadataURIUpgradeable} from "openzeppelin-contracts-upgradeable/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol"; import {IERC2981Upgradeable} from "openzeppelin-contracts-upgradeable/interfaces/IERC2981Upgradeable.sol"; import {IAnnotated} from "./IAnnotated.sol"; import {ICommonErrors} from "./ICommonErrors.sol"; interface IEmint1155 is IERC1155MetadataURIUpgradeable, IERC2981Upgradeable, IAnnotated, ICommonErrors { /// @notice Initialize the cloned Emint1155 token contract. /// @param tokens address of tokens module. function initialize(address tokens) external; /// @notice Get address of metadata module. /// @return address of metadata module. function metadata() external view returns (address); /// @notice Get address of royalties module. /// @return address of royalties module. function royalties() external view returns (address); /// @notice Get address of collection owner. This address has no special /// permissions at the contract level, but will be authorized to manage this /// token's collection on storefronts like OpenSea. /// @return address of collection owner. function owner() external view returns (address); /// @notice Get contract metadata URI. Used by marketplaces like OpenSea to /// retrieve information about the token contract/collection. /// @return URI of contract metadata. function contractURI() external view returns (string memory); /// @notice Mint `amount` tokens with ID `id` to `to` address, passing `data`. /// @param to address of token reciever. /// @param id uint256 token ID. /// @param amount uint256 quantity of tokens to mint. /// @param data bytes of data to pass to ERC1155 mint function. function mint(address to, uint256 id, uint256 amount, bytes memory data) external; /// @notice Batch mint tokens to `to` address, passing `data`. /// @param to address of token reciever. /// @param ids uint256[] array of token IDs. /// @param amounts uint256[] array of quantities to mint. /// @param data bytes of data to pass to ERC1155 mint function. function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data) external; /// @notice Burn `amount` of tokens with ID `id` from `account` /// @param account address of token owner. /// @param id uint256 token ID. /// @param amount uint256 quantity of tokens to mint. function burn(address account, uint256 id, uint256 amount) external; /// @notice Batch burn tokens from `account` address. /// @param account address of token owner. /// @param ids uint256[] array of token IDs. /// @param amounts uint256[] array of quantities to burn. function burnBatch(address account, uint256[] memory ids, uint256[] memory amounts) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; import {IAllowList} from "./IAllowList.sol"; import {IAnnotated} from "./IAnnotated.sol"; interface IMinter is IAllowList, IAnnotated { event SetTokens(address oldTokens, address newTokens); /// @notice Mint `amount` tokens with ID `id` to `to` address, passing `data`. /// @param to address of token reciever. /// @param id uint256 token ID. /// @param amount uint256 quantity of tokens to mint. /// @param data bytes of data to pass to ERC1155 mint function. function mint(address to, uint256 id, uint256 amount, bytes memory data) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; interface IPausable { /// @notice Pause the contract. function pause() external; /// @notice Unpause the contract. function unpause() external; }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; import {IAnnotated} from "./IAnnotated.sol"; import {IControllable} from "./IControllable.sol"; import {IPausable} from "./IPausable.sol"; import {IEmint1155} from "./IEmint1155.sol"; interface ITokens is IControllable, IAnnotated { event SetMinter(address oldMinter, address newMinter); event SetDeployer(address oldDeployer, address newDeployer); event SetMetadata(address oldMetadata, address newMetadata); event SetRoyalties(address oldRoyalties, address newRoyalties); event UpdateTokenImplementation(address oldImpl, address newImpl); /// @notice Get address of metadata module. /// @return address of metadata module. function metadata() external view returns (address); /// @notice Get address of royalties module. /// @return address of royalties module. function royalties() external view returns (address); /// @notice Get deployed token for given token ID. /// @param tokenId uint256 token ID. /// @return IEmint1155 interface to deployed Emint1155 token contract. function token(uint256 tokenId) external view returns (IEmint1155); /// @notice Deploy an Emint1155 token. May only be called by token deployer. /// @return address of deployed Emint1155 token contract. function deploy() external returns (address); /// @notice Register a deployed token's address by token ID. /// May only be called by token deployer. /// @param tokenId uint256 token ID /// @param token address of deployed Emint1155 token contract. function register(uint256 tokenId, address token) external; /// @notice Update Emint1155 token implementation contract. Bytecode of this /// implementation contract will be cloned when deploying a new Emint1155. /// May only be called by controller. /// @param implementation address of implementation contract. function updateTokenImplementation(address implementation) external; /// @notice Mint `amount` tokens with ID `id` to `to` address, passing `data`. /// @param to address of token reciever. /// @param id uint256 token ID. /// @param amount uint256 quantity of tokens to mint. /// @param data bytes of data to pass to ERC1155 mint function. function mint(address to, uint256 id, uint256 amount, bytes memory data) external; }
{ "remappings": [ "ds-test/=lib/ds-test/src/", "erc4626-tests/=lib/operator-filter-registry/lib/openzeppelin-contracts/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", "openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", "operator-filter-registry/=lib/operator-filter-registry/src/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"Forbidden","type":"error"},{"inputs":[{"internalType":"bytes32","name":"name","type":"bytes32"}],"name":"InvalidDependency","type":"error"},{"inputs":[],"name":"NotFound","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"caller","type":"address"}],"name":"Allow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"caller","type":"address"}],"name":"Deny","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldTokens","type":"address"},{"indexed":false,"internalType":"address","name":"newTokens","type":"address"}],"name":"SetTokens","type":"event"},{"inputs":[],"name":"NAME","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"allow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"controller","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"denied","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"deny","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_name","type":"bytes32"},{"internalType":"address","name":"_contract","type":"address"}],"name":"setDependency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokens","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5060405161075d38038061075d83398101604081905261002f91610080565b80806001600160a01b0381166100585760405163d92e233d60e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055506100b09050565b60006020828403121561009257600080fd5b81516001600160a01b03811681146100a957600080fd5b9392505050565b61069e806100bf6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063d63a8e1111610066578063d63a8e1114610140578063f77c479114610173578063fc9d96ba14610186578063ff9913e8146101b3578063ffa1ad74146101c657600080fd5b80637238695e146100a3578063731133e9146100b85780639c52a7f1146100cb5780639d63848a146100de578063a3f4df7e1461010e575b600080fd5b6100b66100b136600461049f565b6101ea565b005b6100b66100c63660046104e1565b610279565b6100b66100d93660046105b6565b610317565b6002546100f1906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101336040518060400160405280600681526020016526b4b73a32b960d11b81525081565b604051610105919061061e565b61016361014e3660046105b6565b60016020526000908152604090205460ff1681565b6040519015158152602001610105565b6000546100f1906001600160a01b031681565b6101636101943660046105b6565b6001600160a01b031660009081526001602052604090205460ff161590565b6100b66101c13660046105b6565b61039a565b61013360405180604001604052806005815260200164302e302e3160d81b81525081565b6000546001600160a01b0316331461021557604051631dd2188d60e31b815260040160405180910390fd5b6001600160a01b03811661023c5760405163d92e233d60e01b815260040160405180910390fd5b8165746f6b656e7360d01b03610259576102558161041a565b5050565b60405163580aaaa560e11b81526004810183905260240160405180910390fd5b3360009081526001602052604090205460ff166102a957604051631dd2188d60e31b815260040160405180910390fd5b60025460405163731133e960e01b81526001600160a01b039091169063731133e9906102df908790879087908790600401610631565b600060405180830381600087803b1580156102f957600080fd5b505af115801561030d573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b0316331461034257604051631dd2188d60e31b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b91015b60405180910390a150565b6000546001600160a01b031633146103c557604051631dd2188d60e31b815260040160405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff191690921790915590519182527f16c61d7230298bd24fb91c350e2c76dd94d2e45ebc2c5216331577721b019353910161038f565b600254604080516001600160a01b03928316815291831660208301527f68be50e9ea9adbc012cefe148f13d238e819ab9ec1e69d4b2a6140b748479074910160405180910390a1600280546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461049a57600080fd5b919050565b600080604083850312156104b257600080fd5b823591506104c260208401610483565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156104f757600080fd5b61050085610483565b93506020850135925060408501359150606085013567ffffffffffffffff8082111561052b57600080fd5b818701915087601f83011261053f57600080fd5b813581811115610551576105516104cb565b604051601f8201601f19908116603f01168101908382118183101715610579576105796104cb565b816040528281528a602084870101111561059257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000602082840312156105c857600080fd5b6105d182610483565b9392505050565b6000815180845260005b818110156105fe576020818501810151868301820152016105e2565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006105d160208301846105d8565b60018060a01b038516815283602082015282604082015260806060820152600061065e60808301846105d8565b969550505050505056fea264697066735822122000adb0c2e3291505aaa18ddc3000f44c68ee72fdd231ea458780c88bbed9619164736f6c6343000811003300000000000000000000000011fbbcf6e33913f22d4763731188df806e7bc8b1
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063d63a8e1111610066578063d63a8e1114610140578063f77c479114610173578063fc9d96ba14610186578063ff9913e8146101b3578063ffa1ad74146101c657600080fd5b80637238695e146100a3578063731133e9146100b85780639c52a7f1146100cb5780639d63848a146100de578063a3f4df7e1461010e575b600080fd5b6100b66100b136600461049f565b6101ea565b005b6100b66100c63660046104e1565b610279565b6100b66100d93660046105b6565b610317565b6002546100f1906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101336040518060400160405280600681526020016526b4b73a32b960d11b81525081565b604051610105919061061e565b61016361014e3660046105b6565b60016020526000908152604090205460ff1681565b6040519015158152602001610105565b6000546100f1906001600160a01b031681565b6101636101943660046105b6565b6001600160a01b031660009081526001602052604090205460ff161590565b6100b66101c13660046105b6565b61039a565b61013360405180604001604052806005815260200164302e302e3160d81b81525081565b6000546001600160a01b0316331461021557604051631dd2188d60e31b815260040160405180910390fd5b6001600160a01b03811661023c5760405163d92e233d60e01b815260040160405180910390fd5b8165746f6b656e7360d01b03610259576102558161041a565b5050565b60405163580aaaa560e11b81526004810183905260240160405180910390fd5b3360009081526001602052604090205460ff166102a957604051631dd2188d60e31b815260040160405180910390fd5b60025460405163731133e960e01b81526001600160a01b039091169063731133e9906102df908790879087908790600401610631565b600060405180830381600087803b1580156102f957600080fd5b505af115801561030d573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b0316331461034257604051631dd2188d60e31b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b91015b60405180910390a150565b6000546001600160a01b031633146103c557604051631dd2188d60e31b815260040160405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff191690921790915590519182527f16c61d7230298bd24fb91c350e2c76dd94d2e45ebc2c5216331577721b019353910161038f565b600254604080516001600160a01b03928316815291831660208301527f68be50e9ea9adbc012cefe148f13d238e819ab9ec1e69d4b2a6140b748479074910160405180910390a1600280546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461049a57600080fd5b919050565b600080604083850312156104b257600080fd5b823591506104c260208401610483565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156104f757600080fd5b61050085610483565b93506020850135925060408501359150606085013567ffffffffffffffff8082111561052b57600080fd5b818701915087601f83011261053f57600080fd5b813581811115610551576105516104cb565b604051601f8201601f19908116603f01168101908382118183101715610579576105796104cb565b816040528281528a602084870101111561059257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000602082840312156105c857600080fd5b6105d182610483565b9392505050565b6000815180845260005b818110156105fe576020818501810151868301820152016105e2565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006105d160208301846105d8565b60018060a01b038516815283602082015282604082015260806060820152600061065e60808301846105d8565b969550505050505056fea264697066735822122000adb0c2e3291505aaa18ddc3000f44c68ee72fdd231ea458780c88bbed9619164736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000011fbBCF6e33913F22D4763731188Df806e7Bc8B1
-----Decoded View---------------
Arg [0] : _controller (address): 0x11fbBCF6e33913F22D4763731188Df806e7Bc8B1
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000011fbBCF6e33913F22D4763731188Df806e7Bc8B1
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 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.