Contract 0x4cdf39285d7ca8eb3f090fda0c069ba5f4145b37 5

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xccdf19411aaa848f6cd07a8e41019b5295ba2e4fa50b65a5f22f55965a2c59f5Approve384852262022-05-18 3:39:5915 mins ago0xecab65cf705a62209ca04ab138b97ac0d156b6b9 IN  Tomb Finance: TSHARE Token0 FTM0.028663158572
0x3e442bab96bcc4aeeb973fae501952fefed7773e8d6993fcc0c9060331cd9656Approve384847442022-05-18 3:31:0924 mins ago0x419bc29c415f95776bda776a74a7f14df1e86c59 IN  Tomb Finance: TSHARE Token0 FTM0.031726501297
0x4d56f32efda7f178a4faf1efb8b1fac3bedc6c1869d51360939902791cc3ac27Approve384843532022-05-18 3:23:0232 mins ago0x46d6c8c5dda72de8103b87d03b2149461418b8a1 IN  Tomb Finance: TSHARE Token0 FTM0.018786553015
0xd1f458b5c25b2a86346e64e54cccc345339111a043ee60512c12ded995212775Approve384841422022-05-18 3:16:5838 mins ago0x46d6c8c5dda72de8103b87d03b2149461418b8a1 IN  Tomb Finance: TSHARE Token0 FTM0.0171892373
0xebd281a41dd13de9058f97abfa61e7ecd0c597fab9721311cdb23b459a0e5cc9Approve384840942022-05-18 3:16:0239 mins ago0x46d6c8c5dda72de8103b87d03b2149461418b8a1 IN  Tomb Finance: TSHARE Token0 FTM0.018397955816
0xcb410199db930d056ef15497cb4b0d49b09c75ff46d8a5ff7cb97482985a200dApprove384827262022-05-18 2:47:171 hr 8 mins ago0x728b57b7e7afef7ab984f6ec04d995aafce55363 IN  Tomb Finance: TSHARE Token0 FTM0.037438264237
0xef8192b743b9e86a877c9ad43abd2aa173f9d8cdb497d0ee76d7b712bca4129bApprove384826092022-05-18 2:43:441 hr 12 mins ago0x1dacd9a1dbd5dc798cd57bfbd5d6c5913d63fa0f IN  Tomb Finance: TSHARE Token0 FTM0.03628274279
0xee1d4e28d46b528eaf17cf4a694d5ad14f03a212895bdc6f91de122922d2ca97Approve384825092022-05-18 2:40:421 hr 15 mins ago0xec25863410cbee5bf0afce4e83821682fbafc040 IN  Tomb Finance: TSHARE Token0 FTM0.024801178288
0xa5cbd2ac22a972c9aa6331c18956b636045000ecadcd7d6f4b2740e73d4c835eApprove384819722022-05-18 2:25:541 hr 29 mins ago0x0f88ed6af75d19c759fe280d52ffcbfd45347b48 IN  Tomb Finance: TSHARE Token0 FTM0.075894067936
0x84b4f195c19d6c175ab9e2e5a6eed920558d0467117e863b92917c3ac7ad5b17Approve384814732022-05-18 2:12:081 hr 43 mins ago0x863c7473e65b0d72a5f31f67d06f67cc5fa078dc IN  Tomb Finance: TSHARE Token0 FTM0.022551328011
0x3bea1fca767ca5c580b97ecc80c302cd06c6f8264035e6f74f2afbd37f14ce2fApprove384812172022-05-18 2:04:561 hr 50 mins ago0xe49a2a07d3c117ebfd0618a4feb4900d7f95f1ae IN  Tomb Finance: TSHARE Token0 FTM0.017986996764
0xabedfa6ebcd62d46bd7286f9c37710edba366e17f146bf125779b4b619bb4bd0Approve384801142022-05-18 1:40:462 hrs 15 mins ago0x14d85fd5720651c04eb243c6eccf6ef49f64e233 IN  Tomb Finance: TSHARE Token0 FTM0.011811669745
0xe42e90ac5adb8e907747f4c06b5d142fc8f529ded2960c8495349487590c7cc5Transfer384791172022-05-18 1:22:442 hrs 33 mins ago0xb85d17e2179c57ac0e01efaaebd254e67157dc85 IN  Tomb Finance: TSHARE Token0 FTM0.008785611535
0xe4c3730bbe05e73ddae44498242b3647bf89a662bc45ac6ea56c813903fdfa24Approve384786222022-05-18 1:12:332 hrs 43 mins ago0xd29136b67879a39765755f791a27ad61e0508f32 IN  Tomb Finance: TSHARE Token0 FTM0.011537644495
0x30b1230164147fa134c5c144cfad68698fc0664710c417707790d8955fa063f0Approve384783572022-05-18 1:08:072 hrs 47 mins ago0x6e52fd198575ce5c25e74211f1e10f04610cf186 IN  Tomb Finance: TSHARE Token0 FTM0.007208061959
0xe67afe7699f8bfd24564f4b9fd12b6a042150bc9e439c745b21f989ede10ab82Approve384783222022-05-18 1:07:242 hrs 48 mins ago0x6e52fd198575ce5c25e74211f1e10f04610cf186 IN  Tomb Finance: TSHARE Token0 FTM0.011742926471
0x5a9eb8dc555369f20507037b9a93090318bf72f3271df5cda869a546fbfe9db1Approve384769252022-05-18 0:40:293 hrs 15 mins ago0x8f01efdc8353c4753a3d57d20e2292ec224ffff0 IN  Tomb Finance: TSHARE Token0 FTM0.011845545565
0xe261e738c78e88263dd013fa91ec7fb5e3052bf4784d6f25fbcb74274f8e01f7Approve384766052022-05-18 0:34:253 hrs 21 mins ago0xb6326899932ec2e41dd50164077b1286150e2c79 IN  Tomb Finance: TSHARE Token0 FTM0.00659472894
0x7ff7b35e521d0ad8205133fa696e34821fd9cfc28e029b9073346666a049c856Approve384765892022-05-18 0:34:093 hrs 21 mins ago0xb6326899932ec2e41dd50164077b1286150e2c79 IN  Tomb Finance: TSHARE Token0 FTM0.011527497013
0xc21bd47a93c8c62c887ff86584b1cf76f082f7dfb476e6413c0c797b10683793Approve384750432022-05-18 0:03:093 hrs 52 mins ago0x7c9457a775015eee6e098cb1a4ba6cf9b0fdf3c0 IN  Tomb Finance: TSHARE Token0 FTM0.005725474674
0xe35c5d9297d0bc9621329d8017fa39b30ae930aa8ee074427c5e85e359e77da9Transfer384745042022-05-17 23:52:514 hrs 2 mins ago0x930b201037875c94ac0b8217a38ee7e3b2b90d71 IN  Tomb Finance: TSHARE Token0 FTM0.007821716929
0x99f1e5a11e2c488e8b2a8a7c7b5281bd71eed88502b8cf633ce3284b528f2897Approve384735472022-05-17 23:34:264 hrs 21 mins ago0x5f4adb2c758a45da1e4911e0a6cffdedd3085152 IN  Tomb Finance: TSHARE Token0 FTM0.014267312676
0xa79d4a4a73cf22f5c384c036b8a787006d4c55941920490315fcbacaf1b94ef1Approve384735382022-05-17 23:34:154 hrs 21 mins ago0x79269c79e84ad6d9ed1b913e1fb30b26c8384629 IN  Tomb Finance: TSHARE Token0 FTM0.094358
0x694fbaee2441c2f971f73f3d8acac39a9346d008467cee411e23b06ccd5025cfApprove384734632022-05-17 23:32:444 hrs 23 mins ago0xc63b7e022ada213d327435641ffaadded5eb08e1 IN  Tomb Finance: TSHARE Token0 FTM0.016080688733
0x06a028717760a0d9492ca1ae4fb6167cc04215cde3ebbbfe6a26d17406219fbcApprove384709822022-05-17 22:43:425 hrs 12 mins ago0xb7f64bc08aff27f98bcf8a41caecddd03646bfa5 IN  Tomb Finance: TSHARE Token0 FTM0.013167033481
[ Download CSV Export 

OVERVIEW

TSHARE holders have voting rights (governance) on proposals to improve the protocol and future use cases within the Tomb finance ecosystem.

Latest 19 internal transactions
Parent Txn Hash Block From To Value
0xcc6ade05236295bb450efde6370cc7b4204ed3a4b3be77f1a80c55da875b8148346312762022-03-28 16:10:3750 days 11 hrs ago 0x39993c8c0b98ba01ca3c71eb0bab80a8fea24e28 Tomb Finance: TSHARE Token0.6 FTM
0x7acfa1c154f5b2183b05b3d77a2132a8bce0ce37e0f0c8e988b83d0ab48feee2322438922022-03-01 4:45:0377 days 23 hrs ago 0xd0de8bd47a62559c88cb43e84523b03360748e4f Tomb Finance: TSHARE Token4.5 FTM
0x2bf79cdd6fdd5fa3c62272b2be31b48059f4886d72d294b6d6ee8db017a2f630322438642022-03-01 4:44:3077 days 23 hrs ago 0xd0de8bd47a62559c88cb43e84523b03360748e4f Tomb Finance: TSHARE Token4.69814571959764267 FTM
0xe5f29811c4a69955a1ea6d9a3bf2371c2bc1d3b9ade4af0ead4ff85d9830c138322438252022-03-01 4:43:3577 days 23 hrs ago 0xd0de8bd47a62559c88cb43e84523b03360748e4f Tomb Finance: TSHARE Token4.75117285153784267 FTM
0xd9384984c00c3cae52c54e6f73b2e87a92491b93c6a44910363090cb9f88d625301436712022-02-06 5:28:19100 days 22 hrs ago 0xb4091b6c3874d47d83e96f6965bf3181bf40436a Tomb Finance: TSHARE Token0.890107635729475598 FTM
0x0792d1328ca3d62e4c5aebafc59de219b06a3b0ed8f94dfe71dc96e30fe757c1290732102022-01-26 6:08:22111 days 21 hrs ago 0x0658a0cf618a675fc1c63303f4dc8571acc10a1b Tomb Finance: TSHARE Token0.2 FTM
0xdf945b57dcceba923fc59320f2198c662626891f32e5cbd94c62a83070cf22b1283357032022-01-18 10:46:04119 days 17 hrs ago 0xf042647082658d3ec31cc1caff8577b4f4bd00b5 Tomb Finance: TSHARE Token430.91198138 FTM
0xbbe034533fa95cbbcf82b262654cc01704d10bfd7b888c2ffaaf27fa2e14097e283355642022-01-18 10:44:07119 days 17 hrs ago 0xf042647082658d3ec31cc1caff8577b4f4bd00b5 Tomb Finance: TSHARE Token215 FTM
0x1c55a04388dc46f3fc08fcf0227c8c6f7839f0393d2cac83ba7b640391c9053d266785152022-01-01 14:20:01136 days 13 hrs ago 0xe9313e587dafc42ecb475b4e2df1e235258e8375 Tomb Finance: TSHARE Token208 FTM
0x1b3ef6020be9d4258841db64fa2bd541b8188a531bdc4175b752e75436d73923266780262022-01-01 14:11:38136 days 13 hrs ago 0xe9313e587dafc42ecb475b4e2df1e235258e8375 Tomb Finance: TSHARE Token208 FTM
0xcd0497fc6f62fe3f44d46d87532283d03d476ea1cc1b62bd01d4056aa5ad701b266779152022-01-01 14:09:54136 days 13 hrs ago 0xe9313e587dafc42ecb475b4e2df1e235258e8375 Tomb Finance: TSHARE Token209 FTM
0x85d1e21e201a361f685c9687125d62ea13b11e530458af683f3a2784e7221913266778642022-01-01 14:09:12136 days 13 hrs ago 0xe9313e587dafc42ecb475b4e2df1e235258e8375 Tomb Finance: TSHARE Token208.73272454 FTM
0x7614eebcb23631bbc8db4015d21112b81e298fd07949200efe9ae93c284b0e6b243674392021-12-08 15:53:54160 days 12 hrs ago 0xebf4fbb9c81b84dd5cf89bc75588e5d0018501b3 Tomb Finance: TSHARE Token1.29 FTM
0x6c32c12ab4b47ecfa955bd1b617697f81d03478b6c560e79c46badedea2a4908234771682021-11-29 13:01:30169 days 14 hrs ago 0xf18da90f1b79cc6554befa5daec1ae64dcecf0f0 Tomb Finance: TSHARE Token0.4699119819525 FTM
0x00173924706114a060460d95ba6de1d260fe3c18a43a84b09f5f451ae27922b8234771072021-11-29 13:00:41169 days 14 hrs ago 0xf18da90f1b79cc6554befa5daec1ae64dcecf0f0 Tomb Finance: TSHARE Token0.4742828106525 FTM
0x08627a083bd1baed7b48161db45b52ba1f4891a97633e8f8f868c9cc8c7c43ad231656872021-11-26 7:27:33172 days 20 hrs ago 0x2bf603716189921b5ee1215d30a52b9834564c83 Tomb Finance: TSHARE Token4.635669743073121118 FTM
0x8219d426948dd39328b8495cfeb23e7916e138f2547094e1400dd0595b3a4b88224817252021-11-19 5:33:32179 days 22 hrs ago 0x69bc15a25bb326dbc456efe5ac65c079c2bc2e2d Tomb Finance: TSHARE Token12.13006680954663 FTM
0x9207b153cdda00de23340f10693ddd95b5de68082bc62d83f1bc7257277ef5e0198452542021-10-23 10:22:09206 days 17 hrs ago 0xda9b53c44c87f9c3304d000838b4a2f63f5d256c Tomb Finance: TSHARE Token0.02 FTM
0x1ac1a54266c5bc31e76e5c1cfc2dc25ec60c631a7b4f37727d9a49686deeeb6883061952021-05-30 22:32:10352 days 5 hrs ago Tomb Finance: Deployer  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TShare

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion
File 1 of 9 : TShare.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

import "@openzeppelin/contracts/math/SafeMath.sol";
import "@openzeppelin/contracts/token/ERC20/ERC20Burnable.sol";

import "./owner/Operator.sol";

/*
  ______                __       _______
 /_  __/___  ____ ___  / /_     / ____(_)___  ____ _____  ________
  / / / __ \/ __ `__ \/ __ \   / /_  / / __ \/ __ `/ __ \/ ___/ _ \
 / / / /_/ / / / / / / /_/ /  / __/ / / / / / /_/ / / / / /__/  __/
/_/  \____/_/ /_/ /_/_.___/  /_/   /_/_/ /_/\__,_/_/ /_/\___/\___/

    http://tomb.finance
*/
contract TShare is ERC20Burnable, Operator {
    using SafeMath for uint256;

    // TOTAL MAX SUPPLY = 70,000 tSHAREs
    uint256 public constant FARMING_POOL_REWARD_ALLOCATION = 59500 ether;
    uint256 public constant COMMUNITY_FUND_POOL_ALLOCATION = 5500 ether;
    uint256 public constant DEV_FUND_POOL_ALLOCATION = 5000 ether;

    uint256 public constant VESTING_DURATION = 365 days;
    uint256 public startTime;
    uint256 public endTime;

    uint256 public communityFundRewardRate;
    uint256 public devFundRewardRate;

    address public communityFund;
    address public devFund;

    uint256 public communityFundLastClaimed;
    uint256 public devFundLastClaimed;

    bool public rewardPoolDistributed = false;

    constructor(uint256 _startTime, address _communityFund, address _devFund) public ERC20("TSHARE", "TSHARE") {
        _mint(msg.sender, 1 ether); // mint 1 TOMB Share for initial pools deployment

        startTime = _startTime;
        endTime = startTime + VESTING_DURATION;

        communityFundLastClaimed = startTime;
        devFundLastClaimed = startTime;

        communityFundRewardRate = COMMUNITY_FUND_POOL_ALLOCATION.div(VESTING_DURATION);
        devFundRewardRate = DEV_FUND_POOL_ALLOCATION.div(VESTING_DURATION);

        require(_devFund != address(0), "Address cannot be 0");
        devFund = _devFund;

        require(_communityFund != address(0), "Address cannot be 0");
        communityFund = _communityFund;
    }

    function setTreasuryFund(address _communityFund) external {
        require(msg.sender == devFund, "!dev");
        communityFund = _communityFund;
    }

    function setDevFund(address _devFund) external {
        require(msg.sender == devFund, "!dev");
        require(_devFund != address(0), "zero");
        devFund = _devFund;
    }

    function unclaimedTreasuryFund() public view returns (uint256 _pending) {
        uint256 _now = block.timestamp;
        if (_now > endTime) _now = endTime;
        if (communityFundLastClaimed >= _now) return 0;
        _pending = _now.sub(communityFundLastClaimed).mul(communityFundRewardRate);
    }

    function unclaimedDevFund() public view returns (uint256 _pending) {
        uint256 _now = block.timestamp;
        if (_now > endTime) _now = endTime;
        if (devFundLastClaimed >= _now) return 0;
        _pending = _now.sub(devFundLastClaimed).mul(devFundRewardRate);
    }

    /**
     * @dev Claim pending rewards to community and dev fund
     */
    function claimRewards() external {
        uint256 _pending = unclaimedTreasuryFund();
        if (_pending > 0 && communityFund != address(0)) {
            _mint(communityFund, _pending);
            communityFundLastClaimed = block.timestamp;
        }
        _pending = unclaimedDevFund();
        if (_pending > 0 && devFund != address(0)) {
            _mint(devFund, _pending);
            devFundLastClaimed = block.timestamp;
        }
    }

    /**
     * @notice distribute to reward pool (only once)
     */
    function distributeReward(address _farmingIncentiveFund) external onlyOperator {
        require(!rewardPoolDistributed, "only can distribute once");
        require(_farmingIncentiveFund != address(0), "!_farmingIncentiveFund");
        rewardPoolDistributed = true;
        _mint(_farmingIncentiveFund, FARMING_POOL_REWARD_ALLOCATION);
    }

    function burn(uint256 amount) public override {
        super.burn(amount);
    }

    function governanceRecoverUnsupported(
        IERC20 _token,
        uint256 _amount,
        address _to
    ) external onlyOperator {
        _token.transfer(_to, _amount);
    }
}

File 2 of 9 : Operator.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

import "@openzeppelin/contracts/GSN/Context.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract Operator is Context, Ownable {
    address private _operator;

    event OperatorTransferred(address indexed previousOperator, address indexed newOperator);

    constructor() internal {
        _operator = _msgSender();
        emit OperatorTransferred(address(0), _operator);
    }

    function operator() public view returns (address) {
        return _operator;
    }

    modifier onlyOperator() {
        require(_operator == msg.sender, "operator: caller is not the operator");
        _;
    }

    function isOperator() public view returns (bool) {
        return _msgSender() == _operator;
    }

    function transferOperator(address newOperator_) public onlyOwner {
        _transferOperator(newOperator_);
    }

    function _transferOperator(address newOperator_) internal {
        require(newOperator_ != address(0), "operator: zero address given for new operator");
        emit OperatorTransferred(address(0), newOperator_);
        _operator = newOperator_;
    }
}

File 3 of 9 : Context.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

import "../utils/Context.sol";

File 4 of 9 : Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <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 () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

File 5 of 9 : SafeMath.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: modulo by zero");
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}

File 6 of 9 : ERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

import "../../utils/Context.sol";
import "./IERC20.sol";
import "../../math/SafeMath.sol";

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
     * a default value of 18.
     *
     * To select a different value for {decimals}, use {_setupDecimals}.
     *
     * All three of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) public {
        _name = name_;
        _symbol = symbol_;
        _decimals = 18;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is
     * called.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual returns (uint8) {
        return _decimals;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Sets {decimals} to a value other than the default one of 18.
     *
     * WARNING: This function should only be called from the constructor. Most
     * applications that interact with token contracts will not expect
     * {decimals} to ever change, and may work incorrectly if it does.
     */
    function _setupDecimals(uint8 decimals_) internal virtual {
        _decimals = decimals_;
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

File 7 of 9 : ERC20Burnable.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

import "../../utils/Context.sol";
import "./ERC20.sol";

/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    using SafeMath for uint256;

    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        uint256 decreasedAllowance = allowance(account, _msgSender()).sub(amount, "ERC20: burn amount exceeds allowance");

        _approve(account, _msgSender(), decreasedAllowance);
        _burn(account, amount);
    }
}

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

pragma solidity >=0.6.0 <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);
}

File 9 of 9 : Context.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <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 GSN 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 payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 999999
  },
  "evmVersion": "istanbul",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"},{"internalType":"address","name":"_communityFund","type":"address"},{"internalType":"address","name":"_devFund","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOperator","type":"address"},{"indexed":true,"internalType":"address","name":"newOperator","type":"address"}],"name":"OperatorTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"COMMUNITY_FUND_POOL_ALLOCATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEV_FUND_POOL_ALLOCATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FARMING_POOL_REWARD_ALLOCATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VESTING_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"communityFund","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"communityFundLastClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"communityFundRewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devFund","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFundLastClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFundRewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_farmingIncentiveFund","type":"address"}],"name":"distributeReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_to","type":"address"}],"name":"governanceRecoverUnsupported","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardPoolDistributed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_devFund","type":"address"}],"name":"setDevFund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_communityFund","type":"address"}],"name":"setTreasuryFund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperator_","type":"address"}],"name":"transferOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unclaimedDevFund","outputs":[{"internalType":"uint256","name":"_pending","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unclaimedTreasuryFund","outputs":[{"internalType":"uint256","name":"_pending","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052600f805460ff191690553480156200001b57600080fd5b50604051620026a5380380620026a5833981810160405260608110156200004157600080fd5b5080516020808301516040938401518451808601865260068082526554534841524560d01b8286018181528851808a019099529188529487019490945280519495929491939092916200009791600391620004b9565b508051620000ad906004906020840190620004b9565b50506005805460ff19166012179055506000620000c9620002d6565b60058054610100600160a81b0319166101006001600160a01b03841690810291909117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000129620002d6565b600680546001600160a01b0319166001600160a01b0392831617908190556040519116906000907f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed908290a36200018933670de0b6b3a7640000620002da565b60078390556301e13380808401600855600d849055600e849055620001c69069012a27d53bc04870000090620003e9602090811b620015da17901c565b600955620001ef69010f0cf064dd592000006301e13380620003e9602090811b620015da17901c565b600a556001600160a01b03811662000244576040805162461bcd60e51b81526020600482015260136024820152720416464726573732063616e6e6f74206265203606c1b604482015290519081900360640190fd5b600c80546001600160a01b0319166001600160a01b03838116919091179091558216620002ae576040805162461bcd60e51b81526020600482015260136024820152720416464726573732063616e6e6f74206265203606c1b604482015290519081900360640190fd5b50600b80546001600160a01b0319166001600160a01b03929092169190911790555062000555565b3390565b6001600160a01b03821662000336576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620003446000838362000452565b62000360816002546200045760201b6200165b1790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620003939183906200165b62000457821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600080821162000440576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816200044a57fe5b049392505050565b505050565b600082820183811015620004b2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004fc57805160ff19168380011785556200052c565b828001600101855582156200052c579182015b828111156200052c5782518255916020019190600101906200050f565b506200053a9291506200053e565b5090565b5b808211156200053a57600081556001016200053f565b61214080620005656000396000f3fe608060405234801561001057600080fd5b50600436106102ac5760003560e01c806344cdc4541161017b57806395d89b41116100d8578063abb4b1be1161008c578063dd62ed3e11610071578063dd62ed3e146106d9578063f2fde38b14610714578063f746b71814610747576102ac565b8063abb4b1be1461069e578063ae4db919146106a6576102ac565b8063a06160fd116100bd578063a06160fd14610624578063a457c2d71461062c578063a9059cbb14610665576102ac565b806395d89b41146106145780639662676c1461061c576102ac565b806370a082311161012f57806378e979251161011457806378e97925146105cb57806379cc6790146105d35780638da5cb5b1461060c576102ac565b806370a0823114610590578063715018a6146105c3576102ac565b80634f337dd5116101605780634f337dd51461053d57806354575af414610545578063570ca73514610588576102ac565b806344cdc4541461052d5780634cfc4d3014610535576102ac565b80632c07a6241161022957806339509351116101dd57806342966c68116101c257806342966c68146105005780634390d2a81461051d5780634456eda214610525576102ac565b806339509351146104bf5780633bba8eed146104f8576102ac565b8063313ce5671161020e578063313ce567146104915780633197cbb6146104af578063372500ab146104b7576102ac565b80632c07a624146104815780632e3367ce14610489576102ac565b8063095ea7b31161028057806318160ddd1161026557806318160ddd1461040357806323b872dd1461040b57806329605e771461044e576102ac565b8063095ea7b3146103ae57806317764782146103fb576102ac565b8062f380f4146102b157806304017315146102e257806306fdde03146102fc578063092193ab14610379575b600080fd5b6102b961077a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102ea610796565b60408051918252519081900360200190f35b61030461079c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561033e578181015183820152602001610326565b50505050905090810190601f16801561036b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ac6004803603602081101561038f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610851565b005b6103e7600480360360408110156103c457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109f7565b604080519115158252519081900360200190f35b6102ea610a15565b6102ea610a63565b6103e76004803603606081101561042157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610a69565b6103ac6004803603602081101561046457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610b0a565b6102ea610bbb565b6102ea610bfd565b610499610c03565b6040805160ff9092168252519081900360200190f35b6102ea610c0c565b6103ac610c12565b6103e7600480360360408110156104d557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610cd2565b6102ea610d2d565b6103ac6004803603602081101561051657600080fd5b5035610d3b565b6102b9610d44565b6103e7610d60565b6102ea610da0565b6102ea610da6565b6102ea610dae565b6103ac6004803603606081101561055b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359160409091013516610dbc565b6102b9610ece565b6102ea600480360360208110156105a657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610eea565b6103ac610f12565b6102ea61102e565b6103ac600480360360408110156105e957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611034565b6102b961108e565b6103046110af565b6103e761112e565b6102ea611137565b6103e76004803603604081101561064257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611145565b6103e76004803603604081101561067b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356111ba565b6102ea6111ce565b6103ac600480360360208110156106bc57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111d4565b6102ea600480360360408110156106ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611327565b6103ac6004803603602081101561072a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661135f565b6103ac6004803603602081101561075d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661150b565b600b5473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108465780601f1061081b57610100808354040283529160200191610846565b820191906000526020600020905b81548152906001019060200180831161082957829003601f168201915b505050505090505b90565b60065473ffffffffffffffffffffffffffffffffffffffff1633146108c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806120586024913960400191505060405180910390fd5b600f5460ff161561093357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6f6e6c792063616e2064697374726962757465206f6e63650000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166109b557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f215f6661726d696e67496e63656e7469766546756e6400000000000000000000604482015290519081900360640190fd5b600f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556109f481690c99805fe37d3e3000006116d6565b50565b6000610a0b610a04611807565b848461180b565b5060015b92915050565b6008546000904290811115610a2957506008545b80600d5410610a3c57600091505061084e565b610a5d600954610a57600d548461195290919063ffffffff16565b906119c9565b91505090565b60025490565b6000610a76848484611a3c565b610b0084610a82611807565b610afb8560405180606001604052806028815260200161200c6028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020526040812090610acd611807565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190611c0c565b61180b565b5060019392505050565b610b12611807565b73ffffffffffffffffffffffffffffffffffffffff16610b3061108e565b73ffffffffffffffffffffffffffffffffffffffff1614610bb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6109f481611cbd565b6008546000904290811115610bcf57506008545b80600e5410610be257600091505061084e565b610a5d600a54610a57600e548461195290919063ffffffff16565b600a5481565b60055460ff1690565b60085481565b6000610c1c610a15565b9050600081118015610c455750600b5473ffffffffffffffffffffffffffffffffffffffff1615155b15610c7257600b54610c6d9073ffffffffffffffffffffffffffffffffffffffff16826116d6565b42600d555b610c7a610bbb565b9050600081118015610ca35750600c5473ffffffffffffffffffffffffffffffffffffffff1615155b156109f457600c54610ccb9073ffffffffffffffffffffffffffffffffffffffff16826116d6565b42600e5550565b6000610a0b610cdf611807565b84610afb8560016000610cf0611807565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c16815292529020549061165b565b69012a27d53bc04870000081565b6109f481611db3565b600c5473ffffffffffffffffffffffffffffffffffffffff1681565b60065460009073ffffffffffffffffffffffffffffffffffffffff16610d84611807565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60095481565b6301e1338081565b69010f0cf064dd5920000081565b60065473ffffffffffffffffffffffffffffffffffffffff163314610e2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806120586024913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610e9d57600080fd5b505af1158015610eb1573d6000803e3d6000fd5b505050506040513d6020811015610ec757600080fd5b5050505050565b60065473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610f1a611807565b73ffffffffffffffffffffffffffffffffffffffff16610f3861108e565b73ffffffffffffffffffffffffffffffffffffffff1614610fba57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600554604051600091610100900473ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b60075481565b600061106b82604051806060016040528060248152602001612034602491396110648661105f611807565b611327565b9190611c0c565b905061107f83611079611807565b8361180b565b6110898383611dc0565b505050565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1690565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108465780601f1061081b57610100808354040283529160200191610846565b600f5460ff1681565b690c99805fe37d3e30000081565b6000610a0b611152611807565b84610afb856040518060600160405280602581526020016120e6602591396001600061117c611807565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190611c0c565b6000610a0b6111c7611807565b8484611a3c565b600d5481565b600c5473ffffffffffffffffffffffffffffffffffffffff16331461125c57604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048083019190915260248201527f2164657600000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166112e057604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048083019190915260248201527f7a65726f00000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b611367611807565b73ffffffffffffffffffffffffffffffffffffffff1661138561108e565b73ffffffffffffffffffffffffffffffffffffffff161461140757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116611473576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611f506026913960400191505060405180910390fd5b60055460405173ffffffffffffffffffffffffffffffffffffffff80841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36005805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b600c5473ffffffffffffffffffffffffffffffffffffffff16331461159357604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048083019190915260248201527f2164657600000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600080821161164a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161165357fe5b049392505050565b6000828201838110156116cf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821661175857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61176460008383611089565b600254611771908261165b565b60025573ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546117a4908261165b565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316611877576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806120c26024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166118e3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611f766022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000828211156119c357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000826119d857506000610a0f565b828202828482816119e557fe5b04146116cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611feb6021913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316611aa8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061209d6025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611f0b6023913960400191505060405180910390fd5b611b1f838383611089565b611b6981604051806060016040528060268152602001611f986026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190611c0c565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054611ba5908261165b565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115611cb5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611c7a578181015183820152602001611c62565b50505050905090810190601f168015611ca75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b73ffffffffffffffffffffffffffffffffffffffff8116611d29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180611fbe602d913960400191505060405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216906000907f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed908290a3600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6109f4611dbe611807565b825b73ffffffffffffffffffffffffffffffffffffffff8216611e2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061207c6021913960400191505060405180910390fd5b611e3882600083611089565b611e8281604051806060016040528060228152602001611f2e6022913973ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020549190611c0c565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055600254611eb59082611952565b60025560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63656f70657261746f723a207a65726f206164647265737320676976656e20666f72206e6577206f70657261746f72536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e63656f70657261746f723a2063616c6c6572206973206e6f7420746865206f70657261746f7245524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200c23aca552ad00dca58dc2af3bd2dc9dc1f409202fe2cf3c56df8dc22c1af69364736f6c634300060c00330000000000000000000000000000000000000000000000000000000060b779c80000000000000000000000000fa5a3b6f8e26a7c2c67bd205ffcfa9f89b0e8d100000000000000000000000032439f5a7dc35590e83aac0a80762de27ab76046

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

0000000000000000000000000000000000000000000000000000000060b779c80000000000000000000000000fa5a3b6f8e26a7c2c67bd205ffcfa9f89b0e8d100000000000000000000000032439f5a7dc35590e83aac0a80762de27ab76046

-----Decoded View---------------
Arg [0] : _startTime (uint256): 1622637000
Arg [1] : _communityFund (address): 0x0fa5a3b6f8e26a7c2c67bd205ffcfa9f89b0e8d1
Arg [2] : _devFund (address): 0x32439f5a7dc35590e83aac0a80762de27ab76046

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000060b779c8
Arg [1] : 0000000000000000000000000fa5a3b6f8e26a7c2c67bd205ffcfa9f89b0e8d1
Arg [2] : 00000000000000000000000032439f5a7dc35590e83aac0a80762de27ab76046


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
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.