Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 264 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Unstake Tokens | 18662791 | 421 days ago | IN | 0 ETH | 0.00288086 | ||||
Unstake Tokens | 18650396 | 423 days ago | IN | 0 ETH | 0.00163235 | ||||
Unstake Tokens | 18648050 | 423 days ago | IN | 0 ETH | 0.00184722 | ||||
Unstake Tokens | 18648011 | 423 days ago | IN | 0 ETH | 0.00195419 | ||||
Unstake Tokens | 18647790 | 423 days ago | IN | 0 ETH | 0.00199817 | ||||
Unstake Tokens | 18647612 | 423 days ago | IN | 0 ETH | 0.00188459 | ||||
Withdraw Reward | 18647606 | 423 days ago | IN | 0 ETH | 0.00099416 | ||||
Unstake Tokens | 18647597 | 423 days ago | IN | 0 ETH | 0.00201536 | ||||
Emergency Withdr... | 18646692 | 423 days ago | IN | 0 ETH | 0.00058236 | ||||
Withdraw Reward | 18640380 | 424 days ago | IN | 0 ETH | 0.00167774 | ||||
Withdraw Reward | 18634950 | 425 days ago | IN | 0 ETH | 0.00190489 | ||||
Withdraw Reward | 18633928 | 425 days ago | IN | 0 ETH | 0.00127416 | ||||
Withdraw Reward | 18617555 | 428 days ago | IN | 0 ETH | 0.00141138 | ||||
Withdraw Reward | 18612040 | 428 days ago | IN | 0 ETH | 0.00157451 | ||||
Withdraw Reward | 18594278 | 431 days ago | IN | 0 ETH | 0.00133477 | ||||
Withdraw Reward | 18589743 | 431 days ago | IN | 0 ETH | 0.00113137 | ||||
Withdraw Reward | 18589692 | 431 days ago | IN | 0 ETH | 0.00094304 | ||||
Withdraw Reward | 18553965 | 436 days ago | IN | 0 ETH | 0.00093406 | ||||
Withdraw Reward | 18513001 | 442 days ago | IN | 0 ETH | 0.00175561 | ||||
Withdraw Reward | 18489493 | 445 days ago | IN | 0 ETH | 0.00052013 | ||||
Withdraw Reward | 18482799 | 446 days ago | IN | 0 ETH | 0.00086288 | ||||
Withdraw Reward | 18461224 | 449 days ago | IN | 0 ETH | 0.00069032 | ||||
Withdraw Reward | 18461211 | 449 days ago | IN | 0 ETH | 0.00048645 | ||||
Withdraw Reward | 18455959 | 450 days ago | IN | 0 ETH | 0.000713 | ||||
Withdraw Reward | 18441048 | 452 days ago | IN | 0 ETH | 0.00078417 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
18646692 | 423 days ago | 1.48728971 ETH | ||||
18640380 | 424 days ago | 0.23852701 ETH | ||||
18634950 | 425 days ago | 0.00955529 ETH | ||||
18633928 | 425 days ago | 0.03647436 ETH | ||||
18617555 | 428 days ago | 0.0232723 ETH | ||||
18612040 | 428 days ago | 0.01228835 ETH | ||||
18594278 | 431 days ago | 0.07166468 ETH | ||||
18589743 | 431 days ago | 0.02706196 ETH | ||||
18589692 | 431 days ago | 0.02977637 ETH | ||||
18553965 | 436 days ago | 0.00575091 ETH | ||||
18513001 | 442 days ago | 0.03738093 ETH | ||||
18489493 | 445 days ago | 0.01745423 ETH | ||||
18482799 | 446 days ago | 0.02903178 ETH | ||||
18461224 | 449 days ago | 0.05412392 ETH | ||||
18461211 | 449 days ago | 0.02605432 ETH | ||||
18455959 | 450 days ago | 0.01823718 ETH | ||||
18441048 | 452 days ago | 0.00335136 ETH | ||||
18417820 | 455 days ago | 0.00729486 ETH | ||||
18402656 | 458 days ago | 0.00872711 ETH | ||||
18397517 | 458 days ago | 0.03483813 ETH | ||||
18390281 | 459 days ago | 0.0245767 ETH | ||||
18376697 | 461 days ago | 0.00955529 ETH | ||||
18374250 | 462 days ago | 0.02259492 ETH | ||||
18362642 | 463 days ago | 0.01519765 ETH | ||||
18359826 | 464 days ago | 0.02259492 ETH |
Loading...
Loading
Contract Name:
Staking
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; import '@openzeppelin/contracts/token/ERC20/IERC20.sol'; import '@openzeppelin/contracts/access/Ownable.sol'; import '@openzeppelin/contracts/utils/math/SafeMath.sol'; interface IUniswapV2Router { function factory() external pure returns (address); function WETH() external pure returns (address); function getAmountsOut(uint amountIn, address[] memory path) external view returns (uint[] memory amounts); } contract Staking is Ownable { using SafeMath for uint256; IUniswapV2Router public uniswapRouter; IERC20 public token; uint256 public stakingDuration = 15 days; uint256 public withdrawalCooldown = 1 days; // Cooldown period for Ethereum withdrawals uint256 public dailyWithdrawalLimitPercentage = 2; // 2% daily withdrawal limit; address public penaltyWallet; mapping(address => uint256) public stakes; mapping(address => uint256) public ethValueOfStakes; mapping(address => uint256) public lastDepositTime; mapping(address => uint256) public lastETHWithdrawTime; mapping(address => uint256) public totalETHWithdrawn; event rewardWithdrawn(address indexed _user ,uint256 _amount, uint256 _claimDays); event tokensStaked(address indexed _user ,uint256 _amount); event tokensUnstaked(address indexed _user ,uint256 _amount); event Received(address, uint256); receive() external payable { emit Received(msg.sender, msg.value); } modifier onlyToken() { assert(msg.sender == address(token)); _; } constructor() { uniswapRouter = IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); } function updateStakingDuration(uint256 _duration) external onlyOwner { stakingDuration = _duration; } function updateWithdrawalCooldown(uint256 _cooldown) external onlyOwner { withdrawalCooldown = _cooldown; } function setDailyWithdrawalLimit(uint256 _percentage) external onlyOwner { require(_percentage <= 20, "Percentage must be less than 20%"); dailyWithdrawalLimitPercentage = _percentage; } function setTokenAddress(address _tokenAddress) external onlyOwner { require(_tokenAddress != address(0), "Invalid address"); token = IERC20(_tokenAddress); penaltyWallet = _tokenAddress; } function stakeTokens(address _user, uint _amount) external onlyToken { require(_amount > 0, "Amount must be greater than 0"); uint256 ethValue = calculateTokenValueInETH(_amount); // Update user's stake and ethValueOfStakes stakes[_user] = stakes[_user].add(_amount); ethValueOfStakes[_user] = ethValueOfStakes[_user].add(ethValue); // Update last withdrawal time lastDepositTime[_user] = block.timestamp; emit tokensStaked(_user,_amount); if (lastETHWithdrawTime[_user] == 0){ lastETHWithdrawTime[_user] = block.timestamp; } } function calculateTokenValueInETH(uint256 _amount) internal view returns (uint256) { address[] memory path = new address[](2); path[0] = address(token); path[1] = uniswapRouter.WETH(); uint256[] memory amounts = uniswapRouter.getAmountsOut(_amount, path); return amounts[1]; } function calculateDailyWithdrawalLimit(address _user) internal view returns (uint256 total, uint256 daysSinceLastWithdrawal) { uint256 ethValue = ethValueOfStakes[_user]; daysSinceLastWithdrawal = (block.timestamp.sub(lastETHWithdrawTime[_user])).div(withdrawalCooldown); uint256 dailyLimit = ethValue.mul(dailyWithdrawalLimitPercentage).div(100); total = dailyLimit.mul(daysSinceLastWithdrawal); } function withdrawReward() external { require(stakes[msg.sender] > 0, "No tokens staked"); uint256 currentTime = block.timestamp; require(currentTime >= lastETHWithdrawTime[msg.sender].add(withdrawalCooldown), "Cooldown period not passed"); (uint256 dailyWithdrawalAmount, uint256 claimDays) = calculateDailyWithdrawalLimit(msg.sender); require(dailyWithdrawalAmount > 0, "No withdrawable amount available"); lastETHWithdrawTime[msg.sender] = currentTime; totalETHWithdrawn[msg.sender] = totalETHWithdrawn[msg.sender].add(dailyWithdrawalAmount); payable(msg.sender).transfer(dailyWithdrawalAmount); emit rewardWithdrawn(msg.sender, dailyWithdrawalAmount, claimDays); } function unstakeTokens() external { require(stakes[msg.sender] > 0, "No tokens staked"); uint256 withdrawTokens = 0; uint256 stakedAmount = stakes[msg.sender]; if(block.timestamp <= lastDepositTime[msg.sender].add(stakingDuration)){ uint256 penalty = stakedAmount.mul(20).div(100); // 20% penalty withdrawTokens = stakedAmount.sub(penalty); token.transfer(penaltyWallet, penalty); } else{ withdrawTokens = stakedAmount; } stakes[msg.sender] = 0; ethValueOfStakes[msg.sender] = 0; token.transfer(msg.sender, withdrawTokens); emit tokensUnstaked(msg.sender, withdrawTokens); } function getUserStake(address _user) external view returns (uint256 totalStakedTokens, uint256 totalrewardwithdrawn, uint256 ethValueOfStake, uint256 remainingDays) { totalStakedTokens = stakes[_user]; ethValueOfStake = ethValueOfStakes[_user]; uint256 currentTime = block.timestamp; totalrewardwithdrawn = totalETHWithdrawn[_user]; if (currentTime < lastDepositTime[_user].add(stakingDuration)) { remainingDays = (lastDepositTime[_user].add(stakingDuration).sub(currentTime)).div(1 days); } else { remainingDays = 0; } } function emergencyWithdrawERC20(IERC20 erc20) external onlyOwner { uint256 balanceToken = erc20.balanceOf(address(this)); erc20.transfer(owner(), balanceToken); } function emergencyWithdrawETH() external onlyOwner { uint256 balanceETH = address(this).balance; payable(msg.sender).transfer(balanceETH); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * 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) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"Received","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_claimDays","type":"uint256"}],"name":"rewardWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"tokensStaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"tokensUnstaked","type":"event"},{"inputs":[],"name":"dailyWithdrawalLimitPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"erc20","type":"address"}],"name":"emergencyWithdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyWithdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ethValueOfStakes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getUserStake","outputs":[{"internalType":"uint256","name":"totalStakedTokens","type":"uint256"},{"internalType":"uint256","name":"totalrewardwithdrawn","type":"uint256"},{"internalType":"uint256","name":"ethValueOfStake","type":"uint256"},{"internalType":"uint256","name":"remainingDays","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastDepositTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastETHWithdrawTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"penaltyWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"name":"setDailyWithdrawalLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"setTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"stakeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalETHWithdrawn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unstakeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_duration","type":"uint256"}],"name":"updateStakingDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cooldown","type":"uint256"}],"name":"updateWithdrawalCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawalCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526213c68060035562015180600455600260055534801561002357600080fd5b5061002d33610058565b600180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556100a8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611312806100b76000396000f3fe60806040526004361061014f5760003560e01c806384536017116100b6578063bbadc93a1161006f578063bbadc93a14610414578063c885bc5814610454578063d6c89c6014610469578063f2fde38b1461047f578063f77d27111461049f578063fc0c546a146104b557600080fd5b8063845360171461035f57806387c7655c146103745780638b752677146103945780638da5cb5b146103b4578063a5ce413b146103d2578063a5f2f327146103e757600080fd5b8063695491871161010857806369549187146102825780636d88335d146102af578063715018a6146102dc578063735de9f7146102f157806379a83f5a146103295780638005a7de1461034957600080fd5b8063025277531461019357806305483a15146101d357806316934fc4146101f557806326a4e8d21461022257806340c442de146102425780635b1d70861461026257600080fd5b3661018e57604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080fd5b34801561019f57600080fd5b506101c06101ae36600461104f565b60096020526000908152604090205481565b6040519081526020015b60405180910390f35b3480156101df57600080fd5b506101f36101ee366004611073565b6104d5565b005b34801561020157600080fd5b506101c061021036600461104f565b60076020526000908152604090205481565b34801561022e57600080fd5b506101f361023d36600461104f565b610538565b34801561024e57600080fd5b506101f361025d36600461104f565b6105b4565b34801561026e57600080fd5b506101f361027d366004611073565b6106c0565b34801561028e57600080fd5b506101c061029d36600461104f565b60086020526000908152604090205481565b3480156102bb57600080fd5b506101c06102ca36600461104f565b600b6020526000908152604090205481565b3480156102e857600080fd5b506101f36106cd565b3480156102fd57600080fd5b50600154610311906001600160a01b031681565b6040516001600160a01b0390911681526020016101ca565b34801561033557600080fd5b506101f361034436600461108c565b6106e1565b34801561035557600080fd5b506101c060035481565b34801561036b57600080fd5b506101f361084a565b34801561038057600080fd5b506101f361038f366004611073565b610885565b3480156103a057600080fd5b50600654610311906001600160a01b031681565b3480156103c057600080fd5b506000546001600160a01b0316610311565b3480156103de57600080fd5b506101f3610892565b3480156103f357600080fd5b506101c061040236600461104f565b600a6020526000908152604090205481565b34801561042057600080fd5b5061043461042f36600461104f565b610a8b565b6040805194855260208501939093529183015260608201526080016101ca565b34801561046057600080fd5b506101f3610b2b565b34801561047557600080fd5b506101c060045481565b34801561048b57600080fd5b506101f361049a36600461104f565b610cee565b3480156104ab57600080fd5b506101c060055481565b3480156104c157600080fd5b50600254610311906001600160a01b031681565b6104dd610d67565b60148111156105335760405162461bcd60e51b815260206004820181905260248201527f50657263656e74616765206d757374206265206c657373207468616e2032302560448201526064015b60405180910390fd5b600555565b610540610d67565b6001600160a01b0381166105885760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161052a565b600280546001600160a01b039092166001600160a01b0319928316811790915560068054909216179055565b6105bc610d67565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610603573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062791906110b8565b9050816001600160a01b031663a9059cbb61064a6000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106bb91906110d1565b505050565b6106c8610d67565b600355565b6106d5610d67565b6106df6000610dc1565b565b6002546001600160a01b031633146106fb576106fb6110f3565b6000811161074b5760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e2030000000604482015260640161052a565b600061075682610e11565b6001600160a01b03841660009081526007602052604090205490915061077c9083610f95565b6001600160a01b0384166000908152600760209081526040808320939093556008905220546107ab9082610f95565b6001600160a01b0384166000818152600860209081526040808320949094556009905282902042905590517fe5cfeeb5fcb96c1c52a55137c15e7f46d34d100d256c5396efc087c43d2fde4b906108059085815260200190565b60405180910390a26001600160a01b0383166000908152600a602052604081205490036106bb5750506001600160a01b03166000908152600a60205260409020429055565b610852610d67565b6040514790339082156108fc029083906000818181858888f19350505050158015610881573d6000803e3d6000fd5b5050565b61088d610d67565b600455565b336000908152600760205260409020546108e15760405162461bcd60e51b815260206004820152601060248201526f139bc81d1bdad95b9cc81cdd185ad95960821b604482015260640161052a565b33600090815260076020908152604080832054600354600990935290832054909161090c9190610f95565b42116109b857600061092a6064610924846014610faa565b90610fb6565b90506109368282610fc2565b60025460065460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101859052929550169063a9059cbb906044016020604051808303816000875af115801561098d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b191906110d1565b50506109bc565b8091505b336000818152600760209081526040808320839055600890915280822091909155600254905163a9059cbb60e01b81526004810192909252602482018490526001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5191906110d1565b5060405182815233907fb74d705d147d5c6f2a221fe764b83223d6237489269fe81463bfd42daed1c5ad9060200160405180910390a25050565b6001600160a01b0381166000908152600760209081526040808320546008835281842054600b845282852054600354600990955292852054919492939092914291610ad69190610f95565b811015610b1e576003546001600160a01b038716600090815260096020526040902054610b17916201518091610924918591610b1191610f95565b90610fc2565b9150610b23565b600091505b509193509193565b33600090815260076020526040902054610b7a5760405162461bcd60e51b815260206004820152601060248201526f139bc81d1bdad95b9cc81cdd185ad95960821b604482015260640161052a565b600454336000908152600a60205260409020544291610b999190610f95565b811015610be85760405162461bcd60e51b815260206004820152601a60248201527f436f6f6c646f776e20706572696f64206e6f7420706173736564000000000000604482015260640161052a565b600080610bf433610fce565b9150915060008211610c485760405162461bcd60e51b815260206004820181905260248201527f4e6f20776974686472617761626c6520616d6f756e7420617661696c61626c65604482015260640161052a565b336000908152600a60209081526040808320869055600b909152902054610c6f9083610f95565b336000818152600b6020526040808220939093559151909184156108fc02918591818181858888f19350505050158015610cad573d6000803e3d6000fd5b50604080518381526020810183905233917fd13c06031c92bf0569a7ce22955941ddf2939888aca3c0156e8910b6b660decd910160405180910390a2505050565b610cf6610d67565b6001600160a01b038116610d5b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052a565b610d6481610dc1565b50565b6000546001600160a01b031633146106df5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60408051600280825260608201835260009283929190602083019080368337505060025482519293506001600160a01b031691839150600090610e5657610e5661111f565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610eaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed39190611135565b81600181518110610ee657610ee661111f565b6001600160a01b03928316602091820292909201015260015460405163d06ca61f60e01b8152600092919091169063d06ca61f90610f2a9087908690600401611152565b600060405180830381865afa158015610f47573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f6f91908101906111a9565b905080600181518110610f8457610f8461111f565b602002602001015192505050919050565b6000610fa1828461127d565b90505b92915050565b6000610fa18284611290565b6000610fa182846112a7565b6000610fa182846112c9565b6001600160a01b038116600090815260086020908152604080832054600454600a90935290832054839261100791610924904290610fc2565b91506000611025606461092460055485610faa90919063ffffffff16565b90506110318184610faa565b93505050915091565b6001600160a01b0381168114610d6457600080fd5b60006020828403121561106157600080fd5b813561106c8161103a565b9392505050565b60006020828403121561108557600080fd5b5035919050565b6000806040838503121561109f57600080fd5b82356110aa8161103a565b946020939093013593505050565b6000602082840312156110ca57600080fd5b5051919050565b6000602082840312156110e357600080fd5b8151801515811461106c57600080fd5b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561114757600080fd5b815161106c8161103a565b6000604082018483526020604081850152818551808452606086019150828701935060005b8181101561119c5784516001600160a01b031683529383019391830191600101611177565b5090979650505050505050565b600060208083850312156111bc57600080fd5b825167ffffffffffffffff808211156111d457600080fd5b818501915085601f8301126111e857600080fd5b8151818111156111fa576111fa611109565b8060051b604051601f19603f8301168101818110858211171561121f5761121f611109565b60405291825284820192508381018501918883111561123d57600080fd5b938501935b8285101561125b57845184529385019392850192611242565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610fa457610fa4611267565b8082028115828204841417610fa457610fa4611267565b6000826112c457634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610fa457610fa461126756fea26469706673582212205b021fea55ee21b623df55cc724b01b04e54197ffcc1dd278c2a15e7339dda5564736f6c63430008130033
Deployed Bytecode
0x60806040526004361061014f5760003560e01c806384536017116100b6578063bbadc93a1161006f578063bbadc93a14610414578063c885bc5814610454578063d6c89c6014610469578063f2fde38b1461047f578063f77d27111461049f578063fc0c546a146104b557600080fd5b8063845360171461035f57806387c7655c146103745780638b752677146103945780638da5cb5b146103b4578063a5ce413b146103d2578063a5f2f327146103e757600080fd5b8063695491871161010857806369549187146102825780636d88335d146102af578063715018a6146102dc578063735de9f7146102f157806379a83f5a146103295780638005a7de1461034957600080fd5b8063025277531461019357806305483a15146101d357806316934fc4146101f557806326a4e8d21461022257806340c442de146102425780635b1d70861461026257600080fd5b3661018e57604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080fd5b34801561019f57600080fd5b506101c06101ae36600461104f565b60096020526000908152604090205481565b6040519081526020015b60405180910390f35b3480156101df57600080fd5b506101f36101ee366004611073565b6104d5565b005b34801561020157600080fd5b506101c061021036600461104f565b60076020526000908152604090205481565b34801561022e57600080fd5b506101f361023d36600461104f565b610538565b34801561024e57600080fd5b506101f361025d36600461104f565b6105b4565b34801561026e57600080fd5b506101f361027d366004611073565b6106c0565b34801561028e57600080fd5b506101c061029d36600461104f565b60086020526000908152604090205481565b3480156102bb57600080fd5b506101c06102ca36600461104f565b600b6020526000908152604090205481565b3480156102e857600080fd5b506101f36106cd565b3480156102fd57600080fd5b50600154610311906001600160a01b031681565b6040516001600160a01b0390911681526020016101ca565b34801561033557600080fd5b506101f361034436600461108c565b6106e1565b34801561035557600080fd5b506101c060035481565b34801561036b57600080fd5b506101f361084a565b34801561038057600080fd5b506101f361038f366004611073565b610885565b3480156103a057600080fd5b50600654610311906001600160a01b031681565b3480156103c057600080fd5b506000546001600160a01b0316610311565b3480156103de57600080fd5b506101f3610892565b3480156103f357600080fd5b506101c061040236600461104f565b600a6020526000908152604090205481565b34801561042057600080fd5b5061043461042f36600461104f565b610a8b565b6040805194855260208501939093529183015260608201526080016101ca565b34801561046057600080fd5b506101f3610b2b565b34801561047557600080fd5b506101c060045481565b34801561048b57600080fd5b506101f361049a36600461104f565b610cee565b3480156104ab57600080fd5b506101c060055481565b3480156104c157600080fd5b50600254610311906001600160a01b031681565b6104dd610d67565b60148111156105335760405162461bcd60e51b815260206004820181905260248201527f50657263656e74616765206d757374206265206c657373207468616e2032302560448201526064015b60405180910390fd5b600555565b610540610d67565b6001600160a01b0381166105885760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161052a565b600280546001600160a01b039092166001600160a01b0319928316811790915560068054909216179055565b6105bc610d67565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610603573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062791906110b8565b9050816001600160a01b031663a9059cbb61064a6000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106bb91906110d1565b505050565b6106c8610d67565b600355565b6106d5610d67565b6106df6000610dc1565b565b6002546001600160a01b031633146106fb576106fb6110f3565b6000811161074b5760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e2030000000604482015260640161052a565b600061075682610e11565b6001600160a01b03841660009081526007602052604090205490915061077c9083610f95565b6001600160a01b0384166000908152600760209081526040808320939093556008905220546107ab9082610f95565b6001600160a01b0384166000818152600860209081526040808320949094556009905282902042905590517fe5cfeeb5fcb96c1c52a55137c15e7f46d34d100d256c5396efc087c43d2fde4b906108059085815260200190565b60405180910390a26001600160a01b0383166000908152600a602052604081205490036106bb5750506001600160a01b03166000908152600a60205260409020429055565b610852610d67565b6040514790339082156108fc029083906000818181858888f19350505050158015610881573d6000803e3d6000fd5b5050565b61088d610d67565b600455565b336000908152600760205260409020546108e15760405162461bcd60e51b815260206004820152601060248201526f139bc81d1bdad95b9cc81cdd185ad95960821b604482015260640161052a565b33600090815260076020908152604080832054600354600990935290832054909161090c9190610f95565b42116109b857600061092a6064610924846014610faa565b90610fb6565b90506109368282610fc2565b60025460065460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101859052929550169063a9059cbb906044016020604051808303816000875af115801561098d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b191906110d1565b50506109bc565b8091505b336000818152600760209081526040808320839055600890915280822091909155600254905163a9059cbb60e01b81526004810192909252602482018490526001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5191906110d1565b5060405182815233907fb74d705d147d5c6f2a221fe764b83223d6237489269fe81463bfd42daed1c5ad9060200160405180910390a25050565b6001600160a01b0381166000908152600760209081526040808320546008835281842054600b845282852054600354600990955292852054919492939092914291610ad69190610f95565b811015610b1e576003546001600160a01b038716600090815260096020526040902054610b17916201518091610924918591610b1191610f95565b90610fc2565b9150610b23565b600091505b509193509193565b33600090815260076020526040902054610b7a5760405162461bcd60e51b815260206004820152601060248201526f139bc81d1bdad95b9cc81cdd185ad95960821b604482015260640161052a565b600454336000908152600a60205260409020544291610b999190610f95565b811015610be85760405162461bcd60e51b815260206004820152601a60248201527f436f6f6c646f776e20706572696f64206e6f7420706173736564000000000000604482015260640161052a565b600080610bf433610fce565b9150915060008211610c485760405162461bcd60e51b815260206004820181905260248201527f4e6f20776974686472617761626c6520616d6f756e7420617661696c61626c65604482015260640161052a565b336000908152600a60209081526040808320869055600b909152902054610c6f9083610f95565b336000818152600b6020526040808220939093559151909184156108fc02918591818181858888f19350505050158015610cad573d6000803e3d6000fd5b50604080518381526020810183905233917fd13c06031c92bf0569a7ce22955941ddf2939888aca3c0156e8910b6b660decd910160405180910390a2505050565b610cf6610d67565b6001600160a01b038116610d5b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052a565b610d6481610dc1565b50565b6000546001600160a01b031633146106df5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60408051600280825260608201835260009283929190602083019080368337505060025482519293506001600160a01b031691839150600090610e5657610e5661111f565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610eaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed39190611135565b81600181518110610ee657610ee661111f565b6001600160a01b03928316602091820292909201015260015460405163d06ca61f60e01b8152600092919091169063d06ca61f90610f2a9087908690600401611152565b600060405180830381865afa158015610f47573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f6f91908101906111a9565b905080600181518110610f8457610f8461111f565b602002602001015192505050919050565b6000610fa1828461127d565b90505b92915050565b6000610fa18284611290565b6000610fa182846112a7565b6000610fa182846112c9565b6001600160a01b038116600090815260086020908152604080832054600454600a90935290832054839261100791610924904290610fc2565b91506000611025606461092460055485610faa90919063ffffffff16565b90506110318184610faa565b93505050915091565b6001600160a01b0381168114610d6457600080fd5b60006020828403121561106157600080fd5b813561106c8161103a565b9392505050565b60006020828403121561108557600080fd5b5035919050565b6000806040838503121561109f57600080fd5b82356110aa8161103a565b946020939093013593505050565b6000602082840312156110ca57600080fd5b5051919050565b6000602082840312156110e357600080fd5b8151801515811461106c57600080fd5b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561114757600080fd5b815161106c8161103a565b6000604082018483526020604081850152818551808452606086019150828701935060005b8181101561119c5784516001600160a01b031683529383019391830191600101611177565b5090979650505050505050565b600060208083850312156111bc57600080fd5b825167ffffffffffffffff808211156111d457600080fd5b818501915085601f8301126111e857600080fd5b8151818111156111fa576111fa611109565b8060051b604051601f19603f8301168101818110858211171561121f5761121f611109565b60405291825284820192508381018501918883111561123d57600080fd5b938501935b8285101561125b57845184529385019392850192611242565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610fa457610fa4611267565b8082028115828204841417610fa457610fa4611267565b6000826112c457634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610fa457610fa461126756fea26469706673582212205b021fea55ee21b623df55cc724b01b04e54197ffcc1dd278c2a15e7339dda5564736f6c63430008130033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
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.