Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Name:
RoyaltyFeeSetter
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
Yes with 888888 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol"; import {IRoyaltyFeeRegistry} from "../interfaces/IRoyaltyFeeRegistry.sol"; import {IOwnable} from "../interfaces/IOwnable.sol"; /** * @title RoyaltyFeeSetter * @notice It is used to allow creators to set royalty parameters in the RoyaltyFeeRegistry. */ contract RoyaltyFeeSetter is Ownable { // ERC721 interfaceID bytes4 public constant INTERFACE_ID_ERC721 = 0x80ac58cd; // ERC1155 interfaceID bytes4 public constant INTERFACE_ID_ERC1155 = 0xd9b67a26; // ERC2981 interfaceID bytes4 public constant INTERFACE_ID_ERC2981 = 0x2a55205a; address public immutable royaltyFeeRegistry; /** * @notice Constructor * @param _royaltyFeeRegistry address of the royalty fee registry */ constructor(address _royaltyFeeRegistry) { royaltyFeeRegistry = _royaltyFeeRegistry; } /** * @notice Update royalty info for collection if admin * @dev Only to be called if there is no setter address * @param collection address of the NFT contract * @param setter address that sets the receiver * @param receiver receiver for the royalty fee * @param fee fee (500 = 5%, 1,000 = 10%) */ function updateRoyaltyInfoForCollectionIfAdmin( address collection, address setter, address receiver, uint256 fee ) external { require(!IERC165(collection).supportsInterface(INTERFACE_ID_ERC2981), "Admin: Must not be ERC2981"); require(msg.sender == IOwnable(collection).admin(), "Admin: Not the admin"); _updateRoyaltyInfoForCollectionIfOwnerOrAdmin(collection, setter, receiver, fee); } /** * @notice Update royalty info for collection if owner * @dev Only to be called if there is no setter address * @param collection address of the NFT contract * @param setter address that sets the receiver * @param receiver receiver for the royalty fee * @param fee fee (500 = 5%, 1,000 = 10%) */ function updateRoyaltyInfoForCollectionIfOwner( address collection, address setter, address receiver, uint256 fee ) external { require(!IERC165(collection).supportsInterface(INTERFACE_ID_ERC2981), "Owner: Must not be ERC2981"); require(msg.sender == IOwnable(collection).owner(), "Owner: Not the owner"); _updateRoyaltyInfoForCollectionIfOwnerOrAdmin(collection, setter, receiver, fee); } /** * @notice Update royalty info for collection * @dev Only to be called if there msg.sender is the setter * @param collection address of the NFT contract * @param setter address that sets the receiver * @param receiver receiver for the royalty fee * @param fee fee (500 = 5%, 1,000 = 10%) */ function updateRoyaltyInfoForCollectionIfSetter( address collection, address setter, address receiver, uint256 fee ) external { (address currentSetter, , ) = IRoyaltyFeeRegistry(royaltyFeeRegistry).royaltyFeeInfoCollection(collection); require(msg.sender == currentSetter, "Setter: Not the setter"); IRoyaltyFeeRegistry(royaltyFeeRegistry).updateRoyaltyInfoForCollection(collection, setter, receiver, fee); } /** * @notice Update royalty info for collection * @dev Can only be called by contract owner (of this) * @param collection address of the NFT contract * @param setter address that sets the receiver * @param receiver receiver for the royalty fee * @param fee fee (500 = 5%, 1,000 = 10%) */ function updateRoyaltyInfoForCollection( address collection, address setter, address receiver, uint256 fee ) external onlyOwner { IRoyaltyFeeRegistry(royaltyFeeRegistry).updateRoyaltyInfoForCollection(collection, setter, receiver, fee); } /** * @notice Update owner of royalty fee registry * @dev Can be used for migration of this royalty fee setter contract * @param _owner new owner address */ function updateOwnerOfRoyaltyFeeRegistry(address _owner) external onlyOwner { IOwnable(royaltyFeeRegistry).transferOwnership(_owner); } /** * @notice Update royalty info for collection * @param _royaltyFeeLimit new royalty fee limit (500 = 5%, 1,000 = 10%) */ function updateRoyaltyFeeLimit(uint256 _royaltyFeeLimit) external onlyOwner { IRoyaltyFeeRegistry(royaltyFeeRegistry).updateRoyaltyFeeLimit(_royaltyFeeLimit); } /** * @notice Check royalty info for collection * @param collection collection address * @return (whether there is a setter (address(0 if not)), * Position * 0: Royalty setter is set in the registry * 1: ERC2981 and no setter * 2: setter can be set using owner() * 3: setter can be set using admin() * 4: setter cannot be set, nor support for ERC2981 */ function checkForCollectionSetter(address collection) external view returns (address, uint8) { (address currentSetter, , ) = IRoyaltyFeeRegistry(royaltyFeeRegistry).royaltyFeeInfoCollection(collection); if (currentSetter != address(0)) { return (currentSetter, 0); } try IERC165(collection).supportsInterface(INTERFACE_ID_ERC2981) returns (bool interfaceSupport) { if (interfaceSupport) { return (address(0), 1); } } catch {} try IOwnable(collection).owner() returns (address setter) { return (setter, 2); } catch { try IOwnable(collection).admin() returns (address setter) { return (setter, 3); } catch { return (address(0), 4); } } } /** * @notice Update information and perform checks before updating royalty fee registry * @param collection address of the NFT contract * @param setter address that sets the receiver * @param receiver receiver for the royalty fee * @param fee fee (500 = 5%, 1,000 = 10%) */ function _updateRoyaltyInfoForCollectionIfOwnerOrAdmin( address collection, address setter, address receiver, uint256 fee ) internal { (address currentSetter, , ) = IRoyaltyFeeRegistry(royaltyFeeRegistry).royaltyFeeInfoCollection(collection); require(currentSetter == address(0), "Setter: Already set"); require( (IERC165(collection).supportsInterface(INTERFACE_ID_ERC721) || IERC165(collection).supportsInterface(INTERFACE_ID_ERC1155)), "Setter: Not ERC721/ERC1155" ); IRoyaltyFeeRegistry(royaltyFeeRegistry).updateRoyaltyInfoForCollection(collection, setter, receiver, fee); } }
// 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/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 IERC165 { /** * @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.0; interface IRoyaltyFeeRegistry { function updateRoyaltyInfoForCollection( address collection, address setter, address receiver, uint256 fee ) external; function updateRoyaltyFeeLimit(uint256 _royaltyFeeLimit) external; function royaltyInfo(address collection, uint256 amount) external view returns (address, uint256); function royaltyFeeInfoCollection(address collection) external view returns ( address, address, uint256 ); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IOwnable { function transferOwnership(address newOwner) external; function owner() external view returns (address); function admin() external view returns (address); }
// 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; } }
{ "optimizer": { "enabled": true, "runs": 888888 }, "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":"_royaltyFeeRegistry","type":"address"}],"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":[],"name":"INTERFACE_ID_ERC1155","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INTERFACE_ID_ERC2981","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INTERFACE_ID_ERC721","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"collection","type":"address"}],"name":"checkForCollectionSetter","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"royaltyFeeRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"updateOwnerOfRoyaltyFeeRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_royaltyFeeLimit","type":"uint256"}],"name":"updateRoyaltyFeeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"collection","type":"address"},{"internalType":"address","name":"setter","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"updateRoyaltyInfoForCollection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"collection","type":"address"},{"internalType":"address","name":"setter","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"updateRoyaltyInfoForCollectionIfAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"collection","type":"address"},{"internalType":"address","name":"setter","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"updateRoyaltyInfoForCollectionIfOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"collection","type":"address"},{"internalType":"address","name":"setter","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"updateRoyaltyInfoForCollectionIfSetter","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b506040516115f23803806115f283398101604081905261002f9161009d565b6100383361004d565b60601b6001600160601b0319166080526100cd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100af57600080fd5b81516001600160a01b03811681146100c657600080fd5b9392505050565b60805160601c6114d661011c600039600081816102470152818161031801528181610479015281816109a501528181610a7e01528181610b2c01528181610e650152610f9301526114d66000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063b9223c9d1161008c578063c16f515611610066578063c16f515614610242578063c54e549714610269578063e72ba456146102aa578063f2fde38b146102bd57600080fd5b8063b9223c9d146101f5578063bbdf9b6814610208578063bc6bc0cd1461021b57600080fd5b8063715018a6116100c8578063715018a6146101745780638da5cb5b1461017c578063ab016670146101bb578063b060dd86146101ce57600080fd5b8063275da5ef146100ef57806333bf6156146101045780633755fa8014610161575b600080fd5b6101026100fd3660046113af565b6102d0565b005b61012b7fd9b67a260000000000000000000000000000000000000000000000000000000081565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b61010261016f3660046113af565b6104dc565b610102610724565b60005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610158565b6101026101c93660046113af565b610738565b61012b7f2a55205a0000000000000000000000000000000000000000000000000000000081565b610102610203366004611465565b61096e565b6101026102163660046113af565b610a1a565b61012b7f80ac58cd0000000000000000000000000000000000000000000000000000000081565b6101967f000000000000000000000000000000000000000000000000000000000000000081565b61027c61027736600461136e565b610ae0565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260ff909116602083015201610158565b6101026102b836600461136e565b610e18565b6101026102cb36600461136e565b610e94565b6040517fe31ef91c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063e31ef91c9060240160606040518083038186803b15801561035c57600080fd5b505afa158015610370573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103949190611400565b50909150503373ffffffffffffffffffffffffffffffffffffffff82161461041d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5365747465723a204e6f7420746865207365747465720000000000000000000060448201526064015b60405180910390fd5b6040517fbbdf9b6800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015285811660248301528481166044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063bbdf9b6890608401600060405180830381600087803b1580156104bd57600080fd5b505af11580156104d1573d6000803e3d6000fd5b505050505050505050565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f2a55205a00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8516906301ffc9a79060240160206040518083038186803b15801561056157600080fd5b505afa158015610575573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105999190611443565b15610600576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4f776e65723a204d757374206e6f7420626520455243323938310000000000006044820152606401610414565b8373ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561064657600080fd5b505afa15801561065a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067e9190611392565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4f776e65723a204e6f7420746865206f776e65720000000000000000000000006044820152606401610414565b61071e84848484610f4b565b50505050565b61072c611278565b61073660006112f9565b565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f2a55205a00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8516906301ffc9a79060240160206040518083038186803b1580156107bd57600080fd5b505afa1580156107d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f59190611443565b1561085c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f41646d696e3a204d757374206e6f7420626520455243323938310000000000006044820152606401610414565b8373ffffffffffffffffffffffffffffffffffffffff1663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b1580156108a257600080fd5b505afa1580156108b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108da9190611392565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f41646d696e3a204e6f74207468652061646d696e0000000000000000000000006044820152606401610414565b610976611278565b6040517fb9223c9d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b9223c9d906024015b600060405180830381600087803b1580156109ff57600080fd5b505af1158015610a13573d6000803e3d6000fd5b5050505050565b610a22611278565b6040517fbbdf9b6800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284811660248301528381166044830152606482018390527f0000000000000000000000000000000000000000000000000000000000000000169063bbdf9b6890608401600060405180830381600087803b158015610ac257600080fd5b505af1158015610ad6573d6000803e3d6000fd5b5050505050505050565b6040517fe31ef91c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152600091829182917f00000000000000000000000000000000000000000000000000000000000000009091169063e31ef91c9060240160606040518083038186803b158015610b7057600080fd5b505afa158015610b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba89190611400565b509091505073ffffffffffffffffffffffffffffffffffffffff811615610bd3579360009350915050565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f2a55205a00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8516906301ffc9a79060240160206040518083038186803b158015610c5857600080fd5b505afa925050508015610ca6575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610ca391810190611443565b60015b610caf57610cc5565b8015610cc357506000946001945092505050565b505b8373ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d0b57600080fd5b505afa925050508015610d59575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610d5691810190611392565b60015b610e0d578373ffffffffffffffffffffffffffffffffffffffff1663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b158015610da357600080fd5b505afa925050508015610df1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610dee91810190611392565b60015b610e02575060009360049350915050565b946003945092505050565b946002945092505050565b610e20611278565b6040517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b906024016109e5565b610e9c611278565b73ffffffffffffffffffffffffffffffffffffffff8116610f3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610414565b610f48816112f9565b50565b6040517fe31ef91c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063e31ef91c9060240160606040518083038186803b158015610fd757600080fd5b505afa158015610feb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100f9190611400565b509091505073ffffffffffffffffffffffffffffffffffffffff811615611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5365747465723a20416c726561647920736574000000000000000000000000006044820152606401610414565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8616906301ffc9a79060240160206040518083038186803b15801561111757600080fd5b505afa15801561112b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114f9190611443565b8061121257506040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fd9b67a2600000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8616906301ffc9a79060240160206040518083038186803b1580156111da57600080fd5b505afa1580156111ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112129190611443565b61041d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f5365747465723a204e6f74204552433732312f455243313135350000000000006044820152606401610414565b60005473ffffffffffffffffffffffffffffffffffffffff163314610736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610414565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561138057600080fd5b813561138b8161147e565b9392505050565b6000602082840312156113a457600080fd5b815161138b8161147e565b600080600080608085870312156113c557600080fd5b84356113d08161147e565b935060208501356113e08161147e565b925060408501356113f08161147e565b9396929550929360600135925050565b60008060006060848603121561141557600080fd5b83516114208161147e565b60208501519093506114318161147e565b80925050604084015190509250925092565b60006020828403121561145557600080fd5b8151801515811461138b57600080fd5b60006020828403121561147757600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f4857600080fdfea264697066735822122040890c522955b3cdb7d99f2e898c3c27e36ecb1a401a8cdf05c7dfab189a5a9064736f6c634300080700330000000000000000000000003e1938d4f0493f5696c50abdf0c887790d883b68
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063b9223c9d1161008c578063c16f515611610066578063c16f515614610242578063c54e549714610269578063e72ba456146102aa578063f2fde38b146102bd57600080fd5b8063b9223c9d146101f5578063bbdf9b6814610208578063bc6bc0cd1461021b57600080fd5b8063715018a6116100c8578063715018a6146101745780638da5cb5b1461017c578063ab016670146101bb578063b060dd86146101ce57600080fd5b8063275da5ef146100ef57806333bf6156146101045780633755fa8014610161575b600080fd5b6101026100fd3660046113af565b6102d0565b005b61012b7fd9b67a260000000000000000000000000000000000000000000000000000000081565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b61010261016f3660046113af565b6104dc565b610102610724565b60005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610158565b6101026101c93660046113af565b610738565b61012b7f2a55205a0000000000000000000000000000000000000000000000000000000081565b610102610203366004611465565b61096e565b6101026102163660046113af565b610a1a565b61012b7f80ac58cd0000000000000000000000000000000000000000000000000000000081565b6101967f0000000000000000000000003e1938d4f0493f5696c50abdf0c887790d883b6881565b61027c61027736600461136e565b610ae0565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260ff909116602083015201610158565b6101026102b836600461136e565b610e18565b6101026102cb36600461136e565b610e94565b6040517fe31ef91c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526000917f0000000000000000000000003e1938d4f0493f5696c50abdf0c887790d883b689091169063e31ef91c9060240160606040518083038186803b15801561035c57600080fd5b505afa158015610370573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103949190611400565b50909150503373ffffffffffffffffffffffffffffffffffffffff82161461041d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5365747465723a204e6f7420746865207365747465720000000000000000000060448201526064015b60405180910390fd5b6040517fbbdf9b6800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015285811660248301528481166044830152606482018490527f0000000000000000000000003e1938d4f0493f5696c50abdf0c887790d883b68169063bbdf9b6890608401600060405180830381600087803b1580156104bd57600080fd5b505af11580156104d1573d6000803e3d6000fd5b505050505050505050565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f2a55205a00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8516906301ffc9a79060240160206040518083038186803b15801561056157600080fd5b505afa158015610575573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105999190611443565b15610600576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4f776e65723a204d757374206e6f7420626520455243323938310000000000006044820152606401610414565b8373ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561064657600080fd5b505afa15801561065a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067e9190611392565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4f776e65723a204e6f7420746865206f776e65720000000000000000000000006044820152606401610414565b61071e84848484610f4b565b50505050565b61072c611278565b61073660006112f9565b565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f2a55205a00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8516906301ffc9a79060240160206040518083038186803b1580156107bd57600080fd5b505afa1580156107d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f59190611443565b1561085c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f41646d696e3a204d757374206e6f7420626520455243323938310000000000006044820152606401610414565b8373ffffffffffffffffffffffffffffffffffffffff1663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b1580156108a257600080fd5b505afa1580156108b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108da9190611392565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f41646d696e3a204e6f74207468652061646d696e0000000000000000000000006044820152606401610414565b610976611278565b6040517fb9223c9d000000000000000000000000000000000000000000000000000000008152600481018290527f0000000000000000000000003e1938d4f0493f5696c50abdf0c887790d883b6873ffffffffffffffffffffffffffffffffffffffff169063b9223c9d906024015b600060405180830381600087803b1580156109ff57600080fd5b505af1158015610a13573d6000803e3d6000fd5b5050505050565b610a22611278565b6040517fbbdf9b6800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284811660248301528381166044830152606482018390527f0000000000000000000000003e1938d4f0493f5696c50abdf0c887790d883b68169063bbdf9b6890608401600060405180830381600087803b158015610ac257600080fd5b505af1158015610ad6573d6000803e3d6000fd5b5050505050505050565b6040517fe31ef91c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152600091829182917f0000000000000000000000003e1938d4f0493f5696c50abdf0c887790d883b689091169063e31ef91c9060240160606040518083038186803b158015610b7057600080fd5b505afa158015610b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba89190611400565b509091505073ffffffffffffffffffffffffffffffffffffffff811615610bd3579360009350915050565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f2a55205a00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8516906301ffc9a79060240160206040518083038186803b158015610c5857600080fd5b505afa925050508015610ca6575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610ca391810190611443565b60015b610caf57610cc5565b8015610cc357506000946001945092505050565b505b8373ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d0b57600080fd5b505afa925050508015610d59575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610d5691810190611392565b60015b610e0d578373ffffffffffffffffffffffffffffffffffffffff1663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b158015610da357600080fd5b505afa925050508015610df1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610dee91810190611392565b60015b610e02575060009360049350915050565b946003945092505050565b946002945092505050565b610e20611278565b6040517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000003e1938d4f0493f5696c50abdf0c887790d883b68169063f2fde38b906024016109e5565b610e9c611278565b73ffffffffffffffffffffffffffffffffffffffff8116610f3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610414565b610f48816112f9565b50565b6040517fe31ef91c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526000917f0000000000000000000000003e1938d4f0493f5696c50abdf0c887790d883b689091169063e31ef91c9060240160606040518083038186803b158015610fd757600080fd5b505afa158015610feb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100f9190611400565b509091505073ffffffffffffffffffffffffffffffffffffffff811615611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5365747465723a20416c726561647920736574000000000000000000000000006044820152606401610414565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8616906301ffc9a79060240160206040518083038186803b15801561111757600080fd5b505afa15801561112b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114f9190611443565b8061121257506040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fd9b67a2600000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8616906301ffc9a79060240160206040518083038186803b1580156111da57600080fd5b505afa1580156111ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112129190611443565b61041d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f5365747465723a204e6f74204552433732312f455243313135350000000000006044820152606401610414565b60005473ffffffffffffffffffffffffffffffffffffffff163314610736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610414565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561138057600080fd5b813561138b8161147e565b9392505050565b6000602082840312156113a457600080fd5b815161138b8161147e565b600080600080608085870312156113c557600080fd5b84356113d08161147e565b935060208501356113e08161147e565b925060408501356113f08161147e565b9396929550929360600135925050565b60008060006060848603121561141557600080fd5b83516114208161147e565b60208501519093506114318161147e565b80925050604084015190509250925092565b60006020828403121561145557600080fd5b8151801515811461138b57600080fd5b60006020828403121561147757600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f4857600080fdfea264697066735822122040890c522955b3cdb7d99f2e898c3c27e36ecb1a401a8cdf05c7dfab189a5a9064736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003e1938d4f0493f5696c50abdf0c887790d883b68
-----Decoded View---------------
Arg [0] : _royaltyFeeRegistry (address): 0x3E1938d4f0493f5696c50AbDf0c887790D883B68
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000003e1938d4f0493f5696c50abdf0c887790d883b68
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.