My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
Contract Name:
LiquidityGenerator
Compiler Version
v0.6.6+commit.6c089d02
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity =0.6.6; import "./interfaces/IERC20.sol"; import "./interfaces/IOwnedDistributor.sol"; import "./interfaces/IUniswapV2Router01.sol"; import "./libraries/SafeMath.sol"; import "./libraries/SafeToken.sol"; contract LiquidityGenerator { using SafeMath for uint256; using SafeToken for address; address public immutable admin; address public immutable tarot; address public immutable router0; address public immutable router1; address public immutable pair0; address public immutable pair1; address public immutable reservesManager; address public immutable distributor; address public immutable bonusDistributor; uint public immutable periodBegin; uint public immutable periodEnd; uint public immutable bonusEnd; uint public immutable sharesRouter0; uint public immutable sharesRouter1; uint public immutable totalRouterShares; uint public unlockTimestamp; bool public finalized = false; bool public delivered = false; event Finalized(uint amountTarot, uint amountETH); event Deposit( address indexed sender, uint amount, uint distributorTotalShares, uint bonusDistributorTotalShares, uint newShares, uint newBonusShares ); event PostponeUnlockTimestamp(uint prevUnlockTimestamp, uint unlockTimestamp); event Delivered(uint amountPair0, uint amountPair1); constructor( address admin_, address tarot_, address router0_, address router1_, address pair0_, address pair1_, address reservesManager_, address distributor_, address bonusDistributor_, uint periodBegin_, uint periodDuration_, uint bonusDuration_, uint sharesRouter0_, uint sharesRouter1_ ) public { require(periodDuration_ > 0, "LiquidityGenerator: INVALID_PERIOD_DURATION"); require(bonusDuration_ > 0 && bonusDuration_ <= periodDuration_, "LiquidityGenerator: INVALID_BONUS_DURATION"); admin = admin_; tarot = tarot_; router0 = router0_; router1 = router1_; pair0 = pair0_; pair1 = pair1_; reservesManager = reservesManager_; distributor = distributor_; bonusDistributor = bonusDistributor_; periodBegin = periodBegin_; periodEnd = periodBegin_.add(periodDuration_); bonusEnd = periodBegin_.add(bonusDuration_); sharesRouter0 = sharesRouter0_; sharesRouter1 = sharesRouter1_; totalRouterShares = sharesRouter0_.add(sharesRouter1_); } function distributorTotalShares() public view returns (uint totalShares) { return IOwnedDistributor(distributor).totalShares(); } function bonusDistributorTotalShares() public view returns (uint totalShares) { return IOwnedDistributor(bonusDistributor).totalShares(); } function distributorRecipients(address account) public view returns ( uint shares, uint lastShareIndex, uint credit ) { return IOwnedDistributor(distributor).recipients(account); } function bonusDistributorRecipients(address account) public view returns ( uint shares, uint lastShareIndex, uint credit ) { return IOwnedDistributor(bonusDistributor).recipients(account); } function postponeUnlockTimestamp(uint newUnlockTimestamp) public { require(msg.sender == admin, "LiquidityGenerator: UNAUTHORIZED"); require(newUnlockTimestamp > unlockTimestamp, "LiquidityGenerator: INVALID_UNLOCK_TIMESTAMP"); uint prevUnlockTimestamp = unlockTimestamp; unlockTimestamp = newUnlockTimestamp; emit PostponeUnlockTimestamp(prevUnlockTimestamp, unlockTimestamp); } function deliverLiquidityToReservesManager() public { require(msg.sender == admin, "LiquidityGenerator: UNAUTHORIZED"); require(!delivered, "LiquidityGenerator: ALREADY_DELIVERED"); require(finalized, "LiquidityGenerator: NOT_FINALIZED"); uint blockTimestamp = getBlockTimestamp(); require(blockTimestamp >= unlockTimestamp, "LiquidityGenerator: STILL_LOCKED"); uint _amountPair0 = pair0.myBalance(); uint _amountPair1 = pair1.myBalance(); pair0.safeTransfer(reservesManager, _amountPair0); pair1.safeTransfer(reservesManager, _amountPair1); delivered = true; emit Delivered(_amountPair0, _amountPair1); } function finalize() public { require(!finalized, "LiquidityGenerator: FINALIZED"); uint blockTimestamp = getBlockTimestamp(); require(blockTimestamp >= periodEnd, "LiquidityGenerator: TOO_SOON"); uint _amountTarot = tarot.myBalance(); uint _amountETH = address(this).balance; uint _amountTarot1 = _amountTarot.mul(sharesRouter1).div(totalRouterShares); uint _amountETH1 = _amountETH.mul(sharesRouter1).div(totalRouterShares); uint _amountTarot0 = _amountTarot.sub(_amountTarot1); uint _amountETH0 = _amountETH.sub(_amountETH1); tarot.safeApprove(router0, _amountTarot0); tarot.safeApprove(router1, _amountTarot1); IUniswapV2Router01(router0).addLiquidityETH{value: _amountETH0}( tarot, _amountTarot0, _amountTarot0, _amountETH0, address(this), blockTimestamp ); IUniswapV2Router01(router1).addLiquidityETH{value: _amountETH1}( tarot, _amountTarot1, _amountTarot1, _amountETH1, address(this), blockTimestamp ); unlockTimestamp = blockTimestamp.add(60 * 60 * 24 * 180); finalized = true; emit Finalized(_amountTarot, _amountETH); } function deposit() external payable { uint blockTimestamp = getBlockTimestamp(); require(blockTimestamp >= periodBegin, "LiquidityGenerator: TOO_SOON"); require(blockTimestamp < periodEnd, "LiquidityGenerator: TOO_LATE"); require(msg.value >= 1e19, "LiquidityGenerator: INVALID_VALUE"); (uint _prevSharesBonus, , ) = IOwnedDistributor(bonusDistributor).recipients(msg.sender); uint _newSharesBonus = _prevSharesBonus; if (blockTimestamp < bonusEnd) { _newSharesBonus = _prevSharesBonus.add(msg.value); IOwnedDistributor(bonusDistributor).editRecipient(msg.sender, _newSharesBonus); } (uint _prevShares, , ) = IOwnedDistributor(distributor).recipients(msg.sender); uint _newShares = _prevShares.add(msg.value); IOwnedDistributor(distributor).editRecipient(msg.sender, _newShares); emit Deposit( msg.sender, msg.value, distributorTotalShares(), bonusDistributorTotalShares(), _newShares, _newSharesBonus ); } receive() external payable { revert("LiquidityGenerator: BAD_CALL"); } function getBlockTimestamp() public view virtual returns (uint) { return block.timestamp; } }
pragma solidity >=0.5.0; interface IERC20 { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); }
pragma solidity >=0.5.0; interface IOwnedDistributor { function totalShares() external view returns (uint); function recipients(address) external view returns ( uint shares, uint lastShareIndex, uint credit ); function editRecipient(address account, uint shares) external; }
pragma solidity >=0.5.0; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); }
pragma solidity =0.6.6; // From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol // Subject to the MIT license. /** * @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, 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 addition of two unsigned integers, reverting with custom message on overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, errorMessage); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on underflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot underflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction underflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot underflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @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) { // 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 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @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, string memory errorMessage ) internal pure returns (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 0; } uint256 c = a * b; require(c / a == b, errorMessage); return c; } /** * @dev Returns the integer division of two unsigned integers. * Reverts 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) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. * Reverts with custom message 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, string memory errorMessage ) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts 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) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message 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, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } }
pragma solidity =0.6.6; interface ERC20Interface { function balanceOf(address user) external view returns (uint256); } library SafeToken { function myBalance(address token) internal view returns (uint256) { return ERC20Interface(token).balanceOf(address(this)); } function balanceOf(address token, address user) internal view returns (uint256) { return ERC20Interface(token).balanceOf(user); } function safeApprove( address token, address to, uint256 value ) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), "!safeApprove"); } function safeTransfer( address token, address to, uint256 value ) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), "!safeTransfer"); } function safeTransferFrom( address token, address from, address to, uint256 value ) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), "!safeTransferFrom"); } function safeTransferETH(address to, uint256 value) internal { (bool success, ) = to.call{value: value}(new bytes(0)); require(success, "!safeTransferETH"); } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"admin_","type":"address"},{"internalType":"address","name":"tarot_","type":"address"},{"internalType":"address","name":"router0_","type":"address"},{"internalType":"address","name":"router1_","type":"address"},{"internalType":"address","name":"pair0_","type":"address"},{"internalType":"address","name":"pair1_","type":"address"},{"internalType":"address","name":"reservesManager_","type":"address"},{"internalType":"address","name":"distributor_","type":"address"},{"internalType":"address","name":"bonusDistributor_","type":"address"},{"internalType":"uint256","name":"periodBegin_","type":"uint256"},{"internalType":"uint256","name":"periodDuration_","type":"uint256"},{"internalType":"uint256","name":"bonusDuration_","type":"uint256"},{"internalType":"uint256","name":"sharesRouter0_","type":"uint256"},{"internalType":"uint256","name":"sharesRouter1_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountPair0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountPair1","type":"uint256"}],"name":"Delivered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"distributorTotalShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bonusDistributorTotalShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBonusShares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountTarot","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"}],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"prevUnlockTimestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unlockTimestamp","type":"uint256"}],"name":"PostponeUnlockTimestamp","type":"event"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bonusDistributor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"bonusDistributorRecipients","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"lastShareIndex","type":"uint256"},{"internalType":"uint256","name":"credit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bonusDistributorTotalShares","outputs":[{"internalType":"uint256","name":"totalShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bonusEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deliverLiquidityToReservesManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"delivered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"distributorRecipients","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"lastShareIndex","type":"uint256"},{"internalType":"uint256","name":"credit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorTotalShares","outputs":[{"internalType":"uint256","name":"totalShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finalize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"finalized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBlockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodBegin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newUnlockTimestamp","type":"uint256"}],"name":"postponeUnlockTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reservesManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sharesRouter0","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sharesRouter1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tarot","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRouterShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6102606040526001805461ffff191690553480156200001d57600080fd5b506040516200207e3803806200207e83398181016040526101c08110156200004457600080fd5b508051602082015160408301516060840151608085015160a086015160c087015160e08801516101008901516101208a01516101408b01516101608c01516101808d01516101a0909d01519b9c9a9b999a98999798969795969495939492939192909183620000e55760405162461bcd60e51b815260040180806020018281038252602b81526020018062002053602b913960400191505060405180910390fd5b600083118015620000f65750838311155b620001335760405162461bcd60e51b815260040180806020018281038252602a81526020018062002029602a913960400191505060405180910390fd5b60608e811b6001600160601b03199081166080528e821b811660a0528d821b811660c0528c821b811660e0528b821b8116610100528a821b81166101205289821b81166101405288821b8116610160529087901b16610180526101a0859052620001aa858562000207602090811b62001a1c17901c565b6101c052620001c6858462000207602090811b62001a1c17901c565b6101e052610200829052610220819052620001ee828262000207602090811b62001a1c17901c565b6102405250620002699c50505050505050505050505050565b60008282018381101562000262576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205160601c6101405160601c6101605160601c6101805160601c6101a0516101c0516101e051610200516102205161024051611c5c620003cd6000398061097652806109da5280610e2f5250806107f5528061099b52806109ff525080611505525080610ee352806112a05250806108c55280610d28528061114c52508061081952806110d7525080610d51528061100d528061106c52806112285280611300525080610e5952806110a752806113845280611435528061152e52508061071f5280610779528061083d5250806104fa52806106c1528061075752508061068b52806106fd52806115a45250806104d65280610adc5280610c47525080610a825280610b6b52806115c852508061093f5280610a605280610aba5280610b1f5280610bfb5280610e0b5250806105275280610f1052806115ec5250611c5c6000f3fe6080604052600436106101a05760003560e01c80638bc85b03116100ec578063bfe109281161008a578063ea988b5911610064578063ea988b5914610462578063f05663a614610495578063f6bcd63a146104aa578063f851a440146104bf576101f2565b8063bfe1092814610430578063d0e30db014610445578063e3c9ba451461044d576101f2565b8063aa082a9d116100c6578063aa082a9d146103c8578063b04c1e02146103dd578063b3f05b97146103f2578063bbdfbfba1461041b576101f2565b80638bc85b03146103745780638be1ff3914610389578063a4fa00e0146103b3576101f2565b80634bb278f3116101595780636d5360c1116101335780636d5360c1146103205780637254233614610335578063796b89b91461034a57806384d572b41461035f576101f2565b80634bb278f3146102a5578063506ec095146102ba57806366082ffc146102cf576101f2565b806305a20149146101f757806322fc8fc31461022857806324054e4a1461023d5780632a42dd11146102545780632c995cae1461027b578063345ef94114610290576101f2565b366101f2576040805162461bcd60e51b815260206004820152601c60248201527f4c697175696469747947656e657261746f723a204241445f43414c4c00000000604482015290519081900360640190fd5b600080fd5b34801561020357600080fd5b5061020c6104d4565b604080516001600160a01b039092168252519081900360200190f35b34801561023457600080fd5b5061020c6104f8565b34801561024957600080fd5b5061025261051c565b005b34801561026057600080fd5b506102696107f3565b60408051918252519081900360200190f35b34801561028757600080fd5b50610269610817565b34801561029c57600080fd5b5061020c61083b565b3480156102b157600080fd5b5061025261085f565b3480156102c657600080fd5b50610269610d26565b3480156102db57600080fd5b50610302600480360360208110156102f257600080fd5b50356001600160a01b0316610d4a565b60408051938452602084019290925282820152519081900360600190f35b34801561032c57600080fd5b5061020c610e09565b34801561034157600080fd5b50610269610e2d565b34801561035657600080fd5b50610269610e51565b34801561036b57600080fd5b50610269610e55565b34801561038057600080fd5b50610269610ee1565b34801561039557600080fd5b50610252600480360360208110156103ac57600080fd5b5035610f05565b3480156103bf57600080fd5b50610269611009565b3480156103d457600080fd5b50610269611064565b3480156103e957600080fd5b5061020c61106a565b3480156103fe57600080fd5b5061040761108e565b604080519115158252519081900360200190f35b34801561042757600080fd5b50610407611097565b34801561043c57600080fd5b5061020c6110a5565b6102526110c9565b34801561045957600080fd5b50610269611503565b34801561046e57600080fd5b506103026004803603602081101561048557600080fd5b50356001600160a01b0316611527565b3480156104a157600080fd5b5061020c6115a2565b3480156104b657600080fd5b5061020c6115c6565b3480156104cb57600080fd5b5061020c6115ea565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610599576040805162461bcd60e51b815260206004820181905260248201527f4c697175696469747947656e657261746f723a20554e415554484f52495a4544604482015290519081900360640190fd5b600154610100900460ff16156105e05760405162461bcd60e51b8152600401808060200182810382526025815260200180611b736025913960400191505060405180910390fd5b60015460ff166106215760405162461bcd60e51b8152600401808060200182810382526021815260200180611c066021913960400191505060405180910390fd5b600061062b610e51565b9050600054811015610684576040805162461bcd60e51b815260206004820181905260248201527f4c697175696469747947656e657261746f723a205354494c4c5f4c4f434b4544604482015290519081900360640190fd5b60006106b87f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661160e565b905060006106ee7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661160e565b905061074a6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000008463ffffffff61168a16565b6107a46001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000008363ffffffff61168a16565b6001805461ff001916610100179055604080518381526020810183905281517f8d84aa4c3d0f1410a0ed52701dfd802c9f0ebf00aa65c54a393d180a3f9c0cd3929181900390910190a1505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015460ff16156108b7576040805162461bcd60e51b815260206004820152601d60248201527f4c697175696469747947656e657261746f723a2046494e414c495a4544000000604482015290519081900360640190fd5b60006108c1610e51565b90507f0000000000000000000000000000000000000000000000000000000000000000811015610938576040805162461bcd60e51b815260206004820152601c60248201527f4c697175696469747947656e657261746f723a20544f4f5f534f4f4e00000000604482015290519081900360640190fd5b600061096c7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661160e565b90504760006109d17f00000000000000000000000000000000000000000000000000000000000000006109c5857f000000000000000000000000000000000000000000000000000000000000000063ffffffff6117e416565b9063ffffffff61184616565b90506000610a297f00000000000000000000000000000000000000000000000000000000000000006109c5857f000000000000000000000000000000000000000000000000000000000000000063ffffffff6117e416565b90506000610a3d858463ffffffff61188816565b90506000610a51858463ffffffff61188816565b9050610aad6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000008463ffffffff6118ca16565b610b076001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000008663ffffffff6118ca16565b6040805163f305d71960e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201859052604482018590526064820184905230608483015260a482018a905291517f00000000000000000000000000000000000000000000000000000000000000009092169163f305d71991849160c480830192606092919082900301818588803b158015610bb657600080fd5b505af1158015610bca573d6000803e3d6000fd5b50505050506040513d6060811015610be157600080fd5b50506040805163f305d71960e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018790526064820186905230608483015260a482018a905291517f00000000000000000000000000000000000000000000000000000000000000009092169163f305d71991869160c480830192606092919082900301818588803b158015610c9257600080fd5b505af1158015610ca6573d6000803e3d6000fd5b50505050506040513d6060811015610cbd57600080fd5b50610cd390508762ed4e0063ffffffff611a1c16565b6000556001805460ff191681179055604080518781526020810187905281517fb968440accd1ce5fa60b00de8bb8d8487eb2fda3c3701fb30fea3f69aa910a48929181900390910190a150505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eb820312856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060606040518083038186803b158015610dc557600080fd5b505afa158015610dd9573d6000803e3d6000fd5b505050506040513d6060811015610def57600080fd5b508051602082015160409092015190969195509350915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b4290565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633a98ef396040518163ffffffff1660e01b815260040160206040518083038186803b158015610eb057600080fd5b505afa158015610ec4573d6000803e3d6000fd5b505050506040513d6020811015610eda57600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f82576040805162461bcd60e51b815260206004820181905260248201527f4c697175696469747947656e657261746f723a20554e415554484f52495a4544604482015290519081900360640190fd5b6000548111610fc25760405162461bcd60e51b815260040180806020018281038252602c815260200180611bda602c913960400191505060405180910390fd5b6000805490829055604080518281526020810184905281517fe3d6cde4e8f25cec5cc1b915261e33581a4bf2cf7e2aa87985f471cc52fa0f81929181900390910190a15050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633a98ef396040518163ffffffff1660e01b815260040160206040518083038186803b158015610eb057600080fd5b60005481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015460ff1681565b600154610100900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110d3610e51565b90507f000000000000000000000000000000000000000000000000000000000000000081101561114a576040805162461bcd60e51b815260206004820152601c60248201527f4c697175696469747947656e657261746f723a20544f4f5f534f4f4e00000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000081106111be576040805162461bcd60e51b815260206004820152601c60248201527f4c697175696469747947656e657261746f723a20544f4f5f4c41544500000000604482015290519081900360640190fd5b678ac7230489e800003410156112055760405162461bcd60e51b8152600401808060200182810382526021815260200180611b986021913960400191505060405180910390fd5b604080516375c1018960e11b815233600482015290516000916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163eb82031291602480820192606092909190829003018186803b15801561126f57600080fd5b505afa158015611283573d6000803e3d6000fd5b505050506040513d606081101561129957600080fd5b50519050807f0000000000000000000000000000000000000000000000000000000000000000831015611361576112d6823463ffffffff611a1c16565b604080516304674a9360e41b81523360048201526024810183905290519192506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691634674a9309160448082019260009290919082900301818387803b15801561134857600080fd5b505af115801561135c573d6000803e3d6000fd5b505050505b604080516375c1018960e11b815233600482015290516000916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163eb82031291602480820192606092909190829003018186803b1580156113cb57600080fd5b505afa1580156113df573d6000803e3d6000fd5b505050506040513d60608110156113f557600080fd5b50519050600061140b823463ffffffff611a1c16565b604080516304674a9360e41b81523360048201526024810183905290519192506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691634674a9309160448082019260009290919082900301818387803b15801561147d57600080fd5b505af1158015611491573d6000803e3d6000fd5b50505050336001600160a01b03167ff943cf10ef4d1e3239f4716ddecdf546e8ba8ab0e41deafd9a71a99936827e45346114c9610e55565b6114d1611009565b604080519384526020840192909252828201526060820185905260808201879052519081900360a00190a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eb820312856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060606040518083038186803b158015610dc557600080fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b604080516370a0823160e01b815230600482015290516000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561165857600080fd5b505afa15801561166c573d6000803e3d6000fd5b505050506040513d602081101561168257600080fd5b505192915050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106117075780518252601f1990920191602091820191016116e8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611769576040519150601f19603f3d011682016040523d82523d6000602084013e61176e565b606091505b509150915081801561179c57508051158061179c575080806020019051602081101561179957600080fd5b50515b6117dd576040805162461bcd60e51b815260206004820152600d60248201526c10b9b0b332aa3930b739b332b960991b604482015290519081900360640190fd5b5050505050565b6000826117f357506000611840565b8282028284828161180057fe5b041461183d5760405162461bcd60e51b8152600401808060200182810382526021815260200180611bb96021913960400191505060405180910390fd5b90505b92915050565b600061183d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a76565b600061183d83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250611b18565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b178152925182516000946060949389169392918291908083835b602083106119475780518252601f199092019160209182019101611928565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146119a9576040519150601f19603f3d011682016040523d82523d6000602084013e6119ae565b606091505b50915091508180156119dc5750805115806119dc57508080602001905160208110156119d957600080fd5b50515b6117dd576040805162461bcd60e51b815260206004820152600c60248201526b2173616665417070726f766560a01b604482015290519081900360640190fd5b60008282018381101561183d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183611b025760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ac7578181015183820152602001611aaf565b50505050905090810190601f168015611af45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611b0e57fe5b0495945050505050565b60008184841115611b6a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611ac7578181015183820152602001611aaf565b50505090039056fe4c697175696469747947656e657261746f723a20414c52454144595f44454c4956455245444c697175696469747947656e657261746f723a20494e56414c49445f56414c5545536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774c697175696469747947656e657261746f723a20494e56414c49445f554e4c4f434b5f54494d455354414d504c697175696469747947656e657261746f723a204e4f545f46494e414c495a4544a264697066735822122022bde6aec6e40990a7e56466ab974d13ad475b1babc2165492a741d37f9e294664736f6c634300060600334c697175696469747947656e657261746f723a20494e56414c49445f424f4e55535f4455524154494f4e4c697175696469747947656e657261746f723a20494e56414c49445f504552494f445f4455524154494f4e0000000000000000000000005b0390bccca1f040d8993eb6e4ce8ded93721765000000000000000000000000c5e2b037d30a390e62180970b3aa4e91868764cd000000000000000000000000f491e7b69e4244ad4002bc14e878a34207e38c2900000000000000000000000016327e3fbdaca3bcf7e38f5af2599d2ddc33ae5200000000000000000000000011d90ea9d16e1ee5879b299a819f6d618816d70f000000000000000000000000f050133847bb537c7476d054b8be6e30253fbd0500000000000000000000000063d5554b748598c191ab0cbd0e0e1c638ffebee6000000000000000000000000d4fcd1d1252bf4a3134e0e848479ad90a60979ef0000000000000000000000003303a565741d0d41d026c12259ff2d4772d3622e00000000000000000000000000000000000000000000000000000000611c1540000000000000000000000000000000000000000000000000000000000003f48000000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000045000000000000000000000000000000000000000000000000000000000000001f
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005b0390bccca1f040d8993eb6e4ce8ded93721765000000000000000000000000c5e2b037d30a390e62180970b3aa4e91868764cd000000000000000000000000f491e7b69e4244ad4002bc14e878a34207e38c2900000000000000000000000016327e3fbdaca3bcf7e38f5af2599d2ddc33ae5200000000000000000000000011d90ea9d16e1ee5879b299a819f6d618816d70f000000000000000000000000f050133847bb537c7476d054b8be6e30253fbd0500000000000000000000000063d5554b748598c191ab0cbd0e0e1c638ffebee6000000000000000000000000d4fcd1d1252bf4a3134e0e848479ad90a60979ef0000000000000000000000003303a565741d0d41d026c12259ff2d4772d3622e00000000000000000000000000000000000000000000000000000000611c1540000000000000000000000000000000000000000000000000000000000003f48000000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000045000000000000000000000000000000000000000000000000000000000000001f
-----Decoded View---------------
Arg [0] : admin_ (address): 0x5b0390bccca1f040d8993eb6e4ce8ded93721765
Arg [1] : tarot_ (address): 0xc5e2b037d30a390e62180970b3aa4e91868764cd
Arg [2] : router0_ (address): 0xf491e7b69e4244ad4002bc14e878a34207e38c29
Arg [3] : router1_ (address): 0x16327e3fbdaca3bcf7e38f5af2599d2ddc33ae52
Arg [4] : pair0_ (address): 0x11d90ea9d16e1ee5879b299a819f6d618816d70f
Arg [5] : pair1_ (address): 0xf050133847bb537c7476d054b8be6e30253fbd05
Arg [6] : reservesManager_ (address): 0x63d5554b748598c191ab0cbd0e0e1c638ffebee6
Arg [7] : distributor_ (address): 0xd4fcd1d1252bf4a3134e0e848479ad90a60979ef
Arg [8] : bonusDistributor_ (address): 0x3303a565741d0d41d026c12259ff2d4772d3622e
Arg [9] : periodBegin_ (uint256): 1629230400
Arg [10] : periodDuration_ (uint256): 259200
Arg [11] : bonusDuration_ (uint256): 86400
Arg [12] : sharesRouter0_ (uint256): 69
Arg [13] : sharesRouter1_ (uint256): 31
-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 0000000000000000000000005b0390bccca1f040d8993eb6e4ce8ded93721765
Arg [1] : 000000000000000000000000c5e2b037d30a390e62180970b3aa4e91868764cd
Arg [2] : 000000000000000000000000f491e7b69e4244ad4002bc14e878a34207e38c29
Arg [3] : 00000000000000000000000016327e3fbdaca3bcf7e38f5af2599d2ddc33ae52
Arg [4] : 00000000000000000000000011d90ea9d16e1ee5879b299a819f6d618816d70f
Arg [5] : 000000000000000000000000f050133847bb537c7476d054b8be6e30253fbd05
Arg [6] : 00000000000000000000000063d5554b748598c191ab0cbd0e0e1c638ffebee6
Arg [7] : 000000000000000000000000d4fcd1d1252bf4a3134e0e848479ad90a60979ef
Arg [8] : 0000000000000000000000003303a565741d0d41d026c12259ff2d4772d3622e
Arg [9] : 00000000000000000000000000000000000000000000000000000000611c1540
Arg [10] : 000000000000000000000000000000000000000000000000000000000003f480
Arg [11] : 0000000000000000000000000000000000000000000000000000000000015180
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000045
Arg [13] : 000000000000000000000000000000000000000000000000000000000000001f
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 |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.