Contract 0x2fc976811ec3c9408b57a13268b9dcc171c2e932

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xfdac564a7ce6575ca084f63ed6d82f977a238f1033ba37d38d5ef2c188249d90Register Account218313692021-11-26 18:48:469 days 1 hr ago0xb11259213f41145762b43b7da6d7a9bc758c1669 IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.000064082
0x008134c9c7fc1ed4d75412b9f38bfc83590808ac58f5d648df5532a577cc2afbRegister Account218313672021-11-26 18:48:429 days 1 hr ago0x526442ab6902c49ff40c34392bd039cdface2fab IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.000098282
0xbd8a81ab17c71061cf3d44b7717caa1c58bca251a758a9dca551c3011355d6f3Register Account218313652021-11-26 18:48:389 days 1 hr ago0x85b7c19476a242d9df2bd2f221709f8dea27bffe IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.000098282
0x1167b13e7e03274d62266838748adc7f5848618d127f935fcde337b29ec6223aRegister Account218307772021-11-26 18:26:139 days 2 hrs ago0xdddc427f2f52cd0babdd3650f6c59b7e5f374363 IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.000064082
0x40f3ef8ec28c38a8ce6234d43e81b212cfc1257c4de59eb8340ec69257ee717fRegister Account218307672021-11-26 18:25:539 days 2 hrs ago0x85c862e1f5d5399e2f54897fd461543a6fad10fc IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.000064082
0x27a3a49c81300ffe8ab50ded9d8859a75a33ec6681e3b3e9dae5f0f09225bde9Register Account218307142021-11-26 18:24:029 days 2 hrs ago0x1f350ffd3fe406d600290fb1cd80c9e3675d4118 IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.00096087
0xa6e47d8eaec016f62a63ed0a6fb12f428877420c09fedf5f3eb1d09957dd7f13Register Account218307052021-11-26 18:23:449 days 2 hrs ago0xa47668c84b8271008d80f5e307a0884378eddab8 IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.00096087
0x966a3745b2d50c80113dff2bc42a2ccffad747271f3d93fc0e1ddb32508865fdRegister Account218305532021-11-26 18:18:329 days 2 hrs ago0x7e5794065d92952a5ec9f58a42aba06ffe808749 IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.001609451993
0x8330af9272b69957a9cea7bdaea97df13111179551c53a8127fdfaf64fa63093Register Account218305262021-11-26 18:17:329 days 2 hrs ago0x7e5794065d92952a5ec9f58a42aba06ffe808749 IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.001609451993
0xdcbe93ab0bf4692602fd424dcd83a53205a6cc2bca529d8b30b62e3cfbf40405Register Account218304762021-11-26 18:14:129 days 2 hrs ago0x153f76afc1f7e0f6bb5688494b0fbbd1fae3fb01 IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.00147423
0x039452ebe6df866a27daf3798bedea6fe5e51984982212fa66c37fef5b374a3bRegister Account218304762021-11-26 18:14:129 days 2 hrs ago0xa47668c84b8271008d80f5e307a0884378eddab8 IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.00147387
0xabd3bb97613c762239eccc78a043187cb329722e8d35b05d924256d6142688caRegister Account218304662021-11-26 18:13:329 days 2 hrs ago0x75757d9a8b6b1e3a34d01eb58d573884be7828cc IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.00147423
0x16061eb00769f2dd9691270d3e87fd21d00407113973c80023398396233ba0f2Register Account218304662021-11-26 18:13:329 days 2 hrs ago0xd7a54c5830aa7c5cc353ae0a04e6344783e7799a IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.00147423
0x34c0c969842843fdc0a1f65ed592d84fb691f3656431603baa65d00aec3439b9Register Account218304572021-11-26 18:13:049 days 2 hrs ago0x41a2b496c340d0e63ed076d66cf39788a8124984 IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.00096123
0x585116e09522693893ecb0801c2b59919c2fb737ac54437c2ff7fe1f1d518fa7Register Account218304542021-11-26 18:12:589 days 2 hrs ago0xe4a9aa783414ae948ed3e010250dd07c530b2d42 IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.00147423
0x89fd2a377436dcf413ce4364c1e278364ccbb0d9af8451a1540fdca3d3c2d70dRegister Account218304522021-11-26 18:12:549 days 2 hrs ago0x41a2b496c340d0e63ed076d66cf39788a8124984 IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.00147423
0xbc6c9b4832b5f0be8e96311a35c979927db5fbda0f576f25eb3458e92bc4f9a2Register Account218304422021-11-26 18:12:349 days 2 hrs ago0x38b3111fb46001e7b1a9ee501d5d5564506c4006 IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.00147423
0x0884acd5490b3890df68f94480f0d42c0df721159685271279f277e8fa75e60eRegister Account218304412021-11-26 18:12:329 days 2 hrs ago0xcce9379f5077fb43b368b2702acec617b3994487 IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.00147423
0x4e46177cddfaaa6de5625dcb06cfabc1cec9f58f06b7330d8e1956d447b55108Register Account218304302021-11-26 18:12:109 days 2 hrs ago0xde1bfa096478a3991bbed327f2cc18f668c1d76f IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.00147423
0x3dd760542829fcbc08fff8b3593dcae189916991c07015c32b654a8392ed5cb8Register Account218304252021-11-26 18:12:009 days 2 hrs ago0x755e41949c0b57381c810ef0c4edd7056cb5386e IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.00147423
0xd7aa30f2fc1aad5a5edcaafd5f3e0c49188bceeffafb5a3fa1571fc0a277f389Register Account218304212021-11-26 18:11:529 days 2 hrs ago0xcbfb73272d5fdcc2ed9d3f592a7bdc27791b6da7 IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.00147423
0x7bcb47cf489ea9ceb87aafb7831ec8dea521ed02bea4194e7de29bc5da96d8efRegister Account218304152021-11-26 18:11:409 days 2 hrs ago0x8e429a59ec90de785efb3e14bad123ef1dd1c72a IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.00147423
0xc874611c937f0734377fd933b405daf77f772de9dae9247bc32fab14500eb792Register Account218304112021-11-26 18:11:329 days 2 hrs ago0x44e5a669cf44726254450e8ddd954e762b60f250 IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.00147423
0xee091c9827f367f57434d205e22e36687e5f9135776c611201113bb4666e23e8Register Account218304062021-11-26 18:11:229 days 2 hrs ago0x47a99cad6cc0a294a169c1a682befc4199aae427 IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.00147423
0xce7c4beaa39a0d637feb05b3fa1fb32953fb011cf05014a116fc9b2a03d684e9Register Account218304012021-11-26 18:11:129 days 2 hrs ago0x32d2b3233f81addefd45c882896fc31ee39e04ff IN  0x2fc976811ec3c9408b57a13268b9dcc171c2e9320 MATIC0.00147423
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UserAccount

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 13 : UserAccount.sol
// SPDX-License-Identifier: POOMANIA
pragma solidity ^0.8.9;

import "../structs/Structs.sol";
import "../interfaces/IPoos.sol";
import "../interfaces/IDumplings.sol";
import "../interfaces/IConstants.sol";
import "../interfaces/IUserAccount.sol";
import "../abstractContracts/Base.sol";

contract UserAccount is Base, IUserAccount {

    uint public accounts;
    mapping(address => uint) public registeredAccounts;

    constructor(address _constantsContract) Base(_constantsContract) {}

    function getAccountInfo(address _userAddress) public override view returns (Structs.UserAccountStruct memory _account) {
        address pooTokenContract = IConstants(constantsContract).pooTokenContract();
        Structs.UserAccountStruct memory account;
        account.pooBalance = IPooToken(pooTokenContract).balanceOf(_userAddress);
        account.pooArray = getPooArray(_userAddress);
        account.dumplingArray = getDumplingArray(_userAddress);
        return account;
    }

    function getPooArray(address _userAddress) internal view returns (Structs.Poo[] memory _pooArray) {
        address PoosContract = IConstants(constantsContract).PoosContract();
        uint[] memory pooIndices = IPoos(PoosContract).getAllPooIDsByAddress(_userAddress);
        Structs.Poo[] memory pooArray = new Structs.Poo[](pooIndices.length);
        for (uint x = 0; x < pooIndices.length; x++) {
            pooArray[x] = IPoos(PoosContract).getFullPooByIndex(pooIndices[x]);
        }
        return pooArray;
    }

    function getDumplingArray(address _userAddress) internal view returns (Structs.Dumpling[] memory _dumplingArray) {
        address DumplingsContract = IConstants(constantsContract).DumplingsContract();
        uint[] memory dumplingIndices = IDumplings(DumplingsContract).getAllPooIDsByAddress(_userAddress);
        Structs.Dumpling[] memory dumplingArray = new Structs.Dumpling[](dumplingIndices.length);
        for (uint x = 0; x < dumplingIndices.length; x++) {
            dumplingArray[x] = IDumplings(DumplingsContract).getFullDumplingByIndex(dumplingIndices[x]);
        }
        return dumplingArray;
    }

    function registerAccount(address _address) public {
        accounts += 1;
        registeredAccounts[_address] = accounts;
    }

}

File 2 of 13 : Structs.sol
// SPDX-License-Identifier: POOMANIA

pragma solidity ^0.8.9;

library Structs {

    struct Poo {
        uint id;
        uint level;
        uint currentExperience;
        uint experienceForNextLevel;
        string name;
        uint hitPoints;
        uint basicDmg;
        uint stamina;
        uint attackPower;
        uint defense;
        uint initiative;
        uint agility;
        uint luck;
        address payable owner;
        uint fightsWon;
        uint fightsLost;
        uint exhaustion;
        uint lastTimeRested;
        uint hunger;
        uint lastTimeFed;
        bool alive;
        uint price;
        uint[5] powerUps;
        bool hasPowerUps;
        uint restPoints;
        uint resCounter;
        uint lastSellPrice;
        uint nextPossibleMint;
        uint mintedDumplings;
    }

    struct Dumpling {
        uint id;
        uint level;
        uint currentExperience;
        uint experienceForNextLevel;
        string name;
        uint descendantOf;
        string parentType;
        uint hitPoints;
        uint basicDmg;
        uint stamina;
        uint attackPower;
        uint defense;
        uint initiative;
        uint agility;
        uint luck;
        address payable owner;
        uint fightsWon;
        uint fightsLost;
        uint exhaustion;
        uint lastTimeRested;
        uint hunger;
        uint lastTimeFed;
        bool alive;
        uint price;
        uint[5] powerUps;
        bool hasPowerUps;
        uint restPoints;
        uint resCounter;
        uint lastSellPrice;
    }

    struct UserAccountStruct {
        uint pooBalance;
        Poo[] pooArray;
        Dumpling[] dumplingArray;
    }

    struct NewDumplingEntity {
        uint id;
        uint parentId;
        uint hitPoints;
        uint basicDmg;
        uint stamina;
        uint attackPower;
        uint defense;
        uint initiative;
        uint agility;
    }

    struct PowerUps {
        uint percStam;
        uint percAp;
        uint percDef;
        uint percInit;
        uint percAgi;
    }

    struct FightEntity {
        uint id;
        address owner;
        uint currentExperience;
        uint experienceForNextLevel;
        uint hitPoints;
        uint basicDmg;
        uint stamina;
        uint attackPower;
        uint defense;
        uint initiative;
        uint agility;
    }
}

File 3 of 13 : IUserAccount.sol
// SPDX-License-Identifier: POOMANIA

pragma solidity ^0.8.9;

import "../structs/Structs.sol";

interface IUserAccount {
    function getAccountInfo(address _userAddress) external view returns (Structs.UserAccountStruct memory _account);
}

File 4 of 13 : IPoos.sol
// SPDX-License-Identifier: POOMANIA

pragma solidity ^0.8.9;

import "./IPoo.sol";
import "../structs/Structs.sol";

interface IPoos is IPoo {

    function getPooByIndex(uint _id) external view returns (Structs.Poo memory _poo);

    function getPoosBatch(uint _lowerBound, uint _upperbound) external view returns (Structs.Poo[] memory _poos);

    function checkPooHasPowerUps(uint _id) external view returns (bool _hasPowerUps);

    function executeExhaustionChange(uint _id, uint _newExhaustion) external;

    function executeAliveChange(uint _pooID, bool _aliveStatus) external;

    function executePowerUpChange(uint _id, uint[5] memory _powerUps, bool _powerUpStatus) external;

    function executeWinningStatChange(uint _id, uint _xp) external;

    function executeLosingStatChange(uint _id, uint _xp) external;

    function executeRest(uint _id, uint _restPoints) external;

    function executeResurrect(uint _id) external;

    function executeFeed(uint _id) external;

    function executeMintSetting(uint _id) external;

    function canMintDumpling(uint _pooId) external view returns (bool canMint);

    function getFullPooByIndex(uint _id) external view returns (Structs.Poo memory _poo);

}

File 5 of 13 : IPooToken.sol
// SPDX-License-Identifier: POOMANIA
pragma solidity ^0.8.9;

import "../interfaces/IERC20Burnable.sol";


interface IPooToken is IERC20Burnable {

    function mintAdditionalRewards(address _receiver, uint _amount) external;

    function cap() external view returns (uint256);

}

File 6 of 13 : IPoo.sol
// SPDX-License-Identifier: POOMANIA
pragma solidity ^0.8.9;

import "@openzeppelin/contracts/token/ERC721/IERC721.sol";

interface IPoo is IERC721 {

    function approve(address to, uint256 tokenId) external;

    function transferFrom(address from, address to, uint256 tokenId) external;

    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) external;

    function safeTransferFrom(address from, address to, uint256 tokenId) external;

    function approveForMarketplace(address to, uint256 tokenId, uint256 price) external;

    function transferMarketplaceFrom(address from, address to, uint256 tokenId, uint256 price) external;

    function checkAddressHasPoo(address _address) external view returns (bool _hasPoo);

    function executeLevelUp(uint256 _id, uint[11] memory _newStats) external;

    function getAllPooIDsByAddress(address _address) external view returns (uint[] memory _id);

    function isNameTaken(string calldata name) external view returns (bool);
}

File 7 of 13 : IERC20Burnable.sol
// SPDX-License-Identifier: POOMANIA
pragma solidity ^0.8.9;

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";

interface IERC20Burnable is IERC20 {
    function burn(uint256 amount) external;

    function burnFrom(address account, uint256 amount) external;
}

File 8 of 13 : IDumplings.sol
// SPDX-License-Identifier: POOMANIA

pragma solidity ^0.8.9;

import "./IPoos.sol";
import "../structs/Structs.sol";

interface IDumplings is IPoo {

    function getDumplingByIndex(uint _id) external view returns (Structs.Dumpling memory _dumpling);

    function getDumplingsBatch(uint _lowerBound, uint _upperbound) external view returns (Structs.Dumpling[] memory _dumplings);

    function executeAliveChange(uint _id, bool _aliveStatus) external;

    function checkDumplingHasPowerUps(uint _id) external view returns (bool _hasPowerUps);

    function executeExhaustionChange(uint _id, uint _newExhaustion) external;

    function executePowerUpChange(uint _id, uint[5] memory _powerUps, bool _powerUpStatus) external;

    function executeWinningStatChange(uint _id, uint _xp) external;

    function executeLosingStatChange(uint _id, uint _xp) external;

    function executeRest(uint _id, uint _restPoints) external;

    function executeResurrect(uint _id) external;

    function executeFeed(uint _id) external;

    function getFullDumplingByIndex(uint _id) external view returns (Structs.Dumpling memory _dumpling);

}

File 9 of 13 : IConstants.sol
// SPDX-License-Identifier: POOMANIA

pragma solidity ^0.8.9;

interface IConstants {

    function statisticsContract() external view returns (address);

    function helpersContract() external view returns (address);

    function PooFightContract() external view returns (address);

    function DumplingFightContract() external view returns (address);

    function pooTokenContract() external view returns (address);

    function userAccountContract() external view returns (address);

    function PoosContract() external view returns (address);

    function PooLevelHandlerContract() external view returns (address);

    function PoosMarketplaceContract() external view returns (address);

    function PooPowerUpHandlerContract() external view returns (address);

    function PooTamagotchiContract() external view returns (address);

    function DumplingsContract() external view returns (address);

    function DumplingLevelHandlerContract() external view returns (address);

    function DumplingsMarketplaceContract() external view returns (address);

    function DumplingPowerUpHandlerContract() external view returns (address);

    function DumplingTamagotchiContract() external view returns (address);

    function tokenAmountForMint() external view returns (uint);

    function pooTokenForFeed() external view returns (uint);

    function pooTokenForInstantExhaustionReset() external view returns (uint);

    function pooTokenForResurrect() external view returns (uint);

    function pooTokenForRenamePoo() external view returns (uint);

    function pooTokenForFight() external view returns (uint);

    function pooTokenForDumplingMint() external view returns (uint);

    function pooTokenForHundredPowerUp() external view returns (uint);

    function pooTokenForTwoHundredPowerUp() external view returns (uint);

    function pooTokenForThreeHundredPowerUp() external view returns (uint);

    function winnerXp() external view returns (uint);

    function loserXp() external view returns (uint);

    function owner() external view returns (address);

    function rev() external view returns (address);

    function blocksBetweenRestPoint() external view returns (uint);

    function blocksBetweenHungerPointForPoo() external view returns (uint);

    function blocksBetweenHungerPointForDumpling() external view returns (uint);

    function saleFeePercentage() external view returns (uint);

    function fightExhaustion() external view returns (uint);

    function dumplingsPercentageOfParent() external view returns (uint);

    function blocksBetweenDumplingMintForPoo() external view returns (uint);

    function blocksBetweenPooRewardForRandomFights() external view returns (uint);

    function blocksBetweenPooRewardForIndividualFights() external view returns (uint);

    function pooRewardForFight() external view returns (uint);

    function baseBlockBetweenDumplingMint() external view returns (uint);

    function ownerRewardPercentage() external view returns (uint);

    function revRewardPercentage() external view returns (uint);

    function maxMintableDumplingsForPoo() external view returns (uint);

    function pooMintCosts() external view returns (uint);

}

File 10 of 13 : Base.sol
// SPDX-License-Identifier: POOMANIA
pragma solidity ^0.8.9;

import "../interfaces/IPooToken.sol";
import "../interfaces/IConstants.sol";

abstract contract Base {

    event AllowedContractAdded(address indexed _contract);
    event AllowedContractRemoved(address indexed _contract);
    event ConstantsContractChanged(address indexed _contract);

    address public constantsContract;
    mapping(address => bool) public allowedContracts;

    constructor(address _constants) {
        constantsContract = _constants;
    }

    modifier onlyOwner {
        require(msg.sender == IConstants(constantsContract).owner(), "The sender of the message needs to be the contract owner.");
        _;
    }

    modifier onlyAllowedContracts {
        require(allowedContracts[msg.sender] == true, "The sender of the message needs to be an allowed contract.");
        _;
    }

    /**
     *
     * @dev
     * allows the owner to set the external addresses which are allowed to call the functions of this contract
     *
     */
    function addAllowedContract(address _allowedContract) public onlyOwner {
        allowedContracts[_allowedContract] = true;
        emit AllowedContractAdded(_allowedContract);
    }

    /**
     *
     * @dev
     * allows the owner to remove one external addresses which is no longer allowed to call the functions of this contract
     *
     */
    function removeAllowedContract(address _allowedContractToRemove) public onlyOwner {
        allowedContracts[_allowedContractToRemove] = false;
        emit AllowedContractRemoved(_allowedContractToRemove);
    }

    function setConstantsContract(address _newConstantsContract) public onlyOwner {
        constantsContract = _newConstantsContract;
        emit ConstantsContractChanged(_newConstantsContract);
    }

    function payByPoo(uint amount) internal {
        address pooContract = IConstants(constantsContract).pooTokenContract();
        require(IPooToken(pooContract).allowance(msg.sender, address(this)) >= amount, "Not enough allowance.");
        IPooToken(pooContract).burnFrom(msg.sender, amount);
    }

    function transferValueToOwner(uint value) internal {
        payable(IConstants(constantsContract).owner()).transfer(value);
    }

}

File 11 of 13 : IERC165.sol
// SPDX-License-Identifier: MIT

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);
}

File 12 of 13 : IERC721.sol
// SPDX-License-Identifier: MIT

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`, 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 be 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 Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @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 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);

    /**
     * @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;
}

File 13 of 13 : IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_constantsContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_contract","type":"address"}],"name":"AllowedContractAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_contract","type":"address"}],"name":"AllowedContractRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_contract","type":"address"}],"name":"ConstantsContractChanged","type":"event"},{"inputs":[],"name":"accounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_allowedContract","type":"address"}],"name":"addAllowedContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allowedContracts","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"constantsContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_userAddress","type":"address"}],"name":"getAccountInfo","outputs":[{"components":[{"internalType":"uint256","name":"pooBalance","type":"uint256"},{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"level","type":"uint256"},{"internalType":"uint256","name":"currentExperience","type":"uint256"},{"internalType":"uint256","name":"experienceForNextLevel","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"hitPoints","type":"uint256"},{"internalType":"uint256","name":"basicDmg","type":"uint256"},{"internalType":"uint256","name":"stamina","type":"uint256"},{"internalType":"uint256","name":"attackPower","type":"uint256"},{"internalType":"uint256","name":"defense","type":"uint256"},{"internalType":"uint256","name":"initiative","type":"uint256"},{"internalType":"uint256","name":"agility","type":"uint256"},{"internalType":"uint256","name":"luck","type":"uint256"},{"internalType":"address payable","name":"owner","type":"address"},{"internalType":"uint256","name":"fightsWon","type":"uint256"},{"internalType":"uint256","name":"fightsLost","type":"uint256"},{"internalType":"uint256","name":"exhaustion","type":"uint256"},{"internalType":"uint256","name":"lastTimeRested","type":"uint256"},{"internalType":"uint256","name":"hunger","type":"uint256"},{"internalType":"uint256","name":"lastTimeFed","type":"uint256"},{"internalType":"bool","name":"alive","type":"bool"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256[5]","name":"powerUps","type":"uint256[5]"},{"internalType":"bool","name":"hasPowerUps","type":"bool"},{"internalType":"uint256","name":"restPoints","type":"uint256"},{"internalType":"uint256","name":"resCounter","type":"uint256"},{"internalType":"uint256","name":"lastSellPrice","type":"uint256"},{"internalType":"uint256","name":"nextPossibleMint","type":"uint256"},{"internalType":"uint256","name":"mintedDumplings","type":"uint256"}],"internalType":"struct Structs.Poo[]","name":"pooArray","type":"tuple[]"},{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"level","type":"uint256"},{"internalType":"uint256","name":"currentExperience","type":"uint256"},{"internalType":"uint256","name":"experienceForNextLevel","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"descendantOf","type":"uint256"},{"internalType":"string","name":"parentType","type":"string"},{"internalType":"uint256","name":"hitPoints","type":"uint256"},{"internalType":"uint256","name":"basicDmg","type":"uint256"},{"internalType":"uint256","name":"stamina","type":"uint256"},{"internalType":"uint256","name":"attackPower","type":"uint256"},{"internalType":"uint256","name":"defense","type":"uint256"},{"internalType":"uint256","name":"initiative","type":"uint256"},{"internalType":"uint256","name":"agility","type":"uint256"},{"internalType":"uint256","name":"luck","type":"uint256"},{"internalType":"address payable","name":"owner","type":"address"},{"internalType":"uint256","name":"fightsWon","type":"uint256"},{"internalType":"uint256","name":"fightsLost","type":"uint256"},{"internalType":"uint256","name":"exhaustion","type":"uint256"},{"internalType":"uint256","name":"lastTimeRested","type":"uint256"},{"internalType":"uint256","name":"hunger","type":"uint256"},{"internalType":"uint256","name":"lastTimeFed","type":"uint256"},{"internalType":"bool","name":"alive","type":"bool"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256[5]","name":"powerUps","type":"uint256[5]"},{"internalType":"bool","name":"hasPowerUps","type":"bool"},{"internalType":"uint256","name":"restPoints","type":"uint256"},{"internalType":"uint256","name":"resCounter","type":"uint256"},{"internalType":"uint256","name":"lastSellPrice","type":"uint256"}],"internalType":"struct Structs.Dumpling[]","name":"dumplingArray","type":"tuple[]"}],"internalType":"struct Structs.UserAccountStruct","name":"_account","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"registerAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"registeredAccounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_allowedContractToRemove","type":"address"}],"name":"removeAllowedContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newConstantsContract","type":"address"}],"name":"setConstantsContract","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b5060405161189638038061189683398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b611803806100936000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80637b510fe8116100665780637b510fe81461012757806397c414df146101475780639800fc161461015a578063d8fa638d1461016d578063f876101c1461018d57600080fd5b80632c56462f1461009857806351e0e26b146100ad57806368cd03f6146100e55780636e9518f4146100fc575b600080fd5b6100ab6100a6366004610cc6565b6101a0565b005b6100d06100bb366004610cc6565b60016020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100ee60025481565b6040519081526020016100dc565b60005461010f906001600160a01b031681565b6040516001600160a01b0390911681526020016100dc565b61013a610135366004610cc6565b6102ac565b6040516100dc9190610f2d565b6100ab610155366004610cc6565b61041b565b6100ab610168366004610cc6565b610452565b6100ee61017b366004610cc6565b60036020526000908152604090205481565b6100ab61019b366004610cc6565b61054f565b60008054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101ec57600080fd5b505afa158015610200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102249190611120565b6001600160a01b0316336001600160a01b03161461025d5760405162461bcd60e51b81526004016102549061113d565b60405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f745213c0a7dcd996a1ded5a6943d545aadcdb27ec72b0ec5636da2a8f59fccdd9190a250565b6102d060405180606001604052806000815260200160608152602001606081525090565b60008060009054906101000a90046001600160a01b03166001600160a01b031663ec89be5c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561031f57600080fd5b505afa158015610333573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103579190611120565b905061037d60405180606001604052806000815260200160608152602001606081525090565b6040516370a0823160e01b81526001600160a01b0385811660048301528316906370a082319060240160206040518083038186803b1580156103be57600080fd5b505afa1580156103d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f6919061119a565b81526104018461064b565b602082015261040f84610887565b60408201529392505050565b60016002600082825461042e91906111c9565b90915550506002546001600160a01b03909116600090815260036020526040902055565b60008054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561049e57600080fd5b505afa1580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d69190611120565b6001600160a01b0316336001600160a01b0316146105065760405162461bcd60e51b81526004016102549061113d565b6001600160a01b038116600081815260016020526040808220805460ff19169055517fac2e940b68b32bc719742a99f71a86e3854dac1225e4b3de2ec392bb9850f4139190a250565b60008054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561059b57600080fd5b505afa1580156105af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d39190611120565b6001600160a01b0316336001600160a01b0316146106035760405162461bcd60e51b81526004016102549061113d565b600080546001600160a01b0319166001600160a01b038316908117825560405190917f4098204f4be8323da5a74c263fc9c3ec38eb0e989b2eb2df72f99655b11269b691a250565b6000805460408051633c197b4760e21b81529051606093926001600160a01b03169163f065ed1c916004808301926020929190829003018186803b15801561069257600080fd5b505afa1580156106a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ca9190611120565b6040516306674d2560e11b81526001600160a01b038581166004830152919250600091831690630cce9a4a9060240160006040518083038186803b15801561071157600080fd5b505afa158015610725573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261074d9190810190611252565b90506000815167ffffffffffffffff81111561076b5761076b6111e1565b6040519080825280602002602001820160405280156107a457816020015b610791610aba565b8152602001906001900390816107895790505b50905060005b825181101561087e57836001600160a01b0316630fdba7608483815181106107d4576107d46112f8565b60200260200101516040518263ffffffff1660e01b81526004016107fa91815260200190565b60006040518083038186803b15801561081257600080fd5b505afa158015610826573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261084e9190810190611408565b828281518110610860576108606112f8565b60200260200101819052508080610876906115d2565b9150506107aa565b50949350505050565b60008054604080516370dd1a4560e01b81529051606093926001600160a01b0316916370dd1a45916004808301926020929190829003018186803b1580156108ce57600080fd5b505afa1580156108e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109069190611120565b6040516306674d2560e11b81526001600160a01b038581166004830152919250600091831690630cce9a4a9060240160006040518083038186803b15801561094d57600080fd5b505afa158015610961573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109899190810190611252565b90506000815167ffffffffffffffff8111156109a7576109a76111e1565b6040519080825280602002602001820160405280156109e057816020015b6109cd610ba5565b8152602001906001900390816109c55790505b50905060005b825181101561087e57836001600160a01b0316630cf6e66e848381518110610a1057610a106112f8565b60200260200101516040518263ffffffff1660e01b8152600401610a3691815260200190565b60006040518083038186803b158015610a4e57600080fd5b505afa158015610a62573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a8a91908101906115ed565b828281518110610a9c57610a9c6112f8565b60200260200101819052508080610ab2906115d2565b9150506109e6565b604051806103a001604052806000815260200160008152602001600081526020016000815260200160608152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160008152602001610b73610c90565b815260200160001515815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806103a0016040528060008152602001600081526020016000815260200160008152602001606081526020016000815260200160608152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160008152602001610c6c610c90565b81526020016000151581526020016000815260200160008152602001600081525090565b6040518060a001604052806005906020820280368337509192915050565b6001600160a01b0381168114610cc357600080fd5b50565b600060208284031215610cd857600080fd5b8135610ce381610cae565b9392505050565b60005b83811015610d05578181015183820152602001610ced565b83811115610d14576000848401525b50505050565b60008151808452610d32816020860160208601610cea565b601f01601f19169290920160200192915050565b8060005b6005811015610d14578151845260209384019390910190600101610d4a565b600081518084526020808501808196508360051b8101915082860160005b85811015610f205782840389528151610420815186528682015187870152604080830151818801525060608083015181880152506080808301518282890152610dd283890182610d1a565b9250505060a080830151818801525060c08083015187830382890152610df88382610d1a565b60e085810151908a015261010080860151908a015261012080860151908a015261014080860151908a015261016080860151908a015261018080860151908a01526101a080860151908a01526101c080860151908a01526101e0808601516001600160a01b0316908a015261020080860151908a015261022080860151908a015261024080860151908a015261026080860151908a015261028080860151908a01526102a080860151908a01526102c0808601511515908a01526102e080860151908a01526103008086015191945092509050610ed782890182610d46565b505061032082015115156103a08701526103408201516103c08701526103608201516103e087015261038090910151610400909501949094529784019790840190600101610d87565b5091979650505050505050565b6000602080835260808084018551838601528286015160606040818189015283835180865260a09550858a019150858160051b8b0101888601955060005b828110156110f457609f198c83030184528651610420815184528b8201518c850152868201518785015287820151888501528a820151818c860152610fb282860182610d1a565b838c0151868d015260c0808501519087015260e08085015190870152610100808501519087015261012080850151908701526101408085015190870152610160808501519087015261018080850151908701526101a0808501516001600160a01b0316908701526101c080850151908701526101e080850151908701526102008085015190870152610220808501519087015261024080850151908701526102608085015190870152610280808501511515908701526102a080850151908701526102c080850151919350915061108b82870182610d46565b50506102e08201516103606110a38187018315159052565b610300840151610380878101919091526103208501516103a08801526103408501516103c0880152908401516103e08701529092015161040090940193909352509589019592890192600101610f6b565b508b8401518b8203601f1901868d01529850611110818a610d69565b9c9b505050505050505050505050565b60006020828403121561113257600080fd5b8151610ce381610cae565b60208082526039908201527f5468652073656e646572206f6620746865206d657373616765206e656564732060408201527f746f2062652074686520636f6e7472616374206f776e65722e00000000000000606082015260800190565b6000602082840312156111ac57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156111dc576111dc6111b3565b500190565b634e487b7160e01b600052604160045260246000fd5b6040516103a0810167ffffffffffffffff8111828210171561121b5761121b6111e1565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561124a5761124a6111e1565b604052919050565b6000602080838503121561126557600080fd5b825167ffffffffffffffff8082111561127d57600080fd5b818501915085601f83011261129157600080fd5b8151818111156112a3576112a36111e1565b8060051b91506112b4848301611221565b81815291830184019184810190888411156112ce57600080fd5b938501935b838510156112ec578451825293850193908501906112d3565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b600082601f83011261131f57600080fd5b815167ffffffffffffffff811115611339576113396111e1565b61134c601f8201601f1916602001611221565b81815284602083860101111561136157600080fd5b611372826020830160208701610cea565b949350505050565b805161138581610cae565b919050565b8051801515811461138557600080fd5b600082601f8301126113ab57600080fd5b60405160a0810181811067ffffffffffffffff821117156113ce576113ce6111e1565b6040528060a08401858111156113e357600080fd5b845b818110156113fd5780518352602092830192016113e5565b509195945050505050565b60006020828403121561141a57600080fd5b815167ffffffffffffffff8082111561143257600080fd5b90830190610420828603121561144757600080fd5b61144f6111f7565b8251815260208301516020820152604083015160408201526060830151606082015260808301518281111561148357600080fd5b61148f8782860161130e565b60808301525060a0838101519082015260c0808401519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160808401519082015261018080840151908201526101a091506114fa82840161137a565b918101919091526101c082810151908201526101e0808301519082015261020080830151908201526102208083015190820152610240808301519082015261026080830151908201526102809061155282840161138a565b828201526102a0915081830151828201526102c091506115748683850161139a565b82820152610360915061158882840161138a565b6102e0820152610380838101516103008301526103a08401516103208301526103c08401516103408301526103e08401519282019290925261040090920151908201529392505050565b60006000198214156115e6576115e66111b3565b5060010190565b6000602082840312156115ff57600080fd5b815167ffffffffffffffff8082111561161757600080fd5b90830190610420828603121561162c57600080fd5b6116346111f7565b8251815260208301516020820152604083015160408201526060830151606082015260808301518281111561166857600080fd5b6116748782860161130e565b60808301525060a083015160a082015260c08301518281111561169657600080fd5b6116a28782860161130e565b60c08301525060e08381015190820152610100808401519082015261012080840151908201526101408084015190820152610160808401519082015261018080840151908201526101a080840151908201526101c080840151908201526101e0915061170f82840161137a565b91810191909152610200828101519082015261022080830151908201526102408083015190820152610260808301519082015261028080830151908201526102a080830151908201526102c09061176782840161138a565b828201526102e09150818301518282015261030091506117898683850161139a565b8282015261179a6103a0840161138a565b6103208201526103c08301516103408201526103e08301516103608201526104009092015161038083015250939250505056fea26469706673582212205bdede517a0ef17cbe4cdeddbe51d6bad614792b95ed86597dac8e9a1b6d8cc364736f6c634300080900330000000000000000000000007978755fe01f259942c5e761f9cc94a43035285a

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

0000000000000000000000007978755fe01f259942c5e761f9cc94a43035285a

-----Decoded View---------------
Arg [0] : _constantsContract (address): 0x7978755fe01f259942c5e761f9cc94a43035285a

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007978755fe01f259942c5e761f9cc94a43035285a


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