Contract 0xc374e479e69fb37b5fed2dba5d56be330026b8f5

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x1749cc8c0edde569600b0e45bdf97401650bded45877bb3d3464dd04d8517346Claim All Royalt...66933892023-01-28 0:41:182 hrs 43 mins ago0x40d8fc9f81acf47063e2dbaf27037d7b56639775 IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO0.2902545887060
0xb0443d6b4a515d194dacdb73d45a79c94c584a683e2f340127e98e5980fe3246Claim All Royalt...66887332023-01-27 17:21:1210 hrs 3 mins ago0x88788e2c2d5f3362a8ab63e6a2e00a742fa946a2 IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO0.2466406758410
0x50e29b46e5288dd8bb23ba95fa81fa0ded7fa71a2700ff59abb58e5fddc6f26dClaim All Royalt...66867082023-01-27 14:09:3613 hrs 15 mins ago0x22f075b5c9a041e973201415d1ad87ccac7527d6 IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO0.9010826194770
0x0e40d3b49838bf2e230999bfd6432cf7fe899f6280c93e5d67a9c984bd32146dClaim All Royalt...66864262023-01-27 13:42:5913 hrs 41 mins ago0xe9bea05cdc535d360ab8fbe98fd27e3e6d38ca29 IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO0.7701972525010
0x09ce71edb796063f40d98da26d066d2d23f8d2a75fef831e51bbbc13d6e8cb05Claim All Royalt...66860102023-01-27 13:03:3914 hrs 21 mins ago0xbf2bf0f8450b04caf81471f1f91fe77e37489ba7 IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO0.3775305448490
0x4c874c27604ad16b4cdc3f5a133a1a9abbd96ffc06095311fb2cbe147a227484Claim All Royalt...66854922023-01-27 12:14:4615 hrs 10 mins ago0xebebb4c0ab9a6a1ba236abd6dc35b723af1ab2be IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO0.726571265690
0x5f1a8c3b93918efdbd54148973af9a2223f1e12358d685a492e7e15617175a5aClaim All Royalt...66853622023-01-27 12:02:2915 hrs 22 mins ago0xc1bd2c696bdd67fbbe5d88a61bcc0335332d2c2a IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO0.5520549412810
0xb920983fe569cf6fab4b6971f690e64376291ae1e5abc8953c4b41a032be9504Claim All Royalt...66851252023-01-27 11:40:0515 hrs 44 mins ago0xe26a1299e02b8a412720ed6ec627ada5a9995de7 IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO0.421161951750
0xe5cec7fe71ebcfb5eb7fbe78ff6892d56a4eb002236a10ccab6eaf22b0be6348Claim All Royalt...66850872023-01-27 11:36:3115 hrs 48 mins ago0x75782c1ba4a0ec6841f9cdf3220548b71e7d3d2b IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO0.2466492372840
0xc8b6572d32fc394122624dbbb0276ce195d7250c66f209f45ea64dcdfbc49996Add Royalties66850112023-01-27 11:29:2015 hrs 55 mins ago0xff0e8dd3c6b10fe952035f40ec1dc9d640daef78 IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f5900 CRO0.177748497271 4,825.532707253
0x8f790f79f0c280b37240632ffd93aa7a891cc5177443fa72bcb3cc3942831405Claim All Royalt...66259602023-01-23 14:34:204 days 12 hrs ago0x69a6a2ba502e014490098de0173317a4a43b5db7 IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO0.3340940908490
0x2f5ad9298f734dd117f8be25c7c8f27aadc020b559d76d761a15110bd017e459Claim All Royalt...66199342023-01-23 5:06:394 days 22 hrs ago0x4e2c295326e0bd4c129e37569d7c7f1762b8e895 IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO0.8579970024690
0x6bf48b7ebe64456a354f2f44f09fa5bb681e62dfdf8a851f1383f7e6397e0c39Claim All Royalt...66159312023-01-22 22:48:025 days 4 hrs ago0xd78f9185b2de62a2d8fa448fdd467c570411565f IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO0.2904690699090
0x8a91a69d08bc0871e10980fe4dd5b18c74c117fc1285c216e797895ae385932fClaim All Royalt...66150242023-01-22 21:22:345 days 6 hrs ago0x986ff86173839ed2203eacffbf764c7acf5b95c6 IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO0.246890821538 4,829.25478325
0x23255ec69e01b66b9438ee94dd14f0001c36ee721b4230dad48b344085acc2d0Claim All Royalt...66089532023-01-22 11:50:225 days 15 hrs ago0x47ec58643aceff47a4a069cecff528b10f235022 IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO0.290578219313 4,829.528135244
0xb05e5a2f9dfab4d00eb27f6018aa7af146d5250ead8f710082e12dc061213842Claim All Royalt...66089492023-01-22 11:49:595 days 15 hrs ago0x6e4a78a4e5762f6a1da4471af945248464d6bb56 IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO0.29057823048 4,829.528320842
0x4c10b48baf9567f59fd44befefbb396294296875d39d6db5f8fd598d53fc98e7Claim All Royalt...65917762023-01-21 8:52:446 days 18 hrs ago0xe99c4c8734126afb7ee2ed8cf405a5e3138edfea IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO0.3342020055720
0xb1824ac44ccf3bbce8ad6c0e49a6832d011f2f46722eb779d1aabac316cd2573Claim All Royalt...65860552023-01-20 23:53:227 days 3 hrs ago0xe26a1299e02b8a412720ed6ec627ada5a9995de7 IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO0.421557627870
0xea663e4f8883dcd97a2e222ba6d3042d52621636ec2e5a53416f3ae89ca48dc1Claim All Royalt...65846312023-01-20 21:38:507 days 5 hrs ago0x99cf732605a37adedb1b908fa332d9178a17a4f5 IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO0.246960734085 4,830.622292581
0x80344d2ec32f607997c3147c9cc0be75885bd1e75f5a63002e3dc99e0401a3dcClaim All Royalt...65677012023-01-19 19:03:398 days 8 hrs ago0x22f075b5c9a041e973201415d1ad87ccac7527d6 IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO0.9020985593930
0x4cd80e3b1e3aa24cc2cfbcb7109cd2000a84e84e82bbc9718ecb2ce1bc02f6c3Claim All Royalt...65641572023-01-19 13:29:308 days 13 hrs ago0x2e8ff7dab72f9a3138e66f11aaf2159cb012d11b IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO3.1300649357370
0x0a012a898866d93b30663fec9600e1e63c31fb7d46442bc21fa195cf0f623315Claim All Royalt...65494332023-01-18 14:20:389 days 13 hrs ago0x12260a17d4a2f262b9be1fb39a282940c5ae9b58 IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO1.2859773628310
0x0b28bd8d88f3760f0ce174a9ea57f94e7038a06029102fa567a32491a662c0c9Claim All Royalt...65372222023-01-17 18:38:0810 days 8 hrs ago0x19e3e29ec58b33b41d8394d338be2a20a6d28176 IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO0.8581641381290
0x4733fb2626ab2c7bc00fe4ce37e1446c65c908f355eda97da3d19f074ce5133aClaim All Royalt...65232902023-01-16 20:45:0011 days 6 hrs ago0x97570aba03745134f74e2f2c8c302061a20dc480 IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO0.2919625235090
0xc45e44b56dc5fa0f786c51eb424d3e25256faba65b0ea05646ff754511eb9951Claim All Royalt...65177712023-01-16 12:04:2411 days 15 hrs ago0x12260a17d4a2f262b9be1fb39a282940c5ae9b58 IN  0xc374e479e69fb37b5fed2dba5d56be330026b8f50 CRO3.0984656631750
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x1749cc8c0edde569600b0e45bdf97401650bded45877bb3d3464dd04d851734666933892023-01-28 0:41:182 hrs 43 mins ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50x40d8fc9f81acf47063e2dbaf27037d7b566397751.8 CRO
0xb0443d6b4a515d194dacdb73d45a79c94c584a683e2f340127e98e5980fe324666887332023-01-27 17:21:1210 hrs 3 mins ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50x88788e2c2d5f3362a8ab63e6a2e00a742fa946a22.15 CRO
0x50e29b46e5288dd8bb23ba95fa81fa0ded7fa71a2700ff59abb58e5fddc6f26d66867082023-01-27 14:09:3613 hrs 15 mins ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50x22f075b5c9a041e973201415d1ad87ccac7527d614.4 CRO
0x0e40d3b49838bf2e230999bfd6432cf7fe899f6280c93e5d67a9c984bd32146d66864262023-01-27 13:42:5913 hrs 41 mins ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50xe9bea05cdc535d360ab8fbe98fd27e3e6d38ca2911.7 CRO
0x09ce71edb796063f40d98da26d066d2d23f8d2a75fef831e51bbbc13d6e8cb0566860102023-01-27 13:03:3914 hrs 21 mins ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50xbf2bf0f8450b04caf81471f1f91fe77e37489ba78.6 CRO
0x4c874c27604ad16b4cdc3f5a133a1a9abbd96ffc06095311fb2cbe147a22748466854922023-01-27 12:14:4615 hrs 10 mins ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50xebebb4c0ab9a6a1ba236abd6dc35b723af1ab2be16.8 CRO
0x5f1a8c3b93918efdbd54148973af9a2223f1e12358d685a492e7e15617175a5a66853622023-01-27 12:02:2915 hrs 22 mins ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50xc1bd2c696bdd67fbbe5d88a61bcc0335332d2c2a7.2 CRO
0xb920983fe569cf6fab4b6971f690e64376291ae1e5abc8953c4b41a032be950466851252023-01-27 11:40:0515 hrs 44 mins ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50xe26a1299e02b8a412720ed6ec627ada5a9995de75.75 CRO
0xe5cec7fe71ebcfb5eb7fbe78ff6892d56a4eb002236a10ccab6eaf22b0be634866850872023-01-27 11:36:3115 hrs 48 mins ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50x75782c1ba4a0ec6841f9cdf3220548b71e7d3d2b5.196 CRO
0x8f790f79f0c280b37240632ffd93aa7a891cc5177443fa72bcb3cc394283140566259602023-01-23 14:34:204 days 12 hrs ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50x69a6a2ba502e014490098de0173317a4a43b5db73.75 CRO
0x2f5ad9298f734dd117f8be25c7c8f27aadc020b559d76d761a15110bd017e45966199342023-01-23 5:06:394 days 22 hrs ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50x4e2c295326e0bd4c129e37569d7c7f1762b8e89556.94 CRO
0x6bf48b7ebe64456a354f2f44f09fa5bb681e62dfdf8a851f1383f7e6397e0c3966159312023-01-22 22:48:025 days 4 hrs ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50xd78f9185b2de62a2d8fa448fdd467c570411565f2.5 CRO
0x8a91a69d08bc0871e10980fe4dd5b18c74c117fc1285c216e797895ae385932f66150242023-01-22 21:22:345 days 6 hrs ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50x986ff86173839ed2203eacffbf764c7acf5b95c610.416 CRO
0x23255ec69e01b66b9438ee94dd14f0001c36ee721b4230dad48b344085acc2d066089532023-01-22 11:50:225 days 15 hrs ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50x47ec58643aceff47a4a069cecff528b10f23502210.832 CRO
0xb05e5a2f9dfab4d00eb27f6018aa7af146d5250ead8f710082e12dc06121384266089492023-01-22 11:49:595 days 15 hrs ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50x6e4a78a4e5762f6a1da4471af945248464d6bb5610.832 CRO
0x4c10b48baf9567f59fd44befefbb396294296875d39d6db5f8fd598d53fc98e765917762023-01-21 8:52:446 days 18 hrs ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50xe99c4c8734126afb7ee2ed8cf405a5e3138edfea3.75 CRO
0xb1824ac44ccf3bbce8ad6c0e49a6832d011f2f46722eb779d1aabac316cd257365860552023-01-20 23:53:227 days 3 hrs ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50xe26a1299e02b8a412720ed6ec627ada5a9995de722.914 CRO
0xea663e4f8883dcd97a2e222ba6d3042d52621636ec2e5a53416f3ae89ca48dc165846312023-01-20 21:38:507 days 5 hrs ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50x99cf732605a37adedb1b908fa332d9178a17a4f544.496 CRO
0x80344d2ec32f607997c3147c9cc0be75885bd1e75f5a63002e3dc99e0401a3dc65677012023-01-19 19:03:398 days 8 hrs ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50x22f075b5c9a041e973201415d1ad87ccac7527d620 CRO
0x4cd80e3b1e3aa24cc2cfbcb7109cd2000a84e84e82bbc9718ecb2ce1bc02f6c365641572023-01-19 13:29:308 days 13 hrs ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50x2e8ff7dab72f9a3138e66f11aaf2159cb012d11b176.746 CRO
0x0a012a898866d93b30663fec9600e1e63c31fb7d46442bc21fa195cf0f62331565494332023-01-18 14:20:389 days 13 hrs ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50x12260a17d4a2f262b9be1fb39a282940c5ae9b588.592 CRO
0x0b28bd8d88f3760f0ce174a9ea57f94e7038a06029102fa567a32491a662c0c965372222023-01-17 18:38:0810 days 8 hrs ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50x19e3e29ec58b33b41d8394d338be2a20a6d281764 CRO
0x4733fb2626ab2c7bc00fe4ce37e1446c65c908f355eda97da3d19f074ce5133a65232902023-01-16 20:45:0011 days 6 hrs ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50x97570aba03745134f74e2f2c8c302061a20dc48010.416 CRO
0xc45e44b56dc5fa0f786c51eb424d3e25256faba65b0ea05646ff754511eb995165177712023-01-16 12:04:2411 days 15 hrs ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50x12260a17d4a2f262b9be1fb39a282940c5ae9b58200.631 CRO
0xf1fed12b6720246166336c12a34ce41830e1f9486ead3beca60c24e6224aab3b65118562023-01-16 2:46:5212 days 38 mins ago 0xc374e479e69fb37b5fed2dba5d56be330026b8f50xa50c408255b1f310861d29e67187f66b0b5b41501.25 CRO
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MutantApesRoyalties

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 6 : MutantApesRoyalties.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.15;

import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol";

abstract contract MutantApes is IERC721Enumerable {
    function tokensOfWallet(address _address)
        external
        view
        virtual
        returns (uint256[] memory);
}

contract MutantApesRoyalties is Ownable {
    MutantApes public mutantApesAdrdress;
    uint256 public mutantApesSupply = 1000;

    mapping(uint256 => uint256) private currentRoyalties;
    uint256 public currentRound = 0;
    uint256 public totalRoyalties;

    mapping(uint256 => mapping(uint256 => uint256)) public claimedRoyalties;

    struct TokenInfo {
        uint256 id;
        uint256 royalties;
    }

    // Events
    event RoyaltiesAdded(uint256 amount);
    event RoyaltiesClaimed(address indexed sender, uint256 amount);

    // Errors
    error AddingNoRewards();

    // Init
    constructor(address mutantApesAdrdress_) {
        mutantApesAdrdress = MutantApes(mutantApesAdrdress_);
    }

    // Royalties
    function addRoyalties() external payable {
        if (msg.value == 0) revert AddingNoRewards();

        totalRoyalties = totalRoyalties + msg.value;
        currentRoyalties[currentRound] += msg.value / mutantApesSupply;

        emit RoyaltiesAdded(msg.value);
    }

    function nextSeason(uint256 newSupply) external onlyOwner {
        mutantApesSupply = newSupply;
        currentRoyalties[currentRound] = 0;
        currentRound++;
        currentRoyalties[currentRound] += (address(this).balance) / mutantApesSupply;
    }

    // Getters
    function getRewardsToken(uint256 id) public view returns (uint256 rewards) {
        rewards +=
            currentRoyalties[currentRound] -
            claimedRoyalties[currentRound][id];
    }

    function getRoyalties(address sender) external view returns (uint256) {
        uint256 balance = 0;

        uint count = mutantApesAdrdress.balanceOf(sender);
        for (uint i = 0; i < count; i++) {
            uint256 tokenId = mutantApesAdrdress.tokenOfOwnerByIndex(sender, i);
            balance += getRewardsToken(tokenId);
        }
        return balance;
    }

    function getRoyaltiesDetails(address sender)
        external
        view
        returns (TokenInfo[] memory)
    {
        uint256[] memory ids = mutantApesAdrdress.tokensOfWallet(sender);
        TokenInfo[] memory tokens = new TokenInfo[](ids.length);

        for (uint i = 0; i < ids.length; i++) {
            uint256 tokenId = ids[i];
            uint256 royalties = getRewardsToken(tokenId);
            tokens[i].id = tokenId;
            tokens[i].royalties = royalties;
        }

        return tokens;
    }

    function getRoundCurrentRoyalties(uint256 round)
        external
        view
        returns (uint256)
    {
        return currentRoyalties[round];
    }

    // Claim
    function claimAllRoyalties() external {
        uint256 rewards = 0;

        uint256[] memory ids = mutantApesAdrdress.tokensOfWallet(_msgSender());
        for (uint i = 0; i < ids.length; ) {
            uint256 tokenId = ids[i];
            unchecked {
                rewards += getRewardsToken(tokenId);
                claimedRoyalties[currentRound][tokenId] = currentRoyalties[
                    currentRound
                ];
                ++i;
            }
        }

        payable(_msgSender()).transfer(rewards);
        emit RoyaltiesClaimed(_msgSender(), rewards);
    }

    function claimRoyalties(uint256[] memory tokensToClaim) external {
        uint256 rewards = 0;

        for (uint256 i = 0; i < tokensToClaim.length; ) {
            unchecked {
                uint256 tokenId = tokensToClaim[i];
                if (mutantApesAdrdress.ownerOf(tokenId) == _msgSender()) {
                    rewards += (getRewardsToken(tokenId));
                    claimedRoyalties[currentRound][tokenId] = currentRoyalties[
                        currentRound
                    ];
                }
                ++i;
            }
        }

        payable(_msgSender()).transfer(rewards);
        emit RoyaltiesClaimed(_msgSender(), rewards);
    }

    function withdrawAll() external onlyOwner {
        (bool success, ) = owner().call{value: address(this).balance}("");
        require(success, "Transfer failed.");
    }
}

File 2 of 6 : Ownable.sol
// 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);
    }
}

File 3 of 6 : IERC721Enumerable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol)

pragma solidity ^0.8.0;

import "../IERC721.sol";

/**
 * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Enumerable is IERC721 {
    /**
     * @dev Returns the total amount of tokens stored by the contract.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns a token ID owned by `owner` at a given `index` of its token list.
     * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);

    /**
     * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.
     * Use along with {totalSupply} to enumerate all tokens.
     */
    function tokenByIndex(uint256 index) external view returns (uint256);
}

File 4 of 6 : Context.sol
// 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;
    }
}

File 5 of 6 : IERC721.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)

pragma solidity ^0.8.0;

import "../../utils/introspection/IERC165.sol";

/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);
}

File 6 of 6 : IERC165.sol
// 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);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"mutantApesAdrdress_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AddingNoRewards","type":"error"},{"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":"uint256","name":"amount","type":"uint256"}],"name":"RoyaltiesAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RoyaltiesClaimed","type":"event"},{"inputs":[],"name":"addRoyalties","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimAllRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokensToClaim","type":"uint256[]"}],"name":"claimRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"claimedRoyalties","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getRewardsToken","outputs":[{"internalType":"uint256","name":"rewards","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getRoundCurrentRoyalties","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"getRoyalties","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"getRoyaltiesDetails","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"royalties","type":"uint256"}],"internalType":"struct MutantApesRoyalties.TokenInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mutantApesAdrdress","outputs":[{"internalType":"contract MutantApes","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mutantApesSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSupply","type":"uint256"}],"name":"nextSeason","outputs":[],"stateMutability":"nonpayable","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":"totalRoyalties","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526103e8600255600060045534801561001b57600080fd5b50604051610fd5380380610fd583398101604081905261003a916100b8565b61004333610068565b600180546001600160a01b0319166001600160a01b03929092169190911790556100e8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100ca57600080fd5b81516001600160a01b03811681146100e157600080fd5b9392505050565b610ede806100f76000396000f3fe6080604052600436106100fe5760003560e01c8063715018a6116100955780638a19c8bc116100645780638a19c8bc146102955780638da5cb5b146102ab578063db4f6d31146102c9578063e96b3055146102d1578063f2fde38b1461030957600080fd5b8063715018a614610228578063853828b61461023d57806386d026081461025257806386fd96941461026857600080fd5b80633cd972ac116100d15780633cd972ac1461018e5780634367eba0146101ae578063547eafd0146101e6578063655e7c36146101fb57600080fd5b806313ece8161461010357806314556a56146101255780632a3913251461015857806334f677a51461016e575b600080fd5b34801561010f57600080fd5b5061012361011e366004610bfd565b610329565b005b34801561013157600080fd5b50610145610140366004610ca8565b610480565b6040519081526020015b60405180910390f35b34801561016457600080fd5b5061014560025481565b34801561017a57600080fd5b50610123610189366004610ccc565b6105ac565b34801561019a57600080fd5b506101456101a9366004610ccc565b610616565b3480156101ba57600080fd5b506001546101ce906001600160a01b031681565b6040516001600160a01b03909116815260200161014f565b3480156101f257600080fd5b50610123610659565b34801561020757600080fd5b50610145610216366004610ccc565b60009081526003602052604090205490565b34801561023457600080fd5b506101236107a7565b34801561024957600080fd5b506101236107bb565b34801561025e57600080fd5b5061014560055481565b34801561027457600080fd5b50610288610283366004610ca8565b610861565b60405161014f9190610ce5565b3480156102a157600080fd5b5061014560045481565b3480156102b757600080fd5b506000546001600160a01b03166101ce565b6101236109d8565b3480156102dd57600080fd5b506101456102ec366004610d34565b600660209081526000928352604080842090915290825290205481565b34801561031557600080fd5b50610123610324366004610ca8565b610a72565b6000805b825181101561041757600083828151811061034a5761034a610d56565b6020026020010151905061035b3390565b6001546040516331a9108f60e11b8152600481018490526001600160a01b039283169290911690636352211e90602401602060405180830381865afa1580156103a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103cc9190610d6c565b6001600160a01b03160361040e576103e381610616565b6004546000908152600360209081526040808320546006835281842086855290925290912055909201915b5060010161032d565b50604051339082156108fc029083906000818181858888f19350505050158015610445573d6000803e3d6000fd5b5060405181815233907f8fbbda19f4a70036f6f585dc4160142a8fa2a20ffb9393d23274f78de4e39888906020015b60405180910390a25050565b6001546040516370a0823160e01b81526001600160a01b03838116600483015260009283928392909116906370a0823190602401602060405180830381865afa1580156104d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f59190610d89565b905060005b818110156105a357600154604051632f745c5960e01b81526001600160a01b038781166004830152602482018490526000921690632f745c5990604401602060405180830381865afa158015610554573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105789190610d89565b905061058381610616565b61058d9085610db8565b935050808061059b90610dd0565b9150506104fa565b50909392505050565b6105b4610ae8565b6002819055600480546000908152600360205260408120819055815491906105db83610dd0565b90915550506002546105ed9047610de9565b6004546000908152600360205260408120805490919061060e908490610db8565b909155505050565b60045460008181526006602090815260408083208584528252808320549383526003909152812054909161064991610e0b565b6106539082610db8565b92915050565b60015460009081906001600160a01b03166375935d11336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381865afa1580156106b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106dc9190810190610e22565b905060005b81518110156107465760008282815181106106fe576106fe610d56565b6020026020010151905061071181610616565b6004546000908152600360209081526040808320546006835281842095845294909152902091909155909201916001016106e1565b50604051339083156108fc029084906000818181858888f19350505050158015610774573d6000803e3d6000fd5b5060405182815233907f8fbbda19f4a70036f6f585dc4160142a8fa2a20ffb9393d23274f78de4e3988890602001610474565b6107af610ae8565b6107b96000610b42565b565b6107c3610ae8565b600080546040516001600160a01b039091169047908381818185875af1925050503d8060008114610810576040519150601f19603f3d011682016040523d82523d6000602084013e610815565b606091505b505090508061085e5760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b60448201526064015b60405180910390fd5b50565b6001546040516375935d1160e01b81526001600160a01b0383811660048301526060926000929116906375935d1190602401600060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108d89190810190610e22565b90506000815167ffffffffffffffff8111156108f6576108f6610b92565b60405190808252806020026020018201604052801561093b57816020015b60408051808201909152600080825260208201528152602001906001900390816109145790505b50905060005b82518110156109d057600083828151811061095e5761095e610d56565b60200260200101519050600061097382610616565b90508184848151811061098857610988610d56565b60200260200101516000018181525050808484815181106109ab576109ab610d56565b60200260200101516020018181525050505080806109c890610dd0565b915050610941565b509392505050565b346000036109f95760405163e3a12f6760e01b815260040160405180910390fd5b34600554610a079190610db8565b600555600254610a179034610de9565b60045460009081526003602052604081208054909190610a38908490610db8565b90915550506040513481527f5a02b40077e797196e633f9dd9c358d21e6c6fce881c924fac5d583fc4359f979060200160405180910390a1565b610a7a610ae8565b6001600160a01b038116610adf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610855565b61085e81610b42565b6000546001600160a01b031633146107b95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610855565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610bd157610bd1610b92565b604052919050565b600067ffffffffffffffff821115610bf357610bf3610b92565b5060051b60200190565b60006020808385031215610c1057600080fd5b823567ffffffffffffffff811115610c2757600080fd5b8301601f81018513610c3857600080fd5b8035610c4b610c4682610bd9565b610ba8565b81815260059190911b82018301908381019087831115610c6a57600080fd5b928401925b82841015610c8857833582529284019290840190610c6f565b979650505050505050565b6001600160a01b038116811461085e57600080fd5b600060208284031215610cba57600080fd5b8135610cc581610c93565b9392505050565b600060208284031215610cde57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b82811015610d2757815180518552860151868501529284019290850190600101610d02565b5091979650505050505050565b60008060408385031215610d4757600080fd5b50508035926020909101359150565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610d7e57600080fd5b8151610cc581610c93565b600060208284031215610d9b57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610dcb57610dcb610da2565b500190565b600060018201610de257610de2610da2565b5060010190565b600082610e0657634e487b7160e01b600052601260045260246000fd5b500490565b600082821015610e1d57610e1d610da2565b500390565b60006020808385031215610e3557600080fd5b825167ffffffffffffffff811115610e4c57600080fd5b8301601f81018513610e5d57600080fd5b8051610e6b610c4682610bd9565b81815260059190911b82018301908381019087831115610e8a57600080fd5b928401925b82841015610c8857835182529284019290840190610e8f56fea2646970667358221220eb4abb8949862f93449179d1ae07082cd18891933620f7b61efb5bee975713b264736f6c634300080f00330000000000000000000000007d89dcc2f35403cfd9b07475826f9a14a340d06a

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007d89dcc2f35403cfd9b07475826f9a14a340d06a

-----Decoded View---------------
Arg [0] : mutantApesAdrdress_ (address): 0x7d89dcc2f35403cfd9b07475826f9a14a340d06a

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007d89dcc2f35403cfd9b07475826f9a14a340d06a


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.