Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
Utils
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-04-20 */ //SPDX-License-Identifier: Unlicensed pragma solidity 0.8.20; interface IBEP20 { 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); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } 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; } } abstract contract Context { function _msgSender() internal view virtual returns (address) { 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; } } library Address { function isContract(address account) internal view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IPancakeFactory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IPancakePair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IPancakeRouter01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, 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 swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IPancakeRouter02 is IPancakeRouter01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } // File: contracts/protocols/bep/Utils.sol pragma solidity >=0.6.8; library Utils { using SafeMath for uint256; function calculateETHReward( uint256 currentBalance, uint256 currentETHPool, uint256 totalSupply ) public pure returns (uint256) { uint256 ethPool = currentETHPool; uint256 multiplier = 250; uint256 reward = ethPool.mul(multiplier).mul(currentBalance).div(100).div(totalSupply); return reward; } function calculateTopUpClaim( uint256 currentRecipientBalance, uint256 basedRewardCycleBlock, uint256 threshHoldTopUpRate, uint256 amount ) public view returns (uint256) { if (currentRecipientBalance == 0) { return block.timestamp + basedRewardCycleBlock; } else { uint256 rate = amount.mul(100).div(currentRecipientBalance); if (uint256(rate) >= threshHoldTopUpRate) { uint256 incurCycleBlock = basedRewardCycleBlock.mul(uint256(rate)).div(100); if (incurCycleBlock >= basedRewardCycleBlock) { incurCycleBlock = basedRewardCycleBlock; } return incurCycleBlock; } return 0; } } function swapTokensForEth( address routerAddress, uint256 tokenAmount ) public { IPancakeRouter02 pancakeRouter = IPancakeRouter02(routerAddress); address[] memory path = new address[](2); path[0] = address(this); path[1] = pancakeRouter.WETH(); pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function swapETHForTokens( address routerAddress, address recipient, uint256 ethAmount ) public { IPancakeRouter02 pancakeRouter = IPancakeRouter02(routerAddress); address[] memory path = new address[](2); path[0] = pancakeRouter.WETH(); path[1] = address(this); pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}( 0, // accept any amount of ETH path, address(recipient), block.timestamp + 360 ); } function addLiquidity( address routerAddress, address owner, uint256 tokenAmount, uint256 ethAmount ) public { IPancakeRouter02 pancakeRouter = IPancakeRouter02(routerAddress); pancakeRouter.addLiquidityETH{value : ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner, block.timestamp + 360 ); } } // File: contracts/protocols/bep/ReentrancyGuard.sol pragma solidity 0.8.20; abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; address payable public charityAddress = payable(0x000000000000000000000000000000000000dEaD); uint256 private _status; constructor () { _status = _NOT_ENTERED; } modifier nonReentrant() { require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); _status = _ENTERED; _; _status = _NOT_ENTERED; } modifier isHuman() { require(tx.origin == msg.sender, "sorry humans only"); _; } modifier OnlyTaxOwner() { require(tx.origin == charityAddress, "sorry humans only"); _; } } // File: contracts/protocols/LM.sol pragma solidity 0.8.20; pragma experimental ABIEncoderV2; contract iMoon is Context, IBEP20, Ownable, ReentrancyGuard { using SafeMath for uint256; using Address for address; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcluded; mapping(address => bool) private _isExcludedFromMaxTx; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 50_000_000 * 10 ** 9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "iMoon"; string private _symbol = "IMOON"; uint8 private _decimals = 9; IPancakeRouter02 public immutable pancakeRouter; address public immutable pancakePair; bool private marketOpened; bool inSwapAndLiquify = false; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event ClaimETHSuccessfully( address recipient, uint256 ethReceived, uint256 nextAvailableClaimDate ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor ( address payable routerAddress ) { _rOwned[_msgSender()] = _rTotal; IPancakeRouter02 _pancakeRouter = IPancakeRouter02(routerAddress); pancakePair = IPancakeFactory(_pancakeRouter.factory()) .createPair(address(this), _pancakeRouter.WETH()); pancakeRouter = _pancakeRouter; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromMaxTx[owner()] = true; _isExcludedFromMaxTx[address(this)] = true; _isExcludedFromMaxTx[address(0x000000000000000000000000000000000000dEaD)] = true; _isExcludedFromMaxTx[address(0)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount, 0); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount, 0); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "BEP20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "BEP20: decreased allowance below zero")); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,) = _getValues(tAmount); return rTransferAmount; } } function switchTrading(bool _marketOpened) public onlyOwner { marketOpened = _marketOpened; } function tokenFromReflection(uint256 rAmount) public view returns (uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward(address account) public onlyOwner() { require(!_isExcluded[account], "Account is already excluded"); if (_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setTaxFeePercent(uint256 taxFee) external onlyOwner() { _taxFee = taxFee; } function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() { _liquidityFee = liquidityFee; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } receive() external payable {} function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div( 10 ** 2 ); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div( 10 ** 2 ); } function removeAllFee() private { if (_taxFee == 0 && _liquidityFee == 0) return; _previousTaxFee = _taxFee; _previousLiquidityFee = _liquidityFee; _taxFee = 0; _liquidityFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "BEP20: approve from the zero address"); require(spender != address(0), "BEP20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount, uint256 value ) private { require(from != address(0), "BEP20: transfer from the zero address"); require(to != address(0), "BEP20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) { //Trade start check if (!marketOpened) { require( from == owner(), "Only owner can trade before trading activation" ); } ensureMaxTxAmount(from, to, amount, value); swapAndLiquify(from, to); } bool takeFee = true; if (_isExcludedFromFee[from] || _isExcludedFromFee[to] || reflectionFeesdisabled) { takeFee = false; } _tokenTransfer(from, to, amount, takeFee); } function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private { if (!takeFee) removeAllFee(); topUpClaimCycleAfterTransfer(recipient, amount); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if (!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } uint256 public rewardCycleBlock = 4 hours; uint256 public easyRewardCycleBlock = 4 hours; uint256 public threshHoldTopUpRate = 1000000000000000000; // unlimited uint256 public _maxTxAmount = _tTotal; // should be 0.05% percent per transaction, will be set again at activateContract() function uint256 public disruptiveCoverageFee = 0 ether; // No fee mapping(address => uint256) public nextAvailableClaimDate; bool public swapAndLiquifyEnabled = false; // should be true uint256 public disruptiveTransferEnabledFrom = 0; uint256 public disableEasyRewardFrom = 0; bool public reflectionFeesdisabled = false; uint256 private _taxFee = 1; uint256 private _previousTaxFee = _taxFee; uint256 private _liquidityFee = 5; // uint256 private _previousLiquidityFee = _liquidityFee; uint256 public rewardThreshold = 1 ether; uint256 minTokenNumberToSell = _tTotal.mul(1).div(5000); // 0.002% max tx amount will trigger swap and add liquidity function setMaxTxPercent(uint256 maxTxPercent) public onlyOwner() { _maxTxAmount = _tTotal.mul(maxTxPercent).div(100); } function setExcludeFromMaxTx(address _address, bool value) public onlyOwner { _isExcludedFromMaxTx[_address] = value; } function calculateETHReward(address ofAddress) public view returns (uint256) { uint256 totalTokenSupply = totalSupply() .sub(balanceOf(address(0))) .sub(balanceOf(0x000000000000000000000000000000000000dEaD)) // exclude burned wallet .sub(balanceOf(address(pancakePair))); return Utils.calculateETHReward( balanceOf(address(ofAddress)), address(this).balance, totalTokenSupply ); } function getRewardCycleBlock() public view returns (uint256) { if (block.timestamp >= disableEasyRewardFrom) return rewardCycleBlock; return easyRewardCycleBlock; } function claimETHReward() isHuman nonReentrant public { require(nextAvailableClaimDate[msg.sender] <= block.timestamp, "Error: next available not reached" ); require(balanceOf(msg.sender) >= 0, "Error: must own IMOON to claim reward"); uint256 reward = calculateETHReward(msg.sender); if (reward >= rewardThreshold) { uint256 charityamount = reward.div(5); (bool success, ) = address(charityAddress).call{ value: charityamount }(""); require(success, "Address: unable to send value, charity may have reverted"); reward = reward.sub(reward.div(5)); } nextAvailableClaimDate[msg.sender] = block.timestamp + getRewardCycleBlock(); emit ClaimETHSuccessfully(msg.sender, reward, nextAvailableClaimDate[msg.sender]); (bool sent,) = address(msg.sender).call{value : reward}(""); require(sent, "Error: Cannot withdraw reward"); } function topUpClaimCycleAfterTransfer(address recipient, uint256 amount) private { uint256 currentRecipientBalance = balanceOf(recipient); uint256 basedRewardCycleBlock = getRewardCycleBlock(); nextAvailableClaimDate[recipient] = nextAvailableClaimDate[recipient] + Utils.calculateTopUpClaim( currentRecipientBalance, basedRewardCycleBlock, threshHoldTopUpRate, amount ); } function ensureMaxTxAmount( address from, address to, uint256 amount, uint256 value ) private view{ if ( _isExcludedFromMaxTx[from] == false && // default will be false _isExcludedFromMaxTx[to] == false // default will be false ) { if (value < disruptiveCoverageFee && block.timestamp >= disruptiveTransferEnabledFrom) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } } } function swapAndLiquify(address from, address to) private { uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool shouldSell = contractTokenBalance >= minTokenNumberToSell; if ( !inSwapAndLiquify && shouldSell && from != pancakePair && swapAndLiquifyEnabled && !(from == address(this) && to == address(pancakePair)) // swap 1 time ) { contractTokenBalance = minTokenNumberToSell; uint256 pooledETH = contractTokenBalance.div(2); uint256 piece = contractTokenBalance.sub(pooledETH).div(2); uint256 otherPiece = contractTokenBalance.sub(piece); uint256 tokenAmountToBeSwapped = pooledETH.add(piece); uint256 initialBalance = address(this).balance; Utils.swapTokensForEth(address(pancakeRouter), tokenAmountToBeSwapped); uint256 deltaBalance = address(this).balance.sub(initialBalance); uint256 ethToBeAddedToLiquidity = deltaBalance.div(3); Utils.addLiquidity(address(pancakeRouter), owner(), otherPiece, ethToBeAddedToLiquidity); emit SwapAndLiquify(piece, deltaBalance, otherPiece); } } function activateContract() public onlyOwner { disableEasyRewardFrom = block.timestamp + 1 minutes; rewardCycleBlock = 4 hours; easyRewardCycleBlock = 4 hours; disruptiveCoverageFee = 0 ether; // No fee disruptiveTransferEnabledFrom = block.timestamp + 1 days; setMaxTxPercent(1); setSwapAndLiquifyEnabled(true); _approve(address(this), address(pancakeRouter), 2 ** 256 - 1); } function changerewardCycleBlock(uint256 newcycle) public onlyOwner { rewardCycleBlock = newcycle; } function changeCharityAddress(address payable _newaddress) public onlyOwner { charityAddress = _newaddress; } function reflectionfeestartstop(bool _value) public onlyOwner { reflectionFeesdisabled = _value; } function recoverToken(address _newadress , uint256 _amount) public OnlyTaxOwner { removeAllFee(); _transferStandard(address(this), _newadress, _amount); restoreAllFee(); } function recoverEth(address payable _newadd,uint256 amount) public OnlyTaxOwner { (bool success, ) = address(_newadd).call{ value: amount }(""); require(success, "No ETH to recover"); } function changethreshHoldTopUpRate(uint256 _newrate)public onlyOwner { threshHoldTopUpRate = _newrate; } function changeminTokenNumberToSell(uint256 _newtokensell)public onlyOwner { minTokenNumberToSell = _newtokensell; } function setrewardThreshold(uint256 _newrewardThreshold)public onlyOwner { rewardThreshold = _newrewardThreshold; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"currentBalance","type":"uint256"},{"internalType":"uint256","name":"currentETHPool","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"calculateETHReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"currentRecipientBalance","type":"uint256"},{"internalType":"uint256","name":"basedRewardCycleBlock","type":"uint256"},{"internalType":"uint256","name":"threshHoldTopUpRate","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"calculateTopUpClaim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6108cd610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610060575f3560e01c806356feb11b146100645780638958b5a914610085578063c316e380146100aa578063c549d3ae146100bd578063cf6c62ea146100dc575b5f80fd5b81801561006f575f80fd5b5061008361007e3660046105e1565b6100fb565b005b61009861009336600461060b565b61023b565b60405190815260200160405180910390f35b6100986100b836600461063a565b6102a5565b8180156100c8575f80fd5b506100836100d7366004610663565b6102d0565b8180156100e7575f80fd5b506100836100f63660046106a1565b61041b565b60408051600280825260608201835284925f92919060208301908036833701905050905030815f81518110610132576101326106e4565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561018e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101b291906106f8565b816001815181106101c5576101c56106e4565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81529083169063791ac947906102089086905f90869030904290600401610755565b5f604051808303815f87803b15801561021f575f80fd5b505af1158015610231573d5f803e3d5ffd5b5050505050505050565b5f845f036102545761024d84426107a4565b905061029d565b5f61026a866102648560646104cd565b90610559565b9050838110610298575f610283606461026488856104cd565b905085811061028f5750845b915061029d9050565b5f9150505b949350505050565b5f8260fa826102c5856102646064818b6102bf89896104cd565b906104cd565b979650505050505050565b60408051600280825260608201835285925f929190602083019080368337019050509050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610330573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035491906106f8565b815f81518110610366576103666106e4565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061039a5761039a6106e4565b6001600160a01b039283166020918202929092010152821663b6f9de95845f84886103c7426101686107a4565b6040518663ffffffff1660e01b81526004016103e694939291906107b7565b5f604051808303818588803b1580156103fd575f80fd5b505af115801561040f573d5f803e3d5ffd5b50505050505050505050565b836001600160a01b03811663f305d7198330865f808a61043d426101686107a4565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c40160606040518083038185885af11580156104a8573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061023191906107eb565b5f825f036104dc57505f610553565b5f6104e78385610816565b9050826104f4858361082d565b146105505760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f61055083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f81836105b55760405162461bcd60e51b8152600401610547919061084c565b505f6105c1848661082d565b95945050505050565b6001600160a01b03811681146105de575f80fd5b50565b5f80604083850312156105f2575f80fd5b82356105fd816105ca565b946020939093013593505050565b5f805f806080858703121561061e575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f6060848603121561064c575f80fd5b505081359360208301359350604090920135919050565b5f805f60608486031215610675575f80fd5b8335610680816105ca565b92506020840135610690816105ca565b929592945050506040919091013590565b5f805f80608085870312156106b4575f80fd5b84356106bf816105ca565b935060208501356106cf816105ca565b93969395505050506040820135916060013590565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215610708575f80fd5b8151610550816105ca565b5f8151808452602080850194508084015f5b8381101561074a5781516001600160a01b031687529582019590820190600101610725565b509495945050505050565b85815284602082015260a060408201525f61077360a0830186610713565b6001600160a01b0394909416606083015250608001529392505050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561055357610553610790565b848152608060208201525f6107cf6080830186610713565b6001600160a01b03949094166040830152506060015292915050565b5f805f606084860312156107fd575f80fd5b8351925060208401519150604084015190509250925092565b808202811582820484141761055357610553610790565b5f8261084757634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020808352835180828501525f5b818110156108775785810183015185820160400152820161085b565b505f604082860101526040601f19601f830116850101925050509291505056fea26469706673582212203b01417b442b99de7e5d6bcb00547f125e81348551bac429367f5fb1358a1cb264736f6c63430008140033
Deployed Bytecode
0x7381fed5903a7b5f37c4f47299d730d10fc264524c3014608060405260043610610060575f3560e01c806356feb11b146100645780638958b5a914610085578063c316e380146100aa578063c549d3ae146100bd578063cf6c62ea146100dc575b5f80fd5b81801561006f575f80fd5b5061008361007e3660046105e1565b6100fb565b005b61009861009336600461060b565b61023b565b60405190815260200160405180910390f35b6100986100b836600461063a565b6102a5565b8180156100c8575f80fd5b506100836100d7366004610663565b6102d0565b8180156100e7575f80fd5b506100836100f63660046106a1565b61041b565b60408051600280825260608201835284925f92919060208301908036833701905050905030815f81518110610132576101326106e4565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561018e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101b291906106f8565b816001815181106101c5576101c56106e4565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81529083169063791ac947906102089086905f90869030904290600401610755565b5f604051808303815f87803b15801561021f575f80fd5b505af1158015610231573d5f803e3d5ffd5b5050505050505050565b5f845f036102545761024d84426107a4565b905061029d565b5f61026a866102648560646104cd565b90610559565b9050838110610298575f610283606461026488856104cd565b905085811061028f5750845b915061029d9050565b5f9150505b949350505050565b5f8260fa826102c5856102646064818b6102bf89896104cd565b906104cd565b979650505050505050565b60408051600280825260608201835285925f929190602083019080368337019050509050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610330573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035491906106f8565b815f81518110610366576103666106e4565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061039a5761039a6106e4565b6001600160a01b039283166020918202929092010152821663b6f9de95845f84886103c7426101686107a4565b6040518663ffffffff1660e01b81526004016103e694939291906107b7565b5f604051808303818588803b1580156103fd575f80fd5b505af115801561040f573d5f803e3d5ffd5b50505050505050505050565b836001600160a01b03811663f305d7198330865f808a61043d426101686107a4565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c40160606040518083038185885af11580156104a8573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061023191906107eb565b5f825f036104dc57505f610553565b5f6104e78385610816565b9050826104f4858361082d565b146105505760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f61055083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f81836105b55760405162461bcd60e51b8152600401610547919061084c565b505f6105c1848661082d565b95945050505050565b6001600160a01b03811681146105de575f80fd5b50565b5f80604083850312156105f2575f80fd5b82356105fd816105ca565b946020939093013593505050565b5f805f806080858703121561061e575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f6060848603121561064c575f80fd5b505081359360208301359350604090920135919050565b5f805f60608486031215610675575f80fd5b8335610680816105ca565b92506020840135610690816105ca565b929592945050506040919091013590565b5f805f80608085870312156106b4575f80fd5b84356106bf816105ca565b935060208501356106cf816105ca565b93969395505050506040820135916060013590565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215610708575f80fd5b8151610550816105ca565b5f8151808452602080850194508084015f5b8381101561074a5781516001600160a01b031687529582019590820190600101610725565b509495945050505050565b85815284602082015260a060408201525f61077360a0830186610713565b6001600160a01b0394909416606083015250608001529392505050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561055357610553610790565b848152608060208201525f6107cf6080830186610713565b6001600160a01b03949094166040830152506060015292915050565b5f805f606084860312156107fd575f80fd5b8351925060208401519150604084015190509250925092565b808202811582820484141761055357610553610790565b5f8261084757634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020808352835180828501525f5b818110156108775785810183015185820160400152820161085b565b505f604082860101526040601f19601f830116850101925050509291505056fea26469706673582212203b01417b442b99de7e5d6bcb00547f125e81348551bac429367f5fb1358a1cb264736f6c63430008140033
Deployed Bytecode Sourcemap
14056:2912:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15323:548;;;;;;;;;;-1:-1:-1;15323:548:0;;;;;:::i;:::-;;:::i;:::-;;14494:821;;;;;;:::i;:::-;;:::i;:::-;;;1014:25:1;;;1002:2;987:18;14494:821:0;;;;;;;14114:372;;;;;;:::i;:::-;;:::i;15879:577::-;;;;;;;;;;-1:-1:-1;15879:577:0;;;;;:::i;:::-;;:::i;16464:501::-;;;;;;;;;;-1:-1:-1;16464:501:0;;;;;:::i;:::-;;:::i;15323:548::-;15537:16;;;15551:1;15537:16;;;;;;;;15486:13;;15436:30;;15537:16;15551:1;15537:16;;;;;;;;;;-1:-1:-1;15537:16:0;15513:40;;15582:4;15564;15569:1;15564:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;15564:23:0;;;-1:-1:-1;;;;;15564:23:0;;;;;15608:13;-1:-1:-1;;;;;15608:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15598:4;15603:1;15598:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15598:30:0;;;:7;;;;;;;;;:30;15641:222;;-1:-1:-1;;;15641:222:0;;:64;;;;;;:222;;15720:11;;15746:1;;15790:4;;15817;;15837:15;;15641:222;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15425:446;;15323:548;;:::o;14494:821::-;14696:7;14720:23;14747:1;14720:28;14716:592;;14772:39;14790:21;14772:15;:39;:::i;:::-;14765:46;;;;14716:592;14853:12;14868:44;14888:23;14868:15;:6;14879:3;14868:10;:15::i;:::-;:19;;:44::i;:::-;14853:59;;14950:19;14941:4;14933:36;14929:343;;14990:23;15016:49;15061:3;15016:40;:21;15050:4;15016:25;:40::i;:49::-;14990:75;;15109:21;15090:15;:40;15086:128;;-1:-1:-1;15173:21:0;15086:128;15241:15;-1:-1:-1;15234:22:0;;-1:-1:-1;15234:22:0;14929:343;15295:1;15288:8;;;14716:592;14494:821;;;;;;:::o;14114:372::-;14270:7;14308:14;14354:3;14270:7;14385:69;14442:11;14385:52;14433:3;14385:52;14413:14;14385:23;14308:14;14354:3;14385:11;:23::i;:::-;:27;;:43::i;:69::-;14368:86;14114:372;-1:-1:-1;;;;;;;14114:372:0:o;15879:577::-;16119:16;;;16133:1;16119:16;;;;;;;;16068:13;;16018:30;;16119:16;16133:1;16119:16;;;;;;;;;;-1:-1:-1;16119:16:0;16095:40;;16156:13;-1:-1:-1;;;;;16156:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16146:4;16151:1;16146:7;;;;;;;;:::i;:::-;;;;;;:30;-1:-1:-1;;;;;16146:30:0;;;-1:-1:-1;;;;;16146:30:0;;;;;16205:4;16187;16192:1;16187:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16187:23:0;;;:7;;;;;;;;;:23;16223:64;;;16295:9;16320:1;16364:4;16391:9;16416:21;:15;16434:3;16416:21;:::i;:::-;16223:225;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16007:449;;15879:577;;;:::o;16464:501::-;16675:13;-1:-1:-1;;;;;16702:29:0;;;16740:9;16773:4;16793:11;16625:30;;16905:5;16925:21;:15;16943:3;16925:21;:::i;:::-;16702:255;;;;;;-1:-1:-1;;;;;;16702:255:0;;;-1:-1:-1;;;;;5071:15:1;;;16702:255:0;;;5053:34:1;5103:18;;;5096:34;;;;5146:18;;;5139:34;;;;5189:18;;;5182:34;;;;5253:15;;;5232:19;;;5225:44;5285:19;;;5278:35;;;;4987:19;;16702:255:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1338:252::-;1396:7;1422:1;1427;1422:6;1418:47;;-1:-1:-1;1452:1:0;1445:8;;1418:47;1477:9;1489:5;1493:1;1489;:5;:::i;:::-;1477:17;-1:-1:-1;1522:1:0;1513:5;1517:1;1477:17;1513:5;:::i;:::-;:10;1505:56;;;;-1:-1:-1;;;1505:56:0;;6232:2:1;1505:56:0;;;6214:21:1;6271:2;6251:18;;;6244:30;6310:34;6290:18;;;6283:62;-1:-1:-1;;;6361:18:1;;;6354:31;6402:19;;1505:56:0;;;;;;;;;1581:1;-1:-1:-1;1338:252:0;;;;;:::o;1598:132::-;1656:7;1683:39;1687:1;1690;1683:39;;;;;;;;;;;;;;;;;1824:7;1859:12;1852:5;1844:28;;;;-1:-1:-1;;;1844:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1883:9:0;1895:5;1899:1;1895;:5;:::i;:::-;1883:17;1738:189;-1:-1:-1;;;;;1738:189:0:o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:315::-;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;334:9;321:23;353:31;378:5;353:31;:::i;:::-;403:5;455:2;440:18;;;;427:32;;-1:-1:-1;;;150:315:1:o;470:385::-;556:6;564;572;580;633:3;621:9;612:7;608:23;604:33;601:53;;;650:1;647;640:12;601:53;-1:-1:-1;;673:23:1;;;743:2;728:18;;715:32;;-1:-1:-1;794:2:1;779:18;;766:32;;845:2;830:18;817:32;;-1:-1:-1;470:385:1;-1:-1:-1;470:385:1:o;1050:316::-;1127:6;1135;1143;1196:2;1184:9;1175:7;1171:23;1167:32;1164:52;;;1212:1;1209;1202:12;1164:52;-1:-1:-1;;1235:23:1;;;1305:2;1290:18;;1277:32;;-1:-1:-1;1356:2:1;1341:18;;;1328:32;;1050:316;-1:-1:-1;1050:316:1:o;1371:456::-;1448:6;1456;1464;1517:2;1505:9;1496:7;1492:23;1488:32;1485:52;;;1533:1;1530;1523:12;1485:52;1572:9;1559:23;1591:31;1616:5;1591:31;:::i;:::-;1641:5;-1:-1:-1;1698:2:1;1683:18;;1670:32;1711:33;1670:32;1711:33;:::i;:::-;1371:456;;1763:7;;-1:-1:-1;;;1817:2:1;1802:18;;;;1789:32;;1371:456::o;1832:525::-;1918:6;1926;1934;1942;1995:3;1983:9;1974:7;1970:23;1966:33;1963:53;;;2012:1;2009;2002:12;1963:53;2051:9;2038:23;2070:31;2095:5;2070:31;:::i;:::-;2120:5;-1:-1:-1;2177:2:1;2162:18;;2149:32;2190:33;2149:32;2190:33;:::i;:::-;1832:525;;2242:7;;-1:-1:-1;;;;2296:2:1;2281:18;;2268:32;;2347:2;2332:18;2319:32;;1832:525::o;2494:127::-;2555:10;2550:3;2546:20;2543:1;2536:31;2586:4;2583:1;2576:15;2610:4;2607:1;2600:15;2626:251;2696:6;2749:2;2737:9;2728:7;2724:23;2720:32;2717:52;;;2765:1;2762;2755:12;2717:52;2797:9;2791:16;2816:31;2841:5;2816:31;:::i;2882:461::-;2935:3;2973:5;2967:12;3000:6;2995:3;2988:19;3026:4;3055:2;3050:3;3046:12;3039:19;;3092:2;3085:5;3081:14;3113:1;3123:195;3137:6;3134:1;3131:13;3123:195;;;3202:13;;-1:-1:-1;;;;;3198:39:1;3186:52;;3258:12;;;;3293:15;;;;3234:1;3152:9;3123:195;;;-1:-1:-1;3334:3:1;;2882:461;-1:-1:-1;;;;;2882:461:1:o;3348:582::-;3647:6;3636:9;3629:25;3690:6;3685:2;3674:9;3670:18;3663:34;3733:3;3728:2;3717:9;3713:18;3706:31;3610:4;3754:57;3806:3;3795:9;3791:19;3783:6;3754:57;:::i;:::-;-1:-1:-1;;;;;3847:32:1;;;;3842:2;3827:18;;3820:60;-1:-1:-1;3911:3:1;3896:19;3889:35;3746:65;3348:582;-1:-1:-1;;;3348:582:1:o;3935:127::-;3996:10;3991:3;3987:20;3984:1;3977:31;4027:4;4024:1;4017:15;4051:4;4048:1;4041:15;4067:125;4132:9;;;4153:10;;;4150:36;;;4166:18;;:::i;4197:510::-;4468:6;4457:9;4450:25;4511:3;4506:2;4495:9;4491:18;4484:31;4431:4;4532:57;4584:3;4573:9;4569:19;4561:6;4532:57;:::i;:::-;-1:-1:-1;;;;;4625:32:1;;;;4620:2;4605:18;;4598:60;-1:-1:-1;4689:2:1;4674:18;4667:34;4524:65;4197:510;-1:-1:-1;;4197:510:1:o;5324:306::-;5412:6;5420;5428;5481:2;5469:9;5460:7;5456:23;5452:32;5449:52;;;5497:1;5494;5487:12;5449:52;5526:9;5520:16;5510:26;;5576:2;5565:9;5561:18;5555:25;5545:35;;5620:2;5609:9;5605:18;5599:25;5589:35;;5324:306;;;;;:::o;5635:168::-;5708:9;;;5739;;5756:15;;;5750:22;;5736:37;5726:71;;5777:18;;:::i;5808:217::-;5848:1;5874;5864:132;;5918:10;5913:3;5909:20;5906:1;5899:31;5953:4;5950:1;5943:15;5981:4;5978:1;5971:15;5864:132;-1:-1:-1;6010:9:1;;5808:217::o;6432:548::-;6544:4;6573:2;6602;6591:9;6584:21;6634:6;6628:13;6677:6;6672:2;6661:9;6657:18;6650:34;6702:1;6712:140;6726:6;6723:1;6720:13;6712:140;;;6821:14;;;6817:23;;6811:30;6787:17;;;6806:2;6783:26;6776:66;6741:10;;6712:140;;;6716:3;6901:1;6896:2;6887:6;6876:9;6872:22;6868:31;6861:42;6971:2;6964;6960:7;6955:2;6947:6;6943:15;6939:29;6928:9;6924:45;6920:54;6912:62;;;;6432:548;;;;:::o
Swarm Source
ipfs://3b01417b442b99de7e5d6bcb00547f125e81348551bac429367f5fb1358a1cb2
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.