Feature Tip: Add private address tag to any address under My Name Tag !
ERC-721
Overview
Max Total Supply
0 CREDENTIALS
Holders
689
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 CREDENTIALSLoading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Minimal Proxy Contract for 0x4b88703b036774100a6b6119672681e4c54d9ac3
Contract Name:
Editions
Compiler Version
v0.8.10+commit.fc410830
Optimization Enabled:
Yes with 2000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity 0.8.10;import {Ownable} from "../../lib/Ownable.sol";import {Pausable} from "../../lib/Pausable.sol";import {Reentrancy} from "../../lib/Reentrancy.sol";import {ERC721, IERC721, IERC165} from "../../lib/ERC721/ERC721.sol";import {IERC721Metadata} from "../../lib/ERC721/interface/IERC721.sol";import {IERC2309} from "../../lib/ERC2309/interface/IERC2309.sol";import {IERC2981} from "../../lib/ERC2981/interface/IERC2981.sol";import {IEditions, IEditionsEvents} from "./interface/IEditions.sol";import {IRenderer} from "./interface/IRenderer.sol";import {ITreasuryConfig} from "../../treasury/interface/ITreasuryConfig.sol";import {IMirrorTreasury} from "../../treasury/interface/IMirrorTreasury.sol";import {IMirrorFeeConfig} from "../../fee-config/MirrorFeeConfig.sol";import {Base64} from "../../lib/Base64.sol";/*** @title Editions* @author MirrorXYZ*/contract Editions isOwnable,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity 0.8.10;interface IOwnableEvents {event OwnershipTransferred(address indexed previousOwner,address indexed newOwner);}contract Ownable is IOwnableEvents {address public owner;address private nextOwner;// modifiersmodifier onlyOwner() {require(isOwner(), "caller is not the owner.");_;}modifier onlyNextOwner() {require(isNextOwner(), "current owner must set caller as next owner.");_;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity 0.8.10;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;// Modifiersmodifier whenNotPaused() {require(!paused, "Pausable: paused");_;}modifier whenPaused() {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity 0.8.10;contract Reentrancy {// ============ Constants ============uint256 internal constant REENTRANCY_NOT_ENTERED = 1;uint256 internal constant REENTRANCY_ENTERED = 2;// ============ Mutable Storage ============uint256 internal reentrancyStatus;// ============ Modifiers ============modifier nonReentrant() {// On the first call to nonReentrant, _notEntered will be truerequire(reentrancyStatus != REENTRANCY_ENTERED, "Reentrant call");// Any calls to nonReentrant after this point will failreentrancyStatus = REENTRANCY_ENTERED;_;// By storing the original value once again, a refund is triggered (see// https://eips.ethereum.org/EIPS/eip2200)reentrancyStatus = REENTRANCY_NOT_ENTERED;}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity 0.8.10;import {IERC721, IERC721Events, IERC721Metadata, IERC721Receiver} from "./interface/IERC721.sol";import {IERC165} from "../ERC165/interface/IERC165.sol";abstract contract ERC165 is IERC165 {function supportsInterface(bytes4 interfaceId)publicviewvirtualoverridereturns (bool){return interfaceId == type(IERC165).interfaceId;}}/*** Based on: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.sol*/contract ERC721 is ERC165, IERC721, IERC721Events {mapping(uint256 => address) internal _owners;mapping(address => uint256) internal _balances;mapping(uint256 => address) private _tokenApprovals;mapping(address => mapping(address => bool)) private _operatorApprovals;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity 0.8.10;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)externalviewreturns (address operator);
1234567891011// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity 0.8.10;interface IERC2309 {event ConsecutiveTransfer(uint256 indexed fromTokenId,uint256 toTokenId,address indexed fromAddress,address indexed toAddress);}
1234567891011121314151617181920212223// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity 0.8.10;/*** @title IERC2981* @notice Interface for the NFT Royalty Standard*/interface IERC2981 {// / bytes4(keccak256("royaltyInfo(uint256,uint256)")) == 0x2a55205a/*** @notice Called with the sale price to determine how much royalty* is owed and to whom.* @param _tokenId - the NFT asset queried for royalty information* @param _salePrice - the sale price of the NFT asset specified by _tokenId* @return receiver - address of who should be sent the royalty payment* @return royaltyAmount - the royalty payment amount for _salePrice*/function royaltyInfo(uint256 _tokenId, uint256 _salePrice)externalviewreturns (address receiver, uint256 royaltyAmount);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity 0.8.10;interface IEditionsEvents {event EditionPurchased(uint256 indexed tokenId,address indexed nftRecipient,uint256 amountPaid);event RoyaltyChange(address indexed oldRoyaltyRecipient,uint256 oldRoyaltyBPS,address indexed newRoyaltyRecipient,uint256 newRoyaltyBPS);event RendererSet(address indexed renderer);event EditionLimitSet(uint256 oldLimit, uint256 newLimit);event Withdrawal(address indexed recipient, uint256 amount, uint256 fee);event FundingRecipientSet(address indexed oldFundingRecipient,address indexed newFundingRecipient
12345678// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity 0.8.10;interface IRenderer {function tokenURI(uint256 tokenId) external view returns (string calldata);function contractURI() external view returns (string calldata);}
12345678// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity 0.8.10;interface ITreasuryConfig {function treasury() external returns (address payable);function distributionModel() external returns (address);}
12345678910111213141516// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity 0.8.10;interface IMirrorTreasury {function transferFunds(address payable to, uint256 value) external;function transferERC20(address token,address to,uint256 value) external;function contributeWithTributary(address tributary) external payable;function contribute(uint256 amount) external payable;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity 0.8.10;import {Ownable} from "../lib/Ownable.sol";interface IMirrorFeeConfig {function maxFee() external returns (uint16);function minFee() external returns (uint16);function isFeeValid(uint16) external view returns (bool);function updateMaxFee(uint16 newFee) external;function updateMinFee(uint16 newFee) external;}/*** @title MirrorFeeConfig* @author MirrorXYZ*/contract MirrorFeeConfig is IMirrorFeeConfig, Ownable {uint16 public override maxFee = 500;uint16 public override minFee = 250;constructor(address owner_) Ownable(owner_) {}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity 0.8.10;/// [MIT License]/// @title Base64/// @notice Provides a function for encoding some bytes in base64/// @author Brecht Devos <brecht@loopring.org>library Base64 {bytes internal constant TABLE ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";/// @notice Encodes some bytes to the base64 representationfunction encode(bytes memory data) internal pure returns (string memory) {uint256 len = data.length;if (len == 0) return "";// multiply by 4/3 rounded upuint256 encodedLen = 4 * ((len + 2) / 3);// Add some extra buffer at the endbytes memory result = new bytes(encodedLen + 32);bytes memory table = TABLE;assembly {let tablePtr := add(table, 1)
123456789101112131415161718// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity 0.8.10;interface IERC165 {function supportsInterface(bytes4 interfaceId) external view returns (bool);}abstract contract ERC165 is IERC165 {function supportsInterface(bytes4 interfaceId)publicviewvirtualoverridereturns (bool){return interfaceId == type(IERC165).interfaceId;}}
12345678910111213141516171819{"optimizer": {"enabled": true,"runs": 2000},"outputSelection": {"*": {"*": ["evm.bytecode","evm.deployedBytecode","devdoc","userdoc","metadata","abi"]}},"libraries": {}}
Contract ABI
API[{"inputs":[{"internalType":"address","name":"factory_","type":"address"},{"internalType":"address","name":"feeConfig_","type":"address"},{"internalType":"address","name":"treasuryConfig_","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":false,"internalType":"uint256","name":"oldLimit","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"EditionLimitSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"nftRecipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountPaid","type":"uint256"}],"name":"EditionPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldFundingRecipient","type":"address"},{"indexed":true,"internalType":"address","name":"newFundingRecipient","type":"address"}],"name":"FundingRecipientSet","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":"price","type":"uint256"}],"name":"PriceSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"renderer","type":"address"}],"name":"RendererSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldRoyaltyRecipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"oldRoyaltyBPS","type":"uint256"},{"indexed":true,"internalType":"address","name":"newRoyaltyRecipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"newRoyaltyBPS","type":"uint256"}],"name":"RoyaltyChange","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":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"Withdrawal","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"allocate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cancelOwnershipTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeConfig","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"string","name":"description_","type":"string"},{"internalType":"string","name":"contentURI_","type":"string"},{"internalType":"string","name":"animationURI_","type":"string"},{"internalType":"string","name":"contractURI_","type":"string"},{"components":[{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"internalType":"struct IEditions.Edition","name":"edition_","type":"tuple"},{"internalType":"bool","name":"paused_","type":"bool"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","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":"limit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"purchase","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"renderer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"royaltyBPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"royaltyRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"price_","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"renderer_","type":"address"}],"name":"setRenderer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"royaltyRecipient_","type":"address"},{"internalType":"uint256","name":"royaltyBPS_","type":"uint256"}],"name":"setRoyaltyInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"nextOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryConfig","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"feeBPS","type":"uint16"},{"internalType":"address","name":"fundingRecipient","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.