More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 252 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 11817580 | 1475 days ago | IN | 0 ETH | 0.03486575 | ||||
Get Reward | 11488131 | 1525 days ago | IN | 0 ETH | 0.0019206 | ||||
Get Reward | 11382288 | 1542 days ago | IN | 0 ETH | 0.00289442 | ||||
Get Reward | 11380031 | 1542 days ago | IN | 0 ETH | 0.00400495 | ||||
Get Reward | 11365758 | 1544 days ago | IN | 0 ETH | 0.0081701 | ||||
Get Reward | 11364801 | 1544 days ago | IN | 0 ETH | 0.00511108 | ||||
Get Reward | 11364459 | 1544 days ago | IN | 0 ETH | 0.00626776 | ||||
Get Reward | 11363805 | 1544 days ago | IN | 0 ETH | 0.00707132 | ||||
Get Reward | 11362789 | 1545 days ago | IN | 0 ETH | 0.00379682 | ||||
Get Reward | 11362772 | 1545 days ago | IN | 0 ETH | 0.00295603 | ||||
Get Reward | 11362203 | 1545 days ago | IN | 0 ETH | 0.00241068 | ||||
Get Reward | 11361958 | 1545 days ago | IN | 0 ETH | 0.00506242 | ||||
Get Reward | 11361671 | 1545 days ago | IN | 0 ETH | 0.01001238 | ||||
Get Reward | 11361075 | 1545 days ago | IN | 0 ETH | 0.00638026 | ||||
Get Reward | 11360573 | 1545 days ago | IN | 0 ETH | 0.00972307 | ||||
Get Reward | 11360410 | 1545 days ago | IN | 0 ETH | 0.0103938 | ||||
Get Reward | 11359515 | 1545 days ago | IN | 0 ETH | 0.00281246 | ||||
Get Reward | 11359340 | 1545 days ago | IN | 0 ETH | 0.00438743 | ||||
Get Reward | 11359328 | 1545 days ago | IN | 0 ETH | 0.00430306 | ||||
Get Reward | 11359323 | 1545 days ago | IN | 0 ETH | 0.00450557 | ||||
Get Reward | 11358444 | 1545 days ago | IN | 0 ETH | 0.00190712 | ||||
Get Reward | 11357421 | 1545 days ago | IN | 0 ETH | 0.00394101 | ||||
Get Reward | 11357264 | 1545 days ago | IN | 0 ETH | 0.00417851 | ||||
Get Reward | 11357173 | 1545 days ago | IN | 0 ETH | 0.00385708 | ||||
Get Reward | 11356638 | 1546 days ago | IN | 0 ETH | 0.00143034 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
StakingRewards
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-11-08 */ // SPDX-License-Identifier: MIT pragma solidity 0.6.12; /** * @dev Standard math utilities missing in the Solidity language. */ library Math { /** * @dev Returns the largest of two numbers. */ function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } /** * @dev Returns the smallest of two numbers. */ function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } /** * @dev Returns the average of two numbers. The result is rounded towards * zero. */ function average(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b) / 2 can overflow, so we distribute return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2); } } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, "SafeMath: division by zero"); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, "SafeMath: modulo by zero"); return a % b; } } /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see `ERC20Detailed`. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a `Transfer` event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through `transferFrom`. This is * zero by default. * * This value changes when `approve` or `transferFrom` are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * > Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an `Approval` event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a `Transfer` event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to `approve`. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev Optional functions from the ERC20 standard. */ abstract contract ERC20Detailed is IERC20 { string private _name; string private _symbol; uint8 private _decimals; /** * @dev Sets the values for `name`, `symbol`, and `decimals`. All three of * these values are immutable: they can only be set once during * construction. */ constructor (string memory name, string memory symbol, uint8 decimals) public { _name = name; _symbol = symbol; _decimals = decimals; } /** * @dev Returns the name of the token. */ function name() public view returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. * * > Note that this information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * `IERC20.balanceOf` and `IERC20.transfer`. */ function decimals() public view returns (uint8) { return _decimals; } } /** * @dev Collection of functions related to the address type, */ library Address { /** * @dev Returns true if `account` is a contract. * * This test is non-exhaustive, and there may be false-negatives: during the * execution of a contract's constructor, its address will be reported as * not containing a contract. * * > It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. */ function isContract(address account) internal view returns (bool) { // This method relies in extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } } /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. // A Solidity high level call has three parts: // 1. The target address is checked to verify it contains contract code // 2. The call itself is made, and success asserted // 3. The return value is decoded, which in turn checks the size of the returned data. // solhint-disable-next-line max-line-length require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the `nonReentrant` modifier * available, which can be aplied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. */ contract ReentrancyGuard { /// @dev counter to allow mutex lock with only one SSTORE operation uint256 private _guardCounter; constructor () internal { // The counter starts at one to prevent changing it from zero to a non-zero // value, which is a more expensive operation. _guardCounter = 1; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { _guardCounter += 1; uint256 localCounter = _guardCounter; _; require(localCounter == _guardCounter, "ReentrancyGuard: reentrant call"); } } // Inheritancea interface IStakingRewards { // Views function lastTimeRewardApplicable() external view returns (uint256); function rewardPerToken() external view returns (uint256); function earned(address account) external view returns (uint256); function getRewardForDuration() external view returns (uint256); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); // Mutative function stakeFor(uint256 amount, address recipient) external; function stake(uint256 amount) external; function withdrawForUserByCVault(uint256 amount, address from) external; function withdraw(uint256 amount) external; function getRewardFor(address user) external; function getReward() external; function exit() external; } abstract contract RewardsDistributionRecipient { address public rewardsDistribution; function notifyRewardAmount(uint256 reward) external virtual; modifier onlyRewardsDistribution() { require(msg.sender == rewardsDistribution, "Caller is not RewardsDistribution contract"); _; } } contract StakingRewards is IStakingRewards, RewardsDistributionRecipient, ReentrancyGuard { using SafeMath for uint256; using SafeERC20 for IERC20; /* ========== STATE VARIABLES ========== */ IERC20 public rewardsToken; IERC20 public stakingToken; uint256 public periodFinish = 0; uint256 public rewardRate = 0; uint256 public rewardsDuration = 30 days; uint256 public lastUpdateTime; uint256 public rewardPerTokenStored; mapping(address => uint256) public userRewardPerTokenPaid; mapping(address => uint256) public rewards; uint256 private _totalSupply; mapping(address => uint256) private _balances; /* ========== CONSTRUCTOR ========== */ constructor( address _rewardsToken, address _stakingToken ) public { rewardsToken = IERC20(_rewardsToken); stakingToken = IERC20(_stakingToken); rewardsDistribution = msg.sender; } /* ========== VIEWS ========== */ function totalSupply() external override view returns (uint256) { return _totalSupply; } function balanceOf(address account) external override view returns (uint256) { return _balances[account]; } function lastTimeRewardApplicable() public override view returns (uint256) { return Math.min(block.timestamp, periodFinish); } function rewardPerToken() public view override returns (uint256) { if (_totalSupply == 0) { return rewardPerTokenStored; } return rewardPerTokenStored.add( lastTimeRewardApplicable().sub(lastUpdateTime).mul(rewardRate).mul(1e18).div(_totalSupply) ); } function earned(address account) public override view returns (uint256) { return _balances[account].mul(rewardPerToken().sub(userRewardPerTokenPaid[account])).div(1e18).add(rewards[account]); } function getRewardForDuration() external override view returns (uint256) { return rewardRate.mul(rewardsDuration); } /* ========== MUTATIVE FUNCTIONS ========== */ function stakeFor(uint256 amount, address recipient) external override nonReentrant { _stake(amount, recipient); } function stake(uint256 amount) external override nonReentrant { _stake(amount, msg.sender); } function _stake(uint256 amount, address recipient) internal updateReward(recipient) { require(amount > 0, "Cannot stake 0"); _totalSupply = _totalSupply.add(amount); _balances[recipient] = _balances[recipient].add(amount); stakingToken.safeTransferFrom(msg.sender, address(this), amount); emit Staked(recipient, amount); } function withdrawForUserByCVault(uint256 amount, address from) public override nonReentrant { require(msg.sender == address(stakingToken), "!cVault"); _withdraw(amount, from); } function withdraw(uint256 amount) public override nonReentrant { _withdraw(amount, msg.sender); } function _withdraw(uint256 amount, address user) internal updateReward(user) { require(amount > 0, "Cannot withdraw 0"); _totalSupply = _totalSupply.sub(amount); _balances[user] = _balances[user].sub(amount); stakingToken.safeTransfer(user, amount); emit Withdrawn(user, amount); } function getRewardFor(address user) public override nonReentrant { require(msg.sender == address(stakingToken), "!cVault"); _getReward(user); } function getReward() public override nonReentrant { _getReward(msg.sender); } function _getReward(address user) internal updateReward(user) { uint256 reward = rewards[user]; if (reward > 0) { rewards[user] = 0; rewardsToken.safeTransfer(user, reward); emit RewardPaid(user, reward); } } function exit() external override { _withdraw(_balances[msg.sender], msg.sender); getReward(); } /* ========== RESTRICTED FUNCTIONS ========== */ function notifyRewardAmount(uint256 reward) external override onlyRewardsDistribution updateReward(address(0)) { if (block.timestamp >= periodFinish) { rewardRate = reward.div(rewardsDuration); } else { uint256 remaining = periodFinish.sub(block.timestamp); uint256 leftover = remaining.mul(rewardRate); rewardRate = reward.add(leftover).div(rewardsDuration); } // Ensure the provided reward amount is not more than the balance in the contract. // This keeps the reward rate in the right range, preventing overflows due to // very high values of rewardRate in the earned and rewardsPerToken functions; // Reward + leftover must be less than 2^256 / 10^18 to avoid overflow. uint balance = rewardsToken.balanceOf(address(this)); require(rewardRate <= balance.div(rewardsDuration), "Provided reward too high"); lastUpdateTime = block.timestamp; periodFinish = block.timestamp.add(rewardsDuration); emit RewardAdded(reward); } /* ========== MODIFIERS ========== */ modifier updateReward(address account) { rewardPerTokenStored = rewardPerToken(); lastUpdateTime = lastTimeRewardApplicable(); if (account != address(0)) { rewards[account] = earned(account); userRewardPerTokenPaid[account] = rewardPerTokenStored; } _; } /* ========== EVENTS ========== */ event RewardAdded(uint256 reward); event Staked(address indexed user, uint256 amount); event Withdrawn(address indexed user, uint256 amount); event RewardPaid(address indexed user, uint256 reward); } contract StakingRewards_cWETH is StakingRewards { constructor (address _rewardsToken, address _stakingToken) public StakingRewards( _rewardsToken, _stakingToken ) { } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_rewardsToken","type":"address"},{"internalType":"address","name":"_stakingToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"exit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getRewardFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getRewardForDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"name":"notifyRewardAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"periodFinish","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerTokenStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsDistribution","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"stakeFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userRewardPerTokenPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"from","type":"address"}],"name":"withdrawForUserByCVault","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000600455600060055562278d0060065534801561002157600080fd5b506040516116d33803806116d38339818101604052604081101561004457600080fd5b50805160209091015160018055600280546001600160a01b039384166001600160a01b031991821617909155600380549390921692811692909217905560008054909116331790556116388061009b6000396000f3fe608060405234801561001057600080fd5b50600436106101975760003560e01c806370a08231116100e3578063c8f33c911161008c578063df136d6511610066578063df136d65146103f9578063e9fad8ee14610401578063ebe2b12b1461040957610197565b8063c8f33c91146103e1578063cd3daf9d146103e9578063d1af0c7d146103f157610197565b806380faa57d116100bd57806380faa57d146103895780638b87634714610391578063a694fc3a146103c457610197565b806370a082311461034657806372f702f3146103795780637b0a47ee1461038157610197565b8063386a9525116101455780633fc6df6e1161011f5780633fc6df6e146102a35780634e2e7ec5146102d457806351746bb21461030d57610197565b8063386a9525146102765780633c6b16ab1461027e5780633d18b9121461029b57610197565b806318160ddd1161017657806318160ddd146102495780631c1f78eb146102515780632e1a7d4d1461025957610197565b80628cc2621461019c578063055de275146101e15780630700037d14610216575b600080fd5b6101cf600480360360208110156101b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610411565b60408051918252519081900360200190f35b610214600480360360208110156101f757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104a9565b005b6101cf6004803603602081101561022c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105b6565b6101cf6105c8565b6101cf6105cf565b6102146004803603602081101561026f57600080fd5b50356105ed565b6101cf610601565b6102146004803603602081101561029457600080fd5b5035610607565b6102146108bb565b6102ab610941565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610214600480360360408110156102ea57600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff1661095d565b6102146004803603604081101561032357600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16610a6c565b6101cf6004803603602081101561035c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a80565b6102ab610aa8565b6101cf610ac4565b6101cf610aca565b6101cf600480360360208110156103a757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610ad8565b610214600480360360208110156103da57600080fd5b5035610aea565b6101cf610afe565b6101cf610b04565b6102ab610b52565b6101cf610b6e565b610214610b74565b6101cf610b97565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a602090815260408083205460099092528220546104a3919061049d90670de0b6b3a7640000906104979061046b90610465610b04565b90610b9d565b73ffffffffffffffffffffffffffffffffffffffff88166000908152600c602052604090205490610c14565b90610c8e565b90610d12565b92915050565b6001805481019081905560035473ffffffffffffffffffffffffffffffffffffffff16331461053957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f21635661756c7400000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b61054282610d86565b60015481146105b257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b5050565b600a6020526000908152604090205481565b600b545b90565b60006105e8600654600554610c1490919063ffffffff16565b905090565b600180548101908190556105428233610eae565b60065481565b60005473ffffffffffffffffffffffffffffffffffffffff163314610677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806115af602a913960400191505060405180910390fd5b6000610681610b04565b60085561068c610aca565b60075573ffffffffffffffffffffffffffffffffffffffff8116156106ed576106b481610411565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600a60209081526040808320939093556008546009909152919020555b600454421061070c57600654610704908390610c8e565b60055561074f565b60045460009061071c9042610b9d565b9050600061073560055483610c1490919063ffffffff16565b600654909150610749906104978684610d12565b60055550505b600254604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156107c057600080fd5b505afa1580156107d4573d6000803e3d6000fd5b505050506040513d60208110156107ea57600080fd5b50516006549091506107fd908290610c8e565b600554111561086d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f50726f76696465642072657761726420746f6f20686967680000000000000000604482015290519081900360640190fd5b4260078190556006546108809190610d12565b6004556040805184815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a1505050565b600180548101908190556108ce33610d86565b600154811461093e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b50565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6001805481019081905560035473ffffffffffffffffffffffffffffffffffffffff1633146109ed57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f21635661756c7400000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6109f78383610eae565b6001548114610a6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b505050565b600180548101908190556109f7838361105c565b73ffffffffffffffffffffffffffffffffffffffff166000908152600c602052604090205490565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60006105e84260045461120b565b60096020526000908152604090205481565b60018054810190819055610542823361105c565b60075481565b6000600b5460001415610b1a57506008546105cc565b6105e8610b49600b54610497670de0b6b3a7640000610b43600554610b43600754610465610aca565b90610c14565b60085490610d12565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b336000818152600c6020526040902054610b8d91610eae565b610b956108bb565b565b60045481565b600082821115610c0e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082610c23575060006104a3565b82820282848281610c3057fe5b0414610c87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061158e6021913960400191505060405180910390fd5b9392505050565b6000808211610cfe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610d0957fe5b04949350505050565b600082820183811015610c8757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b80610d8f610b04565b600855610d9a610aca565b60075573ffffffffffffffffffffffffffffffffffffffff811615610dfb57610dc281610411565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600a60209081526040808320939093556008546009909152919020555b73ffffffffffffffffffffffffffffffffffffffff82166000908152600a60205260409020548015610a675773ffffffffffffffffffffffffffffffffffffffff8084166000908152600a6020526040812055600254610e5d91168483611221565b60408051828152905173ffffffffffffffffffffffffffffffffffffffff8516917fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486919081900360200190a2505050565b80610eb7610b04565b600855610ec2610aca565b60075573ffffffffffffffffffffffffffffffffffffffff811615610f2357610eea81610411565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600a60209081526040808320939093556008546009909152919020555b60008311610f9257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f43616e6e6f742077697468647261772030000000000000000000000000000000604482015290519081900360640190fd5b600b54610f9f9084610b9d565b600b5573ffffffffffffffffffffffffffffffffffffffff82166000908152600c6020526040902054610fd29084610b9d565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600c602052604090209190915560035461100b91168385611221565b60408051848152905173ffffffffffffffffffffffffffffffffffffffff8416917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a2505050565b80611065610b04565b600855611070610aca565b60075573ffffffffffffffffffffffffffffffffffffffff8116156110d15761109881610411565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600a60209081526040808320939093556008546009909152919020555b6000831161114057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f43616e6e6f74207374616b652030000000000000000000000000000000000000604482015290519081900360640190fd5b600b5461114d9084610d12565b600b5573ffffffffffffffffffffffffffffffffffffffff82166000908152600c60205260409020546111809084610d12565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600c60205260409020919091556003546111ba91163330866112ae565b60408051848152905173ffffffffffffffffffffffffffffffffffffffff8416917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a2505050565b600081831061121a5781610c87565b5090919050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610a67908490611349565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052611343908590611349565b50505050565b6113688273ffffffffffffffffffffffffffffffffffffffff16611587565b6113d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061143c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016113ff565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461149e576040519150601f19603f3d011682016040523d82523d6000602084013e6114a3565b606091505b50915091508161151457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156113435780806020019051602081101561153057600080fd5b5051611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806115d9602a913960400191505060405180910390fd5b3b15159056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743616c6c6572206973206e6f742052657761726473446973747269627574696f6e20636f6e74726163745361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122058c8735f6c300a1013233d1e92be293ab7fdf7ee2926031149d83b8895805ca964736f6c634300060c00330000000000000000000000007ef1081ecc8b5b5b130656a41d4ce4f89dbbcc8c0000000000000000000000009813ecb6102a117bdbd85ac268d3d5e7ab47523c
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101975760003560e01c806370a08231116100e3578063c8f33c911161008c578063df136d6511610066578063df136d65146103f9578063e9fad8ee14610401578063ebe2b12b1461040957610197565b8063c8f33c91146103e1578063cd3daf9d146103e9578063d1af0c7d146103f157610197565b806380faa57d116100bd57806380faa57d146103895780638b87634714610391578063a694fc3a146103c457610197565b806370a082311461034657806372f702f3146103795780637b0a47ee1461038157610197565b8063386a9525116101455780633fc6df6e1161011f5780633fc6df6e146102a35780634e2e7ec5146102d457806351746bb21461030d57610197565b8063386a9525146102765780633c6b16ab1461027e5780633d18b9121461029b57610197565b806318160ddd1161017657806318160ddd146102495780631c1f78eb146102515780632e1a7d4d1461025957610197565b80628cc2621461019c578063055de275146101e15780630700037d14610216575b600080fd5b6101cf600480360360208110156101b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610411565b60408051918252519081900360200190f35b610214600480360360208110156101f757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104a9565b005b6101cf6004803603602081101561022c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105b6565b6101cf6105c8565b6101cf6105cf565b6102146004803603602081101561026f57600080fd5b50356105ed565b6101cf610601565b6102146004803603602081101561029457600080fd5b5035610607565b6102146108bb565b6102ab610941565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610214600480360360408110156102ea57600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff1661095d565b6102146004803603604081101561032357600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16610a6c565b6101cf6004803603602081101561035c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a80565b6102ab610aa8565b6101cf610ac4565b6101cf610aca565b6101cf600480360360208110156103a757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610ad8565b610214600480360360208110156103da57600080fd5b5035610aea565b6101cf610afe565b6101cf610b04565b6102ab610b52565b6101cf610b6e565b610214610b74565b6101cf610b97565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a602090815260408083205460099092528220546104a3919061049d90670de0b6b3a7640000906104979061046b90610465610b04565b90610b9d565b73ffffffffffffffffffffffffffffffffffffffff88166000908152600c602052604090205490610c14565b90610c8e565b90610d12565b92915050565b6001805481019081905560035473ffffffffffffffffffffffffffffffffffffffff16331461053957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f21635661756c7400000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b61054282610d86565b60015481146105b257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b5050565b600a6020526000908152604090205481565b600b545b90565b60006105e8600654600554610c1490919063ffffffff16565b905090565b600180548101908190556105428233610eae565b60065481565b60005473ffffffffffffffffffffffffffffffffffffffff163314610677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806115af602a913960400191505060405180910390fd5b6000610681610b04565b60085561068c610aca565b60075573ffffffffffffffffffffffffffffffffffffffff8116156106ed576106b481610411565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600a60209081526040808320939093556008546009909152919020555b600454421061070c57600654610704908390610c8e565b60055561074f565b60045460009061071c9042610b9d565b9050600061073560055483610c1490919063ffffffff16565b600654909150610749906104978684610d12565b60055550505b600254604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156107c057600080fd5b505afa1580156107d4573d6000803e3d6000fd5b505050506040513d60208110156107ea57600080fd5b50516006549091506107fd908290610c8e565b600554111561086d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f50726f76696465642072657761726420746f6f20686967680000000000000000604482015290519081900360640190fd5b4260078190556006546108809190610d12565b6004556040805184815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a1505050565b600180548101908190556108ce33610d86565b600154811461093e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b50565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6001805481019081905560035473ffffffffffffffffffffffffffffffffffffffff1633146109ed57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f21635661756c7400000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6109f78383610eae565b6001548114610a6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b505050565b600180548101908190556109f7838361105c565b73ffffffffffffffffffffffffffffffffffffffff166000908152600c602052604090205490565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60006105e84260045461120b565b60096020526000908152604090205481565b60018054810190819055610542823361105c565b60075481565b6000600b5460001415610b1a57506008546105cc565b6105e8610b49600b54610497670de0b6b3a7640000610b43600554610b43600754610465610aca565b90610c14565b60085490610d12565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b336000818152600c6020526040902054610b8d91610eae565b610b956108bb565b565b60045481565b600082821115610c0e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082610c23575060006104a3565b82820282848281610c3057fe5b0414610c87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061158e6021913960400191505060405180910390fd5b9392505050565b6000808211610cfe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610d0957fe5b04949350505050565b600082820183811015610c8757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b80610d8f610b04565b600855610d9a610aca565b60075573ffffffffffffffffffffffffffffffffffffffff811615610dfb57610dc281610411565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600a60209081526040808320939093556008546009909152919020555b73ffffffffffffffffffffffffffffffffffffffff82166000908152600a60205260409020548015610a675773ffffffffffffffffffffffffffffffffffffffff8084166000908152600a6020526040812055600254610e5d91168483611221565b60408051828152905173ffffffffffffffffffffffffffffffffffffffff8516917fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486919081900360200190a2505050565b80610eb7610b04565b600855610ec2610aca565b60075573ffffffffffffffffffffffffffffffffffffffff811615610f2357610eea81610411565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600a60209081526040808320939093556008546009909152919020555b60008311610f9257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f43616e6e6f742077697468647261772030000000000000000000000000000000604482015290519081900360640190fd5b600b54610f9f9084610b9d565b600b5573ffffffffffffffffffffffffffffffffffffffff82166000908152600c6020526040902054610fd29084610b9d565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600c602052604090209190915560035461100b91168385611221565b60408051848152905173ffffffffffffffffffffffffffffffffffffffff8416917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a2505050565b80611065610b04565b600855611070610aca565b60075573ffffffffffffffffffffffffffffffffffffffff8116156110d15761109881610411565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600a60209081526040808320939093556008546009909152919020555b6000831161114057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f43616e6e6f74207374616b652030000000000000000000000000000000000000604482015290519081900360640190fd5b600b5461114d9084610d12565b600b5573ffffffffffffffffffffffffffffffffffffffff82166000908152600c60205260409020546111809084610d12565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600c60205260409020919091556003546111ba91163330866112ae565b60408051848152905173ffffffffffffffffffffffffffffffffffffffff8416917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a2505050565b600081831061121a5781610c87565b5090919050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610a67908490611349565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052611343908590611349565b50505050565b6113688273ffffffffffffffffffffffffffffffffffffffff16611587565b6113d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061143c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016113ff565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461149e576040519150601f19603f3d011682016040523d82523d6000602084013e6114a3565b606091505b50915091508161151457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156113435780806020019051602081101561153057600080fd5b5051611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806115d9602a913960400191505060405180910390fd5b3b15159056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743616c6c6572206973206e6f742052657761726473446973747269627574696f6e20636f6e74726163745361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122058c8735f6c300a1013233d1e92be293ab7fdf7ee2926031149d83b8895805ca964736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007ef1081ecc8b5b5b130656a41d4ce4f89dbbcc8c0000000000000000000000009813ecb6102a117bdbd85ac268d3d5e7ab47523c
-----Decoded View---------------
Arg [0] : _rewardsToken (address): 0x7Ef1081Ecc8b5B5B130656a41d4cE4f89dBBCC8c
Arg [1] : _stakingToken (address): 0x9813ECB6102a117BDbd85AC268D3D5E7ab47523C
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007ef1081ecc8b5b5b130656a41d4ce4f89dbbcc8c
Arg [1] : 0000000000000000000000009813ecb6102a117bdbd85ac268d3d5e7ab47523c
Deployed Bytecode Sourcemap
16128:5939:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17880:207;;;;;;;;;;;;;;;;-1:-1:-1;17880:207:0;;;;:::i;:::-;;;;;;;;;;;;;;;;19584:166;;;;;;;;;;;;;;;;-1:-1:-1;19584:166:0;;;;:::i;:::-;;16675:42;;;;;;;;;;;;;;;;-1:-1:-1;16675:42:0;;;;:::i;17146:102::-;;;:::i;18095:130::-;;;:::i;19126:111::-;;;;;;;;;;;;;;;;-1:-1:-1;19126:111:0;;:::i;16484:40::-;;;:::i;20327:1092::-;;;;;;;;;;;;;;;;-1:-1:-1;20327:1092:0;;:::i;19758:91::-;;;:::i;15855:34::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18918:200;;;;;;;;;;;;;;;;-1:-1:-1;18918:200:0;;;;;;;;;:::i;18287:128::-;;;;;;;;;;;;;;;;-1:-1:-1;18287:128:0;;;;;;;;;:::i;17256:121::-;;;;;;;;;;;;;;;;-1:-1:-1;17256:121:0;;;;:::i;16377:26::-;;;:::i;16448:29::-;;;:::i;17385:140::-;;;:::i;16611:57::-;;;;;;;;;;;;;;;;-1:-1:-1;16611:57:0;;;;:::i;18423:107::-;;;;;;;;;;;;;;;;-1:-1:-1;18423:107:0;;:::i;16531:29::-;;;:::i;17533:339::-;;;:::i;16344:26::-;;;:::i;16567:35::-;;;:::i;20144:119::-;;;:::i;16410:31::-;;;:::i;17880:207::-;18062:16;;;17943:7;18062:16;;;:7;:16;;;;;;;;;18014:22;:31;;;;;;17970:109;;18062:16;17970:87;;18052:4;;17970:77;;17993:53;;:16;:14;:16::i;:::-;:20;;:53::i;:::-;17970:18;;;;;;;:9;:18;;;;;;;:22;:77::i;:::-;:81;;:87::i;:::-;:91;;:109::i;:::-;17963:116;17880:207;-1:-1:-1;;17880:207:0:o;19584:166::-;14761:1;14744:18;;;;;;;;19690:12:::1;::::0;::::1;;19668:10;:35;19660:55;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;19726:16;19737:4;19726:10;:16::i;:::-;14856:13:::0;;14840:12;:29;14832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19584:166;;:::o;16675:42::-;;;;;;;;;;;;;:::o;17146:102::-;17228:12;;17146:102;;:::o;18095:130::-;18159:7;18186:31;18201:15;;18186:10;;:14;;:31;;;;:::i;:::-;18179:38;;18095:130;:::o;19126:111::-;14761:1;14744:18;;;;;;;;19200:29:::1;19210:6:::0;19218:10:::1;19200:9;:29::i;16484:40::-:0;;;;:::o;20327:1092::-;16035:19;;;;16021:10;:33;16013:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20434:1:::1;21545:16;:14;:16::i;:::-;21522:20;:39:::0;21589:26:::1;:24;:26::i;:::-;21572:14;:43:::0;21630:21:::1;::::0;::::1;::::0;21626:157:::1;;21687:15;21694:7;21687:6;:15::i;:::-;21668:16;::::0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:34;;;;21751:20:::1;::::0;21717:22:::1;:31:::0;;;;;;:54;21626:157:::1;20472:12:::2;;20453:15;:31;20449:318;;20525:15;::::0;20514:27:::2;::::0;:6;;:10:::2;:27::i;:::-;20501:10;:40:::0;20449:318:::2;;;20594:12;::::0;20574:17:::2;::::0;20594:33:::2;::::0;20611:15:::2;20594:16;:33::i;:::-;20574:53;;20642:16;20661:25;20675:10;;20661:9;:13;;:25;;;;:::i;:::-;20739:15;::::0;20642:44;;-1:-1:-1;20714:41:0::2;::::0;:20:::2;:6:::0;20642:44;20714:10:::2;:20::i;:41::-;20701:10;:54:::0;-1:-1:-1;;20449:318:0::2;21142:12;::::0;:37:::2;::::0;;;;;21173:4:::2;21142:37;::::0;::::2;::::0;;;21127:12:::2;::::0;21142::::2;;::::0;:22:::2;::::0;:37;;;;;::::2;::::0;;;;;;;;:12;:37;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;21142:37:0;21224:15:::2;::::0;21142:37;;-1:-1:-1;21212:28:0::2;::::0;21142:37;;21212:11:::2;:28::i;:::-;21198:10;;:42;;21190:79;;;::::0;;::::2;::::0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;21299:15;21282:14;:32:::0;;;21360:15:::2;::::0;21340:36:::2;::::0;21299:15;21340:19:::2;:36::i;:::-;21325:12;:51:::0;21392:19:::2;::::0;;;;;;;::::2;::::0;;;;::::2;::::0;;::::2;21793:1;16112::::1;20327:1092:::0;:::o;19758:91::-;14761:1;14744:18;;;;;;;;19819:22:::1;19830:10;19819;:22::i;:::-;14856:13:::0;;14840:12;:29;14832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19758:91;:::o;15855:34::-;;;;;;:::o;18918:200::-;14761:1;14744:18;;;;;;;;19051:12:::1;::::0;::::1;;19029:10;:35;19021:55;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;19087:23;19097:6;19105:4;19087:9;:23::i;:::-;14856:13:::0;;14840:12;:29;14832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18918:200;;;:::o;18287:128::-;14761:1;14744:18;;;;;;;;18382:25:::1;18389:6:::0;18397:9;18382:6:::1;:25::i;17256:121::-:0;17351:18;;17324:7;17351:18;;;:9;:18;;;;;;;17256:121::o;16377:26::-;;;;;;:::o;16448:29::-;;;;:::o;17385:140::-;17451:7;17478:39;17487:15;17504:12;;17478:8;:39::i;16611:57::-;;;;;;;;;;;;;:::o;18423:107::-;14761:1;14744:18;;;;;;;;18496:26:::1;18503:6:::0;18511:10:::1;18496:6;:26::i;16531:29::-:0;;;;:::o;17533:339::-;17589:7;17613:12;;17629:1;17613:17;17609:77;;;-1:-1:-1;17654:20:0;;17647:27;;17609:77;17716:148;17759:90;17836:12;;17759:72;17826:4;17759:62;17810:10;;17759:46;17790:14;;17759:26;:24;:26::i;:46::-;:50;;:62::i;:90::-;17716:20;;;:24;:148::i;16344:26::-;;;;;;:::o;16567:35::-;;;;:::o;20144:119::-;20209:10;20199:21;;;;:9;:21;;;;;;20189:44;;:9;:44::i;:::-;20244:11;:9;:11::i;:::-;20144:119::o;16410:31::-;;;;:::o;2122:184::-;2180:7;2213:1;2208;:6;;2200:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2272:5:0;;;2122:184::o;2557:470::-;2615:7;2859:6;2855:47;;-1:-1:-1;2889:1:0;2882:8;;2855:47;2926:5;;;2930:1;2926;:5;:1;2950:5;;;;;:10;2942:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3018:1;2557:470;-1:-1:-1;;;2557:470:0:o;3495:333::-;3553:7;3652:1;3648;:5;3640:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3695:9;3711:1;3707;:5;;;;;;;3495:333;-1:-1:-1;;;;3495:333:0:o;1666:181::-;1724:7;1756:5;;;1780:6;;;;1772:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19857:279;19913:4;21545:16;:14;:16::i;:::-;21522:20;:39;21589:26;:24;:26::i;:::-;21572:14;:43;21630:21;;;;21626:157;;21687:15;21694:7;21687:6;:15::i;:::-;21668:16;;;;;;;:7;:16;;;;;;;;:34;;;;21751:20;;21717:22;:31;;;;;;:54;21626:157;19947:13:::1;::::0;::::1;19930:14;19947:13:::0;;;:7:::1;:13;::::0;;;;;19975:10;;19971:158:::1;;20002:13;::::0;;::::1;20018:1;20002:13:::0;;;:7:::1;:13;::::0;;;;:17;20034:12:::1;::::0;:39:::1;::::0;:12:::1;20010:4:::0;20066:6;20034:25:::1;:39::i;:::-;20093:24;::::0;;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;21793:1;19857:279:::0;;:::o;19245:331::-;19316:4;21545:16;:14;:16::i;:::-;21522:20;:39;21589:26;:24;:26::i;:::-;21572:14;:43;21630:21;;;;21626:157;;21687:15;21694:7;21687:6;:15::i;:::-;21668:16;;;;;;;:7;:16;;;;;;;;:34;;;;21751:20;;21717:22;:31;;;;;;:54;21626:157;19350:1:::1;19341:6;:10;19333:40;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;19399:12;::::0;:24:::1;::::0;19416:6;19399:16:::1;:24::i;:::-;19384:12;:39:::0;19452:15:::1;::::0;::::1;;::::0;;;:9:::1;:15;::::0;;;;;:27:::1;::::0;19472:6;19452:19:::1;:27::i;:::-;19434:15;::::0;;::::1;;::::0;;;:9:::1;:15;::::0;;;;:45;;;;19490:12:::1;::::0;:39:::1;::::0;:12:::1;19444:4:::0;19522:6;19490:25:::1;:39::i;:::-;19545:23;::::0;;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;19245:331:::0;;;:::o;18538:372::-;18611:9;21545:16;:14;:16::i;:::-;21522:20;:39;21589:26;:24;:26::i;:::-;21572:14;:43;21630:21;;;;21626:157;;21687:15;21694:7;21687:6;:15::i;:::-;21668:16;;;;;;;:7;:16;;;;;;;;:34;;;;21751:20;;21717:22;:31;;;;;;:54;21626:157;18650:1:::1;18641:6;:10;18633:37;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;18696:12;::::0;:24:::1;::::0;18713:6;18696:16:::1;:24::i;:::-;18681:12;:39:::0;18754:20:::1;::::0;::::1;;::::0;;;:9:::1;:20;::::0;;;;;:32:::1;::::0;18779:6;18754:24:::1;:32::i;:::-;18731:20;::::0;;::::1;;::::0;;;:9:::1;:20;::::0;;;;:55;;;;18797:12:::1;::::0;:64:::1;::::0;:12:::1;18827:10;18847:4;18854:6:::0;18797:29:::1;:64::i;:::-;18877:25;::::0;;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;18538:372:::0;;;:::o;409:106::-;467:7;498:1;494;:5;:13;;506:1;494:13;;;-1:-1:-1;502:1:0;;487:20;-1:-1:-1;409:106:0:o;10323:176::-;10432:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10455:23;10432:58;;;10406:85;;10425:5;;10406:18;:85::i;10507:204::-;10634:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10657:27;10634:68;;;10608:95;;10627:5;;10608:18;:95::i;:::-;10507:204;;;;:::o;12317:1114::-;12921:27;12929:5;12921:25;;;:27::i;:::-;12913:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13058:12;13072:23;13107:5;13099:19;;13119:4;13099:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13057:67;;;;13143:7;13135:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13204:17;;:21;13200:224;;13346:10;13335:30;;;;;;;;;;;;;;;-1:-1:-1;13335:30:0;13327:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9336:422;9703:20;9742:8;;;9336:422::o
Swarm Source
ipfs://58c8735f6c300a1013233d1e92be293ab7fdf7ee2926031149d83b8895805ca9
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.126744 | 2,522.4077 | $319.7 |
Loading...
Loading
[ 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.