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
TokenTracker
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
13461743 | 1141 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
DroppableEditionsProxy
Compiler Version
v0.8.6+commit.11564f7e
Optimization Enabled:
Yes with 2000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.6; import {IERC2309} from "../../../external/interface/IERC2309.sol"; import {DroppableEditionsStorage} from "./DroppableEditionsStorage.sol"; import {IDroppableEditionsFactory} from "./interface/IDroppableEditionsFactory.sol"; import {InitializedGovernable} from "../../../lib/InitializedGovernable.sol"; import {Pausable} from "../../../lib/Pausable.sol"; import {IDroppableEditionsLogicEvents} from "./interface/IDroppableEditionsLogic.sol"; import {IERC721Events} from "../../../external/interface/IERC721.sol"; /** * @title DroppableEditionsProxy * @author MirrorXYZ */ contract DroppableEditionsProxy is DroppableEditionsStorage, InitializedGovernable, Pausable, IDroppableEditionsLogicEvents, IERC721Events, IERC2309 { event Upgraded(address indexed implementation); event RenounceUpgrade(uint256 blockNumber); /// @notice IERC721Metadata string public name; string public symbol; constructor( address owner_, address governor_, address proxyRegistry_ ) InitializedGovernable(owner_, governor_) Pausable(true) { address logic = IDroppableEditionsFactory(msg.sender).logic(); assembly { sstore(_IMPLEMENTATION_SLOT, logic) } emit Upgraded(logic); proxyRegistry = proxyRegistry_; bytes memory nftMetaData; bytes memory adminData; ( // NFT Metadata nftMetaData, // Edition Data allocation, quantity, price, // Admin data adminData ) = IDroppableEditionsFactory(msg.sender).parameters(); (name, symbol, baseURI, contentHash) = abi.decode( nftMetaData, (string, string, string, bytes32) ); ( operator, merkleRoot, tributary, fundingRecipient, feePercentage, treasuryConfig ) = abi.decode( adminData, (address, bytes32, address, address, uint256, address) ); } fallback() external payable { assembly { let ptr := mload(0x40) calldatacopy(ptr, 0, calldatasize()) let result := delegatecall( gas(), sload(_IMPLEMENTATION_SLOT), ptr, calldatasize(), 0, 0 ) let size := returndatasize() returndatacopy(ptr, 0, size) switch result case 0 { revert(ptr, size) } default { return(ptr, size) } } } // ============ Upgrade Methods ============ /// @notice Get current logic function getLogic() external view returns (address logic) { assembly { logic := sload(_IMPLEMENTATION_SLOT) } } /// @notice Allows governance to change the logic. function changeLogic(address newLogic) external onlyGovernance { require(upgradesAllowed, "cannot upgrade"); // Store the newImplementation on implementation-slot assembly { sstore(_IMPLEMENTATION_SLOT, newLogic) } emit Upgraded(newLogic); } /// @notice opt-out of upgrades function renounceUpgrades() external onlyGovernance { upgradesAllowed = false; emit RenounceUpgrade(block.number); } receive() external payable {} }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.6; interface IERC2309 { event ConsecutiveTransfer( uint256 indexed fromTokenId, uint256 toTokenId, address indexed fromAddress, address indexed toAddress ); }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.6; /** * @title DroppableEditionsStorage * @author MirrorXYZ */ contract DroppableEditionsStorage { // ============ Structs ============ /// @notice Contains general data about the NFT. struct NFTMetadata { string name; string symbol; string baseURI; bytes32 contentHash; } /// @notice Contains information pertaining to the edition spec. struct EditionData { // The maximum number of tokens that can be sold. uint256 quantity; uint256 allocation; // The price at which each token will be sold, in ETH. uint256 price; } /// @notice Contains information about funds disbursement. struct AdminData { // Operator of this contract. address operator; bytes32 merkleRoot; // Address that receive gov tokens via treasury. address tributary; // The account that will receive sales revenue. address payable fundingRecipient; // The fee taken when withdrawing funds uint256 feePercentage; } // ============ Storage for Setup ============ /// @notice NFTMetadata` string public baseURI; bytes32 contentHash; /// @notice EditionData uint256 public allocation; uint256 public quantity; uint256 public price; /// @notice EditionConfig address public operator; address public tributary; address payable public fundingRecipient; uint256 feePercentage; /// @notice Treasury Config, provided at setup, for finding the treasury address. address treasuryConfig; // ============ Mutable Runtime Storage ============ /// @notice `nextTokenId` increments with each token purchased, globally across all editions. uint256 internal nextTokenId; /// @notice The number of tokens that have moved outside of the pre-mint allocation. uint256 internal allocationsTransferred = 0; /** * @notice A special mapping of burned tokens, to take care of burning within * the tokenId range of the allocation. */ mapping(uint256 => bool) internal _burned; // ============ Mutable Internal NFT Storage ============ mapping(uint256 => address) internal _owners; mapping(address => uint256) internal _balances; mapping(uint256 => address) internal _tokenApprovals; mapping(address => mapping(address => bool)) internal _operatorApprovals; /// @notice Only allow one purchase per account. mapping(address => bool) internal purchased; // OpenSea's Proxy Registry address public proxyRegistry; bytes32 public merkleRoot; uint256 currentTokenId; uint256 currentIndexId; uint256 claimedTokens; uint256 nonAllocatedPurchases = 0; mapping(uint256 => bool) public burned; mapping(uint256 => address) public indexToClaimer; mapping(address => uint256) public claimerToAllocation; mapping(bytes32 => bool) public claimed; /** * @dev Storage slot with the address of the current implementation. * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is * validated in the constructor. */ bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; /// @notice Allows to renounce upgrades bool public upgradesAllowed = true; }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.6; interface IDroppableEditionsFactory { function logic() external returns (address); // DroppableEditions data function parameters() external returns ( // NFT Metadata bytes memory nftMetaData, // Edition Data uint256 allocation, uint256 quantity, uint256 price, // Config bytes memory configData ); }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.6; import {Ownable} from "../lib/Ownable.sol"; import {IGovernable} from "../lib/interface/IGovernable.sol"; contract InitializedGovernable is Ownable, IGovernable { // ============ Events ============ event GovernorChanged( address indexed previousGovernor, address indexed newGovernor ); // ============ Mutable Storage ============ // Mirror governance contract. address public override governor; // ============ Modifiers ============ modifier onlyGovernance() { require(isOwner() || isGovernor(), "caller is not governance"); _; } modifier onlyGovernor() { require(isGovernor(), "caller is not governor"); _; } // ============ Constructor ============ constructor(address owner_, address governor_) Ownable(owner_) { _setGovernor(governor_); } // ============ Administration ============ function changeGovernor(address governor_) public override onlyGovernance { _setGovernor(governor_); } // ============ Utility Functions ============ function isGovernor() public view override returns (bool) { return msg.sender == governor; } // ============ Internal Functions ============ function _setGovernor(address governor_) internal { emit GovernorChanged(governor, governor_); governor = governor_; } }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.6; interface IPausableEvents { /// @notice Emitted when the pause is triggered by `account`. event Paused(address account); /// @notice Emitted when the pause is lifted by `account`. event Unpaused(address account); } interface IPausable { function paused() external returns (bool); } contract Pausable is IPausable, IPausableEvents { bool public override paused; // Modifiers modifier whenNotPaused() { require(!paused, "Pausable: paused"); _; } modifier whenPaused() { require(paused, "Pausable: not paused"); _; } /// @notice Initializes the contract in unpaused state. constructor(bool paused_) { paused = paused_; } // ============ Internal Functions ============ function _pause() internal whenNotPaused { paused = true; emit Paused(msg.sender); } function _unpause() internal whenPaused { paused = false; emit Unpaused(msg.sender); } }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.6; interface IDroppableEditionsLogicEvents { event EditionPurchased( uint256 indexed tokenId, uint256 amountPaid, address buyer, address receiver ); event EditionCreatorChanged( address indexed previousCreator, address indexed newCreator ); }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.6; interface IERC721 { function balanceOf(address owner) external view returns (uint256 balance); function ownerOf(uint256 tokenId) external view returns (address owner); function safeTransferFrom( address from, address to, uint256 tokenId ) external; function transferFrom( address from, address to, uint256 tokenId ) external; function approve(address to, uint256 tokenId) external; function getApproved(uint256 tokenId) external view returns (address operator); function setApprovalForAll(address operator, bool _approved) external; function isApprovedForAll(address owner, address operator) external view returns (bool); function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } interface IERC721Events { event Transfer( address indexed from, address indexed to, uint256 indexed tokenId ); event Approval( address indexed owner, address indexed approved, uint256 indexed tokenId ); event ApprovalForAll( address indexed owner, address indexed operator, bool approved ); } interface IERC721Metadata { function name() external view returns (string memory); function symbol() external view returns (string memory); function tokenURI(uint256 tokenId) external view returns (string memory); } interface IERC721Receiver { function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } abstract contract ERC165 is IERC165 { function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } interface IERC721Royalties { function getFeeRecipients(uint256 id) external view returns (address payable[] memory); function getFeeBps(uint256 id) external view returns (uint256[] memory); }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.6; interface IOwnableEvents { event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); } contract Ownable is IOwnableEvents { address public owner; address private nextOwner; // modifiers modifier onlyOwner() { require(isOwner(), "caller is not the owner."); _; } modifier onlyNextOwner() { require(isNextOwner(), "current owner must set caller as next owner."); _; } /** * @dev Initialize contract by setting transaction submitter as initial owner. */ constructor(address owner_) { owner = owner_; emit OwnershipTransferred(address(0), owner); } /** * @dev Initiate ownership transfer by setting nextOwner. */ function transferOwnership(address nextOwner_) external onlyOwner { require(nextOwner_ != address(0), "Next owner is the zero address."); nextOwner = nextOwner_; } /** * @dev Cancel ownership transfer by deleting nextOwner. */ function cancelOwnershipTransfer() external onlyOwner { delete nextOwner; } /** * @dev Accepts ownership transfer by setting owner. */ function acceptOwnership() external onlyNextOwner { delete nextOwner; owner = msg.sender; emit OwnershipTransferred(owner, msg.sender); } /** * @dev Renounce ownership by setting owner to zero address. */ function renounceOwnership() external onlyOwner { _renounceOwnership(); } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return msg.sender == owner; } /** * @dev Returns true if the caller is the next owner. */ function isNextOwner() public view returns (bool) { return msg.sender == nextOwner; } function _setOwner(address previousOwner, address newOwner) internal { owner = newOwner; emit OwnershipTransferred(previousOwner, owner); } function _renounceOwnership() internal { owner = address(0); emit OwnershipTransferred(owner, address(0)); } }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.6; interface IGovernable { function changeGovernor(address governor_) external; function isGovernor() external view returns (bool); function governor() external view returns (address); }
{ "optimizer": { "enabled": true, "runs": 2000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"governor_","type":"address"},{"internalType":"address","name":"proxyRegistry_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousCreator","type":"address"},{"indexed":true,"internalType":"address","name":"newCreator","type":"address"}],"name":"EditionCreatorChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountPaid","type":"uint256"},{"indexed":false,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"}],"name":"EditionPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernor","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernor","type":"address"}],"name":"GovernorChanged","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":"uint256","name":"blockNumber","type":"uint256"}],"name":"RenounceUpgrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allocation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"burned","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cancelOwnershipTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"governor_","type":"address"}],"name":"changeGovernor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLogic","type":"address"}],"name":"changeLogic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"claimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"claimerToAllocation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fundingRecipient","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLogic","outputs":[{"internalType":"address","name":"logic","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"indexToClaimer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isGovernor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNextOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxyRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quantity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceUpgrades","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nextOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tributary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"upgradesAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526000600b819055601755601c805460ff191660011790553480156200002857600080fd5b50604051620015b9380380620015b98339810160408190526200004b916200059a565b601c8054610100600160a81b0319166101006001600160a01b0386811682029290921792839055604051600193879387938593920416906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000b6816200033e565b505080601e60146101000a81548160ff021916908315150217905550506000336001600160a01b031663d7dfa0dd6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200011157600080fd5b505af115801562000126573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014c9190620004f7565b9050807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55806001600160a01b03167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a2601280546001600160a01b0319166001600160a01b03841617905560408051630890357360e41b8152905160609182913391638903573091600480830192600092919082900301818387803b1580156200020057600080fd5b505af115801562000215573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200023f9190810190620005ee565b600491909155600391909155600291909155815191935091506200026d908301602090810190840162000675565b60018190558151601f90600090602090829062000290908290888501906200039a565b50508551620002a5919060208801906200039a565b50508451620002ba919060208701906200039a565b505050505080806020019051810190620002d591906200051e565b600980546001600160a01b03199081166001600160a01b039384161790915560089290925560078054831693821693909317909255600680548216938316939093179092556013929092556005805490911692909116919091179055506200077a945050505050565b601e546040516001600160a01b038084169216907fde4b3f61490b74c0ed6237523974fe299126bbbf8a8a7482fd220104c59b0c8490600090a3601e80546001600160a01b0319166001600160a01b0392909216919091179055565b828054620003a8906200070e565b90600052602060002090601f016020900481019282620003cc576000855562000417565b82601f10620003e757805160ff191683800117855562000417565b8280016001018555821562000417579182015b8281111562000417578251825591602001919060010190620003fa565b506200042592915062000429565b5090565b5b808211156200042557600081556001016200042a565b600082601f8301126200045257600080fd5b81516001600160401b03808211156200046f576200046f6200074b565b604051601f8301601f19908116603f011681019082821181831017156200049a576200049a6200074b565b81604052838152602092508683858801011115620004b757600080fd5b600091505b83821015620004db5785820183015181830184015290820190620004bc565b83821115620004ed5760008385830101525b9695505050505050565b6000602082840312156200050a57600080fd5b8151620005178162000761565b9392505050565b60008060008060008060c087890312156200053857600080fd5b8651620005458162000761565b6020880151604089015191975095506200055f8162000761565b6060880151909450620005728162000761565b608088015160a089015191945092506200058c8162000761565b809150509295509295509295565b600080600060608486031215620005b057600080fd5b8351620005bd8162000761565b6020850151909350620005d08162000761565b6040850151909250620005e38162000761565b809150509250925092565b600080600080600060a086880312156200060757600080fd5b85516001600160401b03808211156200061f57600080fd5b6200062d89838a0162000440565b965060208801519550604088015194506060880151935060808801519150808211156200065957600080fd5b50620006688882890162000440565b9150509295509295909350565b600080600080608085870312156200068c57600080fd5b84516001600160401b0380821115620006a457600080fd5b620006b28883890162000440565b95506020870151915080821115620006c957600080fd5b620006d78883890162000440565b94506040870151915080821115620006ee57600080fd5b50620006fd8782880162000440565b606096909601519497939650505050565b600181811c908216806200072357607f821691505b602082108114156200074557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146200077757600080fd5b50565b610e2f806200078a6000396000f3fe6080604052600436106101d15760003560e01c80636c0360eb116100f7578063a035b1fe11610095578063cc3c0f0611610064578063cc3c0f0614610594578063e4c0aaf4146105c4578063ed459df2146105e4578063f2fde38b14610604576101d8565b8063a035b1fe1461050a578063b50cbd9f14610520578063ba8c65ae14610540578063c7af335214610574576101d8565b806388a17bde116100d157806388a17bde146104955780638da5cb5b146104ab5780638f32d59b146104d057806395d89b41146104f5576101d8565b80636c0360eb14610456578063715018a61461046b57806379ba509714610480576101d8565b806323452b9c1161016f5780633a67d0b01161013e5780633a67d0b0146103ae578063570ca735146103ce5780635c975abb146103ee5780636bc177e814610420576101d8565b806323452b9c1461034c5780632704f9b4146103635780632eb4a7ab1461038357806338b84a0814610399576101d8565b806317fc45e2116101ab57806317fc45e2146102ab5780631a5b6279146102cf5780631bb534ba146102fc57806323250cae1461031c576101d8565b806306fdde031461021e578063099ea2d3146102495780630c340a2414610273576101d8565b366101d857005b604051366000823760008036837f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af43d806000843e81801561021a578184f35b8184fd5b34801561022a57600080fd5b50610233610624565b6040516102409190610d32565b60405180910390f35b34801561025557600080fd5b50601c546102639060ff1681565b6040519015158152602001610240565b34801561027f57600080fd5b50601e54610293906001600160a01b031681565b6040516001600160a01b039091168152602001610240565b3480156102b757600080fd5b506102c160035481565b604051908152602001610240565b3480156102db57600080fd5b506102c16102ea366004610ce9565b601a6020526000908152604090205481565b34801561030857600080fd5b50600754610293906001600160a01b031681565b34801561032857600080fd5b50610263610337366004610d19565b60186020526000908152604090205460ff1681565b34801561035857600080fd5b506103616106b2565b005b34801561036f57600080fd5b50600654610293906001600160a01b031681565b34801561038f57600080fd5b506102c160135481565b3480156103a557600080fd5b50610361610735565b3480156103ba57600080fd5b506103616103c9366004610ce9565b610806565b3480156103da57600080fd5b50600554610293906001600160a01b031681565b3480156103fa57600080fd5b50601e546102639074010000000000000000000000000000000000000000900460ff1681565b34801561042c57600080fd5b5061029361043b366004610d19565b6019602052600090815260409020546001600160a01b031681565b34801561046257600080fd5b50610233610927565b34801561047757600080fd5b50610361610934565b34801561048c57600080fd5b5061036161099d565b3480156104a157600080fd5b506102c160025481565b3480156104b757600080fd5b50601c546102939061010090046001600160a01b031681565b3480156104dc57600080fd5b50601c5461010090046001600160a01b03163314610263565b34801561050157600080fd5b50610233610aa9565b34801561051657600080fd5b506102c160045481565b34801561052c57600080fd5b50601254610293906001600160a01b031681565b34801561054c57600080fd5b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54610293565b34801561058057600080fd5b50601e546001600160a01b03163314610263565b3480156105a057600080fd5b506102636105af366004610d19565b601b6020526000908152604090205460ff1681565b3480156105d057600080fd5b506103616105df366004610ce9565b610ab6565b3480156105f057600080fd5b50601d546001600160a01b03163314610263565b34801561061057600080fd5b5061036161061f366004610ce9565b610b36565b601f805461063190610da5565b80601f016020809104026020016040519081016040528092919081815260200182805461065d90610da5565b80156106aa5780601f1061067f576101008083540402835291602001916106aa565b820191906000526020600020905b81548152906001019060200180831161068d57829003601f168201915b505050505081565b601c5461010090046001600160a01b031633146107165760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064015b60405180910390fd5b601d805473ffffffffffffffffffffffffffffffffffffffff19169055565b601c5461010090046001600160a01b031633148061075d5750601e546001600160a01b031633145b6107a95760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e63650000000000000000604482015260640161070d565b601c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040514381527fe0a18c04eb8e161421aacb1263b683e6a062532260b830dc3e42869d278e504f9060200160405180910390a1565b601c5461010090046001600160a01b031633148061082e5750601e546001600160a01b031633145b61087a5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e63650000000000000000604482015260640161070d565b601c5460ff166108cc5760405162461bcd60e51b815260206004820152600e60248201527f63616e6e6f742075706772616465000000000000000000000000000000000000604482015260640161070d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8190556040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000805461063190610da5565b601c5461010090046001600160a01b031633146109935760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e0000000000000000604482015260640161070d565b61099b610c1a565b565b601d546001600160a01b03163314610a1d5760405162461bcd60e51b815260206004820152602c60248201527f63757272656e74206f776e6572206d757374207365742063616c6c657220617360448201527f206e657874206f776e65722e0000000000000000000000000000000000000000606482015260840161070d565b601d805473ffffffffffffffffffffffffffffffffffffffff19169055601c80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010033818102929092179283905560405191926001600160a01b0391900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3565b6020805461063190610da5565b601c5461010090046001600160a01b0316331480610ade5750601e546001600160a01b031633145b610b2a5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e63650000000000000000604482015260640161070d565b610b3381610c80565b50565b601c5461010090046001600160a01b03163314610b955760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e0000000000000000604482015260640161070d565b6001600160a01b038116610beb5760405162461bcd60e51b815260206004820152601f60248201527f4e657874206f776e657220697320746865207a65726f20616464726573732e00604482015260640161070d565b601d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b601c80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169081905560405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3565b601e546040516001600160a01b038084169216907fde4b3f61490b74c0ed6237523974fe299126bbbf8a8a7482fd220104c59b0c8490600090a3601e805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600060208284031215610cfb57600080fd5b81356001600160a01b0381168114610d1257600080fd5b9392505050565b600060208284031215610d2b57600080fd5b5035919050565b600060208083528351808285015260005b81811015610d5f57858101830151858201604001528201610d43565b81811115610d71576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600181811c90821680610db957607f821691505b60208210811415610df3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b5091905056fea264697066735822122097b1df902181e22605701950373794b4302fcba53cc26fc53386bf686a44201964736f6c63430008060033000000000000000000000000942cbea64876ff0b2e23c0712b37dc0091804e9c0000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b57000000000000000000000000a5409ec958c83c3f309868babaca7c86dcb077c1
Deployed Bytecode
0x6080604052600436106101d15760003560e01c80636c0360eb116100f7578063a035b1fe11610095578063cc3c0f0611610064578063cc3c0f0614610594578063e4c0aaf4146105c4578063ed459df2146105e4578063f2fde38b14610604576101d8565b8063a035b1fe1461050a578063b50cbd9f14610520578063ba8c65ae14610540578063c7af335214610574576101d8565b806388a17bde116100d157806388a17bde146104955780638da5cb5b146104ab5780638f32d59b146104d057806395d89b41146104f5576101d8565b80636c0360eb14610456578063715018a61461046b57806379ba509714610480576101d8565b806323452b9c1161016f5780633a67d0b01161013e5780633a67d0b0146103ae578063570ca735146103ce5780635c975abb146103ee5780636bc177e814610420576101d8565b806323452b9c1461034c5780632704f9b4146103635780632eb4a7ab1461038357806338b84a0814610399576101d8565b806317fc45e2116101ab57806317fc45e2146102ab5780631a5b6279146102cf5780631bb534ba146102fc57806323250cae1461031c576101d8565b806306fdde031461021e578063099ea2d3146102495780630c340a2414610273576101d8565b366101d857005b604051366000823760008036837f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af43d806000843e81801561021a578184f35b8184fd5b34801561022a57600080fd5b50610233610624565b6040516102409190610d32565b60405180910390f35b34801561025557600080fd5b50601c546102639060ff1681565b6040519015158152602001610240565b34801561027f57600080fd5b50601e54610293906001600160a01b031681565b6040516001600160a01b039091168152602001610240565b3480156102b757600080fd5b506102c160035481565b604051908152602001610240565b3480156102db57600080fd5b506102c16102ea366004610ce9565b601a6020526000908152604090205481565b34801561030857600080fd5b50600754610293906001600160a01b031681565b34801561032857600080fd5b50610263610337366004610d19565b60186020526000908152604090205460ff1681565b34801561035857600080fd5b506103616106b2565b005b34801561036f57600080fd5b50600654610293906001600160a01b031681565b34801561038f57600080fd5b506102c160135481565b3480156103a557600080fd5b50610361610735565b3480156103ba57600080fd5b506103616103c9366004610ce9565b610806565b3480156103da57600080fd5b50600554610293906001600160a01b031681565b3480156103fa57600080fd5b50601e546102639074010000000000000000000000000000000000000000900460ff1681565b34801561042c57600080fd5b5061029361043b366004610d19565b6019602052600090815260409020546001600160a01b031681565b34801561046257600080fd5b50610233610927565b34801561047757600080fd5b50610361610934565b34801561048c57600080fd5b5061036161099d565b3480156104a157600080fd5b506102c160025481565b3480156104b757600080fd5b50601c546102939061010090046001600160a01b031681565b3480156104dc57600080fd5b50601c5461010090046001600160a01b03163314610263565b34801561050157600080fd5b50610233610aa9565b34801561051657600080fd5b506102c160045481565b34801561052c57600080fd5b50601254610293906001600160a01b031681565b34801561054c57600080fd5b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54610293565b34801561058057600080fd5b50601e546001600160a01b03163314610263565b3480156105a057600080fd5b506102636105af366004610d19565b601b6020526000908152604090205460ff1681565b3480156105d057600080fd5b506103616105df366004610ce9565b610ab6565b3480156105f057600080fd5b50601d546001600160a01b03163314610263565b34801561061057600080fd5b5061036161061f366004610ce9565b610b36565b601f805461063190610da5565b80601f016020809104026020016040519081016040528092919081815260200182805461065d90610da5565b80156106aa5780601f1061067f576101008083540402835291602001916106aa565b820191906000526020600020905b81548152906001019060200180831161068d57829003601f168201915b505050505081565b601c5461010090046001600160a01b031633146107165760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064015b60405180910390fd5b601d805473ffffffffffffffffffffffffffffffffffffffff19169055565b601c5461010090046001600160a01b031633148061075d5750601e546001600160a01b031633145b6107a95760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e63650000000000000000604482015260640161070d565b601c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040514381527fe0a18c04eb8e161421aacb1263b683e6a062532260b830dc3e42869d278e504f9060200160405180910390a1565b601c5461010090046001600160a01b031633148061082e5750601e546001600160a01b031633145b61087a5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e63650000000000000000604482015260640161070d565b601c5460ff166108cc5760405162461bcd60e51b815260206004820152600e60248201527f63616e6e6f742075706772616465000000000000000000000000000000000000604482015260640161070d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8190556040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000805461063190610da5565b601c5461010090046001600160a01b031633146109935760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e0000000000000000604482015260640161070d565b61099b610c1a565b565b601d546001600160a01b03163314610a1d5760405162461bcd60e51b815260206004820152602c60248201527f63757272656e74206f776e6572206d757374207365742063616c6c657220617360448201527f206e657874206f776e65722e0000000000000000000000000000000000000000606482015260840161070d565b601d805473ffffffffffffffffffffffffffffffffffffffff19169055601c80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010033818102929092179283905560405191926001600160a01b0391900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3565b6020805461063190610da5565b601c5461010090046001600160a01b0316331480610ade5750601e546001600160a01b031633145b610b2a5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e63650000000000000000604482015260640161070d565b610b3381610c80565b50565b601c5461010090046001600160a01b03163314610b955760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e0000000000000000604482015260640161070d565b6001600160a01b038116610beb5760405162461bcd60e51b815260206004820152601f60248201527f4e657874206f776e657220697320746865207a65726f20616464726573732e00604482015260640161070d565b601d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b601c80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169081905560405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3565b601e546040516001600160a01b038084169216907fde4b3f61490b74c0ed6237523974fe299126bbbf8a8a7482fd220104c59b0c8490600090a3601e805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600060208284031215610cfb57600080fd5b81356001600160a01b0381168114610d1257600080fd5b9392505050565b600060208284031215610d2b57600080fd5b5035919050565b600060208083528351808285015260005b81811015610d5f57858101830151858201604001528201610d43565b81811115610d71576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600181811c90821680610db957607f821691505b60208210811415610df3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b5091905056fea264697066735822122097b1df902181e22605701950373794b4302fcba53cc26fc53386bf686a44201964736f6c63430008060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000942cbea64876ff0b2e23c0712b37dc0091804e9c0000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b57000000000000000000000000a5409ec958c83c3f309868babaca7c86dcb077c1
-----Decoded View---------------
Arg [0] : owner_ (address): 0x942cBEa64876Ff0b2e23c0712B37Dc0091804e9c
Arg [1] : governor_ (address): 0x2330ee705fFD040bB0cbA8CB7734Dfe00E7C4b57
Arg [2] : proxyRegistry_ (address): 0xa5409ec958C83C3f309868babACA7c86DCB077c1
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000942cbea64876ff0b2e23c0712b37dc0091804e9c
Arg [1] : 0000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b57
Arg [2] : 000000000000000000000000a5409ec958c83c3f309868babaca7c86dcb077c1
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.