More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 576 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 11620036 | 1461 days ago | IN | 0 ETH | 0.00493222 | ||||
Withdraw | 11616188 | 1461 days ago | IN | 0 ETH | 0.0104784 | ||||
Withdraw | 11615929 | 1462 days ago | IN | 0 ETH | 0.00532345 | ||||
Withdraw | 11615268 | 1462 days ago | IN | 0 ETH | 0.00454819 | ||||
Claim | 11615266 | 1462 days ago | IN | 0 ETH | 0.00541868 | ||||
Claim | 11613008 | 1462 days ago | IN | 0 ETH | 0.00787558 | ||||
Claim | 11610167 | 1462 days ago | IN | 0 ETH | 0.00693801 | ||||
Withdraw | 11608130 | 1463 days ago | IN | 0 ETH | 0.01744385 | ||||
Withdraw | 11607773 | 1463 days ago | IN | 0 ETH | 0.01682466 | ||||
Withdraw | 11607495 | 1463 days ago | IN | 0 ETH | 0.01237859 | ||||
Withdraw | 11607358 | 1463 days ago | IN | 0 ETH | 0.0064191 | ||||
Withdraw | 11606795 | 1463 days ago | IN | 0 ETH | 0.01762395 | ||||
Withdraw | 11606717 | 1463 days ago | IN | 0 ETH | 0.01088954 | ||||
Claim | 11606570 | 1463 days ago | IN | 0 ETH | 0.01200089 | ||||
Withdraw | 11606550 | 1463 days ago | IN | 0 ETH | 0.00877808 | ||||
Withdraw | 11606529 | 1463 days ago | IN | 0 ETH | 0.01195961 | ||||
Withdraw | 11606486 | 1463 days ago | IN | 0 ETH | 0.01131775 | ||||
Withdraw | 11606480 | 1463 days ago | IN | 0 ETH | 0.01338411 | ||||
Withdraw | 11606390 | 1463 days ago | IN | 0 ETH | 0.0119513 | ||||
Withdraw | 11606377 | 1463 days ago | IN | 0 ETH | 0.0106591 | ||||
Withdraw | 11606370 | 1463 days ago | IN | 0 ETH | 0.00909372 | ||||
Withdraw | 11606369 | 1463 days ago | IN | 0 ETH | 0.00909372 | ||||
Withdraw | 11606369 | 1463 days ago | IN | 0 ETH | 0.01015758 | ||||
Withdraw | 11606362 | 1463 days ago | IN | 0 ETH | 0.00827725 | ||||
Withdraw | 11606362 | 1463 days ago | IN | 0 ETH | 0.01305239 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
RewardChef
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-01-05 */ // File: @openzeppelin/contracts/token/ERC20/IERC20.sol pragma solidity ^0.6.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: @openzeppelin/contracts/math/SafeMath.sol pragma solidity ^0.6.0; /** * @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. */ 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. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { 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. */ 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.6.2; /** * @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 Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/token/ERC20/SafeERC20.sol pragma solidity ^0.6.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // File: @openzeppelin/contracts/GSN/Context.sol pragma solidity ^0.6.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol pragma solidity ^0.6.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: contracts/interface/IDFI.sol pragma solidity ^0.6.0; // definition, define interface is better.. interface IToken is IERC20 { function mint(address _to, uint256 _amount) external returns (bool); } pragma solidity ^0.6.0; contract RewardChef is Ownable { using SafeMath for uint256; using SafeERC20 for IERC20; // Info of each user. struct UserInfo { uint256 amount; // How many LP tokens the user has provided. uint256 rewardDebt; // Reward debt. See explanation below. uint256 depositAt; // deposit time } // Info of each pool. struct PoolInfo { IERC20 lpToken; // Address of LP token contract. uint256 allocPoint; // How many allocation points assigned to this pool. CHIFIs to distribute per block. uint256 lastRewardBlock; // Last block number that CHIFIs distribution occurs. uint256 accPerShare; // Accumulated CHIFIs per share, times 1e12. See below. } // The TOKEN! IToken public token; // Dev address. address public devaddr; uint256 public bonusEndBlock; // tokens created per block. uint256 public initRewardPerBlock; // Bonus muliplier for early makers. uint256 public constant BONUS_MULTIPLIER = 1; uint256 public halvingPeriod = 20000; // for 3 days uint256 public halvingTimes = 0; // uint256 public pendingDuration = 24 hours; // Info of each pool. PoolInfo[] public poolInfo; // Info of each user that stakes LP tokens. mapping (uint256 => mapping (address => UserInfo)) public userInfo; // Total allocation poitns. Must be the sum of all allocation points in all pools. uint256 public totalAllocPoint = 0; // The block number when mining starts. uint256 public startBlock; event Deposit(address indexed user, uint256 indexed pid, uint256 amount); event Withdraw(address indexed user, uint256 indexed pid, uint256 amount); event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount); constructor( IToken _token, address _devaddr, uint256 _rewardPerBlock, uint256 _startBlock, uint256 _bonusEndBlock ) public { token = _token; devaddr = _devaddr; initRewardPerBlock = _rewardPerBlock; startBlock = _startBlock; bonusEndBlock = _bonusEndBlock; } function poolLength() public view returns (uint256) { return poolInfo.length; } // Add a new lp to the pool. Can only be called by the owner. // XXX DO NOT add the same LP token more than once. Rewards will be messed up if you do. function add(uint256 _allocPoint, IERC20 _lpToken, bool _withUpdate) public onlyOwner { for(uint256 i=0; i<poolLength(); i++) { require(address(_lpToken) != address(poolInfo[i].lpToken), "Duplicate Token!"); } if (_withUpdate) { massUpdatePools(); } uint256 lastRewardBlock = block.number > startBlock ? block.number : startBlock; totalAllocPoint = totalAllocPoint.add(_allocPoint); poolInfo.push(PoolInfo({ lpToken: _lpToken, allocPoint: _allocPoint, lastRewardBlock: lastRewardBlock, accPerShare: 0 })); } // Update the given pool's allocation point. Can only be called by the owner. function set(uint256 _pid, uint256 _allocPoint, uint8 _withUpdate) public onlyOwner { if (_withUpdate != 0) { massUpdatePools(); } totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint); poolInfo[_pid].allocPoint = _allocPoint; } // function updatePendingDuration(uint256 _time) external onlyOwner { // pendingDuration = _time; // } // Return reward multiplier over the given _from to _to block. function getMultiplier(uint256 _from, uint256 _to) public view returns (uint256) { if (_to <= bonusEndBlock) { return _to.sub(_from).mul(BONUS_MULTIPLIER); } else if (_from >= bonusEndBlock) { return _to.sub(_from); } else { return bonusEndBlock.sub(_from).mul(BONUS_MULTIPLIER).add( _to.sub(bonusEndBlock) ); } } // View function to see pending on frontend. function pendingReward(uint256 _pid, address _user) external view returns (uint256) { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][_user]; uint256 accPerShare = pool.accPerShare; uint256 lpSupply = pool.lpToken.balanceOf(address(this)); if (block.number > pool.lastRewardBlock && lpSupply != 0) { uint256 multiplier = getMultiplier(pool.lastRewardBlock, block.number); uint256 blockReward = getBlockReward(); uint256 reward = multiplier.mul(blockReward).mul(pool.allocPoint).div(totalAllocPoint); accPerShare = accPerShare.add(reward.mul(1e12).div(lpSupply)); } return user.amount.mul(accPerShare).div(1e12).sub(user.rewardDebt); } // Update reward vairables for all pools. Be careful of gas spending! function massUpdatePools() public { uint256 length = poolInfo.length; for (uint256 pid = 0; pid < length; ++pid) { updatePool(pid); } } function getBlockReward() public view returns (uint256) { uint256 parseHalving = block.number.sub(startBlock).div(halvingPeriod); uint256 havingFactor = 2 ** parseHalving; if (parseHalving > halvingTimes) { return 0; } return initRewardPerBlock.div(havingFactor); } // Update reward variables of the given pool to be up-to-date. function updatePool(uint256 _pid) public { PoolInfo storage pool = poolInfo[_pid]; if (block.number <= pool.lastRewardBlock) { return; } uint256 lpSupply = pool.lpToken.balanceOf(address(this)); if (lpSupply == 0) { pool.lastRewardBlock = block.number; return; } uint256 blockReward = getBlockReward(); if (blockReward <= 0) { return; } uint256 multiplier = getMultiplier(pool.lastRewardBlock, block.number); uint256 reward = multiplier.mul(blockReward).mul(pool.allocPoint).div(totalAllocPoint); // if blocks reaches the totalSupply, will mint nothing.. // if mint success, add the share bool mintRet = token.mint(address(this), reward); if(mintRet) { pool.accPerShare = pool.accPerShare.add(reward.mul(1e12).div(lpSupply)); } pool.lastRewardBlock = block.number; } // function isPending(uint256 _pid) external view returns (bool) { // UserInfo storage user = userInfo[_pid][msg.sender]; // if(block.timestamp >= user.depositAt.add(pendingDuration)) { // return false; // } // return true; // } // Deposit LP tokens to MasterChef for DFI allocation. function deposit(uint256 _pid, uint256 _amount) public { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; updatePool(_pid); if (user.amount > 0) { uint256 pending = user.amount.mul(pool.accPerShare).div(1e12).sub(user.rewardDebt); safeTransfer(msg.sender, pending); } pool.lpToken.safeTransferFrom(address(msg.sender), address(this), _amount); user.amount = user.amount.add(_amount); user.rewardDebt = user.amount.mul(pool.accPerShare).div(1e12); user.depositAt = block.timestamp; emit Deposit(msg.sender, _pid, _amount); } // Withdraw LP tokens from DfiChef. function withdraw(uint256 _pid, uint256 _amount) public { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; require(user.amount >= _amount, "withdraw: !balance"); // require(block.timestamp >= user.depositAt.add(pendingDuration) ,"withdraw: pending."); updatePool(_pid); uint256 pending = user.amount.mul(pool.accPerShare).div(1e12).sub(user.rewardDebt); safeTransfer(msg.sender, pending); user.amount = user.amount.sub(_amount); user.rewardDebt = user.amount.mul(pool.accPerShare).div(1e12); pool.lpToken.safeTransfer(address(msg.sender), _amount); emit Withdraw(msg.sender, _pid, _amount); } // claim rewards function claim(uint256 _pid) public { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; updatePool(_pid); uint256 pending = user.amount.mul(pool.accPerShare).div(1e12).sub(user.rewardDebt); safeTransfer(msg.sender, pending); user.rewardDebt = user.amount.mul(pool.accPerShare).div(1e12); } // Withdraw without caring about rewards. EMERGENCY ONLY. function emergencyWithdraw(uint256 _pid) public { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; pool.lpToken.safeTransfer(address(msg.sender), user.amount); emit EmergencyWithdraw(msg.sender, _pid, user.amount); user.amount = 0; user.rewardDebt = 0; } // Safe dif transfer function, just in case if rounding error causes pool to not have enough dfis. function safeTransfer(address _to, uint256 _amount) internal { if(_amount > 0) { uint256 rewardBalance = token.balanceOf(address(this)); if (_amount > rewardBalance) { token.transfer(_to, rewardBalance); } else { token.transfer(_to, _amount); } } } // Update dev address by the previous dev. function dev(address _devaddr) public { require(msg.sender == devaddr, "DynamicDollar.Finance: wrong dev?"); devaddr = _devaddr; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IToken","name":"_token","type":"address"},{"internalType":"address","name":"_devaddr","type":"address"},{"internalType":"uint256","name":"_rewardPerBlock","type":"uint256"},{"internalType":"uint256","name":"_startBlock","type":"uint256"},{"internalType":"uint256","name":"_bonusEndBlock","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"BONUS_MULTIPLIER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"contract IERC20","name":"_lpToken","type":"address"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bonusEndBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devaddr","type":"address"}],"name":"dev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devaddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBlockReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_from","type":"uint256"},{"internalType":"uint256","name":"_to","type":"uint256"}],"name":"getMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"halvingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"halvingTimes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initRewardPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"pendingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"contract IERC20","name":"lpToken","type":"address"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastRewardBlock","type":"uint256"},{"internalType":"uint256","name":"accPerShare","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"uint8","name":"_withUpdate","type":"uint8"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAllocPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"},{"internalType":"uint256","name":"depositAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052614e206005556000600655600060095534801561002057600080fd5b50604051611acf380380611acf833981810160405260a081101561004357600080fd5b50805160208201516040830151606084015160809094015192939192909190600061006c6100f7565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b039687166001600160a01b0319918216179091556002805495909616941693909317909355600455600a919091556003556100fb565b3390565b6119c58061010a6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c8063715018a6116100f957806393f1a40b11610097578063e2bbb15811610071578063e2bbb15814610424578063f2fde38b14610447578063f89d40861461046d578063fc0c546a14610475576101a9565b806393f1a40b146103a657806398969e82146103f0578063d49e77cd1461041c576101a9565b80638aa28550116100d35780638aa28550146103315780638d88a90e146103395780638da5cb5b1461035f5780638dbb1e3a14610383576101a9565b8063715018a6146102f55780637c42b50f146102fd5780637e98b34014610329576101a9565b8063441a3e70116101665780635312ea8e116101405780635312ea8e146102c05780635a3e251f146102dd57806360709b18146102e5578063630b5ba1146102ed576101a9565b8063441a3e701461027857806348cd4cb11461029b57806351eb05a6146102a3576101a9565b8063081e3eda146101ae5780631526fe27146101c857806317caf6f1146102155780631aed65531461021d5780631eaaa04514610225578063379607f51461025b575b600080fd5b6101b661047d565b60408051918252519081900360200190f35b6101e5600480360360208110156101de57600080fd5b5035610484565b604080516001600160a01b0390951685526020850193909352838301919091526060830152519081900360800190f35b6101b66104c5565b6101b66104cb565b6102596004803603606081101561023b57600080fd5b508035906001600160a01b03602082013516906040013515156104d1565b005b6102596004803603602081101561027157600080fd5b50356106d8565b6102596004803603604081101561028e57600080fd5b5080359060200135610787565b6101b66108ce565b610259600480360360208110156102b957600080fd5b50356108d4565b610259600480360360208110156102d657600080fd5b5035610aac565b6101b6610b47565b6101b6610b4d565b610259610b53565b610259610b76565b6102596004803603606081101561031357600080fd5b508035906020810135906040013560ff16610c18565b6101b6610cec565b6101b6610cf2565b6102596004803603602081101561034f57600080fd5b50356001600160a01b0316610cf7565b610367610d62565b604080516001600160a01b039092168252519081900360200190f35b6101b66004803603604081101561039957600080fd5b5080359060200135610d71565b6103d2600480360360408110156103bc57600080fd5b50803590602001356001600160a01b0316610ddd565b60408051938452602084019290925282820152519081900360600190f35b6101b66004803603604081101561040657600080fd5b50803590602001356001600160a01b0316610e09565b610367610f76565b6102596004803603604081101561043a57600080fd5b5080359060200135610f85565b6102596004803603602081101561045d57600080fd5b50356001600160a01b0316611090565b6101b6611188565b6103676111d9565b6007545b90565b6007818154811061049157fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b039092169350919084565b60095481565b60035481565b6104d96111e8565b6000546001600160a01b03908116911614610529576040805162461bcd60e51b81526020600482018190526024820152600080516020611946833981519152604482015290519081900360640190fd5b60005b61053461047d565b8110156105b4576007818154811061054857fe5b60009182526020909120600490910201546001600160a01b03848116911614156105ac576040805162461bcd60e51b815260206004820152601060248201526f4475706c696361746520546f6b656e2160801b604482015290519081900360640190fd5b60010161052c565b5080156105c3576105c3610b53565b6000600a5443116105d657600a546105d8565b435b6009549091506105e890856111ec565b600955604080516080810182526001600160a01b0394851681526020810195865290810191825260006060820181815260078054600181018255925291517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600490920291820180546001600160a01b031916919096161790945593517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689840155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555090517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b90910155565b6000600782815481106106e757fe5b60009182526020808320858452600882526040808520338652909252922060049091029091019150610718836108d4565b6000610752826001015461074c64e8d4a510006107468760030154876000015461124d90919063ffffffff16565b906112a6565b906112e8565b905061075e338261132a565b600383015482546107799164e8d4a51000916107469161124d565b826001018190555050505050565b60006007838154811061079657fe5b600091825260208083208684526008825260408085203386529092529220805460049092029092019250831115610809576040805162461bcd60e51b815260206004820152601260248201527177697468647261773a202162616c616e636560701b604482015290519081900360640190fd5b610812846108d4565b6000610840826001015461074c64e8d4a510006107468760030154876000015461124d90919063ffffffff16565b905061084c338261132a565b815461085890856112e8565b80835560038401546108759164e8d4a5100091610746919061124d565b60018301558254610890906001600160a01b031633866114c1565b604080518581529051869133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a35050505050565b600a5481565b6000600782815481106108e357fe5b90600052602060002090600402019050806002015443116109045750610aa9565b8054604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561094e57600080fd5b505afa158015610962573d6000803e3d6000fd5b505050506040513d602081101561097857600080fd5b505190508061098e575043600290910155610aa9565b6000610998611188565b9050600081116109aa57505050610aa9565b60006109ba846002015443610d71565b905060006109e560095461074687600101546109df878761124d90919063ffffffff16565b9061124d565b600154604080516340c10f1960e01b81523060048201526024810184905290519293506000926001600160a01b03909216916340c10f199160448082019260209290919082900301818787803b158015610a3e57600080fd5b505af1158015610a52573d6000803e3d6000fd5b505050506040513d6020811015610a6857600080fd5b505190508015610a9957610a93610a88866107468564e8d4a5100061124d565b6003880154906111ec565b60038701555b4386600201819055505050505050505b50565b600060078281548110610abb57fe5b60009182526020808320858452600882526040808520338087529352909320805460049093029093018054909450610b00926001600160a01b039190911691906114c1565b80546040805191825251849133917fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05959181900360200190a360008082556001909101555050565b60055481565b60045481565b60075460005b81811015610b7257610b6a816108d4565b600101610b59565b5050565b610b7e6111e8565b6000546001600160a01b03908116911614610bce576040805162461bcd60e51b81526020600482018190526024820152600080516020611946833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610c206111e8565b6000546001600160a01b03908116911614610c70576040805162461bcd60e51b81526020600482018190526024820152600080516020611946833981519152604482015290519081900360640190fd5b60ff811615610c8157610c81610b53565b610cbe82610cb860078681548110610c9557fe5b9060005260206000209060040201600101546009546112e890919063ffffffff16565b906111ec565b6009819055508160078481548110610cd257fe5b906000526020600020906004020160010181905550505050565b60065481565b600181565b6002546001600160a01b03163314610d405760405162461bcd60e51b81526004018080602001828103825260218152602001806119256021913960400191505060405180910390fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b60006003548211610d9257610d8b60016109df84866112e8565b9050610dd7565b6003548310610da557610d8b82846112e8565b610d8b610dbd600354846112e890919063ffffffff16565b610cb860016109df876003546112e890919063ffffffff16565b92915050565b600860209081526000928352604080842090915290825290208054600182015460029092015490919083565b60008060078481548110610e1957fe5b600091825260208083208784526008825260408085206001600160a01b03898116875290845281862060049586029093016003810154815484516370a0823160e01b81523098810198909852935191985093969395939492909116926370a08231926024808301939192829003018186803b158015610e9757600080fd5b505afa158015610eab573d6000803e3d6000fd5b505050506040513d6020811015610ec157600080fd5b5051600285015490915043118015610ed857508015155b15610f43576000610eed856002015443610d71565b90506000610ef9611188565b90506000610f1e60095461074689600101546109df868861124d90919063ffffffff16565b9050610f3d610f36856107468464e8d4a5100061124d565b86906111ec565b94505050505b610f6b836001015461074c64e8d4a5100061074686886000015461124d90919063ffffffff16565b979650505050505050565b6002546001600160a01b031681565b600060078381548110610f9457fe5b60009182526020808320868452600882526040808520338652909252922060049091029091019150610fc5846108d4565b805415611008576000610ffa826001015461074c64e8d4a510006107468760030154876000015461124d90919063ffffffff16565b9050611006338261132a565b505b815461101f906001600160a01b0316333086611513565b805461102b90846111ec565b80825560038301546110489164e8d4a5100091610746919061124d565b6001820155426002820155604080518481529051859133917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360200190a350505050565b6110986111e8565b6000546001600160a01b039081169116146110e8576040805162461bcd60e51b81526020600482018190526024820152600080516020611946833981519152604482015290519081900360640190fd5b6001600160a01b03811661112d5760405162461bcd60e51b81526004018080602001828103825260268152602001806118de6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806111a6600554610746600a54436112e890919063ffffffff16565b905060008160020a90506006548211156111c557600092505050610481565b6004546111d290826112a6565b9250505090565b6001546001600160a01b031681565b3390565b600082820183811015611246576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60008261125c57506000610dd7565b8282028284828161126957fe5b04146112465760405162461bcd60e51b81526004018080602001828103825260218152602001806119046021913960400191505060405180910390fd5b600061124683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611573565b600061124683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611615565b8015610b7257600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561137b57600080fd5b505afa15801561138f573d6000803e3d6000fd5b505050506040513d60208110156113a557600080fd5b5051905080821115611439576001546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561140757600080fd5b505af115801561141b573d6000803e3d6000fd5b505050506040513d602081101561143157600080fd5b506114bc9050565b6001546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050506040513d60208110156114b957600080fd5b50505b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526114bc90849061166f565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261156d90859061166f565b50505050565b600081836115ff5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156115c45781810151838201526020016115ac565b50505050905090810190601f1680156115f15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161160b57fe5b0495945050505050565b600081848411156116675760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156115c45781810151838201526020016115ac565b505050900390565b60606116c4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166117209092919063ffffffff16565b8051909150156114bc578080602001905160208110156116e357600080fd5b50516114bc5760405162461bcd60e51b815260040180806020018281038252602a815260200180611966602a913960400191505060405180910390fd5b606061172f8484600085611737565b949350505050565b6060611742856118a4565b611793576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106117d25780518252601f1990920191602091820191016117b3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611834576040519150601f19603f3d011682016040523d82523d6000602084013e611839565b606091505b5091509150811561184d57915061172f9050565b80511561185d5780518082602001fd5b60405162461bcd60e51b81526020600482018181528651602484015286518793919283926044019190850190808383600083156115c45781810151838201526020016115ac565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061172f57505015159291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7744796e616d6963446f6c6c61722e46696e616e63653a2077726f6e67206465763f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122090a62b36ca3788d9fc79d3c3513cbcf25de568e43d15bdb5769d4dbdf962f8d364736f6c634300060c003300000000000000000000000018aab7bbec5e5782adbfefc8420646bea6d8253400000000000000000000000068b087916d1f92ffb2be56e53e27989b8c1e6e3e0000000000000000000000000000000000000000000000003782dace9d9000000000000000000000000000000000000000000000000000000000000000b0e9740000000000000000000000000000000000000000000000000000000000b0e974
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101a95760003560e01c8063715018a6116100f957806393f1a40b11610097578063e2bbb15811610071578063e2bbb15814610424578063f2fde38b14610447578063f89d40861461046d578063fc0c546a14610475576101a9565b806393f1a40b146103a657806398969e82146103f0578063d49e77cd1461041c576101a9565b80638aa28550116100d35780638aa28550146103315780638d88a90e146103395780638da5cb5b1461035f5780638dbb1e3a14610383576101a9565b8063715018a6146102f55780637c42b50f146102fd5780637e98b34014610329576101a9565b8063441a3e70116101665780635312ea8e116101405780635312ea8e146102c05780635a3e251f146102dd57806360709b18146102e5578063630b5ba1146102ed576101a9565b8063441a3e701461027857806348cd4cb11461029b57806351eb05a6146102a3576101a9565b8063081e3eda146101ae5780631526fe27146101c857806317caf6f1146102155780631aed65531461021d5780631eaaa04514610225578063379607f51461025b575b600080fd5b6101b661047d565b60408051918252519081900360200190f35b6101e5600480360360208110156101de57600080fd5b5035610484565b604080516001600160a01b0390951685526020850193909352838301919091526060830152519081900360800190f35b6101b66104c5565b6101b66104cb565b6102596004803603606081101561023b57600080fd5b508035906001600160a01b03602082013516906040013515156104d1565b005b6102596004803603602081101561027157600080fd5b50356106d8565b6102596004803603604081101561028e57600080fd5b5080359060200135610787565b6101b66108ce565b610259600480360360208110156102b957600080fd5b50356108d4565b610259600480360360208110156102d657600080fd5b5035610aac565b6101b6610b47565b6101b6610b4d565b610259610b53565b610259610b76565b6102596004803603606081101561031357600080fd5b508035906020810135906040013560ff16610c18565b6101b6610cec565b6101b6610cf2565b6102596004803603602081101561034f57600080fd5b50356001600160a01b0316610cf7565b610367610d62565b604080516001600160a01b039092168252519081900360200190f35b6101b66004803603604081101561039957600080fd5b5080359060200135610d71565b6103d2600480360360408110156103bc57600080fd5b50803590602001356001600160a01b0316610ddd565b60408051938452602084019290925282820152519081900360600190f35b6101b66004803603604081101561040657600080fd5b50803590602001356001600160a01b0316610e09565b610367610f76565b6102596004803603604081101561043a57600080fd5b5080359060200135610f85565b6102596004803603602081101561045d57600080fd5b50356001600160a01b0316611090565b6101b6611188565b6103676111d9565b6007545b90565b6007818154811061049157fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b039092169350919084565b60095481565b60035481565b6104d96111e8565b6000546001600160a01b03908116911614610529576040805162461bcd60e51b81526020600482018190526024820152600080516020611946833981519152604482015290519081900360640190fd5b60005b61053461047d565b8110156105b4576007818154811061054857fe5b60009182526020909120600490910201546001600160a01b03848116911614156105ac576040805162461bcd60e51b815260206004820152601060248201526f4475706c696361746520546f6b656e2160801b604482015290519081900360640190fd5b60010161052c565b5080156105c3576105c3610b53565b6000600a5443116105d657600a546105d8565b435b6009549091506105e890856111ec565b600955604080516080810182526001600160a01b0394851681526020810195865290810191825260006060820181815260078054600181018255925291517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600490920291820180546001600160a01b031916919096161790945593517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689840155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555090517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b90910155565b6000600782815481106106e757fe5b60009182526020808320858452600882526040808520338652909252922060049091029091019150610718836108d4565b6000610752826001015461074c64e8d4a510006107468760030154876000015461124d90919063ffffffff16565b906112a6565b906112e8565b905061075e338261132a565b600383015482546107799164e8d4a51000916107469161124d565b826001018190555050505050565b60006007838154811061079657fe5b600091825260208083208684526008825260408085203386529092529220805460049092029092019250831115610809576040805162461bcd60e51b815260206004820152601260248201527177697468647261773a202162616c616e636560701b604482015290519081900360640190fd5b610812846108d4565b6000610840826001015461074c64e8d4a510006107468760030154876000015461124d90919063ffffffff16565b905061084c338261132a565b815461085890856112e8565b80835560038401546108759164e8d4a5100091610746919061124d565b60018301558254610890906001600160a01b031633866114c1565b604080518581529051869133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a35050505050565b600a5481565b6000600782815481106108e357fe5b90600052602060002090600402019050806002015443116109045750610aa9565b8054604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561094e57600080fd5b505afa158015610962573d6000803e3d6000fd5b505050506040513d602081101561097857600080fd5b505190508061098e575043600290910155610aa9565b6000610998611188565b9050600081116109aa57505050610aa9565b60006109ba846002015443610d71565b905060006109e560095461074687600101546109df878761124d90919063ffffffff16565b9061124d565b600154604080516340c10f1960e01b81523060048201526024810184905290519293506000926001600160a01b03909216916340c10f199160448082019260209290919082900301818787803b158015610a3e57600080fd5b505af1158015610a52573d6000803e3d6000fd5b505050506040513d6020811015610a6857600080fd5b505190508015610a9957610a93610a88866107468564e8d4a5100061124d565b6003880154906111ec565b60038701555b4386600201819055505050505050505b50565b600060078281548110610abb57fe5b60009182526020808320858452600882526040808520338087529352909320805460049093029093018054909450610b00926001600160a01b039190911691906114c1565b80546040805191825251849133917fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05959181900360200190a360008082556001909101555050565b60055481565b60045481565b60075460005b81811015610b7257610b6a816108d4565b600101610b59565b5050565b610b7e6111e8565b6000546001600160a01b03908116911614610bce576040805162461bcd60e51b81526020600482018190526024820152600080516020611946833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610c206111e8565b6000546001600160a01b03908116911614610c70576040805162461bcd60e51b81526020600482018190526024820152600080516020611946833981519152604482015290519081900360640190fd5b60ff811615610c8157610c81610b53565b610cbe82610cb860078681548110610c9557fe5b9060005260206000209060040201600101546009546112e890919063ffffffff16565b906111ec565b6009819055508160078481548110610cd257fe5b906000526020600020906004020160010181905550505050565b60065481565b600181565b6002546001600160a01b03163314610d405760405162461bcd60e51b81526004018080602001828103825260218152602001806119256021913960400191505060405180910390fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b60006003548211610d9257610d8b60016109df84866112e8565b9050610dd7565b6003548310610da557610d8b82846112e8565b610d8b610dbd600354846112e890919063ffffffff16565b610cb860016109df876003546112e890919063ffffffff16565b92915050565b600860209081526000928352604080842090915290825290208054600182015460029092015490919083565b60008060078481548110610e1957fe5b600091825260208083208784526008825260408085206001600160a01b03898116875290845281862060049586029093016003810154815484516370a0823160e01b81523098810198909852935191985093969395939492909116926370a08231926024808301939192829003018186803b158015610e9757600080fd5b505afa158015610eab573d6000803e3d6000fd5b505050506040513d6020811015610ec157600080fd5b5051600285015490915043118015610ed857508015155b15610f43576000610eed856002015443610d71565b90506000610ef9611188565b90506000610f1e60095461074689600101546109df868861124d90919063ffffffff16565b9050610f3d610f36856107468464e8d4a5100061124d565b86906111ec565b94505050505b610f6b836001015461074c64e8d4a5100061074686886000015461124d90919063ffffffff16565b979650505050505050565b6002546001600160a01b031681565b600060078381548110610f9457fe5b60009182526020808320868452600882526040808520338652909252922060049091029091019150610fc5846108d4565b805415611008576000610ffa826001015461074c64e8d4a510006107468760030154876000015461124d90919063ffffffff16565b9050611006338261132a565b505b815461101f906001600160a01b0316333086611513565b805461102b90846111ec565b80825560038301546110489164e8d4a5100091610746919061124d565b6001820155426002820155604080518481529051859133917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360200190a350505050565b6110986111e8565b6000546001600160a01b039081169116146110e8576040805162461bcd60e51b81526020600482018190526024820152600080516020611946833981519152604482015290519081900360640190fd5b6001600160a01b03811661112d5760405162461bcd60e51b81526004018080602001828103825260268152602001806118de6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806111a6600554610746600a54436112e890919063ffffffff16565b905060008160020a90506006548211156111c557600092505050610481565b6004546111d290826112a6565b9250505090565b6001546001600160a01b031681565b3390565b600082820183811015611246576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60008261125c57506000610dd7565b8282028284828161126957fe5b04146112465760405162461bcd60e51b81526004018080602001828103825260218152602001806119046021913960400191505060405180910390fd5b600061124683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611573565b600061124683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611615565b8015610b7257600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561137b57600080fd5b505afa15801561138f573d6000803e3d6000fd5b505050506040513d60208110156113a557600080fd5b5051905080821115611439576001546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561140757600080fd5b505af115801561141b573d6000803e3d6000fd5b505050506040513d602081101561143157600080fd5b506114bc9050565b6001546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050506040513d60208110156114b957600080fd5b50505b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526114bc90849061166f565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261156d90859061166f565b50505050565b600081836115ff5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156115c45781810151838201526020016115ac565b50505050905090810190601f1680156115f15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161160b57fe5b0495945050505050565b600081848411156116675760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156115c45781810151838201526020016115ac565b505050900390565b60606116c4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166117209092919063ffffffff16565b8051909150156114bc578080602001905160208110156116e357600080fd5b50516114bc5760405162461bcd60e51b815260040180806020018281038252602a815260200180611966602a913960400191505060405180910390fd5b606061172f8484600085611737565b949350505050565b6060611742856118a4565b611793576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106117d25780518252601f1990920191602091820191016117b3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611834576040519150601f19603f3d011682016040523d82523d6000602084013e611839565b606091505b5091509150811561184d57915061172f9050565b80511561185d5780518082602001fd5b60405162461bcd60e51b81526020600482018181528651602484015286518793919283926044019190850190808383600083156115c45781810151838201526020016115ac565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061172f57505015159291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7744796e616d6963446f6c6c61722e46696e616e63653a2077726f6e67206465763f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122090a62b36ca3788d9fc79d3c3513cbcf25de568e43d15bdb5769d4dbdf962f8d364736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000018aab7bbec5e5782adbfefc8420646bea6d8253400000000000000000000000068b087916d1f92ffb2be56e53e27989b8c1e6e3e0000000000000000000000000000000000000000000000003782dace9d9000000000000000000000000000000000000000000000000000000000000000b0e9740000000000000000000000000000000000000000000000000000000000b0e974
-----Decoded View---------------
Arg [0] : _token (address): 0x18Aab7bBEC5E5782adBFEFC8420646beA6D82534
Arg [1] : _devaddr (address): 0x68B087916D1F92FfB2BE56E53E27989B8c1E6e3E
Arg [2] : _rewardPerBlock (uint256): 4000000000000000000
Arg [3] : _startBlock (uint256): 11594100
Arg [4] : _bonusEndBlock (uint256): 11594100
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 00000000000000000000000018aab7bbec5e5782adbfefc8420646bea6d82534
Arg [1] : 00000000000000000000000068b087916d1f92ffb2be56e53e27989b8c1e6e3e
Arg [2] : 0000000000000000000000000000000000000000000000003782dace9d900000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000b0e974
Arg [4] : 0000000000000000000000000000000000000000000000000000000000b0e974
Deployed Bytecode Sourcemap
21671:10113:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23945:93;;;:::i;:::-;;;;;;;;;;;;;;;;22943:26;;;;;;;;;;;;;;;;-1:-1:-1;22943:26:0;;:::i;:::-;;;;-1:-1:-1;;;;;22943:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23186:34;;;:::i;22546:28::-;;;:::i;24207:666::-;;;;;;;;;;;;;;;;-1:-1:-1;24207:666:0;;;-1:-1:-1;;;;;24207:666:0;;;;;;;;;;;;:::i;:::-;;30282:394;;;;;;;;;;;;;;;;-1:-1:-1;30282:394:0;;:::i;29497:755::-;;;;;;;;;;;;;;;;-1:-1:-1;29497:755:0;;;;;;;:::i;23273:25::-;;;:::i;27418:972::-;;;;;;;;;;;;;;;;-1:-1:-1;27418:972:0;;:::i;30747:356::-;;;;;;;;;;;;;;;;-1:-1:-1;30747:356:0;;:::i;22751:39::-;;;:::i;22617:33::-;;;:::i;26843:180::-;;;:::i;20841:148::-;;;:::i;24965:320::-;;;;;;;;;;;;;;;;-1:-1:-1;24965:320:0;;;;;;;;;;;;;;:::i;22816:35::-;;;:::i;22701:44::-;;;:::i;31628:153::-;;;;;;;;;;;;;;;;-1:-1:-1;31628:153:0;-1:-1:-1;;;;;31628:153:0;;:::i;20199:79::-;;;:::i;:::-;;;;-1:-1:-1;;;;;20199:79:0;;;;;;;;;;;;;;25487:423;;;;;;;;;;;;;;;;-1:-1:-1;25487:423:0;;;;;;;:::i;23025:66::-;;;;;;;;;;;;;;;;-1:-1:-1;23025:66:0;;;;;;-1:-1:-1;;;;;23025:66:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;25971:789;;;;;;;;;;;;;;;;-1:-1:-1;25971:789:0;;;;;;-1:-1:-1;;;;;25971:789:0;;:::i;22513:22::-;;;:::i;28750:698::-;;;;;;;;;;;;;;;;-1:-1:-1;28750:698:0;;;;;;;:::i;21144:244::-;;;;;;;;;;;;;;;;-1:-1:-1;21144:244:0;-1:-1:-1;;;;;21144:244:0;;:::i;27033:309::-;;;:::i;22464:19::-;;;:::i;23945:93::-;24015:8;:15;23945:93;;:::o;22943:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22943:26:0;;;;-1:-1:-1;22943:26:0;;;:::o;23186:34::-;;;;:::o;22546:28::-;;;;:::o;24207:666::-;20421:12;:10;:12::i;:::-;20411:6;;-1:-1:-1;;;;;20411:6:0;;;:22;;;20403:67;;;;;-1:-1:-1;;;20403:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;20403:67:0;;;;;;;;;;;;;;;24308:9:::1;24304:143;24323:12;:10;:12::i;:::-;24321:1;:14;24304:143;;;24394:8;24403:1;24394:11;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;:19:::0;-1:-1:-1;;;;;24365:49:0;;::::1;24394:19:::0;::::1;24365:49;;24357:78;;;::::0;;-1:-1:-1;;;24357:78:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;24357:78:0;;;;;;;;;;;;;::::1;;24337:3;;24304:143;;;;24463:11;24459:61;;;24491:17;:15;:17::i;:::-;24532:23;24573:10;;24558:12;:25;:53;;24601:10;;24558:53;;;24586:12;24558:53;24640:15;::::0;24532:79;;-1:-1:-1;24640:32:0::1;::::0;24660:11;24640:19:::1;:32::i;:::-;24622:15;:50:::0;24697:167:::1;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;24697:167:0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;24697:167:0;;;;;;24683:8:::1;:182:::0;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;24683:182:0::1;::::0;;;::::1;;::::0;;;;;;;;;;;;;;-1:-1:-1;24683:182:0;;;;;;;24207:666::o;30282:394::-;30329:21;30353:8;30362:4;30353:14;;;;;;;;;;;;;;;;30402;;;:8;:14;;;;;;30417:10;30402:26;;;;;;;30353:14;;;;;;;;-1:-1:-1;30441:16:0;30411:4;30441:10;:16::i;:::-;30468:15;30486:64;30534:4;:15;;;30486:43;30524:4;30486:33;30502:4;:16;;;30486:4;:11;;;:15;;:33;;;;:::i;:::-;:37;;:43::i;:::-;:47;;:64::i;:::-;30468:82;;30561:33;30574:10;30586:7;30561:12;:33::i;:::-;30641:16;;;;30625:11;;:43;;30663:4;;30625:33;;:15;:33::i;:43::-;30607:4;:15;;:61;;;;30282:394;;;;:::o;29497:755::-;29564:21;29588:8;29597:4;29588:14;;;;;;;;;;;;;;;;29637;;;:8;:14;;;;;;29652:10;29637:26;;;;;;;29684:11;;29588:14;;;;;;;;-1:-1:-1;29684:22:0;-1:-1:-1;29684:22:0;29676:53;;;;;-1:-1:-1;;;29676:53:0;;;;;;;;;;;;-1:-1:-1;;;29676:53:0;;;;;;;;;;;;;;;29841:16;29852:4;29841:10;:16::i;:::-;29868:15;29886:64;29934:4;:15;;;29886:43;29924:4;29886:33;29902:4;:16;;;29886:4;:11;;;:15;;:33;;;;:::i;:64::-;29868:82;;29961:33;29974:10;29986:7;29961:12;:33::i;:::-;30029:11;;:24;;30045:7;30029:15;:24::i;:::-;30015:38;;;30098:16;;;;30082:43;;30120:4;;30082:33;;30015:38;30082:15;:33::i;:43::-;30064:15;;;:61;30136:12;;:55;;-1:-1:-1;;;;;30136:12:0;30170:10;30183:7;30136:25;:55::i;:::-;30209:35;;;;;;;;30230:4;;30218:10;;30209:35;;;;;;;;;29497:755;;;;;:::o;23273:25::-;;;;:::o;27418:972::-;27470:21;27494:8;27503:4;27494:14;;;;;;;;;;;;;;;;;;27470:38;;27539:4;:20;;;27523:12;:36;27519:75;;27576:7;;;27519:75;27623:12;;:37;;;-1:-1:-1;;;27623:37:0;;27654:4;27623:37;;;;;;27604:16;;-1:-1:-1;;;;;27623:12:0;;:22;;:37;;;;;;;;;;;;;;:12;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27623:37:0;;-1:-1:-1;27675:13:0;27671:102;;-1:-1:-1;27728:12:0;27705:20;;;;:35;27755:7;;27671:102;27779:19;27801:16;:14;:16::i;:::-;27779:38;;27841:1;27826:11;:16;27822:40;;27850:7;;;;;27822:40;27874:18;27895:49;27909:4;:20;;;27931:12;27895:13;:49::i;:::-;27874:70;;27955:14;27972:69;28025:15;;27972:48;28004:4;:15;;;27972:27;27987:11;27972:10;:14;;:27;;;;:::i;:::-;:31;;:48::i;:69::-;28181:5;;:33;;;-1:-1:-1;;;28181:33:0;;28200:4;28181:33;;;;;;;;;;;;27955:86;;-1:-1:-1;28166:12:0;;-1:-1:-1;;;;;28181:5:0;;;;:10;;:33;;;;;;;;;;;;;;;28166:12;28181:5;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28181:33:0;;-1:-1:-1;28225:110:0;;;;28271:52;28292:30;28313:8;28292:16;:6;28303:4;28292:10;:16::i;:30::-;28271:16;;;;;:20;:52::i;:::-;28252:16;;;:71;28225:110;28370:12;28347:4;:20;;:35;;;;27418:972;;;;;;;;:::o;30747:356::-;30806:21;30830:8;30839:4;30830:14;;;;;;;;;;;;;;;;30879;;;:8;:14;;;;;;30894:10;30879:26;;;;;;;;30963:11;;30830:14;;;;;;;30916:12;;30830:14;;-1:-1:-1;30916:59:0;;-1:-1:-1;;;;;30916:12:0;;;;;30894:10;30916:25;:59::i;:::-;31027:11;;30991:48;;;;;;;31021:4;;31009:10;;30991:48;;;;;;;;;31064:1;31050:15;;;31076;;;;:19;-1:-1:-1;;30747:356:0:o;22751:39::-;;;;:::o;22617:33::-;;;;:::o;26843:180::-;26905:8;:15;26888:14;26931:85;26959:6;26953:3;:12;26931:85;;;26989:15;27000:3;26989:10;:15::i;:::-;26967:5;;26931:85;;;;26843:180;:::o;20841:148::-;20421:12;:10;:12::i;:::-;20411:6;;-1:-1:-1;;;;;20411:6:0;;;:22;;;20403:67;;;;;-1:-1:-1;;;20403:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;20403:67:0;;;;;;;;;;;;;;;20948:1:::1;20932:6:::0;;20911:40:::1;::::0;-1:-1:-1;;;;;20932:6:0;;::::1;::::0;20911:40:::1;::::0;20948:1;;20911:40:::1;20979:1;20962:19:::0;;-1:-1:-1;;;;;;20962:19:0::1;::::0;;20841:148::o;24965:320::-;20421:12;:10;:12::i;:::-;20411:6;;-1:-1:-1;;;;;20411:6:0;;;:22;;;20403:67;;;;;-1:-1:-1;;;20403:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;20403:67:0;;;;;;;;;;;;;;;25064:16:::1;::::0;::::1;::::0;25060:66:::1;;25097:17;:15;:17::i;:::-;25164:63;25215:11;25164:46;25184:8;25193:4;25184:14;;;;;;;;;;;;;;;;;;:25;;;25164:15;;:19;;:46;;;;:::i;:::-;:50:::0;::::1;:63::i;:::-;25146:15;:81;;;;25266:11;25238:8;25247:4;25238:14;;;;;;;;;;;;;;;;;;:25;;:39;;;;24965:320:::0;;;:::o;22816:35::-;;;;:::o;22701:44::-;22744:1;22701:44;:::o;31628:153::-;31699:7;;-1:-1:-1;;;;;31699:7:0;31685:10;:21;31677:67;;;;-1:-1:-1;;;31677:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31755:7;:18;;-1:-1:-1;;;;;;31755:18:0;-1:-1:-1;;;;;31755:18:0;;;;;;;;;;31628:153::o;20199:79::-;20237:7;20264:6;-1:-1:-1;;;;;20264:6:0;20199:79;:::o;25487:423::-;25559:7;25590:13;;25583:3;:20;25579:324;;25627:36;22744:1;25627:14;:3;25635:5;25627:7;:14::i;:36::-;25620:43;;;;25579:324;25694:13;;25685:5;:22;25681:222;;25731:14;:3;25739:5;25731:7;:14::i;25681:222::-;25785:106;25854:22;25862:13;;25854:3;:7;;:22;;;;:::i;:::-;25785:46;22744:1;25785:24;25803:5;25785:13;;:17;;:24;;;;:::i;25681:222::-;25487:423;;;;:::o;23025:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25971:789::-;26046:7;26066:21;26090:8;26099:4;26090:14;;;;;;;;;;;;;;;;26139;;;:8;:14;;;;;;-1:-1:-1;;;;;26139:21:0;;;;;;;;;;;26090:14;;;;;;;26193:16;;;;26239:12;;:37;;-1:-1:-1;;;26239:37:0;;26270:4;26239:37;;;;;;;;;26090:14;;-1:-1:-1;26139:21:0;;26193:16;;26090:14;;26239:12;;;;;:22;;:37;;;;;26090:14;;26239:37;;;;;:12;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26239:37:0;26306:20;;;;26239:37;;-1:-1:-1;26291:12:0;:35;:52;;;;-1:-1:-1;26330:13:0;;;26291:52;26287:387;;;26360:18;26381:49;26395:4;:20;;;26417:12;26381:13;:49::i;:::-;26360:70;;26445:19;26467:16;:14;:16::i;:::-;26445:38;;26500:14;26517:69;26570:15;;26517:48;26549:4;:15;;;26517:27;26532:11;26517:10;:14;;:27;;;;:::i;:69::-;26500:86;-1:-1:-1;26615:47:0;26631:30;26652:8;26631:16;26500:86;26642:4;26631:10;:16::i;:30::-;26615:11;;:15;:47::i;:::-;26601:61;;26287:387;;;;26693:59;26736:4;:15;;;26693:38;26726:4;26693:28;26709:11;26693:4;:11;;;:15;;:28;;;;:::i;:59::-;26686:66;25971:789;-1:-1:-1;;;;;;;25971:789:0:o;22513:22::-;;;-1:-1:-1;;;;;22513:22:0;;:::o;28750:698::-;28816:21;28840:8;28849:4;28840:14;;;;;;;;;;;;;;;;28889;;;:8;:14;;;;;;28904:10;28889:26;;;;;;;28840:14;;;;;;;;-1:-1:-1;28928:16:0;28898:4;28928:10;:16::i;:::-;28959:11;;:15;28955:178;;28991:15;29009:64;29057:4;:15;;;29009:43;29047:4;29009:33;29025:4;:16;;;29009:4;:11;;;:15;;:33;;;;:::i;:64::-;28991:82;;29088:33;29101:10;29113:7;29088:12;:33::i;:::-;28955:178;;29145:12;;:74;;-1:-1:-1;;;;;29145:12:0;29183:10;29204:4;29211:7;29145:29;:74::i;:::-;29248:11;;:24;;29264:7;29248:15;:24::i;:::-;29230:42;;;29317:16;;;;29301:43;;29339:4;;29301:33;;29230:42;29301:15;:33::i;:43::-;29283:15;;;:61;29373:15;29355:14;;;:33;29406:34;;;;;;;;29426:4;;29414:10;;29406:34;;;;;;;;;28750:698;;;;:::o;21144:244::-;20421:12;:10;:12::i;:::-;20411:6;;-1:-1:-1;;;;;20411:6:0;;;:22;;;20403:67;;;;;-1:-1:-1;;;20403:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;20403:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;21233:22:0;::::1;21225:73;;;;-1:-1:-1::0;;;21225:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21335:6;::::0;;21314:38:::1;::::0;-1:-1:-1;;;;;21314:38:0;;::::1;::::0;21335:6;::::1;::::0;21314:38:::1;::::0;::::1;21363:6;:17:::0;;-1:-1:-1;;;;;;21363:17:0::1;-1:-1:-1::0;;;;;21363:17:0;;;::::1;::::0;;;::::1;::::0;;21144:244::o;27033:309::-;27080:7;27100:20;27123:47;27156:13;;27123:28;27140:10;;27123:12;:16;;:28;;;;:::i;:47::-;27100:70;;27175:20;27203:12;27198:1;:17;27175:40;;27245:12;;27230;:27;27226:53;;;27272:1;27265:8;;;;;;27226:53;27298:18;;:36;;27321:12;27298:22;:36::i;:::-;27291:43;;;;27033:309;:::o;22464:19::-;;;-1:-1:-1;;;;;22464:19:0;;:::o;18757:106::-;18845:10;18757:106;:::o;3720:181::-;3778:7;3810:5;;;3834:6;;;;3826:46;;;;;-1:-1:-1;;;3826:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3892:1;3720:181;-1:-1:-1;;;3720:181:0:o;5074:471::-;5132:7;5377:6;5373:47;;-1:-1:-1;5407:1:0;5400:8;;5373:47;5444:5;;;5448:1;5444;:5;:1;5468:5;;;;;:10;5460:56;;;;-1:-1:-1;;;5460:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6021:132;6079:7;6106:39;6110:1;6113;6106:39;;;;;;;;;;;;;;;;;:3;:39::i;4184:136::-;4242:7;4269:43;4273:1;4276;4269:43;;;;;;;;;;;;;;;;;:3;:43::i;31215:357::-;31290:11;;31287:278;;31342:5;;:30;;;-1:-1:-1;;;31342:30:0;;31366:4;31342:30;;;;;;31318:21;;-1:-1:-1;;;;;31342:5:0;;:15;;:30;;;;;;;;;;;;;;:5;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31342:30:0;;-1:-1:-1;31391:23:0;;;31387:167;;;31435:5;;:34;;;-1:-1:-1;;;31435:34:0;;-1:-1:-1;;;;;31435:34:0;;;;;;;;;;;;;;;:5;;;;;:14;;:34;;;;;;;;;;;;;;:5;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31387:167:0;;-1:-1:-1;31387:167:0;;31510:5;;:28;;;-1:-1:-1;;;31510:28:0;;-1:-1:-1;;;;;31510:28:0;;;;;;;;;;;;;;;:5;;;;;:14;;:28;;;;;;;;;;;;;;:5;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31387:167:0;31287:278;31215:357;;:::o;15064:177::-;15174:58;;;-1:-1:-1;;;;;15174:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15174:58:0;-1:-1:-1;;;15174:58:0;;;15147:86;;15167:5;;15147:19;:86::i;15249:205::-;15377:68;;;-1:-1:-1;;;;;15377:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15377:68:0;-1:-1:-1;;;15377:68:0;;;15350:96;;15370:5;;15350:19;:96::i;:::-;15249:205;;;;:::o;6649:278::-;6735:7;6770:12;6763:5;6755:28;;;;-1:-1:-1;;;6755:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6794:9;6810:1;6806;:5;;;;;;;6649:278;-1:-1:-1;;;;;6649:278:0:o;4623:192::-;4709:7;4745:12;4737:6;;;;4729:29;;;;-1:-1:-1;;;4729:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4781:5:0;;;4623:192::o;17369:761::-;17793:23;17819:69;17847:4;17819:69;;;;;;;;;;;;;;;;;17827:5;-1:-1:-1;;;;;17819:27:0;;;:69;;;;;:::i;:::-;17903:17;;17793:95;;-1:-1:-1;17903:21:0;17899:224;;18045:10;18034:30;;;;;;;;;;;;;;;-1:-1:-1;18034:30:0;18026:85;;;;-1:-1:-1;;;18026:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12055:196;12158:12;12190:53;12213:6;12221:4;12227:1;12230:12;12190:22;:53::i;:::-;12183:60;12055:196;-1:-1:-1;;;;12055:196:0:o;13432:979::-;13562:12;13595:18;13606:6;13595:10;:18::i;:::-;13587:60;;;;;-1:-1:-1;;;13587:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13721:12;13735:23;13762:6;-1:-1:-1;;;;;13762:11:0;13782:8;13793:4;13762:36;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13762:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13720:78;;;;13813:7;13809:595;;;13844:10;-1:-1:-1;13837:17:0;;-1:-1:-1;13837:17:0;13809:595;13958:17;;:21;13954:439;;14221:10;14215:17;14282:15;14269:10;14265:2;14261:19;14254:44;14169:148;14357:20;;-1:-1:-1;;;14357:20:0;;;;;;;;;;;;;;;;;14364:12;;14357:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8940:619;9000:4;9468:20;;9311:66;9508:23;;;;;;:42;;-1:-1:-1;;9535:15:0;;;9500:51;-1:-1:-1;;8940:619:0:o
Swarm Source
ipfs://90a62b36ca3788d9fc79d3c3513cbcf25de568e43d15bdb5769d4dbdf962f8d3
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.