Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 76 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deposit | 18541025 | 287 days ago | IN | 0 ETH | 0.01814485 | ||||
Deposit | 18509556 | 291 days ago | IN | 0 ETH | 0.0121569 | ||||
Deposit | 18436145 | 301 days ago | IN | 0 ETH | 0.00637452 | ||||
Deposit | 18398165 | 307 days ago | IN | 0 ETH | 0.00345376 | ||||
Deposit | 18397227 | 307 days ago | IN | 0 ETH | 0.00327533 | ||||
Deposit | 18359407 | 312 days ago | IN | 0 ETH | 0.00416602 | ||||
Deposit | 18339062 | 315 days ago | IN | 0 ETH | 0.0041139 | ||||
Deposit | 18308416 | 319 days ago | IN | 0 ETH | 0.00511584 | ||||
Deposit | 18256112 | 326 days ago | IN | 0 ETH | 0.00527087 | ||||
Deposit | 18066194 | 353 days ago | IN | 0 ETH | 0.00515121 | ||||
Deposit | 17984194 | 365 days ago | IN | 0 ETH | 0.01509267 | ||||
Deposit | 17890653 | 378 days ago | IN | 0 ETH | 0.01731696 | ||||
Deposit | 17749000 | 397 days ago | IN | 0 ETH | 0.01538111 | ||||
Deposit | 17100587 | 489 days ago | IN | 0 ETH | 0.00967259 | ||||
Deposit | 17038643 | 497 days ago | IN | 0 ETH | 0.01138364 | ||||
Deposit | 16909159 | 516 days ago | IN | 0 ETH | 0.00379153 | ||||
Deposit | 16691080 | 547 days ago | IN | 0 ETH | 0.00951455 | ||||
Deposit | 16690224 | 547 days ago | IN | 0 ETH | 0.00822469 | ||||
Lock Token | 16574042 | 563 days ago | IN | 0 ETH | 0.01330457 | ||||
Deposit | 16574041 | 563 days ago | IN | 0 ETH | 0.0020174 | ||||
Deposit | 16563275 | 564 days ago | IN | 0 ETH | 0.00535256 | ||||
Lock Token | 16543607 | 567 days ago | IN | 0 ETH | 0.01061004 | ||||
Deposit | 16542752 | 567 days ago | IN | 0 ETH | 0.00504281 | ||||
Lock Token | 16518919 | 571 days ago | IN | 0 ETH | 0.00968054 | ||||
Deposit | 16518852 | 571 days ago | IN | 0 ETH | 0.00131856 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
DepositorV2
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-12-12 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.7; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } /** * @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 * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 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"); (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"); (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"); (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"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal 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 assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @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 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' 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) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. 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 require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } interface ITokenMinter { function mint(address, uint256) external; function burn(address, uint256) external; } interface ILocker { function createLock(uint256, uint256) external; function claimAllRewards(address[] calldata _tokens, address _recipient) external; function increaseAmount(uint256) external; function increaseUnlockTime(uint256) external; function release() external; function claimRewards(address, address) external; function claimFXSRewards(address) external; function execute( address, uint256, bytes calldata ) external returns (bool, bytes memory); function setGovernance(address) external; function voteGaugeWeight(address, uint256) external; function setAngleDepositor(address) external; function setFxsDepositor(address) external; function setYieldDistributor(address) external; function setGaugeController(address) external; function setAccumulator(address _accumulator) external; function governance() external view returns(address); } interface ISdToken { function setOperator(address _operator) external; } interface ILiquidityGauge { struct Reward { address token; address distributor; uint256 period_finish; uint256 rate; uint256 last_update; uint256 integral; } // solhint-disable-next-line function deposit_reward_token(address _rewardToken, uint256 _amount) external; // solhint-disable-next-line function claim_rewards_for(address _user, address _recipient) external; function working_balances(address _address) external view returns (uint256); // // solhint-disable-next-line // function claim_rewards_for(address _user) external; // solhint-disable-next-line function deposit(uint256 _value, address _addr) external; // solhint-disable-next-line function reward_tokens(uint256 _i) external view returns (address); // solhint-disable-next-line function reward_data(address _tokenReward) external view returns (Reward memory); function balanceOf(address) external returns (uint256); function claimable_reward(address _user, address _reward_token) external view returns (uint256); function claimable_tokens(address _user) external returns (uint256); function user_checkpoint(address _user) external returns (bool); function commit_transfer_ownership(address) external; function claim_rewards(address) external; function add_reward(address, address) external; function set_claimer(address) external; function admin() external view returns (address); function set_reward_distributor(address _rewardToken, address _newDistrib) external; function initialize( address staking_token, address admin, address SDT, address voting_escrow, address veBoost_proxy, address distributor ) external; } /// @title Contract that accepts tokens and locks them /// @author StakeDAO /// CHANGELOG /// 2022-09-15: MAX_TIME -> Immutable contract DepositorV2 { using SafeERC20 for IERC20; /* ========== STATE VARIABLES ========== */ address public token; uint256 private immutable MAXTIME; uint256 private constant WEEK = 7 * 86_400; uint256 public lockIncentive = 10; //incentive to users who spend gas to lock token uint256 public constant FEE_DENOMINATOR = 10000; address public gauge; address public governance; address public immutable locker; address public immutable minter; uint256 public incentiveToken = 0; uint256 public unlockTime; bool public relock = true; /* ========== EVENTS ========== */ event Deposited(address indexed caller, address indexed user, uint256 amount, bool lock, bool stake); event IncentiveReceived(address indexed caller, uint256 amount); event TokenLocked(address indexed user, uint256 amount); event GovernanceChanged(address indexed newGovernance); event SdTokenOperatorChanged(address indexed newSdToken); event FeesChanged(uint256 newFee); /* ========== CONSTRUCTOR ========== */ constructor( address _token, address _locker, address _minter, uint256 _maxTime ) { governance = msg.sender; token = _token; locker = _locker; minter = _minter; MAXTIME = _maxTime; unlockTime = (block.timestamp + _maxTime) / WEEK * WEEK; } /* ========== RESTRICTED FUNCTIONS ========== */ /// @notice Set the new governance /// @param _governance governance address function setGovernance(address _governance) external { require(msg.sender == governance, "!auth"); governance = _governance; emit GovernanceChanged(_governance); } /// @notice Set the new operator for minting sdToken /// @param _operator operator address function setSdTokenOperator(address _operator) external { require(msg.sender == governance, "!auth"); ISdToken(minter).setOperator(_operator); emit SdTokenOperatorChanged(_operator); } /// @notice Enable the relock or not /// @param _relock relock status function setRelock(bool _relock) external { require(msg.sender == governance, "!auth"); relock = _relock; } /// @notice Set the gauge to deposit token yielded /// @param _gauge gauge address function setGauge(address _gauge) external { require(msg.sender == governance, "!auth"); gauge = _gauge; } /// @notice set the fees for locking incentive /// @param _lockIncentive contract must have tokens to lock function setFees(uint256 _lockIncentive) external { require(msg.sender == governance, "!auth"); if (_lockIncentive >= 0 && _lockIncentive <= 30) { lockIncentive = _lockIncentive; emit FeesChanged(_lockIncentive); } } /* ========== MUTATIVE FUNCTIONS ========== */ /// @notice Locks the tokens held by the contract /// @dev The contract must have tokens to lock function _lockToken() internal { uint256 tokenBalance = IERC20(token).balanceOf(address(this)); // If there is Token available in the contract transfer it to the locker if (tokenBalance > 0) { IERC20(token).safeTransfer(locker, tokenBalance); emit TokenLocked(msg.sender, tokenBalance); } uint256 tokenBalanceStaker = IERC20(token).balanceOf(locker); // If the locker has no tokens then return if (tokenBalanceStaker == 0) { return; } ILocker(locker).increaseAmount(tokenBalanceStaker); if (relock) { uint256 unlockAt = block.timestamp + MAXTIME; uint256 unlockInWeeks = (unlockAt / WEEK) * WEEK; // it means that a 1 week + at least 1 second has been passed // since last increased unlock time if (unlockInWeeks - unlockTime > 1) { ILocker(locker).increaseUnlockTime(unlockAt); unlockTime = unlockInWeeks; } } } /// @notice Lock tokens held by the contract /// @dev The contract must have Token to lock function lockToken() external { _lockToken(); // If there is incentive available give it to the user calling lockToken if (incentiveToken > 0) { ITokenMinter(minter).mint(msg.sender, incentiveToken); emit IncentiveReceived(msg.sender, incentiveToken); incentiveToken = 0; } } /// @notice Deposit & Lock Token /// @dev User needs to approve the contract to transfer the token /// @param _amount The amount of token to deposit /// @param _lock Whether to lock the token /// @param _stake Whether to stake the token /// @param _user User to deposit for function deposit( uint256 _amount, bool _lock, bool _stake, address _user ) public { require(_amount > 0, "!>0"); require(_user != address(0), "!user"); // If User chooses to lock Token if (_lock) { IERC20(token).safeTransferFrom(msg.sender, locker, _amount); _lockToken(); if (incentiveToken > 0) { _amount = _amount + incentiveToken; emit IncentiveReceived(msg.sender, incentiveToken); incentiveToken = 0; } } else { //move tokens here IERC20(token).safeTransferFrom(msg.sender, address(this), _amount); //defer lock cost to another user uint256 callIncentive = (_amount * lockIncentive) / FEE_DENOMINATOR; _amount = _amount - callIncentive; incentiveToken = incentiveToken + callIncentive; } if (_stake && gauge != address(0)) { ITokenMinter(minter).mint(address(this), _amount); IERC20(minter).safeApprove(gauge, 0); IERC20(minter).safeApprove(gauge, _amount); ILiquidityGauge(gauge).deposit(_amount, _user); } else { ITokenMinter(minter).mint(_user, _amount); } emit Deposited(msg.sender, _user, _amount, _lock, _stake); } /// @notice Deposits all the token of a user & locks them based on the options choosen /// @dev User needs to approve the contract to transfer Token tokens /// @param _lock Whether to lock the token /// @param _stake Whether to stake the token /// @param _user User to deposit for function depositAll( bool _lock, bool _stake, address _user ) external { uint256 tokenBal = IERC20(token).balanceOf(msg.sender); deposit(tokenBal, _lock, _stake, _user); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_locker","type":"address"},{"internalType":"address","name":"_minter","type":"address"},{"internalType":"uint256","name":"_maxTime","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"lock","type":"bool"},{"indexed":false,"internalType":"bool","name":"stake","type":"bool"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newGovernance","type":"address"}],"name":"GovernanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"IncentiveReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newSdToken","type":"address"}],"name":"SdTokenOperatorChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenLocked","type":"event"},{"inputs":[],"name":"FEE_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_lock","type":"bool"},{"internalType":"bool","name":"_stake","type":"bool"},{"internalType":"address","name":"_user","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_lock","type":"bool"},{"internalType":"bool","name":"_stake","type":"bool"},{"internalType":"address","name":"_user","type":"address"}],"name":"depositAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gauge","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"incentiveToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockIncentive","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"locker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"relock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lockIncentive","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_gauge","type":"address"}],"name":"setGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_relock","type":"bool"}],"name":"setRelock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"name":"setSdTokenOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60e0604052600a600190815560006004556006805460ff191690911790553480156200002a57600080fd5b5060405162001611380380620016118339810160408190526200004d91620000eb565b600380546001600160a01b03199081163317909155600080546001600160a01b03871692169190911790556001600160601b0319606084811b821660a05283901b1660c052608081905262093a8080620000a883426200013d565b620000b4919062000158565b620000c091906200017b565b60055550620001b392505050565b80516001600160a01b0381168114620000e657600080fd5b919050565b600080600080608085870312156200010257600080fd5b6200010d85620000ce565b93506200011d60208601620000ce565b92506200012d60408601620000ce565b6060959095015193969295505050565b600082198211156200015357620001536200019d565b500190565b6000826200017657634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156200019857620001986200019d565b500290565b634e487b7160e01b600052601160045260246000fd5b60805160a05160601c60c05160601c6113db6200023660003960008181610120015281816103a9015281816104e001528181610733015281816107a7015281816107e3015261089d0152600081816102420152818161061101528181610ab201528181610b2801528181610bcc0152610cb301526000610c4401526113db6000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063ab033ea9116100a2578063d73792a911610071578063d73792a914610234578063d7b96d4e1461023d578063f0f8fa5c14610264578063f7ad360114610277578063fc0c546a1461028a57600080fd5b8063ab033ea9146101e9578063bca7a9e2146101fc578063c53b573d14610204578063d0f492f71461022157600080fd5b806355a68ed3116100e957806355a68ed3146101945780635aa6e675146101a7578063635aec40146101ba578063638126f8146101cd578063a6f19c84146101d657600080fd5b8063075461721461011b578063251c1aa31461015f5780633d18678e14610176578063509406181461018b575b600080fd5b6101427f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61016860055481565b604051908152602001610156565b6101896101843660046111f4565b61029d565b005b61016860015481565b6101896101a2366004611158565b610314565b600354610142906001600160a01b031681565b6101896101c8366004611158565b610360565b61016860045481565b600254610142906001600160a01b031681565b6101896101f7366004611158565b61043c565b6101896104b0565b6006546102119060ff1681565b6040519015158152602001610156565b61018961022f366004611226565b610584565b61016861271081565b6101427f000000000000000000000000000000000000000000000000000000000000000081565b6101896102723660046111ad565b61094f565b610189610285366004611173565b6109df565b600054610142906001600160a01b031681565b6003546001600160a01b031633146102d05760405162461bcd60e51b81526004016102c7906112c6565b60405180910390fd5b601e81116103115760018190556040518181527f3dda580d2b9d92da338ef46ec718e7b1dd0a2c505e3df4aa8d40360192a0f8229060200160405180910390a15b50565b6003546001600160a01b0316331461033e5760405162461bcd60e51b81526004016102c7906112c6565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b0316331461038a5760405162461bcd60e51b81526004016102c7906112c6565b60405163b3ab15fb60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063b3ab15fb90602401600060405180830381600087803b1580156103ed57600080fd5b505af1158015610401573d6000803e3d6000fd5b50506040516001600160a01b03841692507f860079172b8d313ffe6600be83301a99a5099e33a3f5cbe541d97e98074cbfe79150600090a250565b6003546001600160a01b031633146104665760405162461bcd60e51b81526004016102c7906112c6565b600380546001600160a01b0319166001600160a01b0383169081179091556040517fa6a85f15b976d399f39ad43e515e75910bac714bc55eeff6131fb90780d6f74690600090a250565b6104b8610a1c565b6004541561058257600480546040516340c10f1960e01b8152339281019290925260248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906340c10f1990604401600060405180830381600087803b15801561052c57600080fd5b505af1158015610540573d6000803e3d6000fd5b50506004546040519081523392507f70220290ea80981efd0f0f7e6b1b5085605eb976822c8b8422e5bcc53e4c6d63915060200160405180910390a260006004555b565b600084116105ba5760405162461bcd60e51b81526020600482015260036024820152620213e360ec1b60448201526064016102c7565b6001600160a01b0381166105f85760405162461bcd60e51b815260206004820152600560248201526410bab9b2b960d91b60448201526064016102c7565b82156106a557600054610636906001600160a01b0316337f000000000000000000000000000000000000000000000000000000000000000087610d23565b61063e610a1c565b600454156106a05760045461065390856112e5565b9350336001600160a01b03167f70220290ea80981efd0f0f7e6b1b5085605eb976822c8b8422e5bcc53e4c6d6360045460405161069291815260200190565b60405180910390a260006004555b6106fb565b6000546106bd906001600160a01b0316333087610d23565b6000612710600154866106d0919061131f565b6106da91906112fd565b90506106e6818661133e565b9450806004546106f691906112e5565b600455505b81801561071257506002546001600160a01b031615155b15610877576040516340c10f1960e01b8152306004820152602481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906340c10f1990604401600060405180830381600087803b15801561077f57600080fd5b505af1158015610793573d6000803e3d6000fd5b50506002546107d292506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169250166000610d8e565b60025461080c906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911686610d8e565b600254604051636e553f6560e01b8152600481018690526001600160a01b03838116602483015290911690636e553f6590604401600060405180830381600087803b15801561085a57600080fd5b505af115801561086e573d6000803e3d6000fd5b505050506108fa565b6040516340c10f1960e01b81526001600160a01b038281166004830152602482018690527f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b1580156108e157600080fd5b505af11580156108f5573d6000803e3d6000fd5b505050505b6040805185815284151560208201528315158183015290516001600160a01b0383169133917f1652dc46c7c8f691f8e51f9897515fc24cbd8cafd7eb97f620fe1635399d8c769181900360600190a350505050565b600080546040516370a0823160e01b81523360048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561099357600080fd5b505afa1580156109a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb919061120d565b90506109d981858585610584565b50505050565b6003546001600160a01b03163314610a095760405162461bcd60e51b81526004016102c7906112c6565b6006805460ff1916911515919091179055565b600080546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b158015610a6057600080fd5b505afa158015610a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a98919061120d565b90508015610b0d57600054610ad7906001600160a01b03167f000000000000000000000000000000000000000000000000000000000000000083610eb7565b60405181815233907ff9626bca62c59d77fa45a204dc096874ee066a5c5e124aa9ce6c438dbdf7387a9060200160405180910390a25b600080546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152909116906370a082319060240160206040518083038186803b158015610b7357600080fd5b505afa158015610b87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bab919061120d565b905080610bb6575050565b604051630aa2b75d60e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906315456eba90602401600060405180830381600087803b158015610c1857600080fd5b505af1158015610c2c573d6000803e3d6000fd5b505060065460ff16159150610d1f9050576000610c697f0000000000000000000000000000000000000000000000000000000000000000426112e5565b9050600062093a80610c7b81846112fd565b610c85919061131f565b9050600160055482610c97919061133e565b11156109d957604051633e30b7f360e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637c616fe690602401600060405180830381600087803b158015610cff57600080fd5b505af1158015610d13573d6000803e3d6000fd5b50505060058290555050505b5050565b6040516001600160a01b03808516602483015283166044820152606481018290526109d99085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610ee7565b801580610e175750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b158015610ddd57600080fd5b505afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e15919061120d565b155b610e825760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b60648201526084016102c7565b6040516001600160a01b038316602482015260448101829052610eb290849063095ea7b360e01b90606401610d57565b505050565b6040516001600160a01b038316602482015260448101829052610eb290849063a9059cbb60e01b90606401610d57565b6000610f3c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610fb99092919063ffffffff16565b805190915015610eb25780806020019051810190610f5a9190611190565b610eb25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102c7565b6060610fc88484600085610fd2565b90505b9392505050565b6060824710156110335760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102c7565b6001600160a01b0385163b61108a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102c7565b600080866001600160a01b031685876040516110a69190611277565b60006040518083038185875af1925050503d80600081146110e3576040519150601f19603f3d011682016040523d82523d6000602084013e6110e8565b606091505b50915091506110f8828286611103565b979650505050505050565b60608315611112575081610fcb565b8251156111225782518084602001fd5b8160405162461bcd60e51b81526004016102c79190611293565b80356001600160a01b038116811461115357600080fd5b919050565b60006020828403121561116a57600080fd5b610fcb8261113c565b60006020828403121561118557600080fd5b8135610fcb81611397565b6000602082840312156111a257600080fd5b8151610fcb81611397565b6000806000606084860312156111c257600080fd5b83356111cd81611397565b925060208401356111dd81611397565b91506111eb6040850161113c565b90509250925092565b60006020828403121561120657600080fd5b5035919050565b60006020828403121561121f57600080fd5b5051919050565b6000806000806080858703121561123c57600080fd5b84359350602085013561124e81611397565b9250604085013561125e81611397565b915061126c6060860161113c565b905092959194509250565b60008251611289818460208701611355565b9190910192915050565b60208152600082518060208401526112b2816040850160208701611355565b601f01601f19169190910160400192915050565b602080825260059082015264042c2eae8d60db1b604082015260600190565b600082198211156112f8576112f8611381565b500190565b60008261131a57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561133957611339611381565b500290565b60008282101561135057611350611381565b500390565b60005b83811015611370578181015183820152602001611358565b838111156109d95750506000910152565b634e487b7160e01b600052601160045260246000fd5b801515811461031157600080fdfea2646970667358221220b4207872d9edf254af613682fb596fc9a023caba7e2be72eda63d5b5e88b9b7464736f6c634300080700330000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e000000000000000000000000f750162fd81f9a436d74d737ef6ee8fc08e9822000000000000000000000000097983236be88107cc8998733ef73d8d969c52e37000000000000000000000000000000000000000000000000000000000784ce00
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063ab033ea9116100a2578063d73792a911610071578063d73792a914610234578063d7b96d4e1461023d578063f0f8fa5c14610264578063f7ad360114610277578063fc0c546a1461028a57600080fd5b8063ab033ea9146101e9578063bca7a9e2146101fc578063c53b573d14610204578063d0f492f71461022157600080fd5b806355a68ed3116100e957806355a68ed3146101945780635aa6e675146101a7578063635aec40146101ba578063638126f8146101cd578063a6f19c84146101d657600080fd5b8063075461721461011b578063251c1aa31461015f5780633d18678e14610176578063509406181461018b575b600080fd5b6101427f00000000000000000000000097983236be88107cc8998733ef73d8d969c52e3781565b6040516001600160a01b0390911681526020015b60405180910390f35b61016860055481565b604051908152602001610156565b6101896101843660046111f4565b61029d565b005b61016860015481565b6101896101a2366004611158565b610314565b600354610142906001600160a01b031681565b6101896101c8366004611158565b610360565b61016860045481565b600254610142906001600160a01b031681565b6101896101f7366004611158565b61043c565b6101896104b0565b6006546102119060ff1681565b6040519015158152602001610156565b61018961022f366004611226565b610584565b61016861271081565b6101427f000000000000000000000000f750162fd81f9a436d74d737ef6ee8fc08e9822081565b6101896102723660046111ad565b61094f565b610189610285366004611173565b6109df565b600054610142906001600160a01b031681565b6003546001600160a01b031633146102d05760405162461bcd60e51b81526004016102c7906112c6565b60405180910390fd5b601e81116103115760018190556040518181527f3dda580d2b9d92da338ef46ec718e7b1dd0a2c505e3df4aa8d40360192a0f8229060200160405180910390a15b50565b6003546001600160a01b0316331461033e5760405162461bcd60e51b81526004016102c7906112c6565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b0316331461038a5760405162461bcd60e51b81526004016102c7906112c6565b60405163b3ab15fb60e01b81526001600160a01b0382811660048301527f00000000000000000000000097983236be88107cc8998733ef73d8d969c52e37169063b3ab15fb90602401600060405180830381600087803b1580156103ed57600080fd5b505af1158015610401573d6000803e3d6000fd5b50506040516001600160a01b03841692507f860079172b8d313ffe6600be83301a99a5099e33a3f5cbe541d97e98074cbfe79150600090a250565b6003546001600160a01b031633146104665760405162461bcd60e51b81526004016102c7906112c6565b600380546001600160a01b0319166001600160a01b0383169081179091556040517fa6a85f15b976d399f39ad43e515e75910bac714bc55eeff6131fb90780d6f74690600090a250565b6104b8610a1c565b6004541561058257600480546040516340c10f1960e01b8152339281019290925260248201527f00000000000000000000000097983236be88107cc8998733ef73d8d969c52e376001600160a01b0316906340c10f1990604401600060405180830381600087803b15801561052c57600080fd5b505af1158015610540573d6000803e3d6000fd5b50506004546040519081523392507f70220290ea80981efd0f0f7e6b1b5085605eb976822c8b8422e5bcc53e4c6d63915060200160405180910390a260006004555b565b600084116105ba5760405162461bcd60e51b81526020600482015260036024820152620213e360ec1b60448201526064016102c7565b6001600160a01b0381166105f85760405162461bcd60e51b815260206004820152600560248201526410bab9b2b960d91b60448201526064016102c7565b82156106a557600054610636906001600160a01b0316337f000000000000000000000000f750162fd81f9a436d74d737ef6ee8fc08e9822087610d23565b61063e610a1c565b600454156106a05760045461065390856112e5565b9350336001600160a01b03167f70220290ea80981efd0f0f7e6b1b5085605eb976822c8b8422e5bcc53e4c6d6360045460405161069291815260200190565b60405180910390a260006004555b6106fb565b6000546106bd906001600160a01b0316333087610d23565b6000612710600154866106d0919061131f565b6106da91906112fd565b90506106e6818661133e565b9450806004546106f691906112e5565b600455505b81801561071257506002546001600160a01b031615155b15610877576040516340c10f1960e01b8152306004820152602481018590527f00000000000000000000000097983236be88107cc8998733ef73d8d969c52e376001600160a01b0316906340c10f1990604401600060405180830381600087803b15801561077f57600080fd5b505af1158015610793573d6000803e3d6000fd5b50506002546107d292506001600160a01b037f00000000000000000000000097983236be88107cc8998733ef73d8d969c52e3781169250166000610d8e565b60025461080c906001600160a01b037f00000000000000000000000097983236be88107cc8998733ef73d8d969c52e378116911686610d8e565b600254604051636e553f6560e01b8152600481018690526001600160a01b03838116602483015290911690636e553f6590604401600060405180830381600087803b15801561085a57600080fd5b505af115801561086e573d6000803e3d6000fd5b505050506108fa565b6040516340c10f1960e01b81526001600160a01b038281166004830152602482018690527f00000000000000000000000097983236be88107cc8998733ef73d8d969c52e3716906340c10f1990604401600060405180830381600087803b1580156108e157600080fd5b505af11580156108f5573d6000803e3d6000fd5b505050505b6040805185815284151560208201528315158183015290516001600160a01b0383169133917f1652dc46c7c8f691f8e51f9897515fc24cbd8cafd7eb97f620fe1635399d8c769181900360600190a350505050565b600080546040516370a0823160e01b81523360048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561099357600080fd5b505afa1580156109a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb919061120d565b90506109d981858585610584565b50505050565b6003546001600160a01b03163314610a095760405162461bcd60e51b81526004016102c7906112c6565b6006805460ff1916911515919091179055565b600080546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b158015610a6057600080fd5b505afa158015610a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a98919061120d565b90508015610b0d57600054610ad7906001600160a01b03167f000000000000000000000000f750162fd81f9a436d74d737ef6ee8fc08e9822083610eb7565b60405181815233907ff9626bca62c59d77fa45a204dc096874ee066a5c5e124aa9ce6c438dbdf7387a9060200160405180910390a25b600080546040516370a0823160e01b81526001600160a01b037f000000000000000000000000f750162fd81f9a436d74d737ef6ee8fc08e9822081166004830152909116906370a082319060240160206040518083038186803b158015610b7357600080fd5b505afa158015610b87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bab919061120d565b905080610bb6575050565b604051630aa2b75d60e11b8152600481018290527f000000000000000000000000f750162fd81f9a436d74d737ef6ee8fc08e982206001600160a01b0316906315456eba90602401600060405180830381600087803b158015610c1857600080fd5b505af1158015610c2c573d6000803e3d6000fd5b505060065460ff16159150610d1f9050576000610c697f000000000000000000000000000000000000000000000000000000000784ce00426112e5565b9050600062093a80610c7b81846112fd565b610c85919061131f565b9050600160055482610c97919061133e565b11156109d957604051633e30b7f360e11b8152600481018390527f000000000000000000000000f750162fd81f9a436d74d737ef6ee8fc08e982206001600160a01b031690637c616fe690602401600060405180830381600087803b158015610cff57600080fd5b505af1158015610d13573d6000803e3d6000fd5b50505060058290555050505b5050565b6040516001600160a01b03808516602483015283166044820152606481018290526109d99085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610ee7565b801580610e175750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b158015610ddd57600080fd5b505afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e15919061120d565b155b610e825760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b60648201526084016102c7565b6040516001600160a01b038316602482015260448101829052610eb290849063095ea7b360e01b90606401610d57565b505050565b6040516001600160a01b038316602482015260448101829052610eb290849063a9059cbb60e01b90606401610d57565b6000610f3c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610fb99092919063ffffffff16565b805190915015610eb25780806020019051810190610f5a9190611190565b610eb25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102c7565b6060610fc88484600085610fd2565b90505b9392505050565b6060824710156110335760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102c7565b6001600160a01b0385163b61108a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102c7565b600080866001600160a01b031685876040516110a69190611277565b60006040518083038185875af1925050503d80600081146110e3576040519150601f19603f3d011682016040523d82523d6000602084013e6110e8565b606091505b50915091506110f8828286611103565b979650505050505050565b60608315611112575081610fcb565b8251156111225782518084602001fd5b8160405162461bcd60e51b81526004016102c79190611293565b80356001600160a01b038116811461115357600080fd5b919050565b60006020828403121561116a57600080fd5b610fcb8261113c565b60006020828403121561118557600080fd5b8135610fcb81611397565b6000602082840312156111a257600080fd5b8151610fcb81611397565b6000806000606084860312156111c257600080fd5b83356111cd81611397565b925060208401356111dd81611397565b91506111eb6040850161113c565b90509250925092565b60006020828403121561120657600080fd5b5035919050565b60006020828403121561121f57600080fd5b5051919050565b6000806000806080858703121561123c57600080fd5b84359350602085013561124e81611397565b9250604085013561125e81611397565b915061126c6060860161113c565b905092959194509250565b60008251611289818460208701611355565b9190910192915050565b60208152600082518060208401526112b2816040850160208701611355565b601f01601f19169190910160400192915050565b602080825260059082015264042c2eae8d60db1b604082015260600190565b600082198211156112f8576112f8611381565b500190565b60008261131a57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561133957611339611381565b500290565b60008282101561135057611350611381565b500390565b60005b83811015611370578181015183820152602001611358565b838111156109d95750506000910152565b634e487b7160e01b600052601160045260246000fd5b801515811461031157600080fdfea2646970667358221220b4207872d9edf254af613682fb596fc9a023caba7e2be72eda63d5b5e88b9b7464736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e000000000000000000000000f750162fd81f9a436d74d737ef6ee8fc08e9822000000000000000000000000097983236be88107cc8998733ef73d8d969c52e37000000000000000000000000000000000000000000000000000000000784ce00
-----Decoded View---------------
Arg [0] : _token (address): 0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e
Arg [1] : _locker (address): 0xF750162fD81F9a436d74d737EF6eE8FC08e98220
Arg [2] : _minter (address): 0x97983236bE88107Cc8998733Ef73D8d969c52E37
Arg [3] : _maxTime (uint256): 126144000
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e
Arg [1] : 000000000000000000000000f750162fd81f9a436d74d737ef6ee8fc08e98220
Arg [2] : 00000000000000000000000097983236be88107cc8998733ef73d8d969c52e37
Arg [3] : 000000000000000000000000000000000000000000000000000000000784ce00
Deployed Bytecode Sourcemap
17918:6068:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18357:31;;;;;;;;-1:-1:-1;;;;;2675:32:1;;;2657:51;;2645:2;2630:18;18357:31:0;;;;;;;;18429:25;;;;;;;;;7009::1;;;6997:2;6982:18;18429:25:0;6863:177:1;20350:237:0;;;;;;:::i;:::-;;:::i;:::-;;18130:33;;;;;;20120:114;;;;;;:::i;:::-;;:::i;18293:25::-;;;;;-1:-1:-1;;;;;18293:25:0;;;19639:195;;;;;;:::i;:::-;;:::i;18392:33::-;;;;;;18269:20;;;;;-1:-1:-1;;;;;18269:20:0;;;19365:174;;;;;;:::i;:::-;;:::i;21747:303::-;;;:::i;18458:25::-;;;;;;;;;;;;3852:14:1;;3845:22;3827:41;;3815:2;3800:18;18458:25:0;3687:187:1;22341:1156:0;;;;;;:::i;:::-;;:::i;18216:47::-;;18258:5;18216:47;;18322:31;;;;;23793:190;;;;;;:::i;:::-;;:::i;19913:115::-;;;;;;:::i;:::-;;:::i;18021:20::-;;;;;-1:-1:-1;;;;;18021:20:0;;;20350:237;20427:10;;-1:-1:-1;;;;;20427:10:0;20413;:24;20405:42;;;;-1:-1:-1;;;20405:42:0;;;;;;;:::i;:::-;;;;;;;;;20499:2;20481:14;:20;20454:129;;20509:13;:30;;;20550:27;;7009:25:1;;;20550:27:0;;6997:2:1;6982:18;20550:27:0;;;;;;;20454:129;20350:237;:::o;20120:114::-;20190:10;;-1:-1:-1;;;;;20190:10:0;20176;:24;20168:42;;;;-1:-1:-1;;;20168:42:0;;;;;;;:::i;:::-;20215:5;:14;;-1:-1:-1;;;;;;20215:14:0;-1:-1:-1;;;;;20215:14:0;;;;;;;;;;20120:114::o;19639:195::-;19722:10;;-1:-1:-1;;;;;19722:10:0;19708;:24;19700:42;;;;-1:-1:-1;;;19700:42:0;;;;;;;:::i;:::-;19747:39;;-1:-1:-1;;;19747:39:0;;-1:-1:-1;;;;;2675:32:1;;;19747:39:0;;;2657:51:1;19756:6:0;19747:28;;;;2630:18:1;;19747:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19796:33:0;;-1:-1:-1;;;;;19796:33:0;;;-1:-1:-1;19796:33:0;;-1:-1:-1;19796:33:0;;;19639:195;:::o;19365:174::-;19445:10;;-1:-1:-1;;;;;19445:10:0;19431;:24;19423:42;;;;-1:-1:-1;;;19423:42:0;;;;;;;:::i;:::-;19470:10;:24;;-1:-1:-1;;;;;;19470:24:0;-1:-1:-1;;;;;19470:24:0;;;;;;;;19504:30;;;;-1:-1:-1;;19504:30:0;19365:174;:::o;21747:303::-;21782:12;:10;:12::i;:::-;21881:14;;:18;21877:169;;21945:14;;;21907:53;;-1:-1:-1;;;21907:53:0;;21933:10;21907:53;;;3582:51:1;;;;3649:18;;;3642:34;21920:6:0;-1:-1:-1;;;;;21907:25:0;;;;3555:18:1;;21907:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22001:14:0;;21971:45;;7009:25:1;;;21989:10:0;;-1:-1:-1;21971:45:0;;-1:-1:-1;6997:2:1;6982:18;21971:45:0;;;;;;;22039:1;22022:14;:18;21877:169;21747:303::o;22341:1156::-;22461:1;22451:7;:11;22443:27;;;;-1:-1:-1;;;22443:27:0;;4469:2:1;22443:27:0;;;4451:21:1;4508:1;4488:18;;;4481:29;-1:-1:-1;;;4526:18:1;;;4519:33;4569:18;;22443:27:0;4267:326:1;22443:27:0;-1:-1:-1;;;;;22483:19:0;;22475:37;;;;-1:-1:-1;;;22475:37:0;;5207:2:1;22475:37:0;;;5189:21:1;5246:1;5226:18;;;5219:29;-1:-1:-1;;;5264:18:1;;;5257:35;5309:18;;22475:37:0;5005:328:1;22475:37:0;22559:5;22555:571;;;22579:5;;22572:59;;-1:-1:-1;;;;;22579:5:0;22603:10;22615:6;22623:7;22572:30;:59::i;:::-;22637:12;:10;:12::i;:::-;22661:14;;:18;22657:154;;22708:14;;22698:24;;:7;:24;:::i;:::-;22688:34;;22752:10;-1:-1:-1;;;;;22734:45:0;;22764:14;;22734:45;;;;7009:25:1;;6997:2;6982:18;;6863:177;22734:45:0;;;;;;;;22803:1;22786:14;:18;22657:154;22555:571;;;22858:5;;22851:66;;-1:-1:-1;;;;;22858:5:0;22882:10;22902:4;22909:7;22851:30;:66::i;:::-;22961:21;18258:5;22996:13;;22986:7;:23;;;;:::i;:::-;22985:43;;;;:::i;:::-;22961:67;-1:-1:-1;23044:23:0;22961:67;23044:7;:23;:::i;:::-;23034:33;;23107:13;23090:14;;:30;;;;:::i;:::-;23073:14;:47;-1:-1:-1;22555:571:0;23136:6;:29;;;;-1:-1:-1;23146:5:0;;-1:-1:-1;;;;;23146:5:0;:19;;23136:29;23132:297;;;23173:49;;-1:-1:-1;;;23173:49:0;;23207:4;23173:49;;;3582:51:1;3649:18;;;3642:34;;;23186:6:0;-1:-1:-1;;;;;23173:25:0;;;;3555:18:1;;23173:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23255:5:0;;23228:36;;-1:-1:-1;;;;;;23235:6:0;23228:26;;;-1:-1:-1;23255:5:0;;23228:26;:36::i;:::-;23297:5;;23270:42;;-1:-1:-1;;;;;23277:6:0;23270:26;;;23297:5;23304:7;23270:26;:42::i;:::-;23334:5;;23318:46;;-1:-1:-1;;;23318:46:0;;;;;7219:25:1;;;-1:-1:-1;;;;;7280:32:1;;;7260:18;;;7253:60;23334:5:0;;;;23318:30;;7192:18:1;;23318:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23132:297;;;23382:41;;-1:-1:-1;;;23382:41:0;;-1:-1:-1;;;;;3600:32:1;;;23382:41:0;;;3582:51:1;3649:18;;;3642:34;;;23395:6:0;23382:25;;;;3555:18:1;;23382:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23132:297;23440:52;;;7514:25:1;;;7582:14;;7575:22;7570:2;7555:18;;7548:50;7641:14;;7634:22;7614:18;;;7607:50;23440:52:0;;-1:-1:-1;;;;;23440:52:0;;;23450:10;;23440:52;;;;;7502:2:1;23440:52:0;;;22341:1156;;;;:::o;23793:190::-;23880:16;23906:5;;23899:35;;-1:-1:-1;;;23899:35:0;;23923:10;23899:35;;;2657:51:1;-1:-1:-1;;;;;23906:5:0;;;;23899:23;;2630:18:1;;23899:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23880:54;;23939:39;23947:8;23957:5;23964:6;23972:5;23939:7;:39::i;:::-;23875:108;23793:190;;;:::o;19913:115::-;19982:10;;-1:-1:-1;;;;;19982:10:0;19968;:24;19960:42;;;;-1:-1:-1;;;19960:42:0;;;;;;;:::i;:::-;20007:6;:16;;-1:-1:-1;;20007:16:0;;;;;;;;;;19913:115::o;20744:903::-;20780:20;20810:5;;20803:38;;-1:-1:-1;;;20803:38:0;;20835:4;20803:38;;;2657:51:1;-1:-1:-1;;;;;20810:5:0;;;;20803:23;;2630:18:1;;20803:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20780:61;-1:-1:-1;20928:16:0;;20924:130;;20959:5;;20952:48;;-1:-1:-1;;;;;20959:5:0;20979:6;20987:12;20952:26;:48::i;:::-;21011:37;;7009:25:1;;;21023:10:0;;21011:37;;6997:2:1;6982:18;21011:37:0;;;;;;;20924:130;21060:26;21096:5;;21089:31;;-1:-1:-1;;;21089:31:0;;-1:-1:-1;;;;;21113:6:0;2675:32:1;;21089:31:0;;;2657:51:1;21096:5:0;;;;21089:23;;2630:18:1;;21089:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21060:60;-1:-1:-1;21175:23:0;21171:47;;21206:7;;20744:903::o;21171:47::-;21224:50;;-1:-1:-1;;;21224:50:0;;;;;7009:25:1;;;21232:6:0;-1:-1:-1;;;;;21224:30:0;;;;6982:18:1;;21224:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21285:6:0;;;;21281:362;;-1:-1:-1;21281:362:0;;-1:-1:-1;21281:362:0;21299:16;21318:25;21336:7;21318:15;:25;:::i;:::-;21299:44;-1:-1:-1;21349:21:0;18114:10;21374:15;18114:10;21299:44;21374:15;:::i;:::-;21373:24;;;;:::i;:::-;21349:48;;21544:1;21531:10;;21515:13;:26;;;;:::i;:::-;:30;21511:127;;;21554:44;;-1:-1:-1;;;21554:44:0;;;;;7009:25:1;;;21562:6:0;-1:-1:-1;;;;;21554:34:0;;;;6982:18:1;;21554:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21605:10:0;:26;;;-1:-1:-1;21293:350:0;;21281:362;20775:872;;20744:903::o;11868:248::-;12039:68;;-1:-1:-1;;;;;3286:15:1;;;12039:68:0;;;3268:34:1;3338:15;;3318:18;;;3311:43;3370:18;;;3363:34;;;12012:96:0;;12032:5;;-1:-1:-1;;;12062:27:0;3203:18:1;;12039:68:0;;;;-1:-1:-1;;12039:68:0;;;;;;;;;;;;;;-1:-1:-1;;;;;12039:68:0;-1:-1:-1;;;;;;12039:68:0;;;;;;;;;;12012:19;:96::i;12385:616::-;12749:10;;;12748:62;;-1:-1:-1;12765:39:0;;-1:-1:-1;;;12765:39:0;;12789:4;12765:39;;;2931:34:1;-1:-1:-1;;;;;3001:15:1;;;2981:18;;;2974:43;12765:15:0;;;;;2866:18:1;;12765:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;12748:62;12726:166;;;;-1:-1:-1;;;12726:166:0;;6642:2:1;12726:166:0;;;6624:21:1;6681:2;6661:18;;;6654:30;6720:34;6700:18;;;6693:62;-1:-1:-1;;;6771:18:1;;;6764:52;6833:19;;12726:166:0;6440:418:1;12726:166:0;12930:62;;-1:-1:-1;;;;;3600:32:1;;12930:62:0;;;3582:51:1;3649:18;;;3642:34;;;12903:90:0;;12923:5;;-1:-1:-1;;;12953:22:0;3555:18:1;;12930:62:0;3408:274:1;12903:90:0;12385:616;;;:::o;11649:211::-;11793:58;;-1:-1:-1;;;;;3600:32:1;;11793:58:0;;;3582:51:1;3649:18;;;3642:34;;;11766:86:0;;11786:5;;-1:-1:-1;;;11816:23:0;3555:18:1;;11793:58:0;3408:274:1;14222:716:0;14646:23;14672:69;14700:4;14672:69;;;;;;;;;;;;;;;;;14680:5;-1:-1:-1;;;;;14672:27:0;;;:69;;;;;:::i;:::-;14756:17;;14646:95;;-1:-1:-1;14756:21:0;14752:179;;14853:10;14842:30;;;;;;;;;;;;:::i;:::-;14834:85;;;;-1:-1:-1;;;14834:85:0;;6231:2:1;14834:85:0;;;6213:21:1;6270:2;6250:18;;;6243:30;6309:34;6289:18;;;6282:62;-1:-1:-1;;;6360:18:1;;;6353:40;6410:19;;14834:85:0;6029:406:1;6598:229:0;6735:12;6767:52;6789:6;6797:4;6803:1;6806:12;6767:21;:52::i;:::-;6760:59;;6598:229;;;;;;:::o;7718:510::-;7888:12;7946:5;7921:21;:30;;7913:81;;;;-1:-1:-1;;;7913:81:0;;4800:2:1;7913:81:0;;;4782:21:1;4839:2;4819:18;;;4812:30;4878:34;4858:18;;;4851:62;-1:-1:-1;;;4929:18:1;;;4922:36;4975:19;;7913:81:0;4598:402:1;7913:81:0;-1:-1:-1;;;;;4148:19:0;;;8005:60;;;;-1:-1:-1;;;8005:60:0;;5540:2:1;8005:60:0;;;5522:21:1;5579:2;5559:18;;;5552:30;5618:31;5598:18;;;5591:59;5667:18;;8005:60:0;5338:353:1;8005:60:0;8079:12;8093:23;8120:6;-1:-1:-1;;;;;8120:11:0;8139:5;8146:4;8120:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8078:73;;;;8169:51;8186:7;8195:10;8207:12;8169:16;:51::i;:::-;8162:58;7718:510;-1:-1:-1;;;;;;;7718:510:0:o;10404:712::-;10554:12;10583:7;10579:530;;;-1:-1:-1;10614:10:0;10607:17;;10579:530;10728:17;;:21;10724:374;;10926:10;10920:17;10987:15;10974:10;10970:2;10966:19;10959:44;10724:374;11069:12;11062:20;;-1:-1:-1;;;11062:20:0;;;;;;;;:::i;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;383:241::-;439:6;492:2;480:9;471:7;467:23;463:32;460:52;;;508:1;505;498:12;460:52;547:9;534:23;566:28;588:5;566:28;:::i;629:245::-;696:6;749:2;737:9;728:7;724:23;720:32;717:52;;;765:1;762;755:12;717:52;797:9;791:16;816:28;838:5;816:28;:::i;879:450::-;950:6;958;966;1019:2;1007:9;998:7;994:23;990:32;987:52;;;1035:1;1032;1025:12;987:52;1074:9;1061:23;1093:28;1115:5;1093:28;:::i;:::-;1140:5;-1:-1:-1;1197:2:1;1182:18;;1169:32;1210:30;1169:32;1210:30;:::i;:::-;1259:7;-1:-1:-1;1285:38:1;1319:2;1304:18;;1285:38;:::i;:::-;1275:48;;879:450;;;;;:::o;1334:180::-;1393:6;1446:2;1434:9;1425:7;1421:23;1417:32;1414:52;;;1462:1;1459;1452:12;1414:52;-1:-1:-1;1485:23:1;;1334:180;-1:-1:-1;1334:180:1:o;1519:184::-;1589:6;1642:2;1630:9;1621:7;1617:23;1613:32;1610:52;;;1658:1;1655;1648:12;1610:52;-1:-1:-1;1681:16:1;;1519:184;-1:-1:-1;1519:184:1:o;1708:519::-;1788:6;1796;1804;1812;1865:3;1853:9;1844:7;1840:23;1836:33;1833:53;;;1882:1;1879;1872:12;1833:53;1918:9;1905:23;1895:33;;1978:2;1967:9;1963:18;1950:32;1991:28;2013:5;1991:28;:::i;:::-;2038:5;-1:-1:-1;2095:2:1;2080:18;;2067:32;2108:30;2067:32;2108:30;:::i;:::-;2157:7;-1:-1:-1;2183:38:1;2217:2;2202:18;;2183:38;:::i;:::-;2173:48;;1708:519;;;;;;;:::o;2232:274::-;2361:3;2399:6;2393:13;2415:53;2461:6;2456:3;2449:4;2441:6;2437:17;2415:53;:::i;:::-;2484:16;;;;;2232:274;-1:-1:-1;;2232:274:1:o;3879:383::-;4028:2;4017:9;4010:21;3991:4;4060:6;4054:13;4103:6;4098:2;4087:9;4083:18;4076:34;4119:66;4178:6;4173:2;4162:9;4158:18;4153:2;4145:6;4141:15;4119:66;:::i;:::-;4246:2;4225:15;-1:-1:-1;;4221:29:1;4206:45;;;;4253:2;4202:54;;3879:383;-1:-1:-1;;3879:383:1:o;5696:328::-;5898:2;5880:21;;;5937:1;5917:18;;;5910:29;-1:-1:-1;;;5970:2:1;5955:18;;5948:35;6015:2;6000:18;;5696:328::o;7668:128::-;7708:3;7739:1;7735:6;7732:1;7729:13;7726:39;;;7745:18;;:::i;:::-;-1:-1:-1;7781:9:1;;7668:128::o;7801:217::-;7841:1;7867;7857:132;;7911:10;7906:3;7902:20;7899:1;7892:31;7946:4;7943:1;7936:15;7974:4;7971:1;7964:15;7857:132;-1:-1:-1;8003:9:1;;7801:217::o;8023:168::-;8063:7;8129:1;8125;8121:6;8117:14;8114:1;8111:21;8106:1;8099:9;8092:17;8088:45;8085:71;;;8136:18;;:::i;:::-;-1:-1:-1;8176:9:1;;8023:168::o;8196:125::-;8236:4;8264:1;8261;8258:8;8255:34;;;8269:18;;:::i;:::-;-1:-1:-1;8306:9:1;;8196:125::o;8326:258::-;8398:1;8408:113;8422:6;8419:1;8416:13;8408:113;;;8498:11;;;8492:18;8479:11;;;8472:39;8444:2;8437:10;8408:113;;;8539:6;8536:1;8533:13;8530:48;;;-1:-1:-1;;8574:1:1;8556:16;;8549:27;8326:258::o;8589:127::-;8650:10;8645:3;8641:20;8638:1;8631:31;8681:4;8678:1;8671:15;8705:4;8702:1;8695:15;8721:118;8807:5;8800:13;8793:21;8786:5;8783:32;8773:60;;8829:1;8826;8819:12
Swarm Source
ipfs://b4207872d9edf254af613682fb596fc9a023caba7e2be72eda63d5b5e88b9b74
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.