Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Multi Chain
Multichain Addresses
5 addresses found via
Latest 25 from a total of 102 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Distribute | 18375506 | 53 days 13 hrs ago | IN | 0 ETH | 0.00063918 | ||||
Distribute | 18236372 | 73 days 25 mins ago | IN | 0 ETH | 0.00169289 | ||||
Distribute | 18236370 | 73 days 25 mins ago | IN | 0 ETH | 0.00162978 | ||||
Distribute | 18236368 | 73 days 26 mins ago | IN | 0 ETH | 0.00169867 | ||||
Distribute | 18236366 | 73 days 26 mins ago | IN | 0 ETH | 0.00161412 | ||||
Distribute | 18236364 | 73 days 26 mins ago | IN | 0 ETH | 0.00160376 | ||||
Distribute | 18236362 | 73 days 27 mins ago | IN | 0 ETH | 0.00171173 | ||||
Distribute | 18236360 | 73 days 27 mins ago | IN | 0 ETH | 0.00170052 | ||||
Distribute | 18236358 | 73 days 28 mins ago | IN | 0 ETH | 0.00153644 | ||||
Distribute | 18236356 | 73 days 28 mins ago | IN | 0 ETH | 0.00158217 | ||||
Distribute | 18236354 | 73 days 28 mins ago | IN | 0 ETH | 0.00158098 | ||||
Distribute | 18236352 | 73 days 29 mins ago | IN | 0 ETH | 0.00165509 | ||||
Distribute | 18236350 | 73 days 29 mins ago | IN | 0 ETH | 0.00166869 | ||||
Distribute | 18236348 | 73 days 30 mins ago | IN | 0 ETH | 0.00161472 | ||||
Distribute | 18236345 | 73 days 30 mins ago | IN | 0 ETH | 0.00158901 | ||||
Distribute | 18236294 | 73 days 41 mins ago | IN | 0 ETH | 0.00108947 | ||||
Distribute | 18186310 | 80 days 41 mins ago | IN | 0 ETH | 0.00766692 | ||||
Distribute | 18136560 | 87 days 41 mins ago | IN | 0 ETH | 0.01094575 | ||||
Distribute | 18082851 | 94 days 13 hrs ago | IN | 0 ETH | 0.00338193 | ||||
Distribute | 18032848 | 101 days 13 hrs ago | IN | 0 ETH | 0.00364246 | ||||
Distribute | 17982857 | 108 days 13 hrs ago | IN | 0 ETH | 0.00620981 | ||||
Distribute | 17932830 | 115 days 13 hrs ago | IN | 0 ETH | 0.00506347 | ||||
Distribute | 17882328 | 122 days 14 hrs ago | IN | 0 ETH | 0.01096192 | ||||
Distribute | 17832133 | 129 days 15 hrs ago | IN | 0 ETH | 0.00388568 | ||||
Distribute | 17782066 | 136 days 15 hrs ago | IN | 0 ETH | 0.00661306 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
CvxStakingProxyV2
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-03-04 */ // File: contracts\interfaces\ICrvDepositor.sol // SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface ICrvDepositor { function deposit(uint256, bool) external; } // File: @openzeppelin\contracts\utils\Address.sol pragma solidity >=0.6.2 <0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on 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; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin\contracts\token\ERC20\IERC20.sol pragma solidity >=0.6.0 <0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ 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. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `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); } // File: @openzeppelin\contracts\math\SafeMath.sol pragma solidity >=0.6.0 <0.8.0; /** * @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, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { 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"); return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { 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, reverting 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) { require(b > 0, "SafeMath: division by zero"); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); return a - b; } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryDiv}. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a % b; } } // File: @openzeppelin\contracts\token\ERC20\SafeERC20.sol pragma solidity >=0.6.0 <0.8.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 IERC20;` 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)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ 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, "SafeERC20: decreased allowance below zero"); _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. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "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"); } } } // File: contracts\CvxStakingProxyV2.sol pragma solidity 0.6.12; interface IConvexRewards { function withdraw(uint256 _amount, bool _claim) external; function balanceOf(address _account) external view returns(uint256); function getReward(bool _stake) external; function stakeAll() external; } interface ICvxLocker { function notifyRewardAmount(address _rewardsToken, uint256 reward) external; } // receive tokens to stake // get current staked balance // withdraw staked tokens // send rewards back to owner(cvx locker) // register token types that can be distributed contract CvxStakingProxyV2 { using SafeERC20 for IERC20; using Address for address; using SafeMath for uint256; //tokens address public constant crv = address(0xD533a949740bb3306d119CC777fa900bA034cd52); address public constant cvx = address(0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B); address public constant cvxCrv = address(0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7); //convex addresses address public constant cvxStaking = address(0xCF50b810E57Ac33B91dCF525C6ddd9881B139332); address public constant cvxCrvStaking = address(0x3Fe65692bfCD0e6CF84cB1E7d24108E434A7587e); address public constant crvDeposit = address(0x8014595F2AB54cD7c604B00E9fb932176fDc86Ae); uint256 public constant denominator = 10000; address public immutable rewards; address public owner; address public pendingOwner; uint256 public callIncentive = 100; mapping(address => bool) public distributors; bool public UseDistributors = true; event AddDistributor(address indexed _distro, bool _valid); event RewardsDistributed(address indexed token, uint256 amount); constructor(address _rewards) public { rewards = _rewards; owner = msg.sender; distributors[msg.sender] = true; } function setPendingOwner(address _po) external { require(msg.sender == owner, "!auth"); pendingOwner = _po; } function applyPendingOwner() external { require(msg.sender == owner, "!auth"); require(pendingOwner != address(0), "invalid owner"); owner = pendingOwner; pendingOwner = address(0); } function setCallIncentive(uint256 _incentive) external { require(msg.sender == owner, "!auth"); require(_incentive <= 100, "too high"); callIncentive = _incentive; } function setDistributor(address _distro, bool _valid) external { require(msg.sender == owner, "!auth"); distributors[_distro] = _valid; emit AddDistributor(_distro, _valid); } function setUseDistributorList(bool _use) external { require(msg.sender == owner, "!auth"); UseDistributors = _use; } function setApprovals() external { IERC20(cvx).safeApprove(cvxStaking, 0); IERC20(cvx).safeApprove(cvxStaking, uint256(-1)); IERC20(crv).safeApprove(crvDeposit, 0); IERC20(crv).safeApprove(crvDeposit, uint256(-1)); IERC20(cvxCrv).safeApprove(rewards, 0); IERC20(cvxCrv).safeApprove(rewards, uint256(-1)); } function rescueToken(address _token, address _to) external { require(msg.sender == owner, "!auth"); require(_token != crv && _token != cvx && _token != cvxCrv, "not allowed"); uint256 bal = IERC20(_token).balanceOf(address(this)); IERC20(_token).safeTransfer(_to, bal); } function getBalance() external view returns(uint256) { return IConvexRewards(cvxStaking).balanceOf(address(this)); } function withdraw(uint256 _amount) external { require(msg.sender == rewards, "!auth"); //unstake IConvexRewards(cvxStaking).withdraw(_amount, false); //withdraw cvx IERC20(cvx).safeTransfer(msg.sender, _amount); } function stake() external { require(msg.sender == rewards, "!auth"); IConvexRewards(cvxStaking).stakeAll(); } function distribute() external { if(UseDistributors){ require(distributors[msg.sender], "!auth"); } //claim rewards IConvexRewards(cvxStaking).getReward(false); //convert any crv that was directly added uint256 crvBal = IERC20(crv).balanceOf(address(this)); if (crvBal > 0) { ICrvDepositor(crvDeposit).deposit(crvBal, true); } //make sure nothing is in here uint256 sCheck = IConvexRewards(cvxCrvStaking).balanceOf(address(this)); if(sCheck > 0){ IConvexRewards(cvxCrvStaking).withdraw(sCheck,false); } //distribute cvxcrv uint256 cvxCrvBal = IERC20(cvxCrv).balanceOf(address(this)); if (cvxCrvBal > 0) { uint256 incentiveAmount = cvxCrvBal.mul(callIncentive).div(denominator); cvxCrvBal = cvxCrvBal.sub(incentiveAmount); //send incentives IERC20(cvxCrv).safeTransfer(msg.sender,incentiveAmount); //update rewards ICvxLocker(rewards).notifyRewardAmount(cvxCrv, cvxCrvBal); emit RewardsDistributed(cvxCrv, cvxCrvBal); } } //in case a new reward is ever added, allow generic distribution function distributeOther(IERC20 _token) external { require( address(_token) != crv && address(_token) != cvxCrv, "not allowed"); uint256 bal = _token.balanceOf(address(this)); if (bal > 0) { uint256 incentiveAmount = bal.mul(callIncentive).div(denominator); bal = bal.sub(incentiveAmount); //send incentives _token.safeTransfer(msg.sender,incentiveAmount); //approve _token.safeApprove(rewards, 0); _token.safeApprove(rewards, uint256(-1)); //update rewards ICvxLocker(rewards).notifyRewardAmount(address(_token), bal); emit RewardsDistributed(address(_token), bal); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_rewards","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_distro","type":"address"},{"indexed":false,"internalType":"bool","name":"_valid","type":"bool"}],"name":"AddDistributor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardsDistributed","type":"event"},{"inputs":[],"name":"UseDistributors","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"applyPendingOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"callIncentive","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"crv","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"crvDeposit","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cvx","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cvxCrv","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cvxCrvStaking","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cvxStaking","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"denominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distribute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"distributeOther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"distributors","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"rescueToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewards","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setApprovals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_incentive","type":"uint256"}],"name":"setCallIncentive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_distro","type":"address"},{"internalType":"bool","name":"_valid","type":"bool"}],"name":"setDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_po","type":"address"}],"name":"setPendingOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_use","type":"bool"}],"name":"setUseDistributorList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a060405260646002556004805460ff1916600117905534801561002257600080fd5b50604051611a4b380380611a4b8339818101604052602081101561004557600080fd5b50516001600160601b031960609190911b16608052600080546001600160a01b0319163390811782558152600360205260409020805460ff1916600117905560805160601c6119826100c96000398061042c528061052f52806108e15280610916528061093f5280610be85280610c285280610c80528061129f52506119826000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80638da5cb5b116100de578063c42069ec11610097578063cc7554eb11610071578063cc7554eb14610310578063d59ba0df1461032d578063e30c39781461035b578063e4fc6b6d1461036357610173565b8063c42069ec146102bc578063cb22356b146102e2578063cc642784146102ea57610173565b80638da5cb5b14610275578063923c1d611461027d57806396ce0795146102855780639ec5a8941461028d578063b026e22714610295578063ba1294b81461029d57610173565b80634707d000116101305780634707d0001461020157806351c92b131461022f5780636a4874a1146102555780636d4a2ea11461025d57806382480df9146102655780638757b15b1461026d57610173565b806301c15e621461017857806312065fe01461019c578063145787e9146101b65780632e1a7d4d146101be57806338f16d28146101dd5780633a4b66f1146101f9575b600080fd5b61018061036b565b604080516001600160a01b039092168252519081900360200190f35b6101a4610383565b60408051918252519081900360200190f35b610180610409565b6101db600480360360208110156101d457600080fd5b5035610421565b005b6101e561051b565b604080519115158252519081900360200190f35b6101db610524565b6101db6004803603604081101561021757600080fd5b506001600160a01b03813581169160200135166105f2565b6101db6004803603602081101561024557600080fd5b50356001600160a01b0316610781565b610180610a11565b6101db610a29565b610180610ae4565b6101db610afc565b610180610c51565b610180610c60565b6101a4610c78565b610180610c7e565b610180610ca2565b6101db600480360360208110156102b357600080fd5b50351515610cba565b6101db600480360360208110156102d257600080fd5b50356001600160a01b0316610d14565b6101a4610d7d565b6101e56004803603602081101561030057600080fd5b50356001600160a01b0316610d83565b6101db6004803603602081101561032657600080fd5b5035610d98565b6101db6004803603604081101561034357600080fd5b506001600160a01b0381351690602001351515610e25565b610180610ecc565b6101db610edb565b733fe65692bfcd0e6cf84cb1e7d24108e434a7587e81565b604080516370a0823160e01b8152306004820152905160009173cf50b810e57ac33b91dcf525c6ddd9881b139332916370a0823191602480820192602092909190829003018186803b1580156103d857600080fd5b505afa1580156103ec573d6000803e3d6000fd5b505050506040513d602081101561040257600080fd5b5051905090565b73cf50b810e57ac33b91dcf525c6ddd9881b13933281565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610486576040805162461bcd60e51b8152602060048201526005602482015264042c2eae8d60db1b604482015290519081900360640190fd5b60408051631c683a1b60e11b815260048101839052600060248201819052915173cf50b810e57ac33b91dcf525c6ddd9881b139332926338d07436926044808201939182900301818387803b1580156104de57600080fd5b505af11580156104f2573d6000803e3d6000fd5b506105189250734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b91503390508361134e565b50565b60045460ff1681565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610589576040805162461bcd60e51b8152602060048201526005602482015264042c2eae8d60db1b604482015290519081900360640190fd5b73cf50b810e57ac33b91dcf525c6ddd9881b1393326001600160a01b0316638dcb40616040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105d857600080fd5b505af11580156105ec573d6000803e3d6000fd5b50505050565b6000546001600160a01b03163314610639576040805162461bcd60e51b8152602060048201526005602482015264042c2eae8d60db1b604482015290519081900360640190fd5b6001600160a01b03821673d533a949740bb3306d119cc777fa900ba034cd521480159061068357506001600160a01b038216734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b14155b80156106ac57506001600160a01b0382167362b9c7356a2dc64a1969e19c23e4f579f9810aa714155b6106eb576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015290519081900360640190fd5b6000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561073a57600080fd5b505afa15801561074e573d6000803e3d6000fd5b505050506040513d602081101561076457600080fd5b5051905061077c6001600160a01b038416838361134e565b505050565b6001600160a01b03811673d533a949740bb3306d119cc777fa900ba034cd52148015906107cb57506001600160a01b0381167362b9c7356a2dc64a1969e19c23e4f579f9810aa714155b61080a576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015290519081900360640190fd5b6000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561085957600080fd5b505afa15801561086d573d6000803e3d6000fd5b505050506040513d602081101561088357600080fd5b505190508015610a0d5760006108b06127106108aa600254856113a090919063ffffffff16565b90611402565b90506108bc8282611469565b91506108d26001600160a01b038416338361134e565b6109076001600160a01b0384167f000000000000000000000000000000000000000000000000000000000000000060006114c6565b61093d6001600160a01b0384167f00000000000000000000000000000000000000000000000000000000000000006000196114c6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b66503cf84846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156109b457600080fd5b505af11580156109c8573d6000803e3d6000fd5b50506040805185815290516001600160a01b03871693507fdf29796aad820e4bb192f3a8d631b76519bcd2cbe77cc85af20e9df53cece08692509081900360200190a2505b5050565b73d533a949740bb3306d119cc777fa900ba034cd5281565b6000546001600160a01b03163314610a70576040805162461bcd60e51b8152602060048201526005602482015264042c2eae8d60db1b604482015290519081900360640190fd5b6001546001600160a01b0316610abd576040805162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b21037bbb732b960991b604482015290519081900360640190fd5b60018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b7362b9c7356a2dc64a1969e19c23e4f579f9810aa781565b610b30734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b73cf50b810e57ac33b91dcf525c6ddd9881b13933260006114c6565b610b65734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b73cf50b810e57ac33b91dcf525c6ddd9881b1393326000196114c6565b610b9973d533a949740bb3306d119cc777fa900ba034cd52738014595f2ab54cd7c604b00e9fb932176fdc86ae60006114c6565b610bce73d533a949740bb3306d119cc777fa900ba034cd52738014595f2ab54cd7c604b00e9fb932176fdc86ae6000196114c6565b610c0e7362b9c7356a2dc64a1969e19c23e4f579f9810aa77f000000000000000000000000000000000000000000000000000000000000000060006114c6565b610c4f7362b9c7356a2dc64a1969e19c23e4f579f9810aa77f00000000000000000000000000000000000000000000000000000000000000006000196114c6565b565b6000546001600160a01b031681565b734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b81565b61271081565b7f000000000000000000000000000000000000000000000000000000000000000081565b738014595f2ab54cd7c604b00e9fb932176fdc86ae81565b6000546001600160a01b03163314610d01576040805162461bcd60e51b8152602060048201526005602482015264042c2eae8d60db1b604482015290519081900360640190fd5b6004805460ff1916911515919091179055565b6000546001600160a01b03163314610d5b576040805162461bcd60e51b8152602060048201526005602482015264042c2eae8d60db1b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60025481565b60036020526000908152604090205460ff1681565b6000546001600160a01b03163314610ddf576040805162461bcd60e51b8152602060048201526005602482015264042c2eae8d60db1b604482015290519081900360640190fd5b6064811115610e20576040805162461bcd60e51b81526020600482015260086024820152670e8dede40d0d2ced60c31b604482015290519081900360640190fd5b600255565b6000546001600160a01b03163314610e6c576040805162461bcd60e51b8152602060048201526005602482015264042c2eae8d60db1b604482015290519081900360640190fd5b6001600160a01b038216600081815260036020908152604091829020805460ff1916851515908117909155825190815291517f3bb4fb70bcd6f2a6c7b656049bb6f5ea7c3abc5e6f9aa7d72c621b082938174a9281900390910190a25050565b6001546001600160a01b031681565b60045460ff1615610f32573360009081526003602052604090205460ff16610f32576040805162461bcd60e51b8152602060048201526005602482015264042c2eae8d60db1b604482015290519081900360640190fd5b6040805163a4698feb60e01b8152600060048201819052915173cf50b810e57ac33b91dcf525c6ddd9881b1393329263a4698feb926024808201939182900301818387803b158015610f8357600080fd5b505af1158015610f97573d6000803e3d6000fd5b5050604080516370a0823160e01b815230600482015290516000935073d533a949740bb3306d119cc777fa900ba034cd5292506370a0823191602480820192602092909190829003018186803b158015610ff057600080fd5b505afa158015611004573d6000803e3d6000fd5b505050506040513d602081101561101a57600080fd5b5051905080156110975760408051639a40832160e01b815260048101839052600160248201529051738014595f2ab54cd7c604b00e9fb932176fdc86ae91639a40832191604480830192600092919082900301818387803b15801561107e57600080fd5b505af1158015611092573d6000803e3d6000fd5b505050505b604080516370a0823160e01b81523060048201529051600091733fe65692bfcd0e6cf84cb1e7d24108e434a7587e916370a0823191602480820192602092909190829003018186803b1580156110ec57600080fd5b505afa158015611100573d6000803e3d6000fd5b505050506040513d602081101561111657600080fd5b5051905080156111915760408051631c683a1b60e11b8152600481018390526000602482018190529151733fe65692bfcd0e6cf84cb1e7d24108e434a7587e926338d07436926044808201939182900301818387803b15801561117857600080fd5b505af115801561118c573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516000917362b9c7356a2dc64a1969e19c23e4f579f9810aa7916370a0823191602480820192602092909190829003018186803b1580156111e657600080fd5b505afa1580156111fa573d6000803e3d6000fd5b505050506040513d602081101561121057600080fd5b50519050801561077c5760006112376127106108aa600254856113a090919063ffffffff16565b90506112438282611469565b91506112647362b9c7356a2dc64a1969e19c23e4f579f9810aa7338361134e565b6040805163b66503cf60e01b81527362b9c7356a2dc64a1969e19c23e4f579f9810aa760048201526024810184905290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163b66503cf91604480830192600092919082900301818387803b1580156112e657600080fd5b505af11580156112fa573d6000803e3d6000fd5b50506040805185815290517362b9c7356a2dc64a1969e19c23e4f579f9810aa793507fdf29796aad820e4bb192f3a8d631b76519bcd2cbe77cc85af20e9df53cece08692509081900360200190a250505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261077c9084906115d5565b6000826113af575060006113fc565b828202828482816113bc57fe5b04146113f95760405162461bcd60e51b81526004018080602001828103825260218152602001806118cc6021913960400191505060405180910390fd5b90505b92915050565b6000808211611458576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161146157fe5b049392505050565b6000828211156114c0576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b80158061154c575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561151e57600080fd5b505afa158015611532573d6000803e3d6000fd5b505050506040513d602081101561154857600080fd5b5051155b6115875760405162461bcd60e51b81526004018080602001828103825260368152602001806119176036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261077c9084905b606061162a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166116869092919063ffffffff16565b80519091501561077c5780806020019051602081101561164957600080fd5b505161077c5760405162461bcd60e51b815260040180806020018281038252602a8152602001806118ed602a913960400191505060405180910390fd5b6060611695848460008561169f565b90505b9392505050565b6060824710156116e05760405162461bcd60e51b81526004018080602001828103825260268152602001806118a66026913960400191505060405180910390fd5b6116e9856117fb565b61173a576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106117795780518252601f19909201916020918201910161175a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146117db576040519150601f19603f3d011682016040523d82523d6000602084013e6117e0565b606091505b50915091506117f0828286611801565b979650505050505050565b3b151590565b60608315611810575081611698565b8251156118205782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561186a578181015183820152602001611852565b50505050905090810190601f1680156118975780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a2646970667358221220ff17ad2634fa7723cc379c771cdc0bf24dbf1a388b6b683b8b88e474398816ef64736f6c634300060c003300000000000000000000000072a19342e8f1838460ebfccef09f6585e32db86e
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101735760003560e01c80638da5cb5b116100de578063c42069ec11610097578063cc7554eb11610071578063cc7554eb14610310578063d59ba0df1461032d578063e30c39781461035b578063e4fc6b6d1461036357610173565b8063c42069ec146102bc578063cb22356b146102e2578063cc642784146102ea57610173565b80638da5cb5b14610275578063923c1d611461027d57806396ce0795146102855780639ec5a8941461028d578063b026e22714610295578063ba1294b81461029d57610173565b80634707d000116101305780634707d0001461020157806351c92b131461022f5780636a4874a1146102555780636d4a2ea11461025d57806382480df9146102655780638757b15b1461026d57610173565b806301c15e621461017857806312065fe01461019c578063145787e9146101b65780632e1a7d4d146101be57806338f16d28146101dd5780633a4b66f1146101f9575b600080fd5b61018061036b565b604080516001600160a01b039092168252519081900360200190f35b6101a4610383565b60408051918252519081900360200190f35b610180610409565b6101db600480360360208110156101d457600080fd5b5035610421565b005b6101e561051b565b604080519115158252519081900360200190f35b6101db610524565b6101db6004803603604081101561021757600080fd5b506001600160a01b03813581169160200135166105f2565b6101db6004803603602081101561024557600080fd5b50356001600160a01b0316610781565b610180610a11565b6101db610a29565b610180610ae4565b6101db610afc565b610180610c51565b610180610c60565b6101a4610c78565b610180610c7e565b610180610ca2565b6101db600480360360208110156102b357600080fd5b50351515610cba565b6101db600480360360208110156102d257600080fd5b50356001600160a01b0316610d14565b6101a4610d7d565b6101e56004803603602081101561030057600080fd5b50356001600160a01b0316610d83565b6101db6004803603602081101561032657600080fd5b5035610d98565b6101db6004803603604081101561034357600080fd5b506001600160a01b0381351690602001351515610e25565b610180610ecc565b6101db610edb565b733fe65692bfcd0e6cf84cb1e7d24108e434a7587e81565b604080516370a0823160e01b8152306004820152905160009173cf50b810e57ac33b91dcf525c6ddd9881b139332916370a0823191602480820192602092909190829003018186803b1580156103d857600080fd5b505afa1580156103ec573d6000803e3d6000fd5b505050506040513d602081101561040257600080fd5b5051905090565b73cf50b810e57ac33b91dcf525c6ddd9881b13933281565b336001600160a01b037f00000000000000000000000072a19342e8f1838460ebfccef09f6585e32db86e1614610486576040805162461bcd60e51b8152602060048201526005602482015264042c2eae8d60db1b604482015290519081900360640190fd5b60408051631c683a1b60e11b815260048101839052600060248201819052915173cf50b810e57ac33b91dcf525c6ddd9881b139332926338d07436926044808201939182900301818387803b1580156104de57600080fd5b505af11580156104f2573d6000803e3d6000fd5b506105189250734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b91503390508361134e565b50565b60045460ff1681565b336001600160a01b037f00000000000000000000000072a19342e8f1838460ebfccef09f6585e32db86e1614610589576040805162461bcd60e51b8152602060048201526005602482015264042c2eae8d60db1b604482015290519081900360640190fd5b73cf50b810e57ac33b91dcf525c6ddd9881b1393326001600160a01b0316638dcb40616040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105d857600080fd5b505af11580156105ec573d6000803e3d6000fd5b50505050565b6000546001600160a01b03163314610639576040805162461bcd60e51b8152602060048201526005602482015264042c2eae8d60db1b604482015290519081900360640190fd5b6001600160a01b03821673d533a949740bb3306d119cc777fa900ba034cd521480159061068357506001600160a01b038216734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b14155b80156106ac57506001600160a01b0382167362b9c7356a2dc64a1969e19c23e4f579f9810aa714155b6106eb576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015290519081900360640190fd5b6000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561073a57600080fd5b505afa15801561074e573d6000803e3d6000fd5b505050506040513d602081101561076457600080fd5b5051905061077c6001600160a01b038416838361134e565b505050565b6001600160a01b03811673d533a949740bb3306d119cc777fa900ba034cd52148015906107cb57506001600160a01b0381167362b9c7356a2dc64a1969e19c23e4f579f9810aa714155b61080a576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015290519081900360640190fd5b6000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561085957600080fd5b505afa15801561086d573d6000803e3d6000fd5b505050506040513d602081101561088357600080fd5b505190508015610a0d5760006108b06127106108aa600254856113a090919063ffffffff16565b90611402565b90506108bc8282611469565b91506108d26001600160a01b038416338361134e565b6109076001600160a01b0384167f00000000000000000000000072a19342e8f1838460ebfccef09f6585e32db86e60006114c6565b61093d6001600160a01b0384167f00000000000000000000000072a19342e8f1838460ebfccef09f6585e32db86e6000196114c6565b7f00000000000000000000000072a19342e8f1838460ebfccef09f6585e32db86e6001600160a01b031663b66503cf84846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156109b457600080fd5b505af11580156109c8573d6000803e3d6000fd5b50506040805185815290516001600160a01b03871693507fdf29796aad820e4bb192f3a8d631b76519bcd2cbe77cc85af20e9df53cece08692509081900360200190a2505b5050565b73d533a949740bb3306d119cc777fa900ba034cd5281565b6000546001600160a01b03163314610a70576040805162461bcd60e51b8152602060048201526005602482015264042c2eae8d60db1b604482015290519081900360640190fd5b6001546001600160a01b0316610abd576040805162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b21037bbb732b960991b604482015290519081900360640190fd5b60018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b7362b9c7356a2dc64a1969e19c23e4f579f9810aa781565b610b30734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b73cf50b810e57ac33b91dcf525c6ddd9881b13933260006114c6565b610b65734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b73cf50b810e57ac33b91dcf525c6ddd9881b1393326000196114c6565b610b9973d533a949740bb3306d119cc777fa900ba034cd52738014595f2ab54cd7c604b00e9fb932176fdc86ae60006114c6565b610bce73d533a949740bb3306d119cc777fa900ba034cd52738014595f2ab54cd7c604b00e9fb932176fdc86ae6000196114c6565b610c0e7362b9c7356a2dc64a1969e19c23e4f579f9810aa77f00000000000000000000000072a19342e8f1838460ebfccef09f6585e32db86e60006114c6565b610c4f7362b9c7356a2dc64a1969e19c23e4f579f9810aa77f00000000000000000000000072a19342e8f1838460ebfccef09f6585e32db86e6000196114c6565b565b6000546001600160a01b031681565b734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b81565b61271081565b7f00000000000000000000000072a19342e8f1838460ebfccef09f6585e32db86e81565b738014595f2ab54cd7c604b00e9fb932176fdc86ae81565b6000546001600160a01b03163314610d01576040805162461bcd60e51b8152602060048201526005602482015264042c2eae8d60db1b604482015290519081900360640190fd5b6004805460ff1916911515919091179055565b6000546001600160a01b03163314610d5b576040805162461bcd60e51b8152602060048201526005602482015264042c2eae8d60db1b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60025481565b60036020526000908152604090205460ff1681565b6000546001600160a01b03163314610ddf576040805162461bcd60e51b8152602060048201526005602482015264042c2eae8d60db1b604482015290519081900360640190fd5b6064811115610e20576040805162461bcd60e51b81526020600482015260086024820152670e8dede40d0d2ced60c31b604482015290519081900360640190fd5b600255565b6000546001600160a01b03163314610e6c576040805162461bcd60e51b8152602060048201526005602482015264042c2eae8d60db1b604482015290519081900360640190fd5b6001600160a01b038216600081815260036020908152604091829020805460ff1916851515908117909155825190815291517f3bb4fb70bcd6f2a6c7b656049bb6f5ea7c3abc5e6f9aa7d72c621b082938174a9281900390910190a25050565b6001546001600160a01b031681565b60045460ff1615610f32573360009081526003602052604090205460ff16610f32576040805162461bcd60e51b8152602060048201526005602482015264042c2eae8d60db1b604482015290519081900360640190fd5b6040805163a4698feb60e01b8152600060048201819052915173cf50b810e57ac33b91dcf525c6ddd9881b1393329263a4698feb926024808201939182900301818387803b158015610f8357600080fd5b505af1158015610f97573d6000803e3d6000fd5b5050604080516370a0823160e01b815230600482015290516000935073d533a949740bb3306d119cc777fa900ba034cd5292506370a0823191602480820192602092909190829003018186803b158015610ff057600080fd5b505afa158015611004573d6000803e3d6000fd5b505050506040513d602081101561101a57600080fd5b5051905080156110975760408051639a40832160e01b815260048101839052600160248201529051738014595f2ab54cd7c604b00e9fb932176fdc86ae91639a40832191604480830192600092919082900301818387803b15801561107e57600080fd5b505af1158015611092573d6000803e3d6000fd5b505050505b604080516370a0823160e01b81523060048201529051600091733fe65692bfcd0e6cf84cb1e7d24108e434a7587e916370a0823191602480820192602092909190829003018186803b1580156110ec57600080fd5b505afa158015611100573d6000803e3d6000fd5b505050506040513d602081101561111657600080fd5b5051905080156111915760408051631c683a1b60e11b8152600481018390526000602482018190529151733fe65692bfcd0e6cf84cb1e7d24108e434a7587e926338d07436926044808201939182900301818387803b15801561117857600080fd5b505af115801561118c573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516000917362b9c7356a2dc64a1969e19c23e4f579f9810aa7916370a0823191602480820192602092909190829003018186803b1580156111e657600080fd5b505afa1580156111fa573d6000803e3d6000fd5b505050506040513d602081101561121057600080fd5b50519050801561077c5760006112376127106108aa600254856113a090919063ffffffff16565b90506112438282611469565b91506112647362b9c7356a2dc64a1969e19c23e4f579f9810aa7338361134e565b6040805163b66503cf60e01b81527362b9c7356a2dc64a1969e19c23e4f579f9810aa760048201526024810184905290516001600160a01b037f00000000000000000000000072a19342e8f1838460ebfccef09f6585e32db86e169163b66503cf91604480830192600092919082900301818387803b1580156112e657600080fd5b505af11580156112fa573d6000803e3d6000fd5b50506040805185815290517362b9c7356a2dc64a1969e19c23e4f579f9810aa793507fdf29796aad820e4bb192f3a8d631b76519bcd2cbe77cc85af20e9df53cece08692509081900360200190a250505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261077c9084906115d5565b6000826113af575060006113fc565b828202828482816113bc57fe5b04146113f95760405162461bcd60e51b81526004018080602001828103825260218152602001806118cc6021913960400191505060405180910390fd5b90505b92915050565b6000808211611458576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161146157fe5b049392505050565b6000828211156114c0576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b80158061154c575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561151e57600080fd5b505afa158015611532573d6000803e3d6000fd5b505050506040513d602081101561154857600080fd5b5051155b6115875760405162461bcd60e51b81526004018080602001828103825260368152602001806119176036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261077c9084905b606061162a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166116869092919063ffffffff16565b80519091501561077c5780806020019051602081101561164957600080fd5b505161077c5760405162461bcd60e51b815260040180806020018281038252602a8152602001806118ed602a913960400191505060405180910390fd5b6060611695848460008561169f565b90505b9392505050565b6060824710156116e05760405162461bcd60e51b81526004018080602001828103825260268152602001806118a66026913960400191505060405180910390fd5b6116e9856117fb565b61173a576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106117795780518252601f19909201916020918201910161175a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146117db576040519150601f19603f3d011682016040523d82523d6000602084013e6117e0565b606091505b50915091506117f0828286611801565b979650505050505050565b3b151590565b60608315611810575081611698565b8251156118205782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561186a578181015183820152602001611852565b50505050905090810190601f1680156118975780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a2646970667358221220ff17ad2634fa7723cc379c771cdc0bf24dbf1a388b6b683b8b88e474398816ef64736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000072a19342e8f1838460ebfccef09f6585e32db86e
-----Decoded View---------------
Arg [0] : _rewards (address): 0x72a19342e8F1838460eBFCCEf09F6585e32db86E
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000072a19342e8f1838460ebfccef09f6585e32db86e
Deployed Bytecode Sourcemap
22841:5597:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23392:91;;;:::i;:::-;;;;-1:-1:-1;;;;;23392:91:0;;;;;;;;;;;;;;25807:130;;;:::i;:::-;;;;;;;;;;;;;;;;23297:88;;;:::i;25945:267::-;;;;;;;;;;;;;;;;-1:-1:-1;25945:267:0;;:::i;:::-;;23833:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;26222:134;;;:::i;25485:314::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25485:314:0;;;;;;;;;;:::i;27670:765::-;;;;;;;;;;;;;;;;-1:-1:-1;27670:765:0;-1:-1:-1;;;;;27670:765:0;;:::i;23004:81::-;;;:::i;24306:226::-;;;:::i;23180:84::-;;;:::i;25108:369::-;;;:::i;23678:20::-;;;:::i;23092:81::-;;;:::i;23585:43::-;;;:::i;23637:32::-;;;:::i;23490:88::-;;;:::i;24960:140::-;;;;;;;;;;;;;;;;-1:-1:-1;24960:140:0;;;;:::i;24166:132::-;;;;;;;;;;;;;;;;-1:-1:-1;24166:132:0;-1:-1:-1;;;;;24166:132:0;;:::i;23739:34::-;;;:::i;23782:44::-;;;;;;;;;;;;;;;;-1:-1:-1;23782:44:0;-1:-1:-1;;;;;23782:44:0;;:::i;24540:197::-;;;;;;;;;;;;;;;;-1:-1:-1;24540:197:0;;:::i;24745:207::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24745:207:0;;;;;;;;;;:::i;23705:27::-;;;:::i;26364:1228::-;;;:::i;23392:91::-;23440:42;23392:91;:::o;25807:130::-;25878:51;;;-1:-1:-1;;;25878:51:0;;25923:4;25878:51;;;;;;25851:7;;23342:42;;25878:36;;:51;;;;;;;;;;;;;;;23342:42;25878:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25878:51:0;;-1:-1:-1;25807:130:0;:::o;23297:88::-;23342:42;23297:88;:::o;25945:267::-;26008:10;-1:-1:-1;;;;;26022:7:0;26008:21;;26000:39;;;;;-1:-1:-1;;;26000:39:0;;;;;;;;;;;;-1:-1:-1;;;26000:39:0;;;;;;;;;;;;;;;26071:51;;;-1:-1:-1;;;26071:51:0;;;;;;;;26116:5;26071:51;;;;;;;;23342:42;;26071:35;;:51;;;;;;;;;;;26116:5;23342:42;26071:51;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26159:45:0;;-1:-1:-1;23130:42:0;;-1:-1:-1;26184:10:0;;-1:-1:-1;26196:7:0;26159:24;:45::i;:::-;25945:267;:::o;23833:34::-;;;;;;:::o;26222:134::-;26267:10;-1:-1:-1;;;;;26281:7:0;26267:21;;26259:39;;;;;-1:-1:-1;;;26259:39:0;;;;;;;;;;;;-1:-1:-1;;;26259:39:0;;;;;;;;;;;;;;;23342:42;-1:-1:-1;;;;;26311:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26222:134::o;25485:314::-;25577:5;;-1:-1:-1;;;;;25577:5:0;25563:10;:19;25555:37;;;;;-1:-1:-1;;;25555:37:0;;;;;;;;;;;;-1:-1:-1;;;25555:37:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;25611:13:0;;23042:42;25611:13;;;;:30;;-1:-1:-1;;;;;;25628:13:0;;23130:42;25628:13;;25611:30;:50;;;;-1:-1:-1;;;;;;25645:16:0;;23221:42;25645:16;;25611:50;25603:74;;;;;-1:-1:-1;;;25603:74:0;;;;;;;;;;;;-1:-1:-1;;;25603:74:0;;;;;;;;;;;;;;;25690:11;25711:6;-1:-1:-1;;;;;25704:24:0;;25737:4;25704:39;;;;;;;;;;;;;-1:-1:-1;;;;;25704:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25704:39:0;;-1:-1:-1;25754:37:0;-1:-1:-1;;;;;25754:27:0;;25782:3;25704:39;25754:27;:37::i;:::-;25485:314;;;:::o;27670:765::-;-1:-1:-1;;;;;27739:22:0;;23042:42;27739:22;;;;:51;;-1:-1:-1;;;;;;27765:25:0;;23221:42;27765:25;;27739:51;27730:76;;;;;-1:-1:-1;;;27730:76:0;;;;;;;;;;;;-1:-1:-1;;;27730:76:0;;;;;;;;;;;;;;;27819:11;27833:6;-1:-1:-1;;;;;27833:16:0;;27858:4;27833:31;;;;;;;;;;;;;-1:-1:-1;;;;;27833:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27833:31:0;;-1:-1:-1;27881:7:0;;27877:551;;27905:23;27931:39;23623:5;27931:22;27939:13;;27931:3;:7;;:22;;;;:::i;:::-;:26;;:39::i;:::-;27905:65;-1:-1:-1;27991:24:0;:3;27905:65;27991:7;:24::i;:::-;27985:30;-1:-1:-1;28075:47:0;-1:-1:-1;;;;;28075:19:0;;28095:10;28106:15;28075:19;:47::i;:::-;28162:30;-1:-1:-1;;;;;28162:18:0;;28181:7;28190:1;28162:18;:30::i;:::-;28207:40;-1:-1:-1;;;;;28207:18:0;;28226:7;-1:-1:-1;;28207:18:0;:40::i;:::-;28305:7;-1:-1:-1;;;;;28294:38:0;;28341:6;28350:3;28294:60;;;;;;;;;;;;;-1:-1:-1;;;;;28294:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28376:40:0;;;;;;;;-1:-1:-1;;;;;28376:40:0;;;-1:-1:-1;28376:40:0;;-1:-1:-1;28376:40:0;;;;;;;;27877:551;;27670:765;;:::o;23004:81::-;23042:42;23004:81;:::o;24306:226::-;24377:5;;-1:-1:-1;;;;;24377:5:0;24363:10;:19;24355:37;;;;;-1:-1:-1;;;24355:37:0;;;;;;;;;;;;-1:-1:-1;;;24355:37:0;;;;;;;;;;;;;;;24411:12;;-1:-1:-1;;;;;24411:12:0;24403:52;;;;;-1:-1:-1;;;24403:52:0;;;;;;;;;;;;-1:-1:-1;;;24403:52:0;;;;;;;;;;;;;;;24476:12;;;;24468:20;;-1:-1:-1;;;;;;24468:20:0;;;-1:-1:-1;;;;;24476:12:0;;24468:20;;;;24499:25;;;24306:226::o;23180:84::-;23221:42;23180:84;:::o;25108:369::-;25152:38;23130:42;23342;25188:1;25152:23;:38::i;:::-;25201:48;23130:42;23342;-1:-1:-1;;25201:23:0;:48::i;:::-;25262:38;23042:42;23535;25298:1;25262:23;:38::i;:::-;25311:48;23042:42;23535;-1:-1:-1;;25311:23:0;:48::i;:::-;25372:38;23221:42;25399:7;25408:1;25372:26;:38::i;:::-;25421:48;23221:42;25448:7;-1:-1:-1;;25421:26:0;:48::i;:::-;25108:369::o;23678:20::-;;;-1:-1:-1;;;;;23678:20:0;;:::o;23092:81::-;23130:42;23092:81;:::o;23585:43::-;23623:5;23585:43;:::o;23637:32::-;;;:::o;23490:88::-;23535:42;23490:88;:::o;24960:140::-;25044:5;;-1:-1:-1;;;;;25044:5:0;25030:10;:19;25022:37;;;;;-1:-1:-1;;;25022:37:0;;;;;;;;;;;;-1:-1:-1;;;25022:37:0;;;;;;;;;;;;;;;25070:15;:22;;-1:-1:-1;;25070:22:0;;;;;;;;;;24960:140::o;24166:132::-;24246:5;;-1:-1:-1;;;;;24246:5:0;24232:10;:19;24224:37;;;;;-1:-1:-1;;;24224:37:0;;;;;;;;;;;;-1:-1:-1;;;24224:37:0;;;;;;;;;;;;;;;24272:12;:18;;-1:-1:-1;;;;;;24272:18:0;-1:-1:-1;;;;;24272:18:0;;;;;;;;;;24166:132::o;23739:34::-;;;;:::o;23782:44::-;;;;;;;;;;;;;;;:::o;24540:197::-;24628:5;;-1:-1:-1;;;;;24628:5:0;24614:10;:19;24606:37;;;;;-1:-1:-1;;;24606:37:0;;;;;;;;;;;;-1:-1:-1;;;24606:37:0;;;;;;;;;;;;;;;24676:3;24662:10;:17;;24654:38;;;;;-1:-1:-1;;;24654:38:0;;;;;;;;;;;;-1:-1:-1;;;24654:38:0;;;;;;;;;;;;;;;24703:13;:26;24540:197::o;24745:207::-;24841:5;;-1:-1:-1;;;;;24841:5:0;24827:10;:19;24819:37;;;;;-1:-1:-1;;;24819:37:0;;;;;;;;;;;;-1:-1:-1;;;24819:37:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24867:21:0;;;;;;:12;:21;;;;;;;;;:30;;-1:-1:-1;;24867:30:0;;;;;;;;;;24913:31;;;;;;;;;;;;;;;;;24745:207;;:::o;23705:27::-;;;-1:-1:-1;;;;;23705:27:0;;:::o;26364:1228::-;26409:15;;;;26406:88;;;26461:10;26448:24;;;;:12;:24;;;;;;;;26440:42;;;;;-1:-1:-1;;;26440:42:0;;;;;;;;;;;;-1:-1:-1;;;26440:42:0;;;;;;;;;;;;;;;26531:43;;;-1:-1:-1;;;26531:43:0;;26568:5;26531:43;;;;;;;;23342:42;;26531:36;;:43;;;;;;;;;;;26568:5;23342:42;26531:43;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26655:36:0;;;-1:-1:-1;;;26655:36:0;;26685:4;26655:36;;;;;;26638:14;;-1:-1:-1;23042:42:0;;-1:-1:-1;26655:21:0;;:36;;;;;;;;;;;;;;;23042:42;26655:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26655:36:0;;-1:-1:-1;26706:10:0;;26702:90;;26733:47;;;-1:-1:-1;;;26733:47:0;;;;;;;;26775:4;26733:47;;;;;;23535:42;;26733:33;;:47;;;;;-1:-1:-1;;26733:47:0;;;;;;;-1:-1:-1;23535:42:0;26733:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26702:90;26862:54;;;-1:-1:-1;;;26862:54:0;;26910:4;26862:54;;;;;;26844:14;;23440:42;;26862:39;;:54;;;;;;;;;;;;;;;23440:42;26862:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26862:54:0;;-1:-1:-1;26930:10:0;;26927:93;;26956:52;;;-1:-1:-1;;;26956:52:0;;;;;;;;27002:5;26956:52;;;;;;;;23440:42;;26956:38;;:52;;;;;;;;;;;27002:5;23440:42;26956:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26927:93;27081:39;;;-1:-1:-1;;;27081:39:0;;27114:4;27081:39;;;;;;27061:17;;23221:42;;27081:24;;:39;;;;;;;;;;;;;;;23221:42;27081:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27081:39:0;;-1:-1:-1;27137:13:0;;27133:452;;27167:23;27193:45;23623:5;27193:28;27207:13;;27193:9;:13;;:28;;;;:::i;:45::-;27167:71;-1:-1:-1;27265:30:0;:9;27167:71;27265:13;:30::i;:::-;27253:42;-1:-1:-1;27355:55:0;23221:42;27383:10;27394:15;27355:27;:55::i;:::-;27457:57;;;-1:-1:-1;;;27457:57:0;;23221:42;27457:57;;;;;;;;;;;;-1:-1:-1;;;;;27468:7:0;27457:38;;;;:57;;;;;-1:-1:-1;;27457:57:0;;;;;;;-1:-1:-1;27457:38:0;:57;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27536:37:0;;;;;;;;23221:42;;-1:-1:-1;27536:37:0;;-1:-1:-1;27536:37:0;;;;;;;;27133:452;26364:1228;;;:::o;19148:177::-;19258:58;;;-1:-1:-1;;;;;19258:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19258:58:0;-1:-1:-1;;;19258:58:0;;;19231:86;;19251:5;;19231:19;:86::i;14700:220::-;14758:7;14782:6;14778:20;;-1:-1:-1;14797:1:0;14790:8;;14778:20;14821:5;;;14825:1;14821;:5;:1;14845:5;;;;;:10;14837:56;;;;-1:-1:-1;;;14837:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14911:1;-1:-1:-1;14700:220:0;;;;;:::o;15398:153::-;15456:7;15488:1;15484;:5;15476:44;;;;;-1:-1:-1;;;15476:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15542:1;15538;:5;;;;;;;15398:153;-1:-1:-1;;;15398:153:0:o;14283:158::-;14341:7;14374:1;14369;:6;;14361:49;;;;;-1:-1:-1;;;14361:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14428:5:0;;;14283:158::o;19807:622::-;20177:10;;;20176:62;;-1:-1:-1;20193:39:0;;;-1:-1:-1;;;20193:39:0;;20217:4;20193:39;;;;-1:-1:-1;;;;;20193:39:0;;;;;;;;;:15;;;;;;:39;;;;;;;;;;;;;;;:15;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20193:39:0;:44;20176:62;20168:152;;;;-1:-1:-1;;;20168:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20358:62;;;-1:-1:-1;;;;;20358:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20358:62:0;-1:-1:-1;;;20358:62:0;;;20331:90;;20351:5;;21453:761;21877:23;21903:69;21931:4;21903:69;;;;;;;;;;;;;;;;;21911:5;-1:-1:-1;;;;;21903:27:0;;;:69;;;;;:::i;:::-;21987:17;;21877:95;;-1:-1:-1;21987:21:0;21983:224;;22129:10;22118:30;;;;;;;;;;;;;;;-1:-1:-1;22118:30:0;22110:85;;;;-1:-1:-1;;;22110:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3880:195;3983:12;4015:52;4037:6;4045:4;4051:1;4054:12;4015:21;:52::i;:::-;4008:59;;3880:195;;;;;;:::o;4932:530::-;5059:12;5117:5;5092:21;:30;;5084:81;;;;-1:-1:-1;;;5084:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5184:18;5195:6;5184:10;:18::i;:::-;5176:60;;;;;-1:-1:-1;;;5176:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5310:12;5324:23;5351:6;-1:-1:-1;;;;;5351:11:0;5371:5;5379:4;5351:33;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5351:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5309:75;;;;5402:52;5420:7;5429:10;5441:12;5402:17;:52::i;:::-;5395:59;4932:530;-1:-1:-1;;;;;;;4932:530:0:o;962:422::-;1329:20;1368:8;;;962:422::o;7472:742::-;7587:12;7616:7;7612:595;;;-1:-1:-1;7647:10:0;7640:17;;7612:595;7761:17;;:21;7757:439;;8024:10;8018:17;8085:15;8072:10;8068:2;8064:19;8057:44;7972:148;8167:12;8160:20;;-1:-1:-1;;;8160:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Swarm Source
ipfs://ff17ad2634fa7723cc379c771cdc0bf24dbf1a388b6b683b8b88e474398816ef
Loading...
Loading
Loading...
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.
[ 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.