Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 146 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Doodle | 18572300 | 229 days ago | IN | 0 ETH | 0.00699981 | ||||
Doodle | 18446101 | 247 days ago | IN | 0 ETH | 0.00232407 | ||||
Doodle | 18309295 | 266 days ago | IN | 0 ETH | 0.00241922 | ||||
Doodle | 18309287 | 266 days ago | IN | 0 ETH | 0.00172598 | ||||
Doodle | 18112030 | 293 days ago | IN | 0 ETH | 0.00424952 | ||||
Doodle | 18111960 | 293 days ago | IN | 0 ETH | 0.00366996 | ||||
Doodle | 17605460 | 364 days ago | IN | 0 ETH | 0.00282168 | ||||
Doodle | 17601736 | 365 days ago | IN | 0 ETH | 0.00253924 | ||||
Doodle | 17578065 | 368 days ago | IN | 0 ETH | 0.00276686 | ||||
Doodle | 17491107 | 380 days ago | IN | 0 ETH | 0.00291975 | ||||
Doodle | 17095266 | 436 days ago | IN | 0 ETH | 0.01648347 | ||||
Doodle | 17095232 | 436 days ago | IN | 0 ETH | 0.01669382 | ||||
Doodle | 17093821 | 436 days ago | IN | 0 ETH | 0.0063019 | ||||
Doodle | 17075979 | 439 days ago | IN | 0 ETH | 0.01309083 | ||||
Doodle | 17071892 | 439 days ago | IN | 0 ETH | 0.0068008 | ||||
Doodle | 17070749 | 440 days ago | IN | 0 ETH | 0.01090688 | ||||
Doodle | 17069359 | 440 days ago | IN | 0 ETH | 0.00608043 | ||||
Doodle | 17069349 | 440 days ago | IN | 0 ETH | 0.00668088 | ||||
Doodle | 17069010 | 440 days ago | IN | 0 ETH | 0.00653773 | ||||
Doodle | 17068356 | 440 days ago | IN | 0 ETH | 0.01538079 | ||||
Doodle | 17067544 | 440 days ago | IN | 0 ETH | 0.00957194 | ||||
Doodle | 17065086 | 440 days ago | IN | 0 ETH | 0.0056269 | ||||
Doodle | 17063592 | 441 days ago | IN | 0 ETH | 0.01216774 | ||||
Doodle | 17059671 | 441 days ago | IN | 0 ETH | 0.00487481 | ||||
Doodle | 17057646 | 441 days ago | IN | 0 ETH | 0.00432552 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
PADBurn
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /// @author dievardump (https://twitter.com/dievardump) import "@openzeppelin/contracts/utils/Strings.sol"; import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "@manifoldxyz/libraries-solidity/contracts/access/IAdminControl.sol"; import "@manifoldxyz/creator-core-solidity/contracts/core/IERC721CreatorCore.sol"; import "@manifoldxyz/creator-core-solidity/contracts/extensions/CreatorExtension.sol"; import "@manifoldxyz/creator-core-solidity/contracts/extensions/ICreatorExtensionTokenURI.sol"; import {IMetadataHelper} from "./interfaces/IMetadataHelper.sol"; /// @title PADBurn /// @author dievardump (https://twitter.com/dievardump) contract PADBurn is CreatorExtension, ICreatorExtensionTokenURI, ReentrancyGuard { using Strings for uint256; error NotAuthorized(); error InvalidParameter(); error TooManyRequested(); error NotOwnerOfBurnToken(); error SeriesExists(); error UnknownToken(); error InvalidPADID(); error AlreadyMintedOut(); error BurnInactive(); error BurnOngoing(); struct Series { uint64 maxSupply; uint64 bucketSize; uint64 burnAmount; bool active; } struct TokenData { uint32 series; uint32 index; } struct BurnOrder { uint32 series; uint256[] ids; } uint256 public constant BLANK_PAD_MAX_ID = 1349; address public immutable PAD; string public baseURI; address public metadataHelper; mapping(uint256 => Series) public seriesList; mapping(uint256 => TokenData) public tokenData; mapping(uint256 => mapping(uint256 => uint256)) _buckets; /// @dev Only allows approved admins to call the specified function modifier creatorAdminRequired(address creator) { if (!IAdminControl(creator).isAdmin(msg.sender)) { revert NotAuthorized(); } _; } constructor(address pad, string memory newBaseURI) { PAD = pad; seriesList[1] = Series(128, 128, 3, true); seriesList[2] = Series(100, 100, 2, true); seriesList[3] = Series(765, 765, 1, true); baseURI = newBaseURI; } // ============================================================= // Views // ============================================================= function supportsInterface( bytes4 interfaceId ) public view virtual override(CreatorExtension, IERC165) returns (bool) { return interfaceId == type(ICreatorExtensionTokenURI).interfaceId || CreatorExtension.supportsInterface(interfaceId); } /// @notice returns the tokenURI for a tokenId /// @param creator the collection address /// @param tokenId the token id function tokenURI(address creator, uint256 tokenId) external view override returns (string memory) { if (creator != PAD) { revert UnknownToken(); } TokenData memory data = tokenData[tokenId]; if (data.index == 0) { revert UnknownToken(); } string memory uri; address metadataHelper_ = metadataHelper; if (metadataHelper_ != address(0)) { uri = IMetadataHelper(metadataHelper_).tokenURI(creator, tokenId, data.series, data.index); } else { uri = string.concat( baseURI, "/", uint256(data.series).toString(), "/", uint256(data.index).toString(), ".json" ); } return uri; } /// @notice Allows to get tokenData in batch /// @param ids the token ids /// @return an array of token data corresponding to each ids function tokenDataBatch(uint256[] calldata ids) external view returns (TokenData[] memory) { uint256 length = ids.length; TokenData[] memory data = new TokenData[](length); for (uint i; i < length; i++) { data[i] = tokenData[ids[i]]; } return data; } // ============================================================= // Public Interactions // ============================================================= /// @notice allows to transform blank pads into final pads /// @param order the burn order function doodle(BurnOrder calldata order) external nonReentrant { uint32 seriesId = order.series; Series memory series = seriesList[seriesId]; if (!series.active) { revert BurnInactive(); } uint256 length = order.ids.length; if (length == 0 || (length % series.burnAmount) != 0) { revert InvalidParameter(); } uint256 amount = length / series.burnAmount; if (amount > series.bucketSize) { revert TooManyRequested(); } uint256 tokenId; for (uint i; i < length; i++) { tokenId = order.ids[i]; if (tokenId > BLANK_PAD_MAX_ID) { revert InvalidPADID(); } if (msg.sender != IERC721(PAD).ownerOf(tokenId)) { revert NotOwnerOfBurnToken(); } IERC721CreatorCore(PAD).burn(tokenId); } _mintSome(seriesId, amount); } // ============================================================= // Gated Admin // ============================================================= /// @notice allows a creator's admin to create a new series /// @param series the series data function createSeries(uint256 seriesId, Series memory series) external creatorAdminRequired(PAD) { Series memory exists = seriesList[seriesId]; if (exists.burnAmount != 0) { revert SeriesExists(); } if (series.burnAmount == 0) { revert InvalidParameter(); } seriesList[seriesId] = series; } /// @notice allows a PAD admin to change the metadata helper /// @param newMetadataHelper the new metadata helper function setMetadataHelper(address newMetadataHelper) external creatorAdminRequired(PAD) { metadataHelper = newMetadataHelper; } /// @notice allows a PAD admin to change the base URI /// @param newBaseURI the new base uri function setBaseURI(string calldata newBaseURI) external creatorAdminRequired(PAD) { baseURI = newBaseURI; } /// @notice allows a PAD admin to mint all the remaining ids /// @param seriesId the series id to mint the remaining from function mintFromSeries(uint256 seriesId, uint256 amount) external creatorAdminRequired(PAD) { if (seriesList[seriesId].active) { revert BurnOngoing(); } if (amount > seriesList[seriesId].bucketSize) { revert TooManyRequested(); } _mintSome(uint32(seriesId), amount); } /// @notice allows a PAD admin to deactive the burn for given series /// @param series the series ids to deactive burn for function stopBurn(uint256[] calldata series) external creatorAdminRequired(PAD) { for (uint i; i < series.length; i++) { seriesList[series[i]].active = false; } } /// @notice allows a PAD admin to activate the burn for given series /// @param series the series ids to activate burn for function startBurn(uint256[] calldata series) external creatorAdminRequired(PAD) { for (uint i; i < series.length; i++) { seriesList[series[i]].active = true; } } // ============================================================= // Internals // ============================================================= function _mintSome(uint32 seriesId, uint256 amount) internal { uint256 bucketSize = seriesList[seriesId].bucketSize; uint256[] memory tokenIds; if (amount == 1) { tokenIds = new uint256[](1); tokenIds[0] = IERC721CreatorCore(PAD).mintExtension(msg.sender); } else { tokenIds = IERC721CreatorCore(PAD).mintExtensionBatch(msg.sender, uint16(amount)); } for (uint i; i < amount; ) { tokenData[tokenIds[i]] = TokenData( uint32(seriesId), uint32(_pickNextIndex(_buckets[seriesId], bucketSize)) ); unchecked { ++i; --bucketSize; } } seriesList[seriesId].bucketSize = uint64(bucketSize); } function _pickNextIndex( mapping(uint256 => uint256) storage _bucket, uint256 bucketSize ) internal returns (uint256 selectedIndex) { uint256 seed = _seed(bucketSize); uint256 index = 1 + (seed % bucketSize); // select value at index selectedIndex = _bucket[index]; if (selectedIndex == 0) { // if 0, it was never initialized, so value is index selectedIndex = index; } // if the index picked is not the last one if (index != bucketSize) { // swap last value of the bucket into the index that was just picked uint256 temp = _bucket[bucketSize]; if (temp != 0) { _bucket[index] = temp; delete _bucket[bucketSize]; } else { _bucket[index] = bucketSize; } } else if (index != selectedIndex) { // else of the index is the last one, but the value wasn't 0, delete delete _bucket[bucketSize]; } } function _seed(uint256 size) internal view returns (uint256) { return uint256(keccak256(abi.encodePacked(block.difficulty, size))); } } interface IERC721 { function ownerOf(uint256 tokenId) external view returns (address); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /// @author: manifold.xyz import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; /** * @dev Core creator interface */ interface ICreatorCore is IERC165 { event ExtensionRegistered(address indexed extension, address indexed sender); event ExtensionUnregistered(address indexed extension, address indexed sender); event ExtensionBlacklisted(address indexed extension, address indexed sender); event MintPermissionsUpdated(address indexed extension, address indexed permissions, address indexed sender); event RoyaltiesUpdated(uint256 indexed tokenId, address payable[] receivers, uint256[] basisPoints); event DefaultRoyaltiesUpdated(address payable[] receivers, uint256[] basisPoints); event ApproveTransferUpdated(address extension); event ExtensionRoyaltiesUpdated(address indexed extension, address payable[] receivers, uint256[] basisPoints); event ExtensionApproveTransferUpdated(address indexed extension, bool enabled); /** * @dev gets address of all extensions */ function getExtensions() external view returns (address[] memory); /** * @dev add an extension. Can only be called by contract owner or admin. * extension address must point to a contract implementing ICreatorExtension. * Returns True if newly added, False if already added. */ function registerExtension(address extension, string calldata baseURI) external; /** * @dev add an extension. Can only be called by contract owner or admin. * extension address must point to a contract implementing ICreatorExtension. * Returns True if newly added, False if already added. */ function registerExtension(address extension, string calldata baseURI, bool baseURIIdentical) external; /** * @dev add an extension. Can only be called by contract owner or admin. * Returns True if removed, False if already removed. */ function unregisterExtension(address extension) external; /** * @dev blacklist an extension. Can only be called by contract owner or admin. * This function will destroy all ability to reference the metadata of any tokens created * by the specified extension. It will also unregister the extension if needed. * Returns True if removed, False if already removed. */ function blacklistExtension(address extension) external; /** * @dev set the baseTokenURI of an extension. Can only be called by extension. */ function setBaseTokenURIExtension(string calldata uri) external; /** * @dev set the baseTokenURI of an extension. Can only be called by extension. * For tokens with no uri configured, tokenURI will return "uri+tokenId" */ function setBaseTokenURIExtension(string calldata uri, bool identical) external; /** * @dev set the common prefix of an extension. Can only be called by extension. * If configured, and a token has a uri set, tokenURI will return "prefixURI+tokenURI" * Useful if you want to use ipfs/arweave */ function setTokenURIPrefixExtension(string calldata prefix) external; /** * @dev set the tokenURI of a token extension. Can only be called by extension that minted token. */ function setTokenURIExtension(uint256 tokenId, string calldata uri) external; /** * @dev set the tokenURI of a token extension for multiple tokens. Can only be called by extension that minted token. */ function setTokenURIExtension(uint256[] memory tokenId, string[] calldata uri) external; /** * @dev set the baseTokenURI for tokens with no extension. Can only be called by owner/admin. * For tokens with no uri configured, tokenURI will return "uri+tokenId" */ function setBaseTokenURI(string calldata uri) external; /** * @dev set the common prefix for tokens with no extension. Can only be called by owner/admin. * If configured, and a token has a uri set, tokenURI will return "prefixURI+tokenURI" * Useful if you want to use ipfs/arweave */ function setTokenURIPrefix(string calldata prefix) external; /** * @dev set the tokenURI of a token with no extension. Can only be called by owner/admin. */ function setTokenURI(uint256 tokenId, string calldata uri) external; /** * @dev set the tokenURI of multiple tokens with no extension. Can only be called by owner/admin. */ function setTokenURI(uint256[] memory tokenIds, string[] calldata uris) external; /** * @dev set a permissions contract for an extension. Used to control minting. */ function setMintPermissions(address extension, address permissions) external; /** * @dev Configure so transfers of tokens created by the caller (must be extension) gets approval * from the extension before transferring */ function setApproveTransferExtension(bool enabled) external; /** * @dev get the extension of a given token */ function tokenExtension(uint256 tokenId) external view returns (address); /** * @dev Set default royalties */ function setRoyalties(address payable[] calldata receivers, uint256[] calldata basisPoints) external; /** * @dev Set royalties of a token */ function setRoyalties(uint256 tokenId, address payable[] calldata receivers, uint256[] calldata basisPoints) external; /** * @dev Set royalties of an extension */ function setRoyaltiesExtension(address extension, address payable[] calldata receivers, uint256[] calldata basisPoints) external; /** * @dev Get royalites of a token. Returns list of receivers and basisPoints */ function getRoyalties(uint256 tokenId) external view returns (address payable[] memory, uint256[] memory); // Royalty support for various other standards function getFeeRecipients(uint256 tokenId) external view returns (address payable[] memory); function getFeeBps(uint256 tokenId) external view returns (uint[] memory); function getFees(uint256 tokenId) external view returns (address payable[] memory, uint256[] memory); function royaltyInfo(uint256 tokenId, uint256 value) external view returns (address, uint256); /** * @dev Set the default approve transfer contract location. */ function setApproveTransfer(address extension) external; /** * @dev Get the default approve transfer contract location. */ function getApproveTransfer() external view returns (address); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /// @author: manifold.xyz import "./ICreatorCore.sol"; /** * @dev Core ERC721 creator interface */ interface IERC721CreatorCore is ICreatorCore { /** * @dev mint a token with no extension. Can only be called by an admin. * Returns tokenId minted */ function mintBase(address to) external returns (uint256); /** * @dev mint a token with no extension. Can only be called by an admin. * Returns tokenId minted */ function mintBase(address to, string calldata uri) external returns (uint256); /** * @dev batch mint a token with no extension. Can only be called by an admin. * Returns tokenId minted */ function mintBaseBatch(address to, uint16 count) external returns (uint256[] memory); /** * @dev batch mint a token with no extension. Can only be called by an admin. * Returns tokenId minted */ function mintBaseBatch(address to, string[] calldata uris) external returns (uint256[] memory); /** * @dev mint a token. Can only be called by a registered extension. * Returns tokenId minted */ function mintExtension(address to) external returns (uint256); /** * @dev mint a token. Can only be called by a registered extension. * Returns tokenId minted */ function mintExtension(address to, string calldata uri) external returns (uint256); /** * @dev batch mint a token. Can only be called by a registered extension. * Returns tokenIds minted */ function mintExtensionBatch(address to, uint16 count) external returns (uint256[] memory); /** * @dev batch mint a token. Can only be called by a registered extension. * Returns tokenId minted */ function mintExtensionBatch(address to, string[] calldata uris) external returns (uint256[] memory); /** * @dev burn a token. Can only be called by token owner or approved address. * On burn, calls back to the registered extension's onBurn method */ function burn(uint256 tokenId) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /// @author: manifold.xyz import "@openzeppelin/contracts/utils/introspection/ERC165.sol"; /** * @dev Base creator extension variables */ abstract contract CreatorExtension is ERC165 { /** * @dev Legacy extension interface identifiers * * {IERC165-supportsInterface} needs to return 'true' for this interface * in order backwards compatible with older creator contracts */ bytes4 constant internal LEGACY_EXTENSION_INTERFACE = 0x7005caad; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165) returns (bool) { return interfaceId == LEGACY_EXTENSION_INTERFACE || super.supportsInterface(interfaceId); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /// @author: manifold.xyz import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; /** * @dev Implement this if you want your extension to have overloadable URI's */ interface ICreatorExtensionTokenURI is IERC165 { /** * Get the uri for a given creator/tokenId */ function tokenURI(address creator, uint256 tokenId) external view returns (string memory); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /// @author: manifold.xyz import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; /** * @dev Interface for admin control */ interface IAdminControl is IERC165 { event AdminApproved(address indexed account, address indexed sender); event AdminRevoked(address indexed account, address indexed sender); /** * @dev gets address of all admins */ function getAdmins() external view returns (address[] memory); /** * @dev add an admin. Can only be called by contract owner. */ function approveAdmin(address admin) external; /** * @dev remove an admin. Can only be called by contract owner. */ function revokeAdmin(address admin) external; /** * @dev checks whether or not given address is an admin * Returns True if they are */ function isAdmin(address admin) external view returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; uint8 private constant _ADDRESS_LENGTH = 20; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } /** * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation. */ function toHexString(address addr) internal pure returns (string memory) { return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } }
// 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; /// @author dievardump (https://twitter.com/dievardump) interface IMetadataHelper { function tokenURI( address creator, uint256 tokenId, uint32 seriesId, uint32 index ) external view returns (string memory); }
{ "evmVersion": "london", "libraries": {}, "metadata": { "bytecodeHash": "ipfs", "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 200 }, "remappings": [], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"pad","type":"address"},{"internalType":"string","name":"newBaseURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyMintedOut","type":"error"},{"inputs":[],"name":"BurnInactive","type":"error"},{"inputs":[],"name":"BurnOngoing","type":"error"},{"inputs":[],"name":"InvalidPADID","type":"error"},{"inputs":[],"name":"InvalidParameter","type":"error"},{"inputs":[],"name":"NotAuthorized","type":"error"},{"inputs":[],"name":"NotOwnerOfBurnToken","type":"error"},{"inputs":[],"name":"SeriesExists","type":"error"},{"inputs":[],"name":"TooManyRequested","type":"error"},{"inputs":[],"name":"UnknownToken","type":"error"},{"inputs":[],"name":"BLANK_PAD_MAX_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"seriesId","type":"uint256"},{"components":[{"internalType":"uint64","name":"maxSupply","type":"uint64"},{"internalType":"uint64","name":"bucketSize","type":"uint64"},{"internalType":"uint64","name":"burnAmount","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}],"internalType":"struct PADBurn.Series","name":"series","type":"tuple"}],"name":"createSeries","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"series","type":"uint32"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"internalType":"struct PADBurn.BurnOrder","name":"order","type":"tuple"}],"name":"doodle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"metadataHelper","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"seriesId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintFromSeries","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"seriesList","outputs":[{"internalType":"uint64","name":"maxSupply","type":"uint64"},{"internalType":"uint64","name":"bucketSize","type":"uint64"},{"internalType":"uint64","name":"burnAmount","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMetadataHelper","type":"address"}],"name":"setMetadataHelper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"series","type":"uint256[]"}],"name":"startBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"series","type":"uint256[]"}],"name":"stopBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenData","outputs":[{"internalType":"uint32","name":"series","type":"uint32"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"tokenDataBatch","outputs":[{"components":[{"internalType":"uint32","name":"series","type":"uint32"},{"internalType":"uint32","name":"index","type":"uint32"}],"internalType":"struct PADBurn.TokenData[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60a06040523480156200001157600080fd5b50604051620023fd380380620023fd833981016040819052620000349162000388565b6001600081905550816001600160a01b03166080816001600160a01b031681525050604051806080016040528060806001600160401b0316815260200160806001600160401b0316815260200160036001600160401b0316815260200160011515815250600360006001815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548160ff021916908315150217905550905050604051806080016040528060646001600160401b0316815260200160646001600160401b0316815260200160026001600160401b0316815260200160011515815250600360006002815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548160ff02191690831515021790555090505060405180608001604052806102fd6001600160401b031681526020016102fd6001600160401b0316815260200160016001600160401b0316815260200160011515815250600360006003815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548160ff02191690831515021790555090505080600190816200036991906200050d565b505050620005d9565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156200039c57600080fd5b82516001600160a01b0381168114620003b457600080fd5b602084810151919350906001600160401b0380821115620003d457600080fd5b818601915086601f830112620003e957600080fd5b815181811115620003fe57620003fe62000372565b604051601f8201601f19908116603f0116810190838211818310171562000429576200042962000372565b8160405282815289868487010111156200044257600080fd5b600093505b8284101562000466578484018601518185018701529285019262000447565b60008684830101528096505050505050509250929050565b600181811c908216806200049357607f821691505b602082108103620004b457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200050857600081815260208120601f850160051c81016020861015620004e35750805b601f850160051c820191505b818110156200050457828155600101620004ef565b5050505b505050565b81516001600160401b0381111562000529576200052962000372565b62000541816200053a84546200047e565b84620004ba565b602080601f831160018114620005795760008415620005605750858301515b600019600386901b1c1916600185901b17855562000504565b600085815260208120601f198616915b82811015620005aa5788860151825594840194600190910190840162000589565b5085821015620005c95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051611dbb6200064260003960008181610282015281816103460152818161053c0152818161064e015281816108250152818161093101528181610bc801528181610c8201528181610db401528181610ece0152818161111001526111c80152611dbb6000f3fe608060405234801561001057600080fd5b50600436106100ff5760003560e01c806361c121d9116100975780639d376e35116100665780639d376e351461027d578063b4b5b48f146102bc578063e31af5021461030b578063e9dc63751461031e57600080fd5b806361c121d91461022b5780636c0360eb1461023e57806379a34ce614610253578063924194c01461026a57600080fd5b806345622693116100d357806345622693146101df5780634edfb68d146101f25780634f3efef61461020557806355f804b31461021857600080fd5b8062d30b0c1461010457806301ffc9a7146101195780632204b5da1461014157806339fcab3214610161575b600080fd5b61011761011236600461153f565b610331565b005b61012c610127366004611563565b6103fb565b60405190151581526020015b60405180910390f35b61015461014f36600461158d565b610426565b6040516101389190611601565b6101aa61016f36600461165a565b6003602052600090815260409020546001600160401b0380821691600160401b8104821691600160801b82041690600160c01b900460ff1684565b60405161013894939291906001600160401b039485168152928416602084015292166040820152901515606082015260800190565b6101176101ed36600461158d565b610527565b6101176102003660046116e3565b610639565b61011761021336600461158d565b610810565b610117610226366004611781565b61091c565b6101176102393660046117e0565b6109d0565b610246610d11565b604051610138919061183e565b61025c61054581565b604051908152602001610138565b610117610278366004611871565b610d9f565b6102a47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610138565b6102ee6102ca36600461165a565b60046020526000908152604090205463ffffffff8082169164010000000090041682565b6040805163ffffffff938416815292909116602083015201610138565b6002546102a4906001600160a01b031681565b61024661032c366004611893565b610eca565b604051630935e01b60e21b81523360048201527f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b038216906324d7806c90602401602060405180830381865afa158015610397573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bb91906118bf565b6103d85760405163ea8e4eb560e01b815260040160405180910390fd5b50600280546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160e01b0319821663e9dc637560e01b1480610420575061042082611074565b92915050565b6060816000816001600160401b0381111561044357610443611673565b60405190808252806020026020018201604052801561048857816020015b60408051808201909152600080825260208201528152602001906001900390816104615790505b50905060005b8281101561051e57600460008787848181106104ac576104ac6118dc565b6020908102929092013583525081810192909252604090810160002081518083019092525463ffffffff808216835264010000000090910416918101919091528251839083908110610500576105006118dc565b6020026020010181905250808061051690611908565b91505061048e565b50949350505050565b604051630935e01b60e21b81523360048201527f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b038216906324d7806c90602401602060405180830381865afa15801561058d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b191906118bf565b6105ce5760405163ea8e4eb560e01b815260040160405180910390fd5b60005b82811015610633576000600360008686858181106105f1576105f16118dc565b90506020020135815260200190815260200160002060000160186101000a81548160ff021916908315150217905550808061062b90611908565b9150506105d1565b50505050565b604051630935e01b60e21b81523360048201527f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b038216906324d7806c90602401602060405180830381865afa15801561069f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c391906118bf565b6106e05760405163ea8e4eb560e01b815260040160405180910390fd5b600083815260036020908152604091829020825160808101845290546001600160401b038082168352600160401b8204811693830193909352600160801b8104909216928101839052600160c01b90910460ff1615156060820152901561075a576040516339cb981160e21b815260040160405180910390fd5b82604001516001600160401b031660000361078857604051630309cb8760e51b815260040160405180910390fd5b50506000918252600360209081526040928390208251815492840151948401516060909401511515600160c01b0260ff60c01b196001600160401b03958616600160801b021668ffffffffffffffffff60801b19968616600160401b026fffffffffffffffffffffffffffffffff199095169590921694909417929092179390931617179055565b604051630935e01b60e21b81523360048201527f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b038216906324d7806c90602401602060405180830381865afa158015610876573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089a91906118bf565b6108b75760405163ea8e4eb560e01b815260040160405180910390fd5b60005b82811015610633576001600360008686858181106108da576108da6118dc565b90506020020135815260200190815260200160002060000160186101000a81548160ff021916908315150217905550808061091490611908565b9150506108ba565b604051630935e01b60e21b81523360048201527f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b038216906324d7806c90602401602060405180830381865afa158015610982573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a691906118bf565b6109c35760405163ea8e4eb560e01b815260040160405180910390fd5b60016106338385836119a9565b600260005403610a265760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640160405180910390fd5b60026000908155610a3a6020830183611a69565b63ffffffff8116600090815260036020908152604091829020825160808101845290546001600160401b038082168352600160401b8204811693830193909352600160801b810490921692810192909252600160c01b900460ff1615156060820181905291925090610abf5760405163055bfda960e21b815260040160405180910390fd5b6000610ace6020850185611a8f565b915050801580610af457506040820151610af1906001600160401b031682611af5565b15155b15610b1257604051630309cb8760e51b815260040160405180910390fd5b600082604001516001600160401b031682610b2d9190611b09565b905082602001516001600160401b0316811115610b5d57604051638d83cdd760e01b815260040160405180910390fd5b6000805b83811015610cf957610b766020880188611a8f565b82818110610b8657610b866118dc565b905060200201359150610545821115610bb25760405163ea21eb9560e01b815260040160405180910390fd5b6040516331a9108f60e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610c17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3b9190611b1d565b6001600160a01b0316336001600160a01b031614610c6c5760405163f2580d8560e01b815260040160405180910390fd5b604051630852cd8d60e31b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342966c6890602401600060405180830381600087803b158015610cce57600080fd5b505af1158015610ce2573d6000803e3d6000fd5b505050508080610cf190611908565b915050610b61565b50610d0485836110a9565b5050600160005550505050565b60018054610d1e90611921565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4a90611921565b8015610d975780601f10610d6c57610100808354040283529160200191610d97565b820191906000526020600020905b815481529060010190602001808311610d7a57829003601f168201915b505050505081565b604051630935e01b60e21b81523360048201527f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b038216906324d7806c90602401602060405180830381865afa158015610e05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2991906118bf565b610e465760405163ea8e4eb560e01b815260040160405180910390fd5b600083815260036020526040902054600160c01b900460ff1615610e7c576040516214a70960e91b815260040160405180910390fd5b600083815260036020526040902054600160401b90046001600160401b0316821115610ebb57604051638d83cdd760e01b815260040160405180910390fd5b610ec583836110a9565b505050565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614610f1e57604051638698bf3760e01b815260040160405180910390fd5b600082815260046020908152604080832081518083019092525463ffffffff8082168352640100000000909104169181018290529103610f7157604051638698bf3760e01b815260040160405180910390fd5b6002546060906001600160a01b031680156110205782516020840151604051638844bb0960e01b81526001600160a01b0389811660048301526024820189905263ffffffff938416604483015292909116606482015290821690638844bb0990608401600060405180830381865afa158015610ff1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110199190810190611b3a565b915061051e565b6001611035846000015163ffffffff1661134c565b611048856020015163ffffffff1661134c565b60405160200161105a93929190611be0565b604051602081830303815290604052915050949350505050565b60006001600160e01b03198216637005caad60e01b148061042057506301ffc9a760e01b6001600160e01b0319831614610420565b63ffffffff8216600090815260036020526040902054600160401b90046001600160401b0316606060018390036111a957604080516001808252818301909252906020808301908036833701905050604051630525194b60e31b81523360048201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632928ca58906024016020604051808303816000875af1158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190611ca1565b81600081518110611198576111986118dc565b602002602001018181525050611244565b60405163e00aab4b60e01b815233600482015261ffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e00aab4b906044016000604051808303816000875af1158015611219573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112419190810190611cba565b90505b60005b838110156113025760405180604001604052808663ffffffff168152602001611288600560008963ffffffff16815260200190815260200160002086611454565b63ffffffff16815250600460008484815181106112a7576112a76118dc565b60209081029190910181015182528181019290925260400160002082518154939092015163ffffffff9081166401000000000267ffffffffffffffff1990941692169190911791909117905560001990920191600101611247565b505063ffffffff909216600090815260036020526040902080546001600160401b03909316600160401b026fffffffffffffffff0000000000000000199093169290921790915550565b6060816000036113735750506040805180820190915260018152600360fc1b602082015290565b8160005b811561139d578061138781611908565b91506113969050600a83611b09565b9150611377565b6000816001600160401b038111156113b7576113b7611673565b6040519080825280601f01601f1916602001820160405280156113e1576020820181803683370190505b5090505b841561144c576113f6600183611d5f565b9150611403600a86611af5565b61140e906030611d72565b60f81b818381518110611423576114236118dc565b60200101906001600160f81b031916908160001a905350611445600a86611b09565b94506113e5565b949350505050565b604080514460208083019190915281830184905282518083038401815260609092019092528051910120600090600061148d8483611af5565b611498906001611d72565b60008181526020879052604081205494509091508390036114b7578092505b8381146115085760008481526020869052604090205480156114f057600082815260208790526040808220839055868252812055611502565b60008281526020879052604090208590555b5061151f565b82811461151f576000848152602086905260408120555b505092915050565b6001600160a01b038116811461153c57600080fd5b50565b60006020828403121561155157600080fd5b813561155c81611527565b9392505050565b60006020828403121561157557600080fd5b81356001600160e01b03198116811461155c57600080fd5b600080602083850312156115a057600080fd5b82356001600160401b03808211156115b757600080fd5b818501915085601f8301126115cb57600080fd5b8135818111156115da57600080fd5b8660208260051b85010111156115ef57600080fd5b60209290920196919550909350505050565b602080825282518282018190526000919060409081850190868401855b8281101561164d578151805163ffffffff9081168652908701511686850152928401929085019060010161161e565b5091979650505050505050565b60006020828403121561166c57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156116b1576116b1611673565b604052919050565b80356001600160401b03811681146116d057600080fd5b919050565b801515811461153c57600080fd5b60008082840360a08112156116f757600080fd5b833592506080601f198201121561170d57600080fd5b50604051608081018181106001600160401b038211171561173057611730611673565b60405261173f602085016116b9565b815261174d604085016116b9565b602082015261175e606085016116b9565b60408201526080840135611771816116d5565b6060820152919491935090915050565b6000806020838503121561179457600080fd5b82356001600160401b03808211156117ab57600080fd5b818501915085601f8301126117bf57600080fd5b8135818111156117ce57600080fd5b8660208285010111156115ef57600080fd5b6000602082840312156117f257600080fd5b81356001600160401b0381111561180857600080fd5b82016040818503121561155c57600080fd5b60005b8381101561183557818101518382015260200161181d565b50506000910152565b602081526000825180602084015261185d81604085016020870161181a565b601f01601f19169190910160400192915050565b6000806040838503121561188457600080fd5b50508035926020909101359150565b600080604083850312156118a657600080fd5b82356118b181611527565b946020939093013593505050565b6000602082840312156118d157600080fd5b815161155c816116d5565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161191a5761191a6118f2565b5060010190565b600181811c9082168061193557607f821691505b60208210810361195557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610ec557600081815260208120601f850160051c810160208610156119825750805b601f850160051c820191505b818110156119a15782815560010161198e565b505050505050565b6001600160401b038311156119c0576119c0611673565b6119d4836119ce8354611921565b8361195b565b6000601f841160018114611a0857600085156119f05750838201355b600019600387901b1c1916600186901b178355611a62565b600083815260209020601f19861690835b82811015611a395786850135825560209485019460019092019101611a19565b5086821015611a565760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215611a7b57600080fd5b813563ffffffff8116811461155c57600080fd5b6000808335601e19843603018112611aa657600080fd5b8301803591506001600160401b03821115611ac057600080fd5b6020019150600581901b3603821315611ad857600080fd5b9250929050565b634e487b7160e01b600052601260045260246000fd5b600082611b0457611b04611adf565b500690565b600082611b1857611b18611adf565b500490565b600060208284031215611b2f57600080fd5b815161155c81611527565b600060208284031215611b4c57600080fd5b81516001600160401b0380821115611b6357600080fd5b818401915084601f830112611b7757600080fd5b815181811115611b8957611b89611673565b611b9c601f8201601f1916602001611689565b9150808252856020828501011115611bb357600080fd5b61051e81602084016020860161181a565b60008151611bd681856020860161181a565b9290920192915050565b6000808554611bee81611921565b60018281168015611c065760018114611c1b57611c4a565b60ff1984168752821515830287019450611c4a565b8960005260208060002060005b85811015611c415781548a820152908401908201611c28565b50505082870194505b50602f60f81b845287519250611c668382860160208b0161181a565b92820192611c79818501602f60f81b9052565b505050611c896002820185611bc4565b64173539b7b760d91b81526005019695505050505050565b600060208284031215611cb357600080fd5b5051919050565b60006020808385031215611ccd57600080fd5b82516001600160401b0380821115611ce457600080fd5b818501915085601f830112611cf857600080fd5b815181811115611d0a57611d0a611673565b8060051b9150611d1b848301611689565b8181529183018401918481019088841115611d3557600080fd5b938501935b83851015611d5357845182529385019390850190611d3a565b98975050505050505050565b81810381811115610420576104206118f2565b80820180821115610420576104206118f256fea2646970667358221220678f04ed61b03c8fe69ff41ea5d6f2df8bcb2d7ca7bc2c3775f2c12e61318f9a64736f6c63430008110033000000000000000000000000618e9452e407cf5f1435444c73e5c842b210200c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000003061723a2f2f697545743236557459784669513843707a50695f4c4e4f7243365377776937787a5554366e6851326b755100000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ff5760003560e01c806361c121d9116100975780639d376e35116100665780639d376e351461027d578063b4b5b48f146102bc578063e31af5021461030b578063e9dc63751461031e57600080fd5b806361c121d91461022b5780636c0360eb1461023e57806379a34ce614610253578063924194c01461026a57600080fd5b806345622693116100d357806345622693146101df5780634edfb68d146101f25780634f3efef61461020557806355f804b31461021857600080fd5b8062d30b0c1461010457806301ffc9a7146101195780632204b5da1461014157806339fcab3214610161575b600080fd5b61011761011236600461153f565b610331565b005b61012c610127366004611563565b6103fb565b60405190151581526020015b60405180910390f35b61015461014f36600461158d565b610426565b6040516101389190611601565b6101aa61016f36600461165a565b6003602052600090815260409020546001600160401b0380821691600160401b8104821691600160801b82041690600160c01b900460ff1684565b60405161013894939291906001600160401b039485168152928416602084015292166040820152901515606082015260800190565b6101176101ed36600461158d565b610527565b6101176102003660046116e3565b610639565b61011761021336600461158d565b610810565b610117610226366004611781565b61091c565b6101176102393660046117e0565b6109d0565b610246610d11565b604051610138919061183e565b61025c61054581565b604051908152602001610138565b610117610278366004611871565b610d9f565b6102a47f000000000000000000000000618e9452e407cf5f1435444c73e5c842b210200c81565b6040516001600160a01b039091168152602001610138565b6102ee6102ca36600461165a565b60046020526000908152604090205463ffffffff8082169164010000000090041682565b6040805163ffffffff938416815292909116602083015201610138565b6002546102a4906001600160a01b031681565b61024661032c366004611893565b610eca565b604051630935e01b60e21b81523360048201527f000000000000000000000000618e9452e407cf5f1435444c73e5c842b210200c906001600160a01b038216906324d7806c90602401602060405180830381865afa158015610397573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bb91906118bf565b6103d85760405163ea8e4eb560e01b815260040160405180910390fd5b50600280546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160e01b0319821663e9dc637560e01b1480610420575061042082611074565b92915050565b6060816000816001600160401b0381111561044357610443611673565b60405190808252806020026020018201604052801561048857816020015b60408051808201909152600080825260208201528152602001906001900390816104615790505b50905060005b8281101561051e57600460008787848181106104ac576104ac6118dc565b6020908102929092013583525081810192909252604090810160002081518083019092525463ffffffff808216835264010000000090910416918101919091528251839083908110610500576105006118dc565b6020026020010181905250808061051690611908565b91505061048e565b50949350505050565b604051630935e01b60e21b81523360048201527f000000000000000000000000618e9452e407cf5f1435444c73e5c842b210200c906001600160a01b038216906324d7806c90602401602060405180830381865afa15801561058d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b191906118bf565b6105ce5760405163ea8e4eb560e01b815260040160405180910390fd5b60005b82811015610633576000600360008686858181106105f1576105f16118dc565b90506020020135815260200190815260200160002060000160186101000a81548160ff021916908315150217905550808061062b90611908565b9150506105d1565b50505050565b604051630935e01b60e21b81523360048201527f000000000000000000000000618e9452e407cf5f1435444c73e5c842b210200c906001600160a01b038216906324d7806c90602401602060405180830381865afa15801561069f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c391906118bf565b6106e05760405163ea8e4eb560e01b815260040160405180910390fd5b600083815260036020908152604091829020825160808101845290546001600160401b038082168352600160401b8204811693830193909352600160801b8104909216928101839052600160c01b90910460ff1615156060820152901561075a576040516339cb981160e21b815260040160405180910390fd5b82604001516001600160401b031660000361078857604051630309cb8760e51b815260040160405180910390fd5b50506000918252600360209081526040928390208251815492840151948401516060909401511515600160c01b0260ff60c01b196001600160401b03958616600160801b021668ffffffffffffffffff60801b19968616600160401b026fffffffffffffffffffffffffffffffff199095169590921694909417929092179390931617179055565b604051630935e01b60e21b81523360048201527f000000000000000000000000618e9452e407cf5f1435444c73e5c842b210200c906001600160a01b038216906324d7806c90602401602060405180830381865afa158015610876573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089a91906118bf565b6108b75760405163ea8e4eb560e01b815260040160405180910390fd5b60005b82811015610633576001600360008686858181106108da576108da6118dc565b90506020020135815260200190815260200160002060000160186101000a81548160ff021916908315150217905550808061091490611908565b9150506108ba565b604051630935e01b60e21b81523360048201527f000000000000000000000000618e9452e407cf5f1435444c73e5c842b210200c906001600160a01b038216906324d7806c90602401602060405180830381865afa158015610982573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a691906118bf565b6109c35760405163ea8e4eb560e01b815260040160405180910390fd5b60016106338385836119a9565b600260005403610a265760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640160405180910390fd5b60026000908155610a3a6020830183611a69565b63ffffffff8116600090815260036020908152604091829020825160808101845290546001600160401b038082168352600160401b8204811693830193909352600160801b810490921692810192909252600160c01b900460ff1615156060820181905291925090610abf5760405163055bfda960e21b815260040160405180910390fd5b6000610ace6020850185611a8f565b915050801580610af457506040820151610af1906001600160401b031682611af5565b15155b15610b1257604051630309cb8760e51b815260040160405180910390fd5b600082604001516001600160401b031682610b2d9190611b09565b905082602001516001600160401b0316811115610b5d57604051638d83cdd760e01b815260040160405180910390fd5b6000805b83811015610cf957610b766020880188611a8f565b82818110610b8657610b866118dc565b905060200201359150610545821115610bb25760405163ea21eb9560e01b815260040160405180910390fd5b6040516331a9108f60e11b8152600481018390527f000000000000000000000000618e9452e407cf5f1435444c73e5c842b210200c6001600160a01b031690636352211e90602401602060405180830381865afa158015610c17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3b9190611b1d565b6001600160a01b0316336001600160a01b031614610c6c5760405163f2580d8560e01b815260040160405180910390fd5b604051630852cd8d60e31b8152600481018390527f000000000000000000000000618e9452e407cf5f1435444c73e5c842b210200c6001600160a01b0316906342966c6890602401600060405180830381600087803b158015610cce57600080fd5b505af1158015610ce2573d6000803e3d6000fd5b505050508080610cf190611908565b915050610b61565b50610d0485836110a9565b5050600160005550505050565b60018054610d1e90611921565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4a90611921565b8015610d975780601f10610d6c57610100808354040283529160200191610d97565b820191906000526020600020905b815481529060010190602001808311610d7a57829003601f168201915b505050505081565b604051630935e01b60e21b81523360048201527f000000000000000000000000618e9452e407cf5f1435444c73e5c842b210200c906001600160a01b038216906324d7806c90602401602060405180830381865afa158015610e05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2991906118bf565b610e465760405163ea8e4eb560e01b815260040160405180910390fd5b600083815260036020526040902054600160c01b900460ff1615610e7c576040516214a70960e91b815260040160405180910390fd5b600083815260036020526040902054600160401b90046001600160401b0316821115610ebb57604051638d83cdd760e01b815260040160405180910390fd5b610ec583836110a9565b505050565b60607f000000000000000000000000618e9452e407cf5f1435444c73e5c842b210200c6001600160a01b0316836001600160a01b031614610f1e57604051638698bf3760e01b815260040160405180910390fd5b600082815260046020908152604080832081518083019092525463ffffffff8082168352640100000000909104169181018290529103610f7157604051638698bf3760e01b815260040160405180910390fd5b6002546060906001600160a01b031680156110205782516020840151604051638844bb0960e01b81526001600160a01b0389811660048301526024820189905263ffffffff938416604483015292909116606482015290821690638844bb0990608401600060405180830381865afa158015610ff1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110199190810190611b3a565b915061051e565b6001611035846000015163ffffffff1661134c565b611048856020015163ffffffff1661134c565b60405160200161105a93929190611be0565b604051602081830303815290604052915050949350505050565b60006001600160e01b03198216637005caad60e01b148061042057506301ffc9a760e01b6001600160e01b0319831614610420565b63ffffffff8216600090815260036020526040902054600160401b90046001600160401b0316606060018390036111a957604080516001808252818301909252906020808301908036833701905050604051630525194b60e31b81523360048201529091507f000000000000000000000000618e9452e407cf5f1435444c73e5c842b210200c6001600160a01b031690632928ca58906024016020604051808303816000875af1158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190611ca1565b81600081518110611198576111986118dc565b602002602001018181525050611244565b60405163e00aab4b60e01b815233600482015261ffff841660248201527f000000000000000000000000618e9452e407cf5f1435444c73e5c842b210200c6001600160a01b03169063e00aab4b906044016000604051808303816000875af1158015611219573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112419190810190611cba565b90505b60005b838110156113025760405180604001604052808663ffffffff168152602001611288600560008963ffffffff16815260200190815260200160002086611454565b63ffffffff16815250600460008484815181106112a7576112a76118dc565b60209081029190910181015182528181019290925260400160002082518154939092015163ffffffff9081166401000000000267ffffffffffffffff1990941692169190911791909117905560001990920191600101611247565b505063ffffffff909216600090815260036020526040902080546001600160401b03909316600160401b026fffffffffffffffff0000000000000000199093169290921790915550565b6060816000036113735750506040805180820190915260018152600360fc1b602082015290565b8160005b811561139d578061138781611908565b91506113969050600a83611b09565b9150611377565b6000816001600160401b038111156113b7576113b7611673565b6040519080825280601f01601f1916602001820160405280156113e1576020820181803683370190505b5090505b841561144c576113f6600183611d5f565b9150611403600a86611af5565b61140e906030611d72565b60f81b818381518110611423576114236118dc565b60200101906001600160f81b031916908160001a905350611445600a86611b09565b94506113e5565b949350505050565b604080514460208083019190915281830184905282518083038401815260609092019092528051910120600090600061148d8483611af5565b611498906001611d72565b60008181526020879052604081205494509091508390036114b7578092505b8381146115085760008481526020869052604090205480156114f057600082815260208790526040808220839055868252812055611502565b60008281526020879052604090208590555b5061151f565b82811461151f576000848152602086905260408120555b505092915050565b6001600160a01b038116811461153c57600080fd5b50565b60006020828403121561155157600080fd5b813561155c81611527565b9392505050565b60006020828403121561157557600080fd5b81356001600160e01b03198116811461155c57600080fd5b600080602083850312156115a057600080fd5b82356001600160401b03808211156115b757600080fd5b818501915085601f8301126115cb57600080fd5b8135818111156115da57600080fd5b8660208260051b85010111156115ef57600080fd5b60209290920196919550909350505050565b602080825282518282018190526000919060409081850190868401855b8281101561164d578151805163ffffffff9081168652908701511686850152928401929085019060010161161e565b5091979650505050505050565b60006020828403121561166c57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156116b1576116b1611673565b604052919050565b80356001600160401b03811681146116d057600080fd5b919050565b801515811461153c57600080fd5b60008082840360a08112156116f757600080fd5b833592506080601f198201121561170d57600080fd5b50604051608081018181106001600160401b038211171561173057611730611673565b60405261173f602085016116b9565b815261174d604085016116b9565b602082015261175e606085016116b9565b60408201526080840135611771816116d5565b6060820152919491935090915050565b6000806020838503121561179457600080fd5b82356001600160401b03808211156117ab57600080fd5b818501915085601f8301126117bf57600080fd5b8135818111156117ce57600080fd5b8660208285010111156115ef57600080fd5b6000602082840312156117f257600080fd5b81356001600160401b0381111561180857600080fd5b82016040818503121561155c57600080fd5b60005b8381101561183557818101518382015260200161181d565b50506000910152565b602081526000825180602084015261185d81604085016020870161181a565b601f01601f19169190910160400192915050565b6000806040838503121561188457600080fd5b50508035926020909101359150565b600080604083850312156118a657600080fd5b82356118b181611527565b946020939093013593505050565b6000602082840312156118d157600080fd5b815161155c816116d5565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161191a5761191a6118f2565b5060010190565b600181811c9082168061193557607f821691505b60208210810361195557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610ec557600081815260208120601f850160051c810160208610156119825750805b601f850160051c820191505b818110156119a15782815560010161198e565b505050505050565b6001600160401b038311156119c0576119c0611673565b6119d4836119ce8354611921565b8361195b565b6000601f841160018114611a0857600085156119f05750838201355b600019600387901b1c1916600186901b178355611a62565b600083815260209020601f19861690835b82811015611a395786850135825560209485019460019092019101611a19565b5086821015611a565760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215611a7b57600080fd5b813563ffffffff8116811461155c57600080fd5b6000808335601e19843603018112611aa657600080fd5b8301803591506001600160401b03821115611ac057600080fd5b6020019150600581901b3603821315611ad857600080fd5b9250929050565b634e487b7160e01b600052601260045260246000fd5b600082611b0457611b04611adf565b500690565b600082611b1857611b18611adf565b500490565b600060208284031215611b2f57600080fd5b815161155c81611527565b600060208284031215611b4c57600080fd5b81516001600160401b0380821115611b6357600080fd5b818401915084601f830112611b7757600080fd5b815181811115611b8957611b89611673565b611b9c601f8201601f1916602001611689565b9150808252856020828501011115611bb357600080fd5b61051e81602084016020860161181a565b60008151611bd681856020860161181a565b9290920192915050565b6000808554611bee81611921565b60018281168015611c065760018114611c1b57611c4a565b60ff1984168752821515830287019450611c4a565b8960005260208060002060005b85811015611c415781548a820152908401908201611c28565b50505082870194505b50602f60f81b845287519250611c668382860160208b0161181a565b92820192611c79818501602f60f81b9052565b505050611c896002820185611bc4565b64173539b7b760d91b81526005019695505050505050565b600060208284031215611cb357600080fd5b5051919050565b60006020808385031215611ccd57600080fd5b82516001600160401b0380821115611ce457600080fd5b818501915085601f830112611cf857600080fd5b815181811115611d0a57611d0a611673565b8060051b9150611d1b848301611689565b8181529183018401918481019088841115611d3557600080fd5b938501935b83851015611d5357845182529385019390850190611d3a565b98975050505050505050565b81810381811115610420576104206118f2565b80820180821115610420576104206118f256fea2646970667358221220678f04ed61b03c8fe69ff41ea5d6f2df8bcb2d7ca7bc2c3775f2c12e61318f9a64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000618e9452e407cf5f1435444c73e5c842b210200c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000003061723a2f2f697545743236557459784669513843707a50695f4c4e4f7243365377776937787a5554366e6851326b755100000000000000000000000000000000
-----Decoded View---------------
Arg [0] : pad (address): 0x618e9452E407CF5F1435444C73e5C842B210200c
Arg [1] : newBaseURI (string): ar://iuEt26UtYxFiQ8CpzPi_LNOrC6Swwi7xzUT6nhQ2kuQ
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000618e9452e407cf5f1435444c73e5c842b210200c
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000030
Arg [3] : 61723a2f2f697545743236557459784669513843707a50695f4c4e4f72433653
Arg [4] : 77776937787a5554366e6851326b755100000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.