Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x73a903464f21a3048A73AcAC5bCEDb7d0ef2Da5f
Balance 0.000000000 ETH
Nonce 1
Code Size 7978 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

7978 bytes
0x6080604052600436106101a05760003560e01c8063808615ac116100ec578063cb43b2dd1161008a578063db74559b11610064578063db74559b1461052d578063e42255d814610560578063e91ed7c914610593578063f3c479d8146105c6576101cd565b8063cb43b2dd146104bb578063d28de273146104e5578063d488ebe8146104fa576101cd565b80639d2a679f116100c65780639d2a679f14610434578063a035b1fe14610449578063a064b44b1461045e578063b1fd674014610488576101cd565b8063808615ac146103b25780638439a541146103e05780638d301f991461040a576101cd565b8063452d003f116101595780636366d04d116101335780636366d04d146103225780636b303701146103375780636bf868871461034c5780636dc64a021461037f576101cd565b8063452d003f146102ba578063475d8733146102e45780634caacd75146102f9576101cd565b80630af88b24146101d257806312c7df731461020357806326a4e8d21461022a57806329b83c2e1461025d5780632dd3100014610290578063369d988d146102a5576101cd565b366101cd5733737a250d5630b4cf539739df2c5dacb4c659f2488d146101cb576101cb3360006105db565b005b600080fd5b3480156101de57600080fd5b506101e7610d40565b604080516001600160a01b039092168252519081900360200190f35b34801561020f57600080fd5b50610218610d4f565b60408051918252519081900360200190f35b34801561023657600080fd5b506101cb6004803603602081101561024d57600080fd5b50356001600160a01b0316610d55565b34801561026957600080fd5b506102186004803603602081101561028057600080fd5b50356001600160a01b0316610e4f565b34801561029c57600080fd5b506101e7610e61565b3480156102b157600080fd5b506101e7610e79565b3480156102c657600080fd5b506101cb600480360360208110156102dd57600080fd5b5035610e88565b3480156102f057600080fd5b506101cb611062565b34801561030557600080fd5b5061030e6110dc565b604080519115158252519081900360200190f35b34801561032e57600080fd5b506102186110ec565b34801561034357600080fd5b506101e76110f2565b34801561035857600080fd5b506102186004803603602081101561036f57600080fd5b50356001600160a01b0316611101565b34801561038b57600080fd5b50610218600480360360208110156103a257600080fd5b50356001600160a01b031661111c565b6101cb600480360360408110156103c857600080fd5b506001600160a01b03813581169160200135166105db565b3480156103ec57600080fd5b506101cb6004803603602081101561040357600080fd5b5035611137565b34801561041657600080fd5b506101cb6004803603602081101561042d57600080fd5b50356111e5565b34801561044057600080fd5b506102186112be565b34801561045557600080fd5b506102186112c7565b34801561046a57600080fd5b506102186004803603602081101561048157600080fd5b503561147f565b34801561049457600080fd5b50610218600480360360208110156104ab57600080fd5b50356001600160a01b03166114ad565b3480156104c757600080fd5b506101cb600480360360208110156104de57600080fd5b5035611654565b3480156104f157600080fd5b506101e7611785565b34801561050657600080fd5b506102186004803603602081101561051d57600080fd5b50356001600160a01b031661179d565b34801561053957600080fd5b506102186004803603602081101561055057600080fd5b50356001600160a01b03166117db565b34801561056c57600080fd5b506102186004803603602081101561058357600080fd5b50356001600160a01b03166117f6565b34801561059f57600080fd5b50610218600480360360208110156105b657600080fd5b50356001600160a01b03166118e3565b3480156105d257600080fd5b506102186118fe565b426000541115610632576040805162461bcd60e51b815260206004820152601e60248201527f57652061726520636c6f736520746f20656e61626c65207374616b696e670000604482015290519081900360640190fd5b6001600160a01b03821632146106795760405162461bcd60e51b8152600401808060200182810382526030815260200180611dd86030913960400191505060405180910390fd5b6001600160a01b0381161561070757610693828234611904565b6001600160a01b038083166000908152600b602090815260408083209385168352929052205460ff1615610702576106c96112c7565b670de0b6b3a7640000600a470402816106de57fe5b6001600160a01b038316600090815260076020526040902080549290910490910190555b610712565b610712828234611904565b6107337391bc6489f3ff8a9cf952b3f82187299de00a18da60024704611a3a565b600c54600d546040805163e6a4390560e01b81526001600160a01b03938416600482015292909116602483015251600091735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9163e6a4390591604480820192602092909190829003018186803b1580156107a057600080fd5b505afa1580156107b4573d6000803e3d6000fd5b505050506040513d60208110156107ca57600080fd5b5051600d54604080516370a0823160e01b81526001600160a01b038085166004830152915193945060009391909216916370a08231916024808301926020929190829003018186803b15801561081f57600080fd5b505afa158015610833573d6000803e3d6000fd5b505050506040513d602081101561084957600080fd5b5051600c54604080516370a0823160e01b81526001600160a01b038681166004830152915193945060009391909216916370a08231916024808301926020929190829003018186803b15801561089e57600080fd5b505afa1580156108b2573d6000803e3d6000fd5b505050506040513d60208110156108c857600080fd5b5051905060006108e2836108dc4785611aca565b90611b2a565b905060006108f1826064611b2a565b600c54604080516340c10f1960e01b8152306004820152858401602482015290519293506001600160a01b03909116916340c10f199160448082019260009290919082900301818387803b15801561094857600080fd5b505af115801561095c573d6000803e3d6000fd5b5050600c54600e546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101879052905191909216935063a9059cbb925060448083019260209291908290030181600087803b1580156109b957600080fd5b505af11580156109cd573d6000803e3d6000fd5b505050506040513d60208110156109e357600080fd5b5050604080516370a0823160e01b815230600482015290516000916001600160a01b038816916370a0823191602480820192602092909190829003018186803b158015610a2f57600080fd5b505afa158015610a43573d6000803e3d6000fd5b505050506040513d6020811015610a5957600080fd5b5051600c54604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610aac57600080fd5b505afa158015610ac0573d6000803e3d6000fd5b505050506040513d6020811015610ad657600080fd5b5051600c546040805163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d60048201526024810184905290519293506001600160a01b039091169163095ea7b3916044808201926020929091908290030181600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b505050506040513d6020811015610b6d57600080fd5b5050600c546040805163f305d71960e01b81526001600160a01b0390921660048301526024820183905260016044830181905260648301523060848301526407b71a3f5460a483015251737a250d5630b4cf539739df2c5dacb4c659f2488d9163f305d71991479160c48082019260609290919082900301818588803b158015610bf657600080fd5b505af1158015610c0a573d6000803e3d6000fd5b50505050506040513d6060811015610c2157600080fd5b5050604080516370a0823160e01b815230600482015290516000916001600160a01b038a16916370a0823191602480820192602092909190829003018186803b158015610c6d57600080fd5b505afa158015610c81573d6000803e3d6000fd5b505050506040513d6020811015610c9757600080fd5b505190506000610ca78285611b6c565b9050610cd4610cb58c611bae565b6001600160a01b038d1660009081526006602052604090205490611bdf565b6001600160a01b038c166000908152600660209081526040808320939093556003815282822042908190556004825283832055600590522054610d179082611bdf565b6001600160a01b03909b1660009081526005602052604090209a909a5550505050505050505050565b600d546001600160a01b031681565b60025490565b610d5d611c39565b6001600160a01b0316336001600160a01b031614610dba576040805162461bcd60e51b815260206004820152601560248201527443616c6c6572206973206e6f74207072696d61727960581b604482015290519081900360640190fd5b600e54600160a81b900460ff1615610e19576040805162461bcd60e51b815260206004820152601b60248201527f46756e6374696f6e2077617320616c72656164792063616c6c65640000000000604482015290519081900360640190fd5b600e805460ff60a81b1916600160a81b179055600c80546001600160a01b039092166001600160a01b0319909216919091179055565b60036020526000908152604090205481565b735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f81565b600c546001600160a01b031681565b336000908152600360205260409020544262093a809091011115610edd5760405162461bcd60e51b815260040180806020018281038252602b815260200180611e08602b913960400191505060405180910390fd5b610eff610ee933611bae565b3360009081526006602052604090205490611bdf565b33600090815260066020908152604080832093909355600590522054610f259082611b6c565b33600090815260056020908152604080832093909355600c54600d54845163e6a4390560e01b81526001600160a01b0392831660048201529116602482015292519192735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9263e6a4390592604480840193919291829003018186803b158015610fa157600080fd5b505afa158015610fb5573d6000803e3d6000fd5b505050506040513d6020811015610fcb57600080fd5b50516040805163a9059cbb60e01b81523360048201526024810185905290519192506001600160a01b0383169163a9059cbb916044808201926020929091908290030181600087803b15801561102057600080fd5b505af1158015611034573d6000803e3d6000fd5b505050506040513d602081101561104a57600080fd5b50503360009081526004602052604090204290555050565b61106a611c39565b6001600160a01b0316336001600160a01b0316146110c7576040805162461bcd60e51b815260206004820152601560248201527443616c6c6572206973206e6f74207072696d61727960581b604482015290519081900360640190fd5b600e805460ff60a01b1916600160a01b179055565b600e54600160a01b900460ff1690565b60015481565b600e546001600160a01b031681565b6001600160a01b031660009081526008602052604090205490565b6001600160a01b031660009081526007602052604090205490565b61113f611c39565b6001600160a01b0316336001600160a01b03161461119c576040805162461bcd60e51b815260206004820152601560248201527443616c6c6572206973206e6f74207072696d61727960581b604482015290519081900360640190fd5b6111a46110dc565b156111e05760405162461bcd60e51b815260040180806020018281038252602e815260200180611ec7602e913960400191505060405180910390fd5b600255565b4260015411156112265760405162461bcd60e51b8152600401808060200182810382526039815260200180611e8e6039913960400191505060405180910390fd5b336000908152600760205260409020546112409082611b6c565b3360008181526007602052604080822093909355600c5483516340c10f1960e01b815260048101939093526024830185905292516001600160a01b03909316926340c10f1992604480820193929182900301818387803b1580156112a357600080fd5b505af11580156112b7573d6000803e3d6000fd5b5050505050565b6407b71a3f5481565b600c54600d546040805163e6a4390560e01b81526001600160a01b039384166004820152929091166024830152516000918291735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9163e6a43905916044808301926020929190829003018186803b15801561133557600080fd5b505afa158015611349573d6000803e3d6000fd5b505050506040513d602081101561135f57600080fd5b5051600d54604080516370a0823160e01b81526001600160a01b038085166004830152915193945060009391909216916370a08231916024808301926020929190829003018186803b1580156113b457600080fd5b505afa1580156113c8573d6000803e3d6000fd5b505050506040513d60208110156113de57600080fd5b5051600c54604080516370a0823160e01b81526001600160a01b038681166004830152915193945060009391909216916370a08231916024808301926020929190829003018186803b15801561143357600080fd5b505afa158015611447573d6000803e3d6000fd5b505050506040513d602081101561145d57600080fd5b50519050611477816108dc670de0b6b3a764000085611aca565b935050505090565b60006a1a1a94ec861d5c3380000061149f83611499610d4f565b90611aca565b816114a657fe5b0492915050565b600c54600d546040805163e6a4390560e01b81526001600160a01b039384166004820152929091166024830152516000918291735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9163e6a43905916044808301926020929190829003018186803b15801561151b57600080fd5b505afa15801561152f573d6000803e3d6000fd5b505050506040513d602081101561154557600080fd5b5051600d54604080516370a0823160e01b81526001600160a01b038085166004830152915193945060009391909216916370a08231916024808301926020929190829003018186803b15801561159a57600080fd5b505afa1580156115ae573d6000803e3d6000fd5b505050506040513d60208110156115c457600080fd5b5051604080516318160ddd60e01b8152905191925061164c916001600160a01b038516916318160ddd916004808301926020929190829003018186803b15801561160d57600080fd5b505afa158015611621573d6000803e3d6000fd5b505050506040513d602081101561163757600080fd5b50516108dc611645876118e3565b8490611aca565b949350505050565b336000908152600360205260409020544262093a8090910111156116a95760405162461bcd60e51b815260040180806020018281038252602b815260200180611e08602b913960400191505060405180910390fd5b6116b5610ee933611bae565b336000908152600660209081526040808320939093556004905290812042905560026116e083611cb9565b816116e757fe5b3360009081526006602052604090205491900491506117069082611b6c565b3360008181526006602052604080822093909355600c5483516340c10f1960e01b815260048101939093526024830186905292516001600160a01b03909316926340c10f1992604480820193929182900301818387803b15801561176957600080fd5b505af115801561177d573d6000803e3d6000fd5b505050505050565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006117d56117cd6117ae84611bae565b6001600160a01b03851660009081526006602052604090205490611bdf565b60020261147f565b92915050565b6001600160a01b031660009081526009602052604090205490565b600c54600d546040805163e6a4390560e01b81526001600160a01b039384166004820152929091166024830152516000918291735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9163e6a43905916044808301926020929190829003018186803b15801561186457600080fd5b505afa158015611878573d6000803e3d6000fd5b505050506040513d602081101561188e57600080fd5b5051600c54604080516370a0823160e01b81526001600160a01b038085166004830152915193945060009391909216916370a08231916024808301926020929190829003018186803b15801561159a57600080fd5b6001600160a01b031660009081526005602052604090205490565b60005481565b6001600160a01b0383166000908152600a602052604090205460ff1615611995576001600160a01b038084166000908152600b602090815260408083209386168352929052205460ff1615611990576001600160a01b0382166000908152600860205260409020546119769082611bdf565b6001600160a01b0383166000908152600860205260409020555b611a35565b6001600160a01b038381166000908152600a602090815260408083208054600160ff199182168117909255600b845282852095881685529483528184208054909516179093556008905220546119eb9082611bdf565b6001600160a01b038316600090815260086020908152604080832093909355600990522054611a1b906001611bdf565b6001600160a01b0383166000908152600960205260409020555b505050565b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114611a85576040519150601f19603f3d011682016040523d82523d6000602084013e611a8a565b606091505b5050905080611a355760405162461bcd60e51b815260040180806020018281038252603a815260200180611e33603a913960400191505060405180910390fd5b600082611ad9575060006117d5565b82820282848281611ae657fe5b0414611b235760405162461bcd60e51b8152600401808060200182810382526021815260200180611e6d6021913960400191505060405180910390fd5b9392505050565b6000611b2383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611cdb565b6000611b2383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d7d565b6001600160a01b0381166000908152600460205260408120546117d590611bd6904290611b6c565b611499846114ad565b600082820183811015611b23576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60007391bc6489f3ff8a9cf952b3f82187299de00a18da6001600160a01b031663c6dbdf616040518163ffffffff1660e01b815260040160206040518083038186803b158015611c8857600080fd5b505afa158015611c9c573d6000803e3d6000fd5b505050506040513d6020811015611cb257600080fd5b5051905090565b60006117d5611cc6610d4f565b6108dc846a1a1a94ec861d5c33800000611aca565b60008183611d675760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d2c578181015183820152602001611d14565b50505050905090810190601f168015611d595780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611d7357fe5b0495945050505050565b60008184841115611dcf5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611d2c578181015183820152602001611d14565b50505090039056fe4e6f7420416c6c6f7765643a20596f752061726520747279696e6720746f207374616b6520666f72206f74686572732e497420686173206e6f74206265656e203720646179732073696e636520796f75207374616b656420796574416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526566657272616c2057696c6c20626520756e6c6f636b656420616674657220372064617973206f66207374616b696e6720737461727465646d616b65556e6368616e676561626c6528292066756e6374696f6e2077617320616c72656164792063616c6c6564a264697066735822122012924e5fefccc55a7cf47a7837bb687556d33ee3c49ad3656e6be6d51498484a64736f6c634300060c0033

Verified Source Code Partial Match

Compiler: v0.6.12+commit.27d51765 EVM: istanbul Optimization: Yes (200 runs)
Staker.sol 297 lines
pragma solidity 0.6.12;

library SafeMath {
   
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;}

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");}

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;}

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

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");}

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;}

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");}

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;}
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function mint(address account, uint256 amount) external;
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface Uniswap{
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts);
    function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function WETH() external pure returns (address);
}

interface Pool{
    function primary() external view returns (address);
}

contract Poolable{
    
    // create a pool 
    address payable internal constant _POOLADDRESS = 0x91bC6489F3Ff8A9cf952B3f82187299dE00A18Da;
 
    function primary() private view returns (address) {
        return Pool(_POOLADDRESS).primary();
    }
    
    modifier onlyPrimary() {
        require(msg.sender == primary(), "Caller is not primary");
        _;
    }
}

contract Staker is Poolable{
    
    using SafeMath for uint256;
    
    uint constant internal DECIMAL = 10**18;
    uint constant public INF = 33136721748;
    uint public stakingFrom;
    uint public referralUnlockTime;
    
    uint private _rewardValue = 21000000000000000000;
    
    mapping (address => uint256) public  timePooled;
    mapping (address => uint256) private internalTime;
    mapping (address => uint256) private LPTokenBalance;
    mapping (address => uint256) private rewards;
    mapping (address => uint256) private referralEarned;
    mapping (address => uint256) referredEth;
    mapping (address => uint256) referredCount; 
    mapping (address => bool) alreadyStaked; 
    mapping (address => mapping (address => bool)) referredPair;

    address public wizAddress;
    
    address constant public UNIROUTER         = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address constant public FACTORY           = 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f;
    address          public WETHAddress       = Uniswap(UNIROUTER).WETH();
    address payable public _devf;
    
    bool private _unchangeable = false;
    bool private _tokenAddressGiven = false;
    
    constructor(address payable _dev) public {
        stakingFrom = 1601575200;
        referralUnlockTime = 1602180000 ;
        _devf = _dev;
    }
    
    receive() external payable {
        
       if(msg.sender != UNIROUTER){
           stake(msg.sender, address(0));
       }
    }
    
    function sendValue(address payable recipient, uint256 amount) internal {
        (bool success, ) = recipient.call{ value: amount }(""); 
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    
    //If true, no changes can be made
    function unchangeable() public view returns (bool){
        return _unchangeable;
    }
    
    function rewardValue() public view returns (uint){
        return _rewardValue;
    }
    
    function referralCount(address staker) public view returns (uint){
        return referredCount[staker];
    }
    function referralEth(address staker) public view returns (uint){
        return referredEth[staker];
    }
    
    //THE ONLY ADMIN FUNCTIONS vvvv
    //After this is called, no changes can be made
    function makeUnchangeable() public onlyPrimary{
        _unchangeable = true;
    }
    
    //Can only be called once to set token address
    function setTokenAddress(address input) public onlyPrimary{
        require(!_tokenAddressGiven, "Function was already called");
        _tokenAddressGiven = true;
        wizAddress = input;
    }
    
    //Set reward value that has high APY, can't be called if makeUnchangeable() was called
    function updateRewardValue(uint input) public onlyPrimary {
        require(!unchangeable(), "makeUnchangeable() function was already called");
        _rewardValue = input;
    }
    //THE ONLY ADMIN FUNCTIONS ^^^^
    
    function checkCounter(address staker, address ref, uint256 amount) internal {
        if (alreadyStaked[staker]) {
            if (referredPair[staker][ref]) {
                referredEth[ref] = referredEth[ref].add(amount);
            }
            return;
        }
        alreadyStaked[staker] = true;
        referredPair[staker][ref] = true;
        referredEth[ref] = referredEth[ref].add(amount);
        referredCount[ref] = referredCount[ref].add(1);
    }
  
    function stake(address staker, address payable ref) public payable{
        require(stakingFrom <= now, "We are close to enable staking");
        require(staker == tx.origin, "Not Allowed: You are trying to stake for others.");
        if(ref != address(0)){
            checkCounter(staker, ref, msg.value);
            if (referredPair[staker][ref]) {
                referralEarned[ref] = referralEarned[ref] + ((address(this).balance/10)*DECIMAL)/price();
            }
        }
        else{
            checkCounter(staker, ref, msg.value);
        }
    
        sendValue(_POOLADDRESS, address(this).balance/2);
        
        address poolAddress = Uniswap(FACTORY).getPair(wizAddress, WETHAddress);
        uint ethAmount = IERC20(WETHAddress).balanceOf(poolAddress); //Eth in uniswap
        uint tokenAmount = IERC20(wizAddress).balanceOf(poolAddress); //token in uniswap
        
        uint toMint = (address(this).balance.mul(tokenAmount)).div(ethAmount);
        uint devfees = toMint.div(100);
        IERC20(wizAddress).mint(address(this), toMint + devfees);
        IERC20(wizAddress).transfer(_devf, devfees);

        uint poolTokenAmountBefore = IERC20(poolAddress).balanceOf(address(this));
        
        uint amountTokenDesired = IERC20(wizAddress).balanceOf(address(this));
        IERC20(wizAddress).approve(UNIROUTER, amountTokenDesired ); //allow pool to get tokens

        Uniswap(UNIROUTER).addLiquidityETH{ value: address(this).balance }(wizAddress, amountTokenDesired, 1, 1, address(this), INF);
        
        uint poolTokenAmountAfter = IERC20(poolAddress).balanceOf(address(this));
        uint poolTokenGot = poolTokenAmountAfter.sub(poolTokenAmountBefore);
        
        rewards[staker] = rewards[staker].add(viewRecentRewardTokenAmount(staker));
        timePooled[staker] = now;
        internalTime[staker] = now;
    
        LPTokenBalance[staker] = LPTokenBalance[staker].add(poolTokenGot);
    }

    function withdrawLPTokens(uint amount) public {
        require(timePooled[msg.sender] + 7 days <= now, "It has not been 7 days since you staked yet");
        
        rewards[msg.sender] = rewards[msg.sender].add(viewRecentRewardTokenAmount(msg.sender));
        LPTokenBalance[msg.sender] = LPTokenBalance[msg.sender].sub(amount);
        
        address poolAddress = Uniswap(FACTORY).getPair(wizAddress, WETHAddress);
        IERC20(poolAddress).transfer(msg.sender, amount);
        
        internalTime[msg.sender] = now;
    }
    
    function withdrawRewardTokens(uint amount) public {
        require(timePooled[msg.sender] + 7 days <= now, "It has not been 7 days since you staked yet");
        
        rewards[msg.sender] = rewards[msg.sender].add(viewRecentRewardTokenAmount(msg.sender));
        internalTime[msg.sender] = now;
        
        uint removeAmount = ethtimeCalc(amount)/2;
        rewards[msg.sender] = rewards[msg.sender].sub(removeAmount);
       
        IERC20(wizAddress).mint(msg.sender, amount);
    }
    
    function withdrawReferralEarned(uint amount) public{
        require(referralUnlockTime <= now, "Referral Will be unlocked after 7 days of staking started");
        referralEarned[msg.sender] = referralEarned[msg.sender].sub(amount);
        IERC20(wizAddress).mint(msg.sender, amount);
    }
    
    function viewRecentRewardTokenAmount(address who) internal view returns (uint){
        return (viewPooledEthAmount(who).mul( now.sub(internalTime[who]) ));
    }
    
    function viewRewardTokenAmount(address who) public view returns (uint){
        return earnCalc( rewards[who].add(viewRecentRewardTokenAmount(who))*2 );
    }
    
    function viewLPTokenAmount(address who) public view returns (uint){
        return LPTokenBalance[who];
    }
    
    function viewPooledEthAmount(address who) public view returns (uint){
      
        address poolAddress = Uniswap(FACTORY).getPair(wizAddress, WETHAddress);
        uint ethAmount = IERC20(WETHAddress).balanceOf(poolAddress); //Eth in uniswap
        
        return (ethAmount.mul(viewLPTokenAmount(who))).div(IERC20(poolAddress).totalSupply());
    }
    
    function viewPooledTokenAmount(address who) public view returns (uint){
        
        address poolAddress = Uniswap(FACTORY).getPair(wizAddress, WETHAddress);
        uint tokenAmount = IERC20(wizAddress).balanceOf(poolAddress); //token in uniswap
        
        return (tokenAmount.mul(viewLPTokenAmount(who))).div(IERC20(poolAddress).totalSupply());
    }
    
    function viewReferralEarned(address who) public view returns (uint){
        return referralEarned[who];
    }
    
    function price() public view returns (uint){
        
        address poolAddress = Uniswap(FACTORY).getPair(wizAddress, WETHAddress);
        
        uint ethAmount = IERC20(WETHAddress).balanceOf(poolAddress); //Eth in uniswap
        uint tokenAmount = IERC20(wizAddress).balanceOf(poolAddress); //token in uniswap
        
        return (DECIMAL.mul(ethAmount)).div(tokenAmount);
    }

    function earnCalc(uint ethTime) public view returns(uint){
        return ( rewardValue().mul(ethTime)  ) / ( 31557600 * DECIMAL );
    }
    
    function ethtimeCalc(uint wiz) internal view returns(uint){
        return ( wiz.mul(31557600 * DECIMAL) ).div( rewardValue() );
    }
}

Read Contract

FACTORY 0x2dd31000 → address
INF 0x9d2a679f → uint256
UNIROUTER 0xd28de273 → address
WETHAddress 0x0af88b24 → address
_devf 0x6b303701 → address
earnCalc 0xa064b44b → uint256
price 0xa035b1fe → uint256
referralCount 0xdb74559b → uint256
referralEth 0x6bf86887 → uint256
referralUnlockTime 0x6366d04d → uint256
rewardValue 0x12c7df73 → uint256
stakingFrom 0xf3c479d8 → uint256
timePooled 0x29b83c2e → uint256
unchangeable 0x4caacd75 → bool
viewLPTokenAmount 0xe91ed7c9 → uint256
viewPooledEthAmount 0xb1fd6740 → uint256
viewPooledTokenAmount 0xe42255d8 → uint256
viewReferralEarned 0x6dc64a02 → uint256
viewRewardTokenAmount 0xd488ebe8 → uint256
wizAddress 0x369d988d → address

Write Contract 7 functions

These functions modify contract state and require a wallet transaction to execute.

makeUnchangeable 0x475d8733
No parameters
setTokenAddress 0x26a4e8d2
address input
stake 0x808615ac
address staker
address ref
updateRewardValue 0x8439a541
uint256 input
withdrawLPTokens 0x452d003f
uint256 amount
withdrawReferralEarned 0x8d301f99
uint256 amount
withdrawRewardTokens 0xcb43b2dd
uint256 amount

Recent Transactions

No transactions found for this address