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 4,774 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Exit | 20344232 | 7 days ago | IN | 0 ETH | 0.00049975 | ||||
Exit | 20224898 | 24 days ago | IN | 0 ETH | 0.00063728 | ||||
Exit | 20149616 | 34 days ago | IN | 0 ETH | 0.00027639 | ||||
Exit | 19923439 | 66 days ago | IN | 0 ETH | 0.00108368 | ||||
Exit | 19896888 | 70 days ago | IN | 0 ETH | 0.00052658 | ||||
Exit | 19877687 | 72 days ago | IN | 0 ETH | 0.00208428 | ||||
Exit | 19847555 | 76 days ago | IN | 0 ETH | 0.0009082 | ||||
Get Reward | 19847536 | 76 days ago | IN | 0 ETH | 0.00058923 | ||||
Exit | 19806629 | 82 days ago | IN | 0 ETH | 0.00094396 | ||||
Exit | 19646868 | 105 days ago | IN | 0 ETH | 0.00201481 | ||||
Exit | 19627727 | 107 days ago | IN | 0 ETH | 0.00189249 | ||||
Get Reward | 19627723 | 107 days ago | IN | 0 ETH | 0.00174217 | ||||
Exit | 19595619 | 112 days ago | IN | 0 ETH | 0.00183678 | ||||
Exit | 19544072 | 119 days ago | IN | 0 ETH | 0.00350151 | ||||
Exit | 19445193 | 133 days ago | IN | 0 ETH | 0.0040671 | ||||
Get Reward | 19445165 | 133 days ago | IN | 0 ETH | 0.00300082 | ||||
Exit | 19423214 | 136 days ago | IN | 0 ETH | 0.00613921 | ||||
Get Reward | 19423212 | 136 days ago | IN | 0 ETH | 0.00389156 | ||||
Exit | 19395185 | 140 days ago | IN | 0 ETH | 0.0068275 | ||||
Exit | 19393743 | 140 days ago | IN | 0 ETH | 0.00885581 | ||||
Exit | 19306962 | 152 days ago | IN | 0 ETH | 0.00445763 | ||||
Get Reward | 19306950 | 152 days ago | IN | 0 ETH | 0.00411501 | ||||
Exit | 19270125 | 157 days ago | IN | 0 ETH | 0.0051124 | ||||
Exit | 19168960 | 172 days ago | IN | 0 ETH | 0.00552523 | ||||
Exit | 19157557 | 173 days ago | IN | 0 ETH | 0.00270969 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
12275926 | 1194 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
Gauge
Compiler Version
v0.6.7+commit.b8d736ae
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.6.7; //^0.7.5; library SafeMath { function add(uint a, uint b) internal pure returns (uint) { uint c = a + b; require(c >= a, "add: +"); return c; } function add(uint a, uint b, string memory errorMessage) internal pure returns (uint) { uint c = a + b; require(c >= a, errorMessage); return c; } function sub(uint a, uint b) internal pure returns (uint) { return sub(a, b, "sub: -"); } function sub(uint a, uint b, string memory errorMessage) internal pure returns (uint) { require(b <= a, errorMessage); uint c = a - b; return c; } function mul(uint a, uint b) internal pure returns (uint) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint c = a * b; require(c / a == b, "mul: *"); return c; } function mul(uint a, uint b, string memory errorMessage) internal pure returns (uint) { if (a == 0) { return 0; } uint c = a * b; require(c / a == b, errorMessage); return c; } function div(uint a, uint b) internal pure returns (uint) { return div(a, b, "div: /"); } function div(uint a, uint b, string memory errorMessage) internal pure returns (uint) { require(b > 0, errorMessage); uint c = a / b; return c; } } library Address { function isContract(address account) internal view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != 0x0 && codehash != accountHash); } function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-call-value (bool success, ) = recipient.call{value:amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); } 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 { 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, "SafeERC20: decreased allowance below zero"); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function callOptionalReturn(IERC20 token, bytes memory data) private { 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"); } } } 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 Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied 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. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor () public { _status = _NOT_ENTERED; } /** * @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() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } contract Gauge is ReentrancyGuard { using SafeMath for uint256; using SafeERC20 for IERC20; IERC20 public constant PICKLE = IERC20(0x429881672B9AE42b8EbA0E26cD9C73711b891Ca5); IERC20 public constant DILL = IERC20(0xbBCf169eE191A1Ba7371F30A1C344bFC498b29Cf); address public constant TREASURY = address(0x066419EaEf5DE53cc5da0d8702b990c5bc7D1AB3); IERC20 public immutable TOKEN; address public immutable DISTRIBUTION; uint256 public constant DURATION = 7 days; uint256 public periodFinish = 0; uint256 public rewardRate = 0; uint256 public lastUpdateTime; uint256 public rewardPerTokenStored; modifier onlyDistribution() { require(msg.sender == DISTRIBUTION, "Caller is not RewardsDistribution contract"); _; } mapping(address => uint256) public userRewardPerTokenPaid; mapping(address => uint256) public rewards; uint256 private _totalSupply; uint public derivedSupply; mapping(address => uint256) private _balances; mapping(address => uint256) public derivedBalances; mapping(address => uint) private _base; constructor(address _token) public { TOKEN = IERC20(_token); DISTRIBUTION = msg.sender; } function totalSupply() external view returns (uint256) { return _totalSupply; } function balanceOf(address account) external view returns (uint256) { return _balances[account]; } function lastTimeRewardApplicable() public view returns (uint256) { return Math.min(block.timestamp, periodFinish); } function rewardPerToken() public view returns (uint256) { if (_totalSupply == 0) { return rewardPerTokenStored; } return rewardPerTokenStored.add( lastTimeRewardApplicable().sub(lastUpdateTime).mul(rewardRate).mul(1e18).div(derivedSupply) ); } function derivedBalance(address account) public view returns (uint) { uint _balance = _balances[account]; uint _derived = _balance.mul(40).div(100); uint _adjusted = (_totalSupply.mul(DILL.balanceOf(account)).div(DILL.totalSupply())).mul(60).div(100); return Math.min(_derived.add(_adjusted), _balance); } function kick(address account) public { uint _derivedBalance = derivedBalances[account]; derivedSupply = derivedSupply.sub(_derivedBalance); _derivedBalance = derivedBalance(account); derivedBalances[account] = _derivedBalance; derivedSupply = derivedSupply.add(_derivedBalance); } function earned(address account) public view returns (uint256) { return derivedBalances[account].mul(rewardPerToken().sub(userRewardPerTokenPaid[account])).div(1e18).add(rewards[account]); } function getRewardForDuration() external view returns (uint256) { return rewardRate.mul(DURATION); } function depositAll() external { _deposit(TOKEN.balanceOf(msg.sender), msg.sender); } function deposit(uint256 amount) external { _deposit(amount, msg.sender); } function depositFor(uint256 amount, address account) external { _deposit(amount, account); } function _deposit(uint amount, address account) internal nonReentrant updateReward(account) { require(amount > 0, "Cannot stake 0"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Staked(account, amount); TOKEN.safeTransferFrom(account, address(this), amount); } function withdrawAll() external { _withdraw(_balances[msg.sender]); } function withdraw(uint256 amount) external { _withdraw(amount); } function _withdraw(uint amount) internal nonReentrant updateReward(msg.sender) { require(amount > 0, "Cannot withdraw 0"); _totalSupply = _totalSupply.sub(amount); _balances[msg.sender] = _balances[msg.sender].sub(amount); TOKEN.safeTransfer(msg.sender, amount); emit Withdrawn(msg.sender, amount); } function getReward() public nonReentrant updateReward(msg.sender) { uint256 reward = rewards[msg.sender]; if (reward > 0) { rewards[msg.sender] = 0; PICKLE.safeTransfer(msg.sender, reward); emit RewardPaid(msg.sender, reward); } } function exit() external { _withdraw(_balances[msg.sender]); getReward(); } function notifyRewardAmount(uint256 reward) external onlyDistribution updateReward(address(0)) { PICKLE.safeTransferFrom(DISTRIBUTION, address(this), reward); if (block.timestamp >= periodFinish) { rewardRate = reward.div(DURATION); } else { uint256 remaining = periodFinish.sub(block.timestamp); uint256 leftover = remaining.mul(rewardRate); rewardRate = reward.add(leftover).div(DURATION); } // 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 = PICKLE.balanceOf(address(this)); require(rewardRate <= balance.div(DURATION), "Provided reward too high"); lastUpdateTime = block.timestamp; periodFinish = block.timestamp.add(DURATION); emit RewardAdded(reward); } modifier updateReward(address account) { rewardPerTokenStored = rewardPerToken(); lastUpdateTime = lastTimeRewardApplicable(); if (account != address(0)) { rewards[account] = earned(account); userRewardPerTokenPaid[account] = rewardPerTokenStored; } _; if (account != address(0)) { kick(account); } } 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); } interface MasterChef { function deposit(uint, uint) external; function withdraw(uint, uint) external; function userInfo(uint, address) external view returns (uint, uint); } contract ProtocolGovernance { /// @notice governance address for the governance contract address public governance; address public pendingGovernance; /** * @notice Allows governance to change governance (for future upgradability) * @param _governance new governance address to set */ function setGovernance(address _governance) external { require(msg.sender == governance, "setGovernance: !gov"); pendingGovernance = _governance; } /** * @notice Allows pendingGovernance to accept their role as governance (protection pattern) */ function acceptGovernance() external { require(msg.sender == pendingGovernance, "acceptGovernance: !pendingGov"); governance = pendingGovernance; } } contract MasterDill { using SafeMath for uint; /// @notice EIP-20 token name for this token string public constant name = "Master DILL"; /// @notice EIP-20 token symbol for this token string public constant symbol = "mDILL"; /// @notice EIP-20 token decimals for this token uint8 public constant decimals = 18; /// @notice Total number of tokens in circulation uint public totalSupply = 1e18; mapping (address => mapping (address => uint)) internal allowances; mapping (address => uint) internal balances; /// @notice The standard EIP-20 transfer event event Transfer(address indexed from, address indexed to, uint amount); /// @notice The standard EIP-20 approval event event Approval(address indexed owner, address indexed spender, uint amount); constructor() public { balances[msg.sender] = 1e18; emit Transfer(address(0x0), msg.sender, 1e18); } /** * @notice Get the number of tokens `spender` is approved to spend on behalf of `account` * @param account The address of the account holding the funds * @param spender The address of the account spending the funds * @return The number of tokens approved */ function allowance(address account, address spender) external view returns (uint) { return allowances[account][spender]; } /** * @notice Approve `spender` to transfer up to `amount` from `src` * @dev This will overwrite the approval amount for `spender` * and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve) * @param spender The address of the account which may transfer tokens * @param amount The number of tokens that are approved (2^256-1 means infinite) * @return Whether or not the approval succeeded */ function approve(address spender, uint amount) external returns (bool) { allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } /** * @notice Get the number of tokens held by the `account` * @param account The address of the account to get the balance of * @return The number of tokens held */ function balanceOf(address account) external view returns (uint) { return balances[account]; } /** * @notice Transfer `amount` tokens from `msg.sender` to `dst` * @param dst The address of the destination account * @param amount The number of tokens to transfer * @return Whether or not the transfer succeeded */ function transfer(address dst, uint amount) external returns (bool) { _transferTokens(msg.sender, dst, amount); return true; } /** * @notice Transfer `amount` tokens from `src` to `dst` * @param src The address of the source account * @param dst The address of the destination account * @param amount The number of tokens to transfer * @return Whether or not the transfer succeeded */ function transferFrom(address src, address dst, uint amount) external returns (bool) { address spender = msg.sender; uint spenderAllowance = allowances[src][spender]; if (spender != src && spenderAllowance != uint(-1)) { uint newAllowance = spenderAllowance.sub(amount, "transferFrom: exceeds spender allowance"); allowances[src][spender] = newAllowance; emit Approval(src, spender, newAllowance); } _transferTokens(src, dst, amount); return true; } function _transferTokens(address src, address dst, uint amount) internal { require(src != address(0), "_transferTokens: zero address"); require(dst != address(0), "_transferTokens: zero address"); balances[src] = balances[src].sub(amount, "_transferTokens: exceeds balance"); balances[dst] = balances[dst].add(amount, "_transferTokens: overflows"); emit Transfer(src, dst, amount); } } contract GaugeProxy is ProtocolGovernance { using SafeMath for uint256; using SafeERC20 for IERC20; MasterChef public constant MASTER = MasterChef(0xbD17B1ce622d73bD438b9E658acA5996dc394b0d); IERC20 public constant DILL = IERC20(0xbBCf169eE191A1Ba7371F30A1C344bFC498b29Cf); IERC20 public constant PICKLE = IERC20(0x429881672B9AE42b8EbA0E26cD9C73711b891Ca5); IERC20 public immutable TOKEN; uint public pid; uint public totalWeight; address[] internal _tokens; mapping(address => address) public gauges; // token => gauge mapping(address => uint) public weights; // token => weight mapping(address => mapping(address => uint)) public votes; // msg.sender => votes mapping(address => address[]) public tokenVote;// msg.sender => token mapping(address => uint) public usedWeights; // msg.sender => total voting weight of user function tokens() external view returns (address[] memory) { return _tokens; } function getGauge(address _token) external view returns (address) { return gauges[_token]; } constructor() public { TOKEN = IERC20(address(new MasterDill())); governance = msg.sender; } // Reset votes to 0 function reset() external { _reset(msg.sender); } // Reset votes to 0 function _reset(address _owner) internal { address[] storage _tokenVote = tokenVote[_owner]; uint256 _tokenVoteCnt = _tokenVote.length; for (uint i = 0; i < _tokenVoteCnt; i ++) { address _token = _tokenVote[i]; uint _votes = votes[_owner][_token]; if (_votes > 0) { totalWeight = totalWeight.sub(_votes); weights[_token] = weights[_token].sub(_votes); votes[_owner][_token] = 0; } } delete tokenVote[_owner]; } // Adjusts _owner's votes according to latest _owner's DILL balance function poke(address _owner) public { address[] memory _tokenVote = tokenVote[_owner]; uint256 _tokenCnt = _tokenVote.length; uint256[] memory _weights = new uint[](_tokenCnt); uint256 _prevUsedWeight = usedWeights[_owner]; uint256 _weight = DILL.balanceOf(_owner); for (uint256 i = 0; i < _tokenCnt; i ++) { uint256 _prevWeight = votes[_owner][_tokenVote[i]]; _weights[i] = _prevWeight.mul(_weight).div(_prevUsedWeight); } _vote(_owner, _tokenVote, _weights); } function _vote(address _owner, address[] memory _tokenVote, uint256[] memory _weights) internal { // _weights[i] = percentage * 100 _reset(_owner); uint256 _tokenCnt = _tokenVote.length; uint256 _weight = DILL.balanceOf(_owner); uint256 _totalVoteWeight = 0; uint256 _usedWeight = 0; for (uint256 i = 0; i < _tokenCnt; i ++) { _totalVoteWeight = _totalVoteWeight.add(_weights[i]); } for (uint256 i = 0; i < _tokenCnt; i ++) { address _token = _tokenVote[i]; address _gauge = gauges[_token]; uint256 _tokenWeight = _weights[i].mul(_weight).div(_totalVoteWeight); if (_gauge != address(0x0)) { _usedWeight = _usedWeight.add(_tokenWeight); totalWeight = totalWeight.add(_tokenWeight); weights[_token] = weights[_token].add(_tokenWeight); tokenVote[_owner].push(_token); votes[_owner][_token] = _tokenWeight; } } usedWeights[_owner] = _usedWeight; } // Vote with DILL on a gauge function vote(address[] calldata _tokenVote, uint256[] calldata _weights) external { require(_tokenVote.length == _weights.length); _vote(msg.sender, _tokenVote, _weights); } // Add new token gauge function addGauge(address _token) external { require(msg.sender == governance, "!gov"); require(gauges[_token] == address(0x0), "exists"); gauges[_token] = address(new Gauge(_token)); _tokens.push(_token); } // Sets MasterChef PID function setPID(uint _pid) external { require(msg.sender == governance, "!gov"); require(pid == 0, "pid has already been set"); require(_pid > 0, "invalid pid"); pid = _pid; } // Deposits mDILL into MasterChef function deposit() public { require(pid > 0, "pid not initialized"); IERC20 _token = TOKEN; uint _balance = _token.balanceOf(address(this)); _token.safeApprove(address(MASTER), 0); _token.safeApprove(address(MASTER), _balance); MASTER.deposit(pid, _balance); } // Fetches Pickle function collect() public { (uint _locked,) = MASTER.userInfo(pid, address(this)); MASTER.withdraw(pid, _locked); deposit(); } function length() external view returns (uint) { return _tokens.length; } function distribute() external { collect(); uint _balance = PICKLE.balanceOf(address(this)); if (_balance > 0 && totalWeight > 0) { for (uint i = 0; i < _tokens.length; i++) { address _token = _tokens[i]; address _gauge = gauges[_token]; uint _reward = _balance.mul(weights[_token]).div(totalWeight); if (_reward > 0) { PICKLE.safeApprove(_gauge, 0); PICKLE.safeApprove(_gauge, _reward); Gauge(_gauge).notifyRewardAmount(_reward); } } } } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_token","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":[],"name":"DILL","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DISTRIBUTION","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PICKLE","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TREASURY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"depositFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"derivedBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"derivedBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"derivedSupply","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":[],"name":"getRewardForDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"kick","outputs":[],"stateMutability":"nonpayable","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":"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":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c06040526000600155600060025534801561001a57600080fd5b506040516127003803806127008339818101604052602081101561003d57600080fd5b810190808051906020019092919050505060016000819055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250503373ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505060805160601c60a05160601c6125f96101076000398061096a5280610af6528061112952508061116052806115bb5280611b485280611f0552506125f96000f3fe608060405234801561001057600080fd5b50600436106101d95760003560e01c806380faa57d11610104578063c8f33c91116100a2578063de5f626811610071578063de5f626814610780578063df136d651461078a578063e9fad8ee146107a8578063ebe2b12b146107b2576101d9565b8063c8f33c91146106ce578063cd3daf9d146106ec578063d35e25441461070a578063d7da4bb014610762576101d9565b80638b876347116100de5780638b876347146105ba57806396c5517514610612578063b6b55f2514610656578063c19048b214610684576101d9565b806380faa57d1461054857806382bfefc814610566578063853828b6146105b0576101d9565b806336efd16f1161017c57806363fb415b1161014b57806363fb415b1461043057806370a08231146104885780637b0a47ee146104e05780637c91e4eb146104fe576101d9565b806336efd16f146103605780633c6b16ab146103ae5780633d18b912146103dc5780634eb1fbeb146103e6576101d9565b80631be05289116101b85780631be05289146102ac5780631c1f78eb146102ca5780632d2c5565146102e85780632e1a7d4d14610332576101d9565b80628cc262146101de5780630700037d1461023657806318160ddd1461028e575b600080fd5b610220600480360360208110156101f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107d0565b6040518082815260200191505060405180910390f35b6102786004803603602081101561024c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108ee565b6040518082815260200191505060405180910390f35b610296610906565b6040518082815260200191505060405180910390f35b6102b4610910565b6040518082815260200191505060405180910390f35b6102d2610917565b6040518082815260200191505060405180910390f35b6102f0610936565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61035e6004803603602081101561034857600080fd5b810190808035906020019092919050505061094e565b005b6103ac6004803603604081101561037657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061095a565b005b6103da600480360360208110156103c457600080fd5b8101908080359060200190929190505050610968565b005b6103e4610dd9565b005b6103ee6110a8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104726004803603602081101561044657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110c0565b6040518082815260200191505060405180910390f35b6104ca6004803603602081101561049e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d8565b6040518082815260200191505060405180910390f35b6104e8611121565b6040518082815260200191505060405180910390f35b610506611127565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61055061114b565b6040518082815260200191505060405180910390f35b61056e61115e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105b8611182565b005b6105fc600480360360208110156105d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111cc565b6040518082815260200191505060405180910390f35b6106546004803603602081101561062857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111e4565b005b6106826004803603602081101561066c57600080fd5b81019080803590602001909291905050506112b1565b005b61068c6112be565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106d66112d6565b6040518082815260200191505060405180910390f35b6106f46112dc565b6040518082815260200191505060405180910390f35b61074c6004803603602081101561072057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061136a565b6040518082815260200191505060405180910390f35b61076a6115b0565b6040518082815260200191505060405180910390f35b6107886115b6565b005b610792611699565b6040518082815260200191505060405180910390f35b6107b061169f565b005b6107ba6116f1565b6040518082815260200191505060405180910390f35b60006108e7600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108d9670de0b6b3a76400006108cb61087d600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461086f6112dc565b6116f790919063ffffffff16565b600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461174190919063ffffffff16565b6117e490919063ffffffff16565b61182e90919063ffffffff16565b9050919050565b60066020528060005260406000206000915090505481565b6000600754905090565b62093a8081565b600061093162093a8060025461174190919063ffffffff16565b905090565b73066419eaef5de53cc5da0d8702b990c5bc7d1ab381565b610957816118b6565b50565b6109648282611c24565b5050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612570602a913960400191505060405180910390fd5b6000610a166112dc565b600481905550610a2461114b565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610af157610a67816107d0565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600454600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610b527f0000000000000000000000000000000000000000000000000000000000000000308473429881672b9ae42b8eba0e26cd9c73711b891ca573ffffffffffffffffffffffffffffffffffffffff16611f95909392919063ffffffff16565b6001544210610b7c57610b7162093a80836117e490919063ffffffff16565b600281905550610bdf565b6000610b93426001546116f790919063ffffffff16565b90506000610bac6002548361174190919063ffffffff16565b9050610bd662093a80610bc8838761182e90919063ffffffff16565b6117e490919063ffffffff16565b60028190555050505b600073429881672b9ae42b8eba0e26cd9c73711b891ca573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c7257600080fd5b505afa158015610c86573d6000803e3d6000fd5b505050506040513d6020811015610c9c57600080fd5b81019080805190602001909291905050509050610cc562093a80826117e490919063ffffffff16565b6002541115610d3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f50726f76696465642072657761726420746f6f2068696768000000000000000081525060200191505060405180910390fd5b42600381905550610d5962093a804261182e90919063ffffffff16565b6001819055507fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d836040518082815260200191505060405180910390a150600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610dd557610dd4816111e4565b5b5050565b60026000541415610e52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b600260008190555033610e636112dc565b600481905550610e7161114b565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610f3e57610eb4816107d0565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600454600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081111561105e576000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061100f338273429881672b9ae42b8eba0e26cd9c73711b891ca573ffffffffffffffffffffffffffffffffffffffff166120829092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486826040518082815260200191505060405180910390a25b50600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461109d5761109c816111e4565b5b506001600081905550565b73bbcf169ee191a1ba7371f30a1c344bfc498b29cf81565b600a6020528060005260406000206000915090505481565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60025481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006111594260015461213a565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6111ca600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118b6565b565b60056020528060005260406000206000915090505481565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061123d816008546116f790919063ffffffff16565b60088190555061124c8261136a565b905080600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112a78160085461182e90919063ffffffff16565b6008819055505050565b6112bb8133611c24565b50565b73429881672b9ae42b8eba0e26cd9c73711b891ca581565b60035481565b60008060075414156112f2576004549050611367565b611364611353600854611345670de0b6b3a764000061133760025461132960035461131b61114b565b6116f790919063ffffffff16565b61174190919063ffffffff16565b61174190919063ffffffff16565b6117e490919063ffffffff16565b60045461182e90919063ffffffff16565b90505b90565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006113d860646113ca60288561174190919063ffffffff16565b6117e490919063ffffffff16565b90506000611588606461157a603c61156c73bbcf169ee191a1ba7371f30a1c344bfc498b29cf73ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561144357600080fd5b505afa158015611457573d6000803e3d6000fd5b505050506040513d602081101561146d57600080fd5b810190808051906020019092919050505061155e73bbcf169ee191a1ba7371f30a1c344bfc498b29cf73ffffffffffffffffffffffffffffffffffffffff166370a082318d6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561151257600080fd5b505afa158015611526573d6000803e3d6000fd5b505050506040513d602081101561153c57600080fd5b810190808051906020019092919050505060075461174190919063ffffffff16565b6117e490919063ffffffff16565b61174190919063ffffffff16565b6117e490919063ffffffff16565b90506115a66115a0828461182e90919063ffffffff16565b8461213a565b9350505050919050565b60085481565b6116977f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561165657600080fd5b505afa15801561166a573d6000803e3d6000fd5b505050506040513d602081101561168057600080fd5b810190808051906020019092919050505033611c24565b565b60045481565b6116e7600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118b6565b6116ef610dd9565b565b60015481565b600061173983836040518060400160405280600681526020017f7375623a202d0000000000000000000000000000000000000000000000000000815250612153565b905092915050565b60008083141561175457600090506117de565b600082840290508284828161176557fe5b04146117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f6d756c3a202a000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b809150505b92915050565b600061182683836040518060400160405280600681526020017f6469763a202f0000000000000000000000000000000000000000000000000000815250612213565b905092915050565b6000808284019050838110156118ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f6164643a202b000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8091505092915050565b6002600054141561192f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600081905550336119406112dc565b60048190555061194e61114b565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611a1b57611991816107d0565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600454600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60008211611a91576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f43616e6e6f74207769746864726177203000000000000000000000000000000081525060200191505060405180910390fd5b611aa6826007546116f790919063ffffffff16565b600781905550611afe82600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116f790919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b8c33837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166120829092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611c1857611c17816111e4565b5b50600160008190555050565b60026000541415611c9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b600260008190555080611cae6112dc565b600481905550611cbc61114b565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611d8957611cff816107d0565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600454600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60008311611dff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f43616e6e6f74207374616b65203000000000000000000000000000000000000081525060200191505060405180910390fd5b611e148360075461182e90919063ffffffff16565b600781905550611e6c83600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461182e90919063ffffffff16565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d846040518082815260200191505060405180910390a2611f4a8230857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611f95909392919063ffffffff16565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611f8857611f87816111e4565b5b5060016000819055505050565b61207c846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506122d9565b50505050565b6121358363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506122d9565b505050565b6000818310612149578161214b565b825b905092915050565b6000838311158290612200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156121c55780820151818401526020810190506121aa565b50505050905090810190601f1680156121f25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080831182906122bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612284578082015181840152602081019050612269565b50505050905090810190601f1680156122b15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816122cb57fe5b049050809150509392505050565b6122f88273ffffffffffffffffffffffffffffffffffffffff16612524565b61236a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106123b95780518252602082019150602081019050602083039250612396565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461241b576040519150601f19603f3d011682016040523d82523d6000602084013e612420565b606091505b509150915081612498576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b60008151111561251e578080602001905160208110156124b757600080fd5b810190808051906020019092919050505061251d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061259a602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b82141580156125665750808214155b9250505091905056fe43616c6c6572206973206e6f742052657761726473446973747269627574696f6e20636f6e74726163745361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122048b1b0bae75d61a2f1ad82d823da216b61664185b66f318e405af7a35087aba564736f6c63430006070033000000000000000000000000ced67a187b923f0e5ebcc77c7f2f7da20099e378
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101d95760003560e01c806380faa57d11610104578063c8f33c91116100a2578063de5f626811610071578063de5f626814610780578063df136d651461078a578063e9fad8ee146107a8578063ebe2b12b146107b2576101d9565b8063c8f33c91146106ce578063cd3daf9d146106ec578063d35e25441461070a578063d7da4bb014610762576101d9565b80638b876347116100de5780638b876347146105ba57806396c5517514610612578063b6b55f2514610656578063c19048b214610684576101d9565b806380faa57d1461054857806382bfefc814610566578063853828b6146105b0576101d9565b806336efd16f1161017c57806363fb415b1161014b57806363fb415b1461043057806370a08231146104885780637b0a47ee146104e05780637c91e4eb146104fe576101d9565b806336efd16f146103605780633c6b16ab146103ae5780633d18b912146103dc5780634eb1fbeb146103e6576101d9565b80631be05289116101b85780631be05289146102ac5780631c1f78eb146102ca5780632d2c5565146102e85780632e1a7d4d14610332576101d9565b80628cc262146101de5780630700037d1461023657806318160ddd1461028e575b600080fd5b610220600480360360208110156101f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107d0565b6040518082815260200191505060405180910390f35b6102786004803603602081101561024c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108ee565b6040518082815260200191505060405180910390f35b610296610906565b6040518082815260200191505060405180910390f35b6102b4610910565b6040518082815260200191505060405180910390f35b6102d2610917565b6040518082815260200191505060405180910390f35b6102f0610936565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61035e6004803603602081101561034857600080fd5b810190808035906020019092919050505061094e565b005b6103ac6004803603604081101561037657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061095a565b005b6103da600480360360208110156103c457600080fd5b8101908080359060200190929190505050610968565b005b6103e4610dd9565b005b6103ee6110a8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104726004803603602081101561044657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110c0565b6040518082815260200191505060405180910390f35b6104ca6004803603602081101561049e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d8565b6040518082815260200191505060405180910390f35b6104e8611121565b6040518082815260200191505060405180910390f35b610506611127565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61055061114b565b6040518082815260200191505060405180910390f35b61056e61115e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105b8611182565b005b6105fc600480360360208110156105d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111cc565b6040518082815260200191505060405180910390f35b6106546004803603602081101561062857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111e4565b005b6106826004803603602081101561066c57600080fd5b81019080803590602001909291905050506112b1565b005b61068c6112be565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106d66112d6565b6040518082815260200191505060405180910390f35b6106f46112dc565b6040518082815260200191505060405180910390f35b61074c6004803603602081101561072057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061136a565b6040518082815260200191505060405180910390f35b61076a6115b0565b6040518082815260200191505060405180910390f35b6107886115b6565b005b610792611699565b6040518082815260200191505060405180910390f35b6107b061169f565b005b6107ba6116f1565b6040518082815260200191505060405180910390f35b60006108e7600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108d9670de0b6b3a76400006108cb61087d600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461086f6112dc565b6116f790919063ffffffff16565b600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461174190919063ffffffff16565b6117e490919063ffffffff16565b61182e90919063ffffffff16565b9050919050565b60066020528060005260406000206000915090505481565b6000600754905090565b62093a8081565b600061093162093a8060025461174190919063ffffffff16565b905090565b73066419eaef5de53cc5da0d8702b990c5bc7d1ab381565b610957816118b6565b50565b6109648282611c24565b5050565b7f0000000000000000000000002e57627acf6c1812f99e274d0ac61b786c19e74f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612570602a913960400191505060405180910390fd5b6000610a166112dc565b600481905550610a2461114b565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610af157610a67816107d0565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600454600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610b527f0000000000000000000000002e57627acf6c1812f99e274d0ac61b786c19e74f308473429881672b9ae42b8eba0e26cd9c73711b891ca573ffffffffffffffffffffffffffffffffffffffff16611f95909392919063ffffffff16565b6001544210610b7c57610b7162093a80836117e490919063ffffffff16565b600281905550610bdf565b6000610b93426001546116f790919063ffffffff16565b90506000610bac6002548361174190919063ffffffff16565b9050610bd662093a80610bc8838761182e90919063ffffffff16565b6117e490919063ffffffff16565b60028190555050505b600073429881672b9ae42b8eba0e26cd9c73711b891ca573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c7257600080fd5b505afa158015610c86573d6000803e3d6000fd5b505050506040513d6020811015610c9c57600080fd5b81019080805190602001909291905050509050610cc562093a80826117e490919063ffffffff16565b6002541115610d3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f50726f76696465642072657761726420746f6f2068696768000000000000000081525060200191505060405180910390fd5b42600381905550610d5962093a804261182e90919063ffffffff16565b6001819055507fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d836040518082815260200191505060405180910390a150600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610dd557610dd4816111e4565b5b5050565b60026000541415610e52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b600260008190555033610e636112dc565b600481905550610e7161114b565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610f3e57610eb4816107d0565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600454600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081111561105e576000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061100f338273429881672b9ae42b8eba0e26cd9c73711b891ca573ffffffffffffffffffffffffffffffffffffffff166120829092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486826040518082815260200191505060405180910390a25b50600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461109d5761109c816111e4565b5b506001600081905550565b73bbcf169ee191a1ba7371f30a1c344bfc498b29cf81565b600a6020528060005260406000206000915090505481565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60025481565b7f0000000000000000000000002e57627acf6c1812f99e274d0ac61b786c19e74f81565b60006111594260015461213a565b905090565b7f000000000000000000000000ced67a187b923f0e5ebcc77c7f2f7da20099e37881565b6111ca600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118b6565b565b60056020528060005260406000206000915090505481565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061123d816008546116f790919063ffffffff16565b60088190555061124c8261136a565b905080600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112a78160085461182e90919063ffffffff16565b6008819055505050565b6112bb8133611c24565b50565b73429881672b9ae42b8eba0e26cd9c73711b891ca581565b60035481565b60008060075414156112f2576004549050611367565b611364611353600854611345670de0b6b3a764000061133760025461132960035461131b61114b565b6116f790919063ffffffff16565b61174190919063ffffffff16565b61174190919063ffffffff16565b6117e490919063ffffffff16565b60045461182e90919063ffffffff16565b90505b90565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006113d860646113ca60288561174190919063ffffffff16565b6117e490919063ffffffff16565b90506000611588606461157a603c61156c73bbcf169ee191a1ba7371f30a1c344bfc498b29cf73ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561144357600080fd5b505afa158015611457573d6000803e3d6000fd5b505050506040513d602081101561146d57600080fd5b810190808051906020019092919050505061155e73bbcf169ee191a1ba7371f30a1c344bfc498b29cf73ffffffffffffffffffffffffffffffffffffffff166370a082318d6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561151257600080fd5b505afa158015611526573d6000803e3d6000fd5b505050506040513d602081101561153c57600080fd5b810190808051906020019092919050505060075461174190919063ffffffff16565b6117e490919063ffffffff16565b61174190919063ffffffff16565b6117e490919063ffffffff16565b90506115a66115a0828461182e90919063ffffffff16565b8461213a565b9350505050919050565b60085481565b6116977f000000000000000000000000ced67a187b923f0e5ebcc77c7f2f7da20099e37873ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561165657600080fd5b505afa15801561166a573d6000803e3d6000fd5b505050506040513d602081101561168057600080fd5b810190808051906020019092919050505033611c24565b565b60045481565b6116e7600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118b6565b6116ef610dd9565b565b60015481565b600061173983836040518060400160405280600681526020017f7375623a202d0000000000000000000000000000000000000000000000000000815250612153565b905092915050565b60008083141561175457600090506117de565b600082840290508284828161176557fe5b04146117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f6d756c3a202a000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b809150505b92915050565b600061182683836040518060400160405280600681526020017f6469763a202f0000000000000000000000000000000000000000000000000000815250612213565b905092915050565b6000808284019050838110156118ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f6164643a202b000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8091505092915050565b6002600054141561192f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600081905550336119406112dc565b60048190555061194e61114b565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611a1b57611991816107d0565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600454600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60008211611a91576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f43616e6e6f74207769746864726177203000000000000000000000000000000081525060200191505060405180910390fd5b611aa6826007546116f790919063ffffffff16565b600781905550611afe82600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116f790919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b8c33837f000000000000000000000000ced67a187b923f0e5ebcc77c7f2f7da20099e37873ffffffffffffffffffffffffffffffffffffffff166120829092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611c1857611c17816111e4565b5b50600160008190555050565b60026000541415611c9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b600260008190555080611cae6112dc565b600481905550611cbc61114b565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611d8957611cff816107d0565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600454600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60008311611dff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f43616e6e6f74207374616b65203000000000000000000000000000000000000081525060200191505060405180910390fd5b611e148360075461182e90919063ffffffff16565b600781905550611e6c83600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461182e90919063ffffffff16565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d846040518082815260200191505060405180910390a2611f4a8230857f000000000000000000000000ced67a187b923f0e5ebcc77c7f2f7da20099e37873ffffffffffffffffffffffffffffffffffffffff16611f95909392919063ffffffff16565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611f8857611f87816111e4565b5b5060016000819055505050565b61207c846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506122d9565b50505050565b6121358363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506122d9565b505050565b6000818310612149578161214b565b825b905092915050565b6000838311158290612200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156121c55780820151818401526020810190506121aa565b50505050905090810190601f1680156121f25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080831182906122bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612284578082015181840152602081019050612269565b50505050905090810190601f1680156122b15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816122cb57fe5b049050809150509392505050565b6122f88273ffffffffffffffffffffffffffffffffffffffff16612524565b61236a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106123b95780518252602082019150602081019050602083039250612396565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461241b576040519150601f19603f3d011682016040523d82523d6000602084013e612420565b606091505b509150915081612498576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b60008151111561251e578080602001905160208110156124b757600080fd5b810190808051906020019092919050505061251d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061259a602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b82141580156125665750808214155b9250505091905056fe43616c6c6572206973206e6f742052657761726473446973747269627574696f6e20636f6e74726163745361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122048b1b0bae75d61a2f1ad82d823da216b61664185b66f318e405af7a35087aba564736f6c63430006070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ced67a187b923f0e5ebcc77c7f2f7da20099e378
-----Decoded View---------------
Arg [0] : _token (address): 0xCeD67a187b923F0E5ebcc77C7f2F7da20099e378
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000ced67a187b923f0e5ebcc77c7f2f7da20099e378
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $1.06 | 3,288.044 | $3,480.3 |
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.