Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 428 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim | 12675420 | 1307 days ago | IN | 0 ETH | 0.00040681 | ||||
Claim | 12675405 | 1307 days ago | IN | 0 ETH | 0.00040681 | ||||
Claim | 12266956 | 1370 days ago | IN | 0 ETH | 0.007981 | ||||
Claim | 12150938 | 1388 days ago | IN | 0 ETH | 0.0142885 | ||||
Claim | 12139018 | 1390 days ago | IN | 0 ETH | 0.00815285 | ||||
Claim | 12131139 | 1391 days ago | IN | 0 ETH | 0.00714425 | ||||
Claim | 12116630 | 1394 days ago | IN | 0 ETH | 0.011767 | ||||
Claim | 12112953 | 1394 days ago | IN | 0 ETH | 0.00748045 | ||||
Claim | 12080670 | 1399 days ago | IN | 0 ETH | 0.0075645 | ||||
Claim | 12024709 | 1408 days ago | IN | 0 ETH | 0.0141204 | ||||
Claim | 12007389 | 1410 days ago | IN | 0 ETH | 0.00983385 | ||||
Claim | 11997932 | 1412 days ago | IN | 0 ETH | 0.00815285 | ||||
Claim | 11970360 | 1416 days ago | IN | 0 ETH | 0.00630375 | ||||
Claim | 11962447 | 1417 days ago | IN | 0 ETH | 0.00893115 | ||||
Claim | 11946500 | 1420 days ago | IN | 0 ETH | 0.0068921 | ||||
Claim | 11928910 | 1422 days ago | IN | 0 ETH | 0.01084245 | ||||
Claim | 11903188 | 1426 days ago | IN | 0 ETH | 0.00764855 | ||||
Claim | 11884380 | 1429 days ago | IN | 0 ETH | 0.01176532 | ||||
Claim | 11884154 | 1429 days ago | IN | 0 ETH | 0.00455312 | ||||
Claim | 11884153 | 1429 days ago | IN | 0 ETH | 0.00848905 | ||||
Claim | 11864101 | 1432 days ago | IN | 0 ETH | 0.00966575 | ||||
Claim | 11862625 | 1433 days ago | IN | 0 ETH | 0.00938916 | ||||
Claim | 11856317 | 1434 days ago | IN | 0 ETH | 0.00882525 | ||||
Claim | 11846469 | 1435 days ago | IN | 0 ETH | 0.01365812 | ||||
Claim | 11846180 | 1435 days ago | IN | 0 ETH | 0.0079107 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
CompensationClaims
Compiler Version
v0.5.11+commit.22be8592
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-01-13 */ /* * Origin Protocol * https://originprotocol.com * * Released under the MIT license * https://github.com/OriginProtocol/origin-dollar * * Copyright 2020 Origin Protocol, Inc * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ // File: @openzeppelin/upgrades/contracts/Initializable.sol pragma solidity >=0.4.24 <0.7.0; /** * @title Initializable * * @dev Helper contract to support initializer functions. To use it, replace * the constructor with a function that has the `initializer` modifier. * WARNING: Unlike constructors, initializer functions must be manually * invoked. This applies both to deploying an Initializable contract, as well * as extending an Initializable contract via inheritance. * WARNING: When used with inheritance, manual care must be taken to not invoke * a parent initializer twice, or ensure that all initializers are idempotent, * because this is not dealt with automatically as with constructors. */ contract Initializable { /** * @dev Indicates that the contract has been initialized. */ bool private initialized; /** * @dev Indicates that the contract is in the process of being initialized. */ bool private initializing; /** * @dev Modifier to use in the initializer function of a contract. */ modifier initializer() { require(initializing || isConstructor() || !initialized, "Contract instance has already been initialized"); bool isTopLevelCall = !initializing; if (isTopLevelCall) { initializing = true; initialized = true; } _; if (isTopLevelCall) { initializing = false; } } /// @dev Returns true if and only if the function is running in the constructor function isConstructor() private view returns (bool) { // extcodesize checks the size of the code stored in an address, and // address returns the current address. Since the code is still not // deployed when running a constructor, any checks on its code size will // yield zero, making it an effective way to detect if a contract is // under construction or not. address self = address(this); uint256 cs; assembly { cs := extcodesize(self) } return cs == 0; } // Reserved storage space to allow for layout changes in the future. uint256[50] private ______gap; } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol pragma solidity ^0.5.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * 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.5.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, 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) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. * * _Available since v2.4.0._ */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message 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. * * _Available since v2.4.0._ */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File: @openzeppelin/contracts/utils/Address.sol pragma solidity ^0.5.5; /** * @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) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Converts an `address` into `address payable`. Note that this is * simply a type cast: the actual underlying value is not changed. * * _Available since v2.4.0._ */ function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } /** * @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]. * * _Available since v2.4.0._ */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-call-value (bool success, ) = recipient.call.value(amount)(""); require(success, "Address: unable to send value, recipient may have reverted"); } } // File: @openzeppelin/contracts/token/ERC20/SafeERC20.sol pragma solidity ^0.5.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "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. // A Solidity high level call has three parts: // 1. The target address is checked to verify it contains contract code // 2. The call itself is made, and success asserted // 3. The return value is decoded, which in turn checks the size of the returned data. // solhint-disable-next-line max-line-length require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // File: contracts/governance/Governable.sol pragma solidity 0.5.11; /** * @title OUSD Governable Contract * @dev Copy of the openzeppelin Ownable.sol contract with nomenclature change * from owner to governor and renounce methods removed. Does not use * Context.sol like Ownable.sol does for simplification. * @author Origin Protocol Inc */ contract Governable { // Storage position of the owner and pendingOwner of the contract // keccak256("OUSD.governor"); bytes32 private constant governorPosition = 0x7bea13895fa79d2831e0a9e28edede30099005a50d652d8957cf8a607ee6ca4a; // keccak256("OUSD.pending.governor"); bytes32 private constant pendingGovernorPosition = 0x44c4d30b2eaad5130ad70c3ba6972730566f3e6359ab83e800d905c61b1c51db; // keccak256("OUSD.reentry.status"); bytes32 private constant reentryStatusPosition = 0x53bf423e48ed90e97d02ab0ebab13b2a235a6bfbe9c321847d5c175333ac4535; // See OpenZeppelin ReentrancyGuard implementation uint256 constant _NOT_ENTERED = 1; uint256 constant _ENTERED = 2; event PendingGovernorshipTransfer( address indexed previousGovernor, address indexed newGovernor ); event GovernorshipTransferred( address indexed previousGovernor, address indexed newGovernor ); /** * @dev Initializes the contract setting the deployer as the initial Governor. */ constructor() internal { _setGovernor(msg.sender); emit GovernorshipTransferred(address(0), _governor()); } /** * @dev Returns the address of the current Governor. */ function governor() public view returns (address) { return _governor(); } /** * @dev Returns the address of the current Governor. */ function _governor() internal view returns (address governorOut) { bytes32 position = governorPosition; assembly { governorOut := sload(position) } } /** * @dev Returns the address of the pending Governor. */ function _pendingGovernor() internal view returns (address pendingGovernor) { bytes32 position = pendingGovernorPosition; assembly { pendingGovernor := sload(position) } } /** * @dev Throws if called by any account other than the Governor. */ modifier onlyGovernor() { require(isGovernor(), "Caller is not the Governor"); _; } /** * @dev Returns true if the caller is the current Governor. */ function isGovernor() public view returns (bool) { return msg.sender == _governor(); } function _setGovernor(address newGovernor) internal { bytes32 position = governorPosition; assembly { sstore(position, newGovernor) } } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { bytes32 position = reentryStatusPosition; uint256 _reentry_status; assembly { _reentry_status := sload(position) } // On the first call to nonReentrant, _notEntered will be true require(_reentry_status != _ENTERED, "Reentrant call"); // Any calls to nonReentrant after this point will fail assembly { sstore(position, _ENTERED) } _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) assembly { sstore(position, _NOT_ENTERED) } } function _setPendingGovernor(address newGovernor) internal { bytes32 position = pendingGovernorPosition; assembly { sstore(position, newGovernor) } } /** * @dev Transfers Governance of the contract to a new account (`newGovernor`). * Can only be called by the current Governor. Must be claimed for this to complete * @param _newGovernor Address of the new Governor */ function transferGovernance(address _newGovernor) external onlyGovernor { _setPendingGovernor(_newGovernor); emit PendingGovernorshipTransfer(_governor(), _newGovernor); } /** * @dev Claim Governance of the contract to a new account (`newGovernor`). * Can only be called by the new Governor. */ function claimGovernance() external { require( msg.sender == _pendingGovernor(), "Only the pending Governor can complete the claim" ); _changeGovernor(msg.sender); } /** * @dev Change Governance of the contract to a new account (`newGovernor`). * @param _newGovernor Address of the new Governor */ function _changeGovernor(address _newGovernor) internal { require(_newGovernor != address(0), "New Governor is address(0)"); emit GovernorshipTransferred(_governor(), _newGovernor); _setGovernor(_newGovernor); } } // File: contracts/compensation/CompensationClaims.sol pragma solidity 0.5.11; /** * @title Compensation Claims * @author Origin Protocol Inc * @dev Airdrop for ERC20 tokens. * * Provides a coin airdrop with a verification period in which everyone * can check that all claims are correct before any actual funds are moved * to the contract. * * - Users can claim funds during the claim period. * * - The adjuster can set the amount of each user's claim, * but only when unlocked, and not during the claim period. * * - The governor can unlock and lock the adjuster, outside the claim period. * - The governor can start the claim period, if it's not started. * - The governor can collect any remaining funds after the claim period is over. * * Intended use sequence: * * 1. Governor unlocks the adjuster * 2. Adjuster uploads claims * 3. Governor locks the adjuster * 4. Everyone verifies that the claim amounts and totals are correct * 5. Payout funds are moved to the contract * 6. The claim period starts * 7. Users claim funds * 8. The claim period ends * 9. Governor can collect any remaing funds * */ contract CompensationClaims is Governable { address public adjuster; address public token; uint256 public end; uint256 public totalClaims; mapping(address => uint256) claims; bool public isAdjusterLocked; using SafeMath for uint256; event Claim(address indexed recipient, uint256 amount); event ClaimSet(address indexed recipient, uint256 amount); event Start(uint256 end); event Lock(); event Unlock(); event Collect(address indexed coin, uint256 amount); constructor(address _token, address _adjuster) public onlyGovernor { token = _token; adjuster = _adjuster; isAdjusterLocked = true; } function balanceOf(address _account) external view returns (uint256) { return claims[_account]; } function decimals() external view returns (uint8) { return IERC20Decimals(token).decimals(); } /* -- User -- */ function claim(address _recipient) external onlyInClaimPeriod nonReentrant { uint256 amount = claims[_recipient]; require(amount > 0, "Amount must be greater than 0"); claims[_recipient] = 0; totalClaims = totalClaims.sub(amount); SafeERC20.safeTransfer(IERC20(token), _recipient, amount); emit Claim(_recipient, amount); } /* -- Adjustor -- */ function setClaims( address[] calldata _addresses, uint256[] calldata _amounts ) external notInClaimPeriod onlyUnlockedAdjuster { require( _addresses.length == _amounts.length, "Addresses and amounts must match" ); uint256 len = _addresses.length; for (uint256 i = 0; i < len; i++) { address recipient = _addresses[i]; uint256 newAmount = _amounts[i]; uint256 oldAmount = claims[recipient]; claims[recipient] = newAmount; totalClaims = totalClaims.add(newAmount).sub(oldAmount); emit ClaimSet(recipient, newAmount); } } /* -- Governor -- */ function lockAdjuster() external onlyGovernor notInClaimPeriod { _lockAdjuster(); } function _lockAdjuster() internal { isAdjusterLocked = true; emit Lock(); } function unlockAdjuster() external onlyGovernor notInClaimPeriod { isAdjusterLocked = false; emit Unlock(); } function start(uint256 _seconds) external onlyGovernor notInClaimPeriod nonReentrant { require(totalClaims > 0, "No claims"); uint256 funding = IERC20(token).balanceOf(address(this)); require(funding >= totalClaims, "Insufficient funds for all claims"); _lockAdjuster(); end = block.timestamp.add(_seconds); require(end.sub(block.timestamp) < 31622400, "Duration too long"); // 31622400 = 366*24*60*60 emit Start(end); } function collect(address _coin) external onlyGovernor notInClaimPeriod nonReentrant { uint256 amount = IERC20(_coin).balanceOf(address(this)); SafeERC20.safeTransfer(IERC20(_coin), address(governor()), amount); emit Collect(_coin, amount); } /* -- modifiers -- */ modifier onlyInClaimPeriod() { require(block.timestamp <= end, "Should be in claim period"); _; } modifier notInClaimPeriod() { require(block.timestamp > end, "Should not be in claim period"); _; } modifier onlyUnlockedAdjuster() { require(isAdjusterLocked == false, "Adjuster must be unlocked"); require(msg.sender == adjuster, "Must be adjuster"); _; } } interface IERC20Decimals { function decimals() external view returns (uint8); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"internalType":"address","name":"_coin","type":"address"}],"name":"collect","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"governor","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_recipient","type":"address"}],"name":"claim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"setClaims","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalClaims","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unlockAdjuster","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimGovernance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_seconds","type":"uint256"}],"name":"start","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isAdjusterLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adjuster","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isGovernor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newGovernor","type":"address"}],"name":"transferGovernance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"lockAdjuster","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"end","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_adjuster","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"end","type":"uint256"}],"name":"Start","type":"event"},{"anonymous":false,"inputs":[],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"coin","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Collect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernor","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernor","type":"address"}],"name":"PendingGovernorshipTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernor","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernor","type":"address"}],"name":"GovernorshipTransferred","type":"event"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620016b9380380620016b9833981810160405260408110156200003757600080fd5b50805160209091015162000054336001600160e01b036200016816565b620000676001600160e01b036200017b16565b6001600160a01b031660006001600160a01b03167fc7c0c772add429241571afb3805861fb3cfa2af374534088b76cdb4325a87e9a60405160405180910390a3620000ba6001600160e01b036200018f16565b6200012657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f43616c6c6572206973206e6f742074686520476f7665726e6f72000000000000604482015290519081900360640190fd5b600180546001600160a01b039384166001600160a01b031991821617825560008054939094169216919091179091556005805460ff19169091179055620001bd565b6000805160206200169983398151915255565b600080516020620016998339815191525490565b6000620001a46001600160e01b036200017b16565b6001600160a01b0316336001600160a01b031614905090565b6114cc80620001cd6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a2578063c7af335211610071578063c7af3352146102f3578063d38bfff4146102fb578063e96ea84c14610321578063efbe1c1c14610329578063fc0c546a146103315761010b565b806370a082311461028c57806395805dad146102b2578063a99cb75f146102cf578063be989523146102eb5761010b565b80633b650d29116100de5780633b650d29146101a057806341c6138314610262578063524549861461027c5780635d36b190146102845761010b565b806306ec16f8146101105780630c340a24146101385780631e83409a1461015c578063313ce56714610182575b600080fd5b6101366004803603602081101561012657600080fd5b50356001600160a01b0316610339565b005b610140610504565b604080516001600160a01b039092168252519081900360200190f35b6101366004803603602081101561017257600080fd5b50356001600160a01b0316610513565b61018a6106d1565b6040805160ff9092168252519081900360200190f35b610136600480360360408110156101b657600080fd5b8101906020810181356401000000008111156101d157600080fd5b8201836020820111156101e357600080fd5b8035906020019184602083028401116401000000008311171561020557600080fd5b91939092909160208101903564010000000081111561022357600080fd5b82018360208201111561023557600080fd5b8035906020019184602083028401116401000000008311171561025757600080fd5b509092509050610747565b61026a61096b565b60408051918252519081900360200190f35b610136610971565b610136610a31565b61026a600480360360208110156102a257600080fd5b50356001600160a01b0316610a93565b610136600480360360208110156102c857600080fd5b5035610aae565b6102d7610d5c565b604080519115158252519081900360200190f35b610140610d65565b6102d7610d74565b6101366004803603602081101561031157600080fd5b50356001600160a01b0316610d97565b610136610e31565b61026a610ec4565b610140610eca565b610341610d74565b610380576040805162461bcd60e51b815260206004820152601a60248201526000805160206113dd833981519152604482015290519081900360640190fd5b60025442116103c4576040805162461bcd60e51b815260206004820152601d6024820152600080516020611448833981519152604482015290519081900360640190fd5b7f53bf423e48ed90e97d02ab0ebab13b2a235a6bfbe9c321847d5c175333ac45358054600281141561042e576040805162461bcd60e51b815260206004820152600e60248201526d1499595b9d1c985b9d0818d85b1b60921b604482015290519081900360640190fd5b60028255604080516370a0823160e01b815230600482015290516000916001600160a01b038616916370a0823191602480820192602092909190829003018186803b15801561047c57600080fd5b505afa158015610490573d6000803e3d6000fd5b505050506040513d60208110156104a657600080fd5b505190506104bc846104b6610504565b83610ed9565b6040805182815290516001600160a01b038616917f4256a058fa2b123d727576d3d31e3a272db98ee5fe264e229610ce43dc849999919081900360200190a250506001905550565b600061050e610f30565b905090565b60025442111561056a576040805162461bcd60e51b815260206004820152601960248201527f53686f756c6420626520696e20636c61696d20706572696f6400000000000000604482015290519081900360640190fd5b7f53bf423e48ed90e97d02ab0ebab13b2a235a6bfbe9c321847d5c175333ac4535805460028114156105d4576040805162461bcd60e51b815260206004820152600e60248201526d1499595b9d1c985b9d0818d85b1b60921b604482015290519081900360640190fd5b600282556001600160a01b03831660009081526004602052604090205480610643576040805162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e2030000000604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604081205560035461066f908263ffffffff610f5516565b600355600154610689906001600160a01b03168583610ed9565b6040805182815290516001600160a01b038616917f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4919081900360200190a250506001905550565b6001546040805163313ce56760e01b815290516000926001600160a01b03169163313ce567916004808301926020929190829003018186803b15801561071657600080fd5b505afa15801561072a573d6000803e3d6000fd5b505050506040513d602081101561074057600080fd5b5051905090565b600254421161078b576040805162461bcd60e51b815260206004820152601d6024820152600080516020611448833981519152604482015290519081900360640190fd5b60055460ff16156107e3576040805162461bcd60e51b815260206004820152601960248201527f41646a7573746572206d75737420626520756e6c6f636b656400000000000000604482015290519081900360640190fd5b6000546001600160a01b03163314610835576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329030b2353ab9ba32b960811b604482015290519081900360640190fd5b828114610889576040805162461bcd60e51b815260206004820181905260248201527f41646472657373657320616e6420616d6f756e7473206d757374206d61746368604482015290519081900360640190fd5b8260005b818110156109635760008686838181106108a357fe5b905060200201356001600160a01b0316905060008585848181106108c357fe5b6001600160a01b03851660009081526004602090815260409091208054919092029390930135908190556003549093506109169150829061090a908563ffffffff610f9e16565b9063ffffffff610f5516565b6003556040805183815290516001600160a01b038516917f6dafe15ce3b23ddd739e5550df1d961528643f07fca79b88151baadf149a2c73919081900360200190a250505060010161088d565b505050505050565b60035481565b610979610d74565b6109b8576040805162461bcd60e51b815260206004820152601a60248201526000805160206113dd833981519152604482015290519081900360640190fd5b60025442116109fc576040805162461bcd60e51b815260206004820152601d6024820152600080516020611448833981519152604482015290519081900360640190fd5b6005805460ff191690556040517f70e3fffea7bbb557facdee48ed7f7af5179030adef9ad0c876df039a718f359e90600090a1565b610a39610ff8565b6001600160a01b0316336001600160a01b031614610a885760405162461bcd60e51b81526004018080602001828103825260308152602001806114686030913960400191505060405180910390fd5b610a913361101d565b565b6001600160a01b031660009081526004602052604090205490565b610ab6610d74565b610af5576040805162461bcd60e51b815260206004820152601a60248201526000805160206113dd833981519152604482015290519081900360640190fd5b6002544211610b39576040805162461bcd60e51b815260206004820152601d6024820152600080516020611448833981519152604482015290519081900360640190fd5b7f53bf423e48ed90e97d02ab0ebab13b2a235a6bfbe9c321847d5c175333ac453580546002811415610ba3576040805162461bcd60e51b815260206004820152600e60248201526d1499595b9d1c985b9d0818d85b1b60921b604482015290519081900360640190fd5b60028255600060035411610bea576040805162461bcd60e51b81526020600482015260096024820152684e6f20636c61696d7360b81b604482015290519081900360640190fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610c3557600080fd5b505afa158015610c49573d6000803e3d6000fd5b505050506040513d6020811015610c5f57600080fd5b5051600354909150811015610ca55760405162461bcd60e51b81526004018080602001828103825260218152602001806113fd6021913960400191505060405180910390fd5b610cad6110cb565b610cbd428563ffffffff610f9e16565b60028190556301e2850090610cd8904263ffffffff610f5516565b10610d1e576040805162461bcd60e51b81526020600482015260116024820152704475726174696f6e20746f6f206c6f6e6760781b604482015290519081900360640190fd5b60025460408051918252517ff06a29c94c6f4edc1085072972d9441f7603e81c8535a308f214285d0653c8509181900360200190a150506001905550565b60055460ff1681565b6000546001600160a01b031681565b6000610d7e610f30565b6001600160a01b0316336001600160a01b031614905090565b610d9f610d74565b610dde576040805162461bcd60e51b815260206004820152601a60248201526000805160206113dd833981519152604482015290519081900360640190fd5b610de781611103565b806001600160a01b0316610df9610f30565b6001600160a01b03167fa39cc5eb22d0f34d8beaefee8a3f17cc229c1a1d1ef87a5ad47313487b1c4f0d60405160405180910390a350565b610e39610d74565b610e78576040805162461bcd60e51b815260206004820152601a60248201526000805160206113dd833981519152604482015290519081900360640190fd5b6002544211610ebc576040805162461bcd60e51b815260206004820152601d6024820152600080516020611448833981519152604482015290519081900360640190fd5b610a916110cb565b60025481565b6001546001600160a01b031681565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610f2b908490611127565b505050565b7f7bea13895fa79d2831e0a9e28edede30099005a50d652d8957cf8a607ee6ca4a5490565b6000610f9783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112e5565b9392505050565b600082820183811015610f97576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b7f44c4d30b2eaad5130ad70c3ba6972730566f3e6359ab83e800d905c61b1c51db5490565b6001600160a01b038116611078576040805162461bcd60e51b815260206004820152601a60248201527f4e657720476f7665726e6f722069732061646472657373283029000000000000604482015290519081900360640190fd5b806001600160a01b031661108a610f30565b6001600160a01b03167fc7c0c772add429241571afb3805861fb3cfa2af374534088b76cdb4325a87e9a60405160405180910390a36110c88161137c565b50565b6005805460ff191660011790556040517f46620e39f4e119bf05f13544f8ef38338fc06c17f6b731c7f95bee356572db9690600090a1565b7f44c4d30b2eaad5130ad70c3ba6972730566f3e6359ab83e800d905c61b1c51db55565b611139826001600160a01b03166113a0565b61118a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111c85780518252601f1990920191602091820191016111a9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461122a576040519150601f19603f3d011682016040523d82523d6000602084013e61122f565b606091505b509150915081611286576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112df578080602001905160208110156112a257600080fd5b50516112df5760405162461bcd60e51b815260040180806020018281038252602a81526020018061141e602a913960400191505060405180910390fd5b50505050565b600081848411156113745760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611339578181015183820152602001611321565b50505050905090810190601f1680156113665780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b7f7bea13895fa79d2831e0a9e28edede30099005a50d652d8957cf8a607ee6ca4a55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906113d457508115155b94935050505056fe43616c6c6572206973206e6f742074686520476f7665726e6f72000000000000496e73756666696369656e742066756e647320666f7220616c6c20636c61696d735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656453686f756c64206e6f7420626520696e20636c61696d20706572696f640000004f6e6c79207468652070656e64696e6720476f7665726e6f722063616e20636f6d706c6574652074686520636c61696da265627a7a723158204d165f4d46050bf4b493a480fedccc553f9b06d6b7a69d965a479cafb11a424264736f6c634300050b00327bea13895fa79d2831e0a9e28edede30099005a50d652d8957cf8a607ee6ca4a0000000000000000000000002a8e1e676ec238d8a992307b495b45b3feaa5e8600000000000000000000000071f78361537a6f7b6818e7a760c8bc0146d93f50
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a2578063c7af335211610071578063c7af3352146102f3578063d38bfff4146102fb578063e96ea84c14610321578063efbe1c1c14610329578063fc0c546a146103315761010b565b806370a082311461028c57806395805dad146102b2578063a99cb75f146102cf578063be989523146102eb5761010b565b80633b650d29116100de5780633b650d29146101a057806341c6138314610262578063524549861461027c5780635d36b190146102845761010b565b806306ec16f8146101105780630c340a24146101385780631e83409a1461015c578063313ce56714610182575b600080fd5b6101366004803603602081101561012657600080fd5b50356001600160a01b0316610339565b005b610140610504565b604080516001600160a01b039092168252519081900360200190f35b6101366004803603602081101561017257600080fd5b50356001600160a01b0316610513565b61018a6106d1565b6040805160ff9092168252519081900360200190f35b610136600480360360408110156101b657600080fd5b8101906020810181356401000000008111156101d157600080fd5b8201836020820111156101e357600080fd5b8035906020019184602083028401116401000000008311171561020557600080fd5b91939092909160208101903564010000000081111561022357600080fd5b82018360208201111561023557600080fd5b8035906020019184602083028401116401000000008311171561025757600080fd5b509092509050610747565b61026a61096b565b60408051918252519081900360200190f35b610136610971565b610136610a31565b61026a600480360360208110156102a257600080fd5b50356001600160a01b0316610a93565b610136600480360360208110156102c857600080fd5b5035610aae565b6102d7610d5c565b604080519115158252519081900360200190f35b610140610d65565b6102d7610d74565b6101366004803603602081101561031157600080fd5b50356001600160a01b0316610d97565b610136610e31565b61026a610ec4565b610140610eca565b610341610d74565b610380576040805162461bcd60e51b815260206004820152601a60248201526000805160206113dd833981519152604482015290519081900360640190fd5b60025442116103c4576040805162461bcd60e51b815260206004820152601d6024820152600080516020611448833981519152604482015290519081900360640190fd5b7f53bf423e48ed90e97d02ab0ebab13b2a235a6bfbe9c321847d5c175333ac45358054600281141561042e576040805162461bcd60e51b815260206004820152600e60248201526d1499595b9d1c985b9d0818d85b1b60921b604482015290519081900360640190fd5b60028255604080516370a0823160e01b815230600482015290516000916001600160a01b038616916370a0823191602480820192602092909190829003018186803b15801561047c57600080fd5b505afa158015610490573d6000803e3d6000fd5b505050506040513d60208110156104a657600080fd5b505190506104bc846104b6610504565b83610ed9565b6040805182815290516001600160a01b038616917f4256a058fa2b123d727576d3d31e3a272db98ee5fe264e229610ce43dc849999919081900360200190a250506001905550565b600061050e610f30565b905090565b60025442111561056a576040805162461bcd60e51b815260206004820152601960248201527f53686f756c6420626520696e20636c61696d20706572696f6400000000000000604482015290519081900360640190fd5b7f53bf423e48ed90e97d02ab0ebab13b2a235a6bfbe9c321847d5c175333ac4535805460028114156105d4576040805162461bcd60e51b815260206004820152600e60248201526d1499595b9d1c985b9d0818d85b1b60921b604482015290519081900360640190fd5b600282556001600160a01b03831660009081526004602052604090205480610643576040805162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e2030000000604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604081205560035461066f908263ffffffff610f5516565b600355600154610689906001600160a01b03168583610ed9565b6040805182815290516001600160a01b038616917f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4919081900360200190a250506001905550565b6001546040805163313ce56760e01b815290516000926001600160a01b03169163313ce567916004808301926020929190829003018186803b15801561071657600080fd5b505afa15801561072a573d6000803e3d6000fd5b505050506040513d602081101561074057600080fd5b5051905090565b600254421161078b576040805162461bcd60e51b815260206004820152601d6024820152600080516020611448833981519152604482015290519081900360640190fd5b60055460ff16156107e3576040805162461bcd60e51b815260206004820152601960248201527f41646a7573746572206d75737420626520756e6c6f636b656400000000000000604482015290519081900360640190fd5b6000546001600160a01b03163314610835576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329030b2353ab9ba32b960811b604482015290519081900360640190fd5b828114610889576040805162461bcd60e51b815260206004820181905260248201527f41646472657373657320616e6420616d6f756e7473206d757374206d61746368604482015290519081900360640190fd5b8260005b818110156109635760008686838181106108a357fe5b905060200201356001600160a01b0316905060008585848181106108c357fe5b6001600160a01b03851660009081526004602090815260409091208054919092029390930135908190556003549093506109169150829061090a908563ffffffff610f9e16565b9063ffffffff610f5516565b6003556040805183815290516001600160a01b038516917f6dafe15ce3b23ddd739e5550df1d961528643f07fca79b88151baadf149a2c73919081900360200190a250505060010161088d565b505050505050565b60035481565b610979610d74565b6109b8576040805162461bcd60e51b815260206004820152601a60248201526000805160206113dd833981519152604482015290519081900360640190fd5b60025442116109fc576040805162461bcd60e51b815260206004820152601d6024820152600080516020611448833981519152604482015290519081900360640190fd5b6005805460ff191690556040517f70e3fffea7bbb557facdee48ed7f7af5179030adef9ad0c876df039a718f359e90600090a1565b610a39610ff8565b6001600160a01b0316336001600160a01b031614610a885760405162461bcd60e51b81526004018080602001828103825260308152602001806114686030913960400191505060405180910390fd5b610a913361101d565b565b6001600160a01b031660009081526004602052604090205490565b610ab6610d74565b610af5576040805162461bcd60e51b815260206004820152601a60248201526000805160206113dd833981519152604482015290519081900360640190fd5b6002544211610b39576040805162461bcd60e51b815260206004820152601d6024820152600080516020611448833981519152604482015290519081900360640190fd5b7f53bf423e48ed90e97d02ab0ebab13b2a235a6bfbe9c321847d5c175333ac453580546002811415610ba3576040805162461bcd60e51b815260206004820152600e60248201526d1499595b9d1c985b9d0818d85b1b60921b604482015290519081900360640190fd5b60028255600060035411610bea576040805162461bcd60e51b81526020600482015260096024820152684e6f20636c61696d7360b81b604482015290519081900360640190fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610c3557600080fd5b505afa158015610c49573d6000803e3d6000fd5b505050506040513d6020811015610c5f57600080fd5b5051600354909150811015610ca55760405162461bcd60e51b81526004018080602001828103825260218152602001806113fd6021913960400191505060405180910390fd5b610cad6110cb565b610cbd428563ffffffff610f9e16565b60028190556301e2850090610cd8904263ffffffff610f5516565b10610d1e576040805162461bcd60e51b81526020600482015260116024820152704475726174696f6e20746f6f206c6f6e6760781b604482015290519081900360640190fd5b60025460408051918252517ff06a29c94c6f4edc1085072972d9441f7603e81c8535a308f214285d0653c8509181900360200190a150506001905550565b60055460ff1681565b6000546001600160a01b031681565b6000610d7e610f30565b6001600160a01b0316336001600160a01b031614905090565b610d9f610d74565b610dde576040805162461bcd60e51b815260206004820152601a60248201526000805160206113dd833981519152604482015290519081900360640190fd5b610de781611103565b806001600160a01b0316610df9610f30565b6001600160a01b03167fa39cc5eb22d0f34d8beaefee8a3f17cc229c1a1d1ef87a5ad47313487b1c4f0d60405160405180910390a350565b610e39610d74565b610e78576040805162461bcd60e51b815260206004820152601a60248201526000805160206113dd833981519152604482015290519081900360640190fd5b6002544211610ebc576040805162461bcd60e51b815260206004820152601d6024820152600080516020611448833981519152604482015290519081900360640190fd5b610a916110cb565b60025481565b6001546001600160a01b031681565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610f2b908490611127565b505050565b7f7bea13895fa79d2831e0a9e28edede30099005a50d652d8957cf8a607ee6ca4a5490565b6000610f9783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112e5565b9392505050565b600082820183811015610f97576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b7f44c4d30b2eaad5130ad70c3ba6972730566f3e6359ab83e800d905c61b1c51db5490565b6001600160a01b038116611078576040805162461bcd60e51b815260206004820152601a60248201527f4e657720476f7665726e6f722069732061646472657373283029000000000000604482015290519081900360640190fd5b806001600160a01b031661108a610f30565b6001600160a01b03167fc7c0c772add429241571afb3805861fb3cfa2af374534088b76cdb4325a87e9a60405160405180910390a36110c88161137c565b50565b6005805460ff191660011790556040517f46620e39f4e119bf05f13544f8ef38338fc06c17f6b731c7f95bee356572db9690600090a1565b7f44c4d30b2eaad5130ad70c3ba6972730566f3e6359ab83e800d905c61b1c51db55565b611139826001600160a01b03166113a0565b61118a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111c85780518252601f1990920191602091820191016111a9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461122a576040519150601f19603f3d011682016040523d82523d6000602084013e61122f565b606091505b509150915081611286576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112df578080602001905160208110156112a257600080fd5b50516112df5760405162461bcd60e51b815260040180806020018281038252602a81526020018061141e602a913960400191505060405180910390fd5b50505050565b600081848411156113745760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611339578181015183820152602001611321565b50505050905090810190601f1680156113665780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b7f7bea13895fa79d2831e0a9e28edede30099005a50d652d8957cf8a607ee6ca4a55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906113d457508115155b94935050505056fe43616c6c6572206973206e6f742074686520476f7665726e6f72000000000000496e73756666696369656e742066756e647320666f7220616c6c20636c61696d735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656453686f756c64206e6f7420626520696e20636c61696d20706572696f640000004f6e6c79207468652070656e64696e6720476f7665726e6f722063616e20636f6d706c6574652074686520636c61696da265627a7a723158204d165f4d46050bf4b493a480fedccc553f9b06d6b7a69d965a479cafb11a424264736f6c634300050b0032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002a8e1e676ec238d8a992307b495b45b3feaa5e8600000000000000000000000071f78361537a6f7b6818e7a760c8bc0146d93f50
-----Decoded View---------------
Arg [0] : _token (address): 0x2A8e1E676Ec238d8A992307B495b45B3fEAa5e86
Arg [1] : _adjuster (address): 0x71F78361537A6f7B6818e7A760c8bC0146D93f50
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000002a8e1e676ec238d8a992307b495b45b3feaa5e86
Arg [1] : 00000000000000000000000071f78361537a6f7b6818e7a760c8bc0146d93f50
Deployed Bytecode Sourcemap
25445:3803:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25445:3803:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28448:314;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28448:314:0;-1:-1:-1;;;;;28448:314:0;;:::i;:::-;;20405:87;;;:::i;:::-;;;;-1:-1:-1;;;;;20405:87:0;;;;;;;;;;;;;;26410:382;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26410:382:0;-1:-1:-1;;;;;26410:382:0;;:::i;26270:108::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26828:696;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26828:696:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;26828:696:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26828:696:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;26828:696:0;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;26828:696:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26828:696:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;26828:696:0;;-1:-1:-1;26828:696:0;-1:-1:-1;26828:696:0;:::i;25576:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;27771:132;;;:::i;23570:223::-;;;:::i;26151:111::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26151:111:0;-1:-1:-1;;;;;26151:111:0;;:::i;27911:529::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27911:529:0;;:::i;25650:28::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;25494:23;;;:::i;21395:100::-;;;:::i;23222:194::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23222:194:0;-1:-1:-1;;;;;23222:194:0;;:::i;27560:97::-;;;:::i;25551:18::-;;;:::i;25524:20::-;;;:::i;28448:314::-;21241:12;:10;:12::i;:::-;21233:51;;;;;-1:-1:-1;;;21233:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21233:51:0;;;;;;;;;;;;;;;28992:3;;28974:15;:21;28966:63;;;;;-1:-1:-1;;;28966:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;28966:63:0;;;;;;;;;;;;;;;19624:66;22230:15;;19823:1;22348:27;;;22340:54;;;;;-1:-1:-1;;;22340:54:0;;;;;;;;;;;;-1:-1:-1;;;22340:54:0;;;;;;;;;;;;;;;22513:8;22496:26;;28601:38;;;-1:-1:-1;;;28601:38:0;;28633:4;28601:38;;;;;;28584:14;;-1:-1:-1;;;;;28601:23:0;;;;;:38;;;;;;;;;;;;;;;:23;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;28601:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28601:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28601:38:0;;-1:-1:-1;28650:66:0;28680:5;28696:10;:8;:10::i;:::-;28709:6;28650:22;:66::i;:::-;28732:22;;;;;;;;-1:-1:-1;;;;;28732:22:0;;;;;;;;;;;;;-1:-1:-1;;22734:12:0;22717:30;;-1:-1:-1;28448:314:0:o;20405:87::-;20446:7;20473:11;:9;:11::i;:::-;20466:18;;20405:87;:::o;26410:382::-;28866:3;;28847:15;:22;;28839:60;;;;;-1:-1:-1;;;28839:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19624:66;22230:15;;19823:1;22348:27;;;22340:54;;;;;-1:-1:-1;;;22340:54:0;;;;;;;;;;;;-1:-1:-1;;;22340:54:0;;;;;;;;;;;;;;;22513:8;22496:26;;-1:-1:-1;;;;;26513:18:0;;26496:14;26513:18;;;:6;:18;;;;;;26550:10;26542:52;;;;;-1:-1:-1;;;26542:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26605:18:0;;26626:1;26605:18;;;:6;:18;;;;;:22;26652:11;;:23;;26668:6;26652:23;:15;:23;:::i;:::-;26638:11;:37;26716:5;;26686:57;;-1:-1:-1;;;;;26716:5:0;26724:10;26736:6;26686:22;:57::i;:::-;26759:25;;;;;;;;-1:-1:-1;;;;;26759:25:0;;;;;;;;;;;;;-1:-1:-1;;22734:12:0;22717:30;;-1:-1:-1;26410:382:0:o;26270:108::-;26353:5;;26338:32;;;-1:-1:-1;;;26338:32:0;;;;26313:5;;-1:-1:-1;;;;;26353:5:0;;26338:30;;:32;;;;;;;;;;;;;;26353:5;26338:32;;;5:2:-1;;;;30:1;27;20:12;5:2;26338:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26338:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26338:32:0;;-1:-1:-1;26270:108:0;:::o;26828:696::-;28992:3;;28974:15;:21;28966:63;;;;;-1:-1:-1;;;28966:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;28966:63:0;;;;;;;;;;;;;;;29108:16;;;;:25;29100:63;;;;;-1:-1:-1;;;29100:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;29196:8;;-1:-1:-1;;;;;29196:8:0;29182:10;:22;29174:51;;;;;-1:-1:-1;;;29174:51:0;;;;;;;;;;;;-1:-1:-1;;;29174:51:0;;;;;;;;;;;;;;;27012:36;;;26990:118;;;;;-1:-1:-1;;;26990:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27133:10;27119:11;27161:356;27185:3;27181:1;:7;27161:356;;;27210:17;27230:10;;27241:1;27230:13;;;;;;;;;;;;;-1:-1:-1;;;;;27230:13:0;27210:33;;27258:17;27278:8;;27287:1;27278:11;;;;;;;-1:-1:-1;;;;;27324:17:0;;27304;27324;;;:6;27278:11;27324:17;;;;;;;;;27278:11;;;;;;;;;27356:29;;;;27414:11;;27278;;-1:-1:-1;27414:41:0;;-1:-1:-1;27324:17:0;;27414:26;;27278:11;27414:26;:15;:26;:::i;:::-;:30;:41;:30;:41;:::i;:::-;27400:11;:55;27475:30;;;;;;;;-1:-1:-1;;;;;27475:30:0;;;;;;;;;;;;;-1:-1:-1;;;27190:3:0;;27161:356;;;;29236:1;26828:696;;;;:::o;25576:26::-;;;;:::o;27771:132::-;21241:12;:10;:12::i;:::-;21233:51;;;;;-1:-1:-1;;;21233:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21233:51:0;;;;;;;;;;;;;;;28992:3;;28974:15;:21;28966:63;;;;;-1:-1:-1;;;28966:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;28966:63:0;;;;;;;;;;;;;;;27847:16;:24;;-1:-1:-1;;27847:24:0;;;27887:8;;;;27866:5;;27887:8;27771:132::o;23570:223::-;23653:18;:16;:18::i;:::-;-1:-1:-1;;;;;23639:32:0;:10;-1:-1:-1;;;;;23639:32:0;;23617:130;;;;-1:-1:-1;;;23617:130:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23758:27;23774:10;23758:15;:27::i;:::-;23570:223::o;26151:111::-;-1:-1:-1;;;;;26238:16:0;26211:7;26238:16;;;:6;:16;;;;;;;26151:111::o;27911:529::-;21241:12;:10;:12::i;:::-;21233:51;;;;;-1:-1:-1;;;21233:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21233:51:0;;;;;;;;;;;;;;;28992:3;;28974:15;:21;28966:63;;;;;-1:-1:-1;;;28966:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;28966:63:0;;;;;;;;;;;;;;;19624:66;22230:15;;19823:1;22348:27;;;22340:54;;;;;-1:-1:-1;;;22340:54:0;;;;;;;;;;;;-1:-1:-1;;;22340:54:0;;;;;;;;;;;;;;;22513:8;22503;22496:26;28070:1;28056:11;;:15;28048:37;;;;;-1:-1:-1;;;28048:37:0;;;;;;;;;;;;-1:-1:-1;;;28048:37:0;;;;;;;;;;;;;;;28121:5;;28114:38;;;-1:-1:-1;;;28114:38:0;;28146:4;28114:38;;;;;;28096:15;;-1:-1:-1;;;;;28121:5:0;;28114:23;;:38;;;;;;;;;;;;;;28121:5;28114:38;;;5:2:-1;;;;30:1;27;20:12;5:2;28114:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28114:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28114:38:0;28182:11;;28114:38;;-1:-1:-1;28171:22:0;;;28163:68;;;;-1:-1:-1;;;28163:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28242:15;:13;:15::i;:::-;28274:29;:15;28294:8;28274:29;:19;:29;:::i;:::-;28268:3;:35;;;28349:8;;28322:24;;28330:15;28322:24;:7;:24;:::i;:::-;:35;28314:65;;;;;-1:-1:-1;;;28314:65:0;;;;;;;;;;;;-1:-1:-1;;;28314:65:0;;;;;;;;;;;;;;;28428:3;;28422:10;;;;;;;;;;;;;;;;-1:-1:-1;;22734:12:0;22717:30;;-1:-1:-1;27911:529:0:o;25650:28::-;;;;;;:::o;25494:23::-;;;-1:-1:-1;;;;;25494:23:0;;:::o;21395:100::-;21438:4;21476:11;:9;:11::i;:::-;-1:-1:-1;;;;;21462:25:0;:10;-1:-1:-1;;;;;21462:25:0;;21455:32;;21395:100;:::o;23222:194::-;21241:12;:10;:12::i;:::-;21233:51;;;;;-1:-1:-1;;;21233:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21233:51:0;;;;;;;;;;;;;;;23305:33;23325:12;23305:19;:33::i;:::-;23395:12;-1:-1:-1;;;;;23354:54:0;23382:11;:9;:11::i;:::-;-1:-1:-1;;;;;23354:54:0;;;;;;;;;;;23222:194;:::o;27560:97::-;21241:12;:10;:12::i;:::-;21233:51;;;;;-1:-1:-1;;;21233:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21233:51:0;;;;;;;;;;;;;;;28992:3;;28974:15;:21;28966:63;;;;;-1:-1:-1;;;28966:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;28966:63:0;;;;;;;;;;;;;;;27634:15;:13;:15::i;25551:18::-;;;;:::o;25524:20::-;;;-1:-1:-1;;;;;25524:20:0;;:::o;15552:176::-;15661:58;;;-1:-1:-1;;;;;15661:58:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;15661:58:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;15635:85:0;;15654:5;;15635:18;:85::i;:::-;15552:176;;;:::o;20576:194::-;19270:66;20737:15;;20707:56::o;7679:136::-;7737:7;7764:43;7768:1;7771;7764:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;7757:50;7679:136;-1:-1:-1;;;7679:136:0:o;7223:181::-;7281:7;7313:5;;;7337:6;;;;7329:46;;;;;-1:-1:-1;;;7329:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;20854:248;19449:66;21069:15;;21035:60::o;23956:243::-;-1:-1:-1;;;;;24031:26:0;;24023:65;;;;;-1:-1:-1;;;24023:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;24141:12;-1:-1:-1;;;;;24104:50:0;24128:11;:9;:11::i;:::-;-1:-1:-1;;;;;24104:50:0;;;;;;;;;;;24165:26;24178:12;24165;:26::i;:::-;23956:243;:::o;27665:98::-;27710:16;:23;;-1:-1:-1;;27710:23:0;27729:4;27710:23;;;27749:6;;;;27710:16;;27749:6;27665:98::o;22773:194::-;19449:66;22920:29;22905:55::o;17591:1114::-;18195:27;18203:5;-1:-1:-1;;;;;18195:25:0;;:27::i;:::-;18187:71;;;;;-1:-1:-1;;;18187:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18332:12;18346:23;18381:5;-1:-1:-1;;;;;18373:19:0;18393:4;18373:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;18373:25:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;18331:67:0;;;;18417:7;18409:52;;;;;-1:-1:-1;;;18409:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18478:17;;:21;18474:224;;18620:10;18609:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18609:30:0;18601:85;;;;-1:-1:-1;;;18601:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17591:1114;;;;:::o;8152:192::-;8238:7;8274:12;8266:6;;;;8258:29;;;;-1:-1:-1;;;8258:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8258:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8310:5:0;;;8152:192::o;21503:180::-;19270:66;21636:29;21621:55::o;12583:619::-;12643:4;13111:20;;12954:66;13151:23;;;;;;:42;;-1:-1:-1;13178:15:0;;;13151:42;13143:51;12583:619;-1:-1:-1;;;;12583:619:0:o
Swarm Source
bzzr://4d165f4d46050bf4b493a480fedccc553f9b06d6b7a69d965a479cafb11a4242
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 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.