More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 5,272 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 11739172 | 1277 days ago | IN | 0 ETH | 0.00518908 | ||||
Withdraw | 11732649 | 1278 days ago | IN | 0 ETH | 0.00476273 | ||||
Withdraw | 11717436 | 1280 days ago | IN | 0 ETH | 0.00465742 | ||||
Withdraw | 11708690 | 1281 days ago | IN | 0 ETH | 0.00576947 | ||||
Withdraw | 11682532 | 1285 days ago | IN | 0 ETH | 0.00721184 | ||||
Withdraw | 11682118 | 1285 days ago | IN | 0 ETH | 0.00375295 | ||||
Withdraw | 11682118 | 1285 days ago | IN | 0 ETH | 0.00373919 | ||||
Withdraw | 11681129 | 1285 days ago | IN | 0 ETH | 0.00543063 | ||||
Withdraw | 11676695 | 1286 days ago | IN | 0 ETH | 0.00351026 | ||||
Claim | 11676363 | 1286 days ago | IN | 0 ETH | 0.00261625 | ||||
Withdraw | 11657238 | 1289 days ago | IN | 0 ETH | 0.00314023 | ||||
Withdraw | 11657234 | 1289 days ago | IN | 0 ETH | 0.00314023 | ||||
Withdraw | 11647108 | 1291 days ago | IN | 0 ETH | 0.00906813 | ||||
Withdraw | 11642907 | 1291 days ago | IN | 0 ETH | 0.00652269 | ||||
Withdraw | 11642890 | 1291 days ago | IN | 0 ETH | 0.00652269 | ||||
Withdraw | 11625547 | 1294 days ago | IN | 0 ETH | 0.00605178 | ||||
Withdraw | 11625538 | 1294 days ago | IN | 0 ETH | 0.00666997 | ||||
Withdraw | 11624393 | 1294 days ago | IN | 0 ETH | 0.00992282 | ||||
Withdraw | 11624342 | 1294 days ago | IN | 0 ETH | 0.01272624 | ||||
Withdraw | 11624026 | 1294 days ago | IN | 0 ETH | 0.00992282 | ||||
Claim | 11623289 | 1294 days ago | IN | 0 ETH | 0.00974808 | ||||
Withdraw | 11623116 | 1294 days ago | IN | 0 ETH | 0.00883295 | ||||
Claim | 11620783 | 1295 days ago | IN | 0 ETH | 0.00898989 | ||||
Withdraw | 11620632 | 1295 days ago | IN | 0 ETH | 0.01034085 | ||||
Withdraw | 11620093 | 1295 days ago | IN | 0 ETH | 0.01008546 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
DfiChef
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-12-31 */ // 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 IDFI is IERC20 { function mint(address _to, uint256 _amount) external returns (bool); } pragma solidity ^0.6.0; contract DfiChef 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 accDfiPerShare; // Accumulated CHIFIs per share, times 1e12. See below. } // The DFI TOKEN! IDFI public dfi; // Dev address. address public devaddr; uint256 public teamRatio = 10; // team ratio address public treasuryAddr; uint256 public treasuryRatio = 10; // treasury ratio // Block number when bonus DFI period ends. uint256 public bonusEndBlock; // DFI tokens created per block. uint256 public initDfiPerBlock; // Bonus muliplier for early dfi makers. uint256 public constant BONUS_MULTIPLIER = 1; uint256 public halvingPeriod = 46523; // for about two weeks uint256 public halvingTimes = 1; 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 DFI 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( IDFI _dfi, address _devaddr, address _treasuryAddr, uint256 _dfiPerBlock, uint256 _startBlock, uint256 _bonusEndBlock ) public { dfi = _dfi; devaddr = _devaddr; treasuryAddr = _treasuryAddr; initDfiPerBlock = _dfiPerBlock; 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. 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, accDfiPerShare: 0 })); } // Update the given pool's DFI 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 DFIs on frontend. function pendingDfi(uint256 _pid, address _user) external view returns (uint256) { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][_user]; uint256 accDfiPerShare = pool.accDfiPerShare; uint256 lpSupply = pool.lpToken.balanceOf(address(this)); if (block.number > pool.lastRewardBlock && lpSupply != 0) { uint256 multiplier = getMultiplier(pool.lastRewardBlock, block.number); uint256 blockReward = getDfiBlockReward(); uint256 dfiReward = multiplier.mul(blockReward).mul(pool.allocPoint).div(totalAllocPoint); accDfiPerShare = accDfiPerShare.add(dfiReward.mul(1e12).div(lpSupply)); } return user.amount.mul(accDfiPerShare).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 getDfiBlockReward() public view returns (uint256) { uint256 parseHalving = block.number.sub(startBlock).div(halvingPeriod); uint256 havingFactor = 2 ** parseHalving; if (parseHalving > halvingTimes) { return 0; } return initDfiPerBlock.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 = getDfiBlockReward(); if (blockReward <= 0) { return; } uint256 multiplier = getMultiplier(pool.lastRewardBlock, block.number); uint256 dfiReward = multiplier.mul(blockReward).mul(pool.allocPoint).div(totalAllocPoint); // if blocks reaches the totalSupply, will mint nothing.. dfi.mint(devaddr, dfiReward.mul(teamRatio).div(100)); dfi.mint(treasuryAddr, dfiReward.mul(treasuryRatio).div(100)); // if mint success, add the share bool mintRet = dfi.mint(address(this), dfiReward); if(mintRet) { pool.accDfiPerShare = pool.accDfiPerShare.add(dfiReward.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.accDfiPerShare).div(1e12).sub(user.rewardDebt); safeDfiTransfer(msg.sender, pending); } pool.lpToken.safeTransferFrom(address(msg.sender), address(this), _amount); user.amount = user.amount.add(_amount); user.rewardDebt = user.amount.mul(pool.accDfiPerShare).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.accDfiPerShare).div(1e12).sub(user.rewardDebt); safeDfiTransfer(msg.sender, pending); user.amount = user.amount.sub(_amount); user.rewardDebt = user.amount.mul(pool.accDfiPerShare).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.accDfiPerShare).div(1e12).sub(user.rewardDebt); safeDfiTransfer(msg.sender, pending); user.rewardDebt = user.amount.mul(pool.accDfiPerShare).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]; require(block.timestamp >= user.depositAt.add(pendingDuration) ,"withdraw: pending."); 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 safeDfiTransfer(address _to, uint256 _amount) internal { if(_amount > 0) { uint256 dfiBalance = dfi.balanceOf(address(this)); if (_amount > dfiBalance) { dfi.transfer(_to, dfiBalance); } else { dfi.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 IDFI","name":"_dfi","type":"address"},{"internalType":"address","name":"_devaddr","type":"address"},{"internalType":"address","name":"_treasuryAddr","type":"address"},{"internalType":"uint256","name":"_dfiPerBlock","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":[],"name":"dfi","outputs":[{"internalType":"contract IDFI","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDfiBlockReward","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":"initDfiPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"isPending","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"pendingDfi","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingDuration","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":"accDfiPerShare","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":"teamRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"treasuryAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"updatePendingDuration","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
6080604052600a600355600a60055561b5bb600855600160095562015180600a556000600d5534801561003157600080fd5b50604051611e6b380380611e6b833981810160405260c081101561005457600080fd5b508051602082015160408301516060840151608085015160a0909501519394929391929091600061008361011f565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b03199081166001600160a01b039889161790915560028054821696881696909617909555600480549095169390951692909217909255600791909155600e55600655610123565b3390565b611d39806101326000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80636912911d1161011a5780638dbb1e3a116100ad578063ca8836d21161007c578063ca8836d2146104b3578063d49e77cd146104e4578063e2bbb158146104ec578063f2fde38b1461050f578063f41b848a14610535576101fb565b80638dbb1e3a1461043657806393f1a40b146104595780639fc3ab03146104a3578063ba681c4d146104ab576101fb565b80637e98b340116100e95780637e98b340146103f85780638aa28550146104005780638d88a90e146104085780638da5cb5b1461042e576101fb565b80636912911d1461037b5780636aeaec9914610398578063715018a6146103c45780637c42b50f146103cc576101fb565b80633d1c4d15116101925780635312ea8e116101615780635312ea8e1461034657806356b6861c146103635780635a3e251f1461036b578063630b5ba114610373576101fb565b80633d1c4d15146102f6578063441a3e70146102fe57806348cd4cb11461032157806351eb05a614610329576101fb565b80631eaaa045116101ce5780631eaaa045146102775780632066898c146102ad57806330d9a62a146102b5578063379607f5146102d9576101fb565b8063081e3eda146102005780631526fe271461021a57806317caf6f1146102675780631aed65531461026f575b600080fd5b61020861053d565b60408051918252519081900360200190f35b6102376004803603602081101561023057600080fd5b5035610544565b604080516001600160a01b0390951685526020850193909352838301919091526060830152519081900360800190f35b610208610585565b61020861058b565b6102ab6004803603606081101561028d57600080fd5b508035906001600160a01b0360208201351690604001351515610591565b005b610208610798565b6102bd61079e565b604080516001600160a01b039092168252519081900360200190f35b6102ab600480360360208110156102ef57600080fd5b50356107ad565b6102bd61085c565b6102ab6004803603604081101561031457600080fd5b508035906020013561086b565b610208610a0c565b6102ab6004803603602081101561033f57600080fd5b5035610a12565b6102ab6004803603602081101561035c57600080fd5b5035610d2b565b610208610e20565b610208610e26565b6102ab610e2c565b6102ab6004803603602081101561039157600080fd5b5035610e4f565b610208600480360360408110156103ae57600080fd5b50803590602001356001600160a01b0316610eac565b6102ab61101b565b6102ab600480360360608110156103e257600080fd5b508035906020810135906040013560ff166110bd565b610208611191565b610208611197565b6102ab6004803603602081101561041e57600080fd5b50356001600160a01b031661119c565b6102bd611207565b6102086004803603604081101561044c57600080fd5b5080359060200135611216565b6104856004803603604081101561046f57600080fd5b50803590602001356001600160a01b031661127c565b60408051938452602084019290925282820152519081900360600190f35b6102086112a8565b6102086112ae565b6104d0600480360360208110156104c957600080fd5b50356112b4565b604080519115158252519081900360200190f35b6102bd6112f9565b6102ab6004803603604081101561050257600080fd5b5080359060200135611308565b6102ab6004803603602081101561052557600080fd5b50356001600160a01b0316611413565b61020861150b565b600b545b90565b600b818154811061055157fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b039092169350919084565b600d5481565b60065481565b61059961155c565b6000546001600160a01b039081169116146105e9576040805162461bcd60e51b81526020600482018190526024820152600080516020611cba833981519152604482015290519081900360640190fd5b60005b6105f461053d565b81101561067457600b818154811061060857fe5b60009182526020909120600490910201546001600160a01b038481169116141561066c576040805162461bcd60e51b815260206004820152601060248201526f4475706c696361746520546f6b656e2160801b604482015290519081900360640190fd5b6001016105ec565b50801561068357610683610e2c565b6000600e54431161069657600e54610698565b435b600d549091506106a89085611560565b600d55604080516080810182526001600160a01b03948516815260208101958652908101918252600060608201818152600b8054600181018255925291517f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9600490920291820180546001600160a01b031916919096161790945593517f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dba840155517f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb8301555090517f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbc90910155565b60075481565b6004546001600160a01b031681565b6000600b82815481106107bc57fe5b60009182526020808320858452600c825260408085203386529092529220600490910290910191506107ed83610a12565b6000610827826001015461082164e8d4a5100061081b876003015487600001546115c190919063ffffffff16565b9061161a565b9061165c565b9050610833338261169e565b6003830154825461084e9164e8d4a510009161081b916115c1565b826001018190555050505050565b6001546001600160a01b031681565b6000600b838154811061087a57fe5b60009182526020808320868452600c8252604080852033865290925292208054600490920290920192508311156108ed576040805162461bcd60e51b815260206004820152601260248201527177697468647261773a202162616c616e636560701b604482015290519081900360640190fd5b600a5460028201546108fe91611560565b421015610947576040805162461bcd60e51b81526020600482015260126024820152713bb4ba34323930bb9d103832b73234b7339760711b604482015290519081900360640190fd5b61095084610a12565b600061097e826001015461082164e8d4a5100061081b876003015487600001546115c190919063ffffffff16565b905061098a338261169e565b8154610996908561165c565b80835560038401546109b39164e8d4a510009161081b91906115c1565b600183015582546109ce906001600160a01b03163386611835565b604080518581529051869133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a35050505050565b600e5481565b6000600b8281548110610a2157fe5b9060005260206000209060040201905080600201544311610a425750610d28565b8054604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610a8c57600080fd5b505afa158015610aa0573d6000803e3d6000fd5b505050506040513d6020811015610ab657600080fd5b5051905080610acc575043600290910155610d28565b6000610ad661150b565b905060008111610ae857505050610d28565b6000610af8846002015443611216565b90506000610b23600d5461081b8760010154610b1d87876115c190919063ffffffff16565b906115c1565b6001546002546003549293506001600160a01b03918216926340c10f199290911690610b579060649061081b9087906115c1565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610b9d57600080fd5b505af1158015610bb1573d6000803e3d6000fd5b505050506040513d6020811015610bc757600080fd5b50506001546004546005546001600160a01b03928316926340c10f19921690610bf89060649061081b9087906115c1565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610c3e57600080fd5b505af1158015610c52573d6000803e3d6000fd5b505050506040513d6020811015610c6857600080fd5b5050600154604080516340c10f1960e01b81523060048201526024810184905290516000926001600160a01b0316916340c10f1991604480830192602092919082900301818787803b158015610cbd57600080fd5b505af1158015610cd1573d6000803e3d6000fd5b505050506040513d6020811015610ce757600080fd5b505190508015610d1857610d12610d078661081b8564e8d4a510006115c1565b600388015490611560565b60038701555b4386600201819055505050505050505b50565b6000600b8281548110610d3a57fe5b60009182526020808320858452600c825260408085203386529092529220600a5460028201546004909302909301935091610d759190611560565b421015610dbe576040805162461bcd60e51b81526020600482015260126024820152713bb4ba34323930bb9d103832b73234b7339760711b604482015290519081900360640190fd5b80548254610dd9916001600160a01b03909116903390611835565b80546040805191825251849133917fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05959181900360200190a360008082556001909101555050565b600a5481565b60085481565b600b5460005b81811015610e4b57610e4381610a12565b600101610e32565b5050565b610e5761155c565b6000546001600160a01b03908116911614610ea7576040805162461bcd60e51b81526020600482018190526024820152600080516020611cba833981519152604482015290519081900360640190fd5b600a55565b600080600b8481548110610ebc57fe5b60009182526020808320878452600c825260408085206001600160a01b03898116875290845281862060049586029093016003810154815484516370a0823160e01b81523098810198909852935191985093969395939492909116926370a08231926024808301939192829003018186803b158015610f3a57600080fd5b505afa158015610f4e573d6000803e3d6000fd5b505050506040513d6020811015610f6457600080fd5b5051600285015490915043118015610f7b57508015155b15610fe6576000610f90856002015443611216565b90506000610f9c61150b565b90506000610fc1600d5461081b8960010154610b1d86886115c190919063ffffffff16565b9050610fe0610fd98561081b8464e8d4a510006115c1565b8690611560565b94505050505b61100e836001015461082164e8d4a5100061081b8688600001546115c190919063ffffffff16565b9450505050505b92915050565b61102361155c565b6000546001600160a01b03908116911614611073576040805162461bcd60e51b81526020600482018190526024820152600080516020611cba833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6110c561155c565b6000546001600160a01b03908116911614611115576040805162461bcd60e51b81526020600482018190526024820152600080516020611cba833981519152604482015290519081900360640190fd5b60ff81161561112657611126610e2c565b6111638261115d600b868154811061113a57fe5b906000526020600020906004020160010154600d5461165c90919063ffffffff16565b90611560565b600d8190555081600b848154811061117757fe5b906000526020600020906004020160010181905550505050565b60095481565b600181565b6002546001600160a01b031633146111e55760405162461bcd60e51b8152600401808060200182810382526021815260200180611c996021913960400191505060405180910390fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b60006006548211611237576112306001610b1d848661165c565b9050611015565b600654831061124a57611230828461165c565b6112306112626006548461165c90919063ffffffff16565b61115d6001610b1d8760065461165c90919063ffffffff16565b600c60209081526000928352604080842090915290825290208054600182015460029092015490919083565b60035481565b60055481565b6000818152600c602090815260408083203384529091528120600a5460028201546112de91611560565b42106112ee5760009150506112f4565b60019150505b919050565b6002546001600160a01b031681565b6000600b838154811061131757fe5b60009182526020808320868452600c8252604080852033865290925292206004909102909101915061134884610a12565b80541561138b57600061137d826001015461082164e8d4a5100061081b876003015487600001546115c190919063ffffffff16565b9050611389338261169e565b505b81546113a2906001600160a01b0316333086611887565b80546113ae9084611560565b80825560038301546113cb9164e8d4a510009161081b91906115c1565b6001820155426002820155604080518481529051859133917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360200190a350505050565b61141b61155c565b6000546001600160a01b0390811691161461146b576040805162461bcd60e51b81526020600482018190526024820152600080516020611cba833981519152604482015290519081900360640190fd5b6001600160a01b0381166114b05760405162461bcd60e51b8152600401808060200182810382526026815260200180611c526026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008061152960085461081b600e544361165c90919063ffffffff16565b905060008160020a905060095482111561154857600092505050610541565b600754611555908261161a565b9250505090565b3390565b6000828201838110156115ba576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000826115d057506000611015565b828202828482816115dd57fe5b04146115ba5760405162461bcd60e51b8152600401808060200182810382526021815260200180611c786021913960400191505060405180910390fd5b60006115ba83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118e7565b60006115ba83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611989565b8015610e4b57600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156116ef57600080fd5b505afa158015611703573d6000803e3d6000fd5b505050506040513d602081101561171957600080fd5b50519050808211156117ad576001546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561177b57600080fd5b505af115801561178f573d6000803e3d6000fd5b505050506040513d60208110156117a557600080fd5b506118309050565b6001546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561180357600080fd5b505af1158015611817573d6000803e3d6000fd5b505050506040513d602081101561182d57600080fd5b50505b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526118309084906119e3565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526118e19085906119e3565b50505050565b600081836119735760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611938578181015183820152602001611920565b50505050905090810190601f1680156119655780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161197f57fe5b0495945050505050565b600081848411156119db5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611938578181015183820152602001611920565b505050900390565b6060611a38826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611a949092919063ffffffff16565b80519091501561183057808060200190516020811015611a5757600080fd5b50516118305760405162461bcd60e51b815260040180806020018281038252602a815260200180611cda602a913960400191505060405180910390fd5b6060611aa38484600085611aab565b949350505050565b6060611ab685611c18565b611b07576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310611b465780518252601f199092019160209182019101611b27565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611ba8576040519150601f19603f3d011682016040523d82523d6000602084013e611bad565b606091505b50915091508115611bc1579150611aa39050565b805115611bd15780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315611938578181015183820152602001611920565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611aa357505015159291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7744796e616d6963446f6c6c61722e46696e616e63653a2077726f6e67206465763f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212206dfc4a61a9875166d391c075afbfe55f330357216a1f86607b17458cfe9603ac64736f6c634300060c0033000000000000000000000000c9d7312a439539b5cd6b7fdacf76821100605b5d00000000000000000000000068b087916d1f92ffb2be56e53e27989b8c1e6e3e000000000000000000000000539ec5abd9c843a32fcb76f1558ebef4af1af0c200000000000000000000000000000000000000000000000022b1c8c1227a00000000000000000000000000000000000000000000000000000000000000b064e00000000000000000000000000000000000000000000000000000000000b064e0
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c80636912911d1161011a5780638dbb1e3a116100ad578063ca8836d21161007c578063ca8836d2146104b3578063d49e77cd146104e4578063e2bbb158146104ec578063f2fde38b1461050f578063f41b848a14610535576101fb565b80638dbb1e3a1461043657806393f1a40b146104595780639fc3ab03146104a3578063ba681c4d146104ab576101fb565b80637e98b340116100e95780637e98b340146103f85780638aa28550146104005780638d88a90e146104085780638da5cb5b1461042e576101fb565b80636912911d1461037b5780636aeaec9914610398578063715018a6146103c45780637c42b50f146103cc576101fb565b80633d1c4d15116101925780635312ea8e116101615780635312ea8e1461034657806356b6861c146103635780635a3e251f1461036b578063630b5ba114610373576101fb565b80633d1c4d15146102f6578063441a3e70146102fe57806348cd4cb11461032157806351eb05a614610329576101fb565b80631eaaa045116101ce5780631eaaa045146102775780632066898c146102ad57806330d9a62a146102b5578063379607f5146102d9576101fb565b8063081e3eda146102005780631526fe271461021a57806317caf6f1146102675780631aed65531461026f575b600080fd5b61020861053d565b60408051918252519081900360200190f35b6102376004803603602081101561023057600080fd5b5035610544565b604080516001600160a01b0390951685526020850193909352838301919091526060830152519081900360800190f35b610208610585565b61020861058b565b6102ab6004803603606081101561028d57600080fd5b508035906001600160a01b0360208201351690604001351515610591565b005b610208610798565b6102bd61079e565b604080516001600160a01b039092168252519081900360200190f35b6102ab600480360360208110156102ef57600080fd5b50356107ad565b6102bd61085c565b6102ab6004803603604081101561031457600080fd5b508035906020013561086b565b610208610a0c565b6102ab6004803603602081101561033f57600080fd5b5035610a12565b6102ab6004803603602081101561035c57600080fd5b5035610d2b565b610208610e20565b610208610e26565b6102ab610e2c565b6102ab6004803603602081101561039157600080fd5b5035610e4f565b610208600480360360408110156103ae57600080fd5b50803590602001356001600160a01b0316610eac565b6102ab61101b565b6102ab600480360360608110156103e257600080fd5b508035906020810135906040013560ff166110bd565b610208611191565b610208611197565b6102ab6004803603602081101561041e57600080fd5b50356001600160a01b031661119c565b6102bd611207565b6102086004803603604081101561044c57600080fd5b5080359060200135611216565b6104856004803603604081101561046f57600080fd5b50803590602001356001600160a01b031661127c565b60408051938452602084019290925282820152519081900360600190f35b6102086112a8565b6102086112ae565b6104d0600480360360208110156104c957600080fd5b50356112b4565b604080519115158252519081900360200190f35b6102bd6112f9565b6102ab6004803603604081101561050257600080fd5b5080359060200135611308565b6102ab6004803603602081101561052557600080fd5b50356001600160a01b0316611413565b61020861150b565b600b545b90565b600b818154811061055157fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b039092169350919084565b600d5481565b60065481565b61059961155c565b6000546001600160a01b039081169116146105e9576040805162461bcd60e51b81526020600482018190526024820152600080516020611cba833981519152604482015290519081900360640190fd5b60005b6105f461053d565b81101561067457600b818154811061060857fe5b60009182526020909120600490910201546001600160a01b038481169116141561066c576040805162461bcd60e51b815260206004820152601060248201526f4475706c696361746520546f6b656e2160801b604482015290519081900360640190fd5b6001016105ec565b50801561068357610683610e2c565b6000600e54431161069657600e54610698565b435b600d549091506106a89085611560565b600d55604080516080810182526001600160a01b03948516815260208101958652908101918252600060608201818152600b8054600181018255925291517f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9600490920291820180546001600160a01b031916919096161790945593517f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dba840155517f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb8301555090517f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbc90910155565b60075481565b6004546001600160a01b031681565b6000600b82815481106107bc57fe5b60009182526020808320858452600c825260408085203386529092529220600490910290910191506107ed83610a12565b6000610827826001015461082164e8d4a5100061081b876003015487600001546115c190919063ffffffff16565b9061161a565b9061165c565b9050610833338261169e565b6003830154825461084e9164e8d4a510009161081b916115c1565b826001018190555050505050565b6001546001600160a01b031681565b6000600b838154811061087a57fe5b60009182526020808320868452600c8252604080852033865290925292208054600490920290920192508311156108ed576040805162461bcd60e51b815260206004820152601260248201527177697468647261773a202162616c616e636560701b604482015290519081900360640190fd5b600a5460028201546108fe91611560565b421015610947576040805162461bcd60e51b81526020600482015260126024820152713bb4ba34323930bb9d103832b73234b7339760711b604482015290519081900360640190fd5b61095084610a12565b600061097e826001015461082164e8d4a5100061081b876003015487600001546115c190919063ffffffff16565b905061098a338261169e565b8154610996908561165c565b80835560038401546109b39164e8d4a510009161081b91906115c1565b600183015582546109ce906001600160a01b03163386611835565b604080518581529051869133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a35050505050565b600e5481565b6000600b8281548110610a2157fe5b9060005260206000209060040201905080600201544311610a425750610d28565b8054604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610a8c57600080fd5b505afa158015610aa0573d6000803e3d6000fd5b505050506040513d6020811015610ab657600080fd5b5051905080610acc575043600290910155610d28565b6000610ad661150b565b905060008111610ae857505050610d28565b6000610af8846002015443611216565b90506000610b23600d5461081b8760010154610b1d87876115c190919063ffffffff16565b906115c1565b6001546002546003549293506001600160a01b03918216926340c10f199290911690610b579060649061081b9087906115c1565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610b9d57600080fd5b505af1158015610bb1573d6000803e3d6000fd5b505050506040513d6020811015610bc757600080fd5b50506001546004546005546001600160a01b03928316926340c10f19921690610bf89060649061081b9087906115c1565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610c3e57600080fd5b505af1158015610c52573d6000803e3d6000fd5b505050506040513d6020811015610c6857600080fd5b5050600154604080516340c10f1960e01b81523060048201526024810184905290516000926001600160a01b0316916340c10f1991604480830192602092919082900301818787803b158015610cbd57600080fd5b505af1158015610cd1573d6000803e3d6000fd5b505050506040513d6020811015610ce757600080fd5b505190508015610d1857610d12610d078661081b8564e8d4a510006115c1565b600388015490611560565b60038701555b4386600201819055505050505050505b50565b6000600b8281548110610d3a57fe5b60009182526020808320858452600c825260408085203386529092529220600a5460028201546004909302909301935091610d759190611560565b421015610dbe576040805162461bcd60e51b81526020600482015260126024820152713bb4ba34323930bb9d103832b73234b7339760711b604482015290519081900360640190fd5b80548254610dd9916001600160a01b03909116903390611835565b80546040805191825251849133917fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05959181900360200190a360008082556001909101555050565b600a5481565b60085481565b600b5460005b81811015610e4b57610e4381610a12565b600101610e32565b5050565b610e5761155c565b6000546001600160a01b03908116911614610ea7576040805162461bcd60e51b81526020600482018190526024820152600080516020611cba833981519152604482015290519081900360640190fd5b600a55565b600080600b8481548110610ebc57fe5b60009182526020808320878452600c825260408085206001600160a01b03898116875290845281862060049586029093016003810154815484516370a0823160e01b81523098810198909852935191985093969395939492909116926370a08231926024808301939192829003018186803b158015610f3a57600080fd5b505afa158015610f4e573d6000803e3d6000fd5b505050506040513d6020811015610f6457600080fd5b5051600285015490915043118015610f7b57508015155b15610fe6576000610f90856002015443611216565b90506000610f9c61150b565b90506000610fc1600d5461081b8960010154610b1d86886115c190919063ffffffff16565b9050610fe0610fd98561081b8464e8d4a510006115c1565b8690611560565b94505050505b61100e836001015461082164e8d4a5100061081b8688600001546115c190919063ffffffff16565b9450505050505b92915050565b61102361155c565b6000546001600160a01b03908116911614611073576040805162461bcd60e51b81526020600482018190526024820152600080516020611cba833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6110c561155c565b6000546001600160a01b03908116911614611115576040805162461bcd60e51b81526020600482018190526024820152600080516020611cba833981519152604482015290519081900360640190fd5b60ff81161561112657611126610e2c565b6111638261115d600b868154811061113a57fe5b906000526020600020906004020160010154600d5461165c90919063ffffffff16565b90611560565b600d8190555081600b848154811061117757fe5b906000526020600020906004020160010181905550505050565b60095481565b600181565b6002546001600160a01b031633146111e55760405162461bcd60e51b8152600401808060200182810382526021815260200180611c996021913960400191505060405180910390fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b60006006548211611237576112306001610b1d848661165c565b9050611015565b600654831061124a57611230828461165c565b6112306112626006548461165c90919063ffffffff16565b61115d6001610b1d8760065461165c90919063ffffffff16565b600c60209081526000928352604080842090915290825290208054600182015460029092015490919083565b60035481565b60055481565b6000818152600c602090815260408083203384529091528120600a5460028201546112de91611560565b42106112ee5760009150506112f4565b60019150505b919050565b6002546001600160a01b031681565b6000600b838154811061131757fe5b60009182526020808320868452600c8252604080852033865290925292206004909102909101915061134884610a12565b80541561138b57600061137d826001015461082164e8d4a5100061081b876003015487600001546115c190919063ffffffff16565b9050611389338261169e565b505b81546113a2906001600160a01b0316333086611887565b80546113ae9084611560565b80825560038301546113cb9164e8d4a510009161081b91906115c1565b6001820155426002820155604080518481529051859133917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360200190a350505050565b61141b61155c565b6000546001600160a01b0390811691161461146b576040805162461bcd60e51b81526020600482018190526024820152600080516020611cba833981519152604482015290519081900360640190fd5b6001600160a01b0381166114b05760405162461bcd60e51b8152600401808060200182810382526026815260200180611c526026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008061152960085461081b600e544361165c90919063ffffffff16565b905060008160020a905060095482111561154857600092505050610541565b600754611555908261161a565b9250505090565b3390565b6000828201838110156115ba576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000826115d057506000611015565b828202828482816115dd57fe5b04146115ba5760405162461bcd60e51b8152600401808060200182810382526021815260200180611c786021913960400191505060405180910390fd5b60006115ba83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118e7565b60006115ba83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611989565b8015610e4b57600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156116ef57600080fd5b505afa158015611703573d6000803e3d6000fd5b505050506040513d602081101561171957600080fd5b50519050808211156117ad576001546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561177b57600080fd5b505af115801561178f573d6000803e3d6000fd5b505050506040513d60208110156117a557600080fd5b506118309050565b6001546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561180357600080fd5b505af1158015611817573d6000803e3d6000fd5b505050506040513d602081101561182d57600080fd5b50505b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526118309084906119e3565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526118e19085906119e3565b50505050565b600081836119735760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611938578181015183820152602001611920565b50505050905090810190601f1680156119655780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161197f57fe5b0495945050505050565b600081848411156119db5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611938578181015183820152602001611920565b505050900390565b6060611a38826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611a949092919063ffffffff16565b80519091501561183057808060200190516020811015611a5757600080fd5b50516118305760405162461bcd60e51b815260040180806020018281038252602a815260200180611cda602a913960400191505060405180910390fd5b6060611aa38484600085611aab565b949350505050565b6060611ab685611c18565b611b07576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310611b465780518252601f199092019160209182019101611b27565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611ba8576040519150601f19603f3d011682016040523d82523d6000602084013e611bad565b606091505b50915091508115611bc1579150611aa39050565b805115611bd15780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315611938578181015183820152602001611920565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611aa357505015159291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7744796e616d6963446f6c6c61722e46696e616e63653a2077726f6e67206465763f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212206dfc4a61a9875166d391c075afbfe55f330357216a1f86607b17458cfe9603ac64736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c9d7312a439539b5cd6b7fdacf76821100605b5d00000000000000000000000068b087916d1f92ffb2be56e53e27989b8c1e6e3e000000000000000000000000539ec5abd9c843a32fcb76f1558ebef4af1af0c200000000000000000000000000000000000000000000000022b1c8c1227a00000000000000000000000000000000000000000000000000000000000000b064e00000000000000000000000000000000000000000000000000000000000b064e0
-----Decoded View---------------
Arg [0] : _dfi (address): 0xC9d7312a439539b5CD6B7fdacF76821100605B5D
Arg [1] : _devaddr (address): 0x68B087916D1F92FfB2BE56E53E27989B8c1E6e3E
Arg [2] : _treasuryAddr (address): 0x539Ec5abd9C843a32fCB76F1558EbEF4Af1AF0c2
Arg [3] : _dfiPerBlock (uint256): 2500000000000000000
Arg [4] : _startBlock (uint256): 11560160
Arg [5] : _bonusEndBlock (uint256): 11560160
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000c9d7312a439539b5cd6b7fdacf76821100605b5d
Arg [1] : 00000000000000000000000068b087916d1f92ffb2be56e53e27989b8c1e6e3e
Arg [2] : 000000000000000000000000539ec5abd9c843a32fcb76f1558ebef4af1af0c2
Arg [3] : 00000000000000000000000000000000000000000000000022b1c8c1227a0000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000b064e0
Arg [5] : 0000000000000000000000000000000000000000000000000000000000b064e0
Deployed Bytecode Sourcemap
21646:10585:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24214:93;;;:::i;:::-;;;;;;;;;;;;;;;;23144:26;;;;;;;;;;;;;;;;-1:-1:-1;23144:26:0;;:::i;:::-;;;;-1:-1:-1;;;;;23144:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23387:34;;;:::i;22736:28::-;;;:::i;24382:669::-;;;;;;;;;;;;;;;;-1:-1:-1;24382:669:0;;;-1:-1:-1;;;;;24382:669:0;;;;;;;;;;;;:::i;:::-;;22811:30;;;:::i;22583:27::-;;;:::i;:::-;;;;-1:-1:-1;;;;;22583:27:0;;;;;;;;;;;;;;30624:403;;;;;;;;;;;;;;;;-1:-1:-1;30624:403:0;;:::i;22443:15::-;;;:::i;29833:761::-;;;;;;;;;;;;;;;;-1:-1:-1;29833:761:0;;;;;;;:::i;23477:25::-;;;:::i;27615:1123::-;;;;;;;;;;;;;;;;-1:-1:-1;27615:1123:0;;:::i;31098:464::-;;;;;;;;;;;;;;;;-1:-1:-1;31098:464:0;;:::i;23064:42::-;;;:::i;22946:39::-;;;:::i;27040:180::-;;;:::i;25474:107::-;;;;;;;;;;;;;;;;-1:-1:-1;25474:107:0;;:::i;26147:810::-;;;;;;;;;;;;;;;;-1:-1:-1;26147:810:0;;;;;;-1:-1:-1;;;;;26147:810:0;;:::i;20841:148::-;;;:::i;25146:320::-;;;;;;;;;;;;;;;;-1:-1:-1;25146:320:0;;;;;;;;;;;;;;:::i;23020:35::-;;;:::i;22896:44::-;;;:::i;32075:153::-;;;;;;;;;;;;;;;;-1:-1:-1;32075:153:0;-1:-1:-1;;;;;32075:153:0;;:::i;20199:79::-;;;:::i;25659:423::-;;;;;;;;;;;;;;;;-1:-1:-1;25659:423:0;;;;;;;:::i;23226:66::-;;;;;;;;;;;;;;;;-1:-1:-1;23226:66:0;;;;;;-1:-1:-1;;;;;23226:66:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;22517:36;;;:::i;22617:::-;;;:::i;28746:263::-;;;;;;;;;;;;;;;;-1:-1:-1;28746:263:0;;:::i;:::-;;;;;;;;;;;;;;;;;;22488:22;;;:::i;29077:707::-;;;;;;;;;;;;;;;;-1:-1:-1;29077:707:0;;;;;;;:::i;21144:244::-;;;;;;;;;;;;;;;;-1:-1:-1;21144:244:0;-1:-1:-1;;;;;21144:244:0;;:::i;27230:309::-;;;:::i;24214:93::-;24284:8;:15;24214:93;;:::o;23144:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23144:26:0;;;;-1:-1:-1;23144:26:0;;;:::o;23387:34::-;;;;:::o;22736:28::-;;;;:::o;24382:669::-;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;;;;;;;;;;;;;;;24483:9:::1;24479:143;24498:12;:10;:12::i;:::-;24496:1;:14;24479:143;;;24569:8;24578:1;24569:11;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;:19:::0;-1:-1:-1;;;;;24540:49:0;;::::1;24569:19:::0;::::1;24540:49;;24532:78;;;::::0;;-1:-1:-1;;;24532:78:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;24532:78:0;;;;;;;;;;;;;::::1;;24512:3;;24479:143;;;;24638:11;24634:61;;;24666:17;:15;:17::i;:::-;24707:23;24748:10;;24733:12;:25;:53;;24776:10;;24733:53;;;24761:12;24733:53;24815:15;::::0;24707:79;;-1:-1:-1;24815:32:0::1;::::0;24835:11;24815:19:::1;:32::i;:::-;24797:15;:50:::0;24872:170:::1;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;24872:170:0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;24872:170:0;;;;;;24858:8:::1;:185:::0;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;24858:185:0::1;::::0;;;::::1;;::::0;;;;;;;;;;;;;;-1:-1:-1;24858:185:0;;;;;;;24382:669::o;22811:30::-;;;;:::o;22583:27::-;;;-1:-1:-1;;;;;22583:27:0;;:::o;30624:403::-;30671:21;30695:8;30704:4;30695:14;;;;;;;;;;;;;;;;30744;;;:8;:14;;;;;;30759:10;30744:26;;;;;;;30695:14;;;;;;;;-1:-1:-1;30783:16:0;30753:4;30783:10;:16::i;:::-;30810:15;30828:67;30879:4;:15;;;30828:46;30869:4;30828:36;30844:4;:19;;;30828:4;:11;;;:15;;:36;;;;:::i;:::-;:40;;:46::i;:::-;:50;;:67::i;:::-;30810:85;;30906:36;30922:10;30934:7;30906:15;:36::i;:::-;30989:19;;;;30973:11;;:46;;31014:4;;30973:36;;:15;:36::i;:46::-;30955:4;:15;;:64;;;;30624:403;;;;:::o;22443:15::-;;;-1:-1:-1;;;;;22443:15:0;;:::o;29833:761::-;29900:21;29924:8;29933:4;29924:14;;;;;;;;;;;;;;;;29973;;;:8;:14;;;;;;29988:10;29973:26;;;;;;;30020:11;;29924:14;;;;;;;;-1:-1:-1;30020:22:0;-1:-1:-1;30020:22:0;30012:53;;;;;-1:-1:-1;;;30012:53:0;;;;;;;;;;;;-1:-1:-1;;;30012:53:0;;;;;;;;;;;;;;;30122:15;;30103:14;;;;:35;;:18;:35::i;:::-;30084:15;:54;;30076:85;;;;;-1:-1:-1;;;30076:85:0;;;;;;;;;;;;-1:-1:-1;;;30076:85:0;;;;;;;;;;;;;;;30174:16;30185:4;30174:10;:16::i;:::-;30201:15;30219:67;30270:4;:15;;;30219:46;30260:4;30219:36;30235:4;:19;;;30219:4;:11;;;:15;;:36;;;;:::i;:67::-;30201:85;;30297:36;30313:10;30325:7;30297:15;:36::i;:::-;30368:11;;:24;;30384:7;30368:15;:24::i;:::-;30354:38;;;30437:19;;;;30421:46;;30462:4;;30421:36;;30354:38;30421:15;:36::i;:46::-;30403:15;;;:64;30478:12;;:55;;-1:-1:-1;;;;;30478:12:0;30512:10;30525:7;30478:25;:55::i;:::-;30551:35;;;;;;;;30572:4;;30560:10;;30551:35;;;;;;;;;29833:761;;;;;:::o;23477:25::-;;;;:::o;27615:1123::-;27667:21;27691:8;27700:4;27691:14;;;;;;;;;;;;;;;;;;27667:38;;27736:4;:20;;;27720:12;:36;27716:75;;27773:7;;;27716:75;27820:12;;:37;;;-1:-1:-1;;;27820:37:0;;27851:4;27820:37;;;;;;27801:16;;-1:-1:-1;;;;;27820:12:0;;:22;;:37;;;;;;;;;;;;;;:12;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27820:37:0;;-1:-1:-1;27872:13:0;27868:102;;-1:-1:-1;27925:12:0;27902:20;;;;:35;27952:7;;27868:102;27976:19;27998;:17;:19::i;:::-;27976:41;;28041:1;28026:11;:16;28022:40;;28050:7;;;;;28022:40;28074:18;28095:49;28109:4;:20;;;28131:12;28095:13;:49::i;:::-;28074:70;;28155:17;28175:69;28228:15;;28175:48;28207:4;:15;;;28175:27;28190:11;28175:10;:14;;:27;;;;:::i;:::-;:31;;:48::i;:69::-;28324:3;;28333:7;;28356:9;;28155:89;;-1:-1:-1;;;;;;28324:3:0;;;;:8;;28333:7;;;;28342:33;;28371:3;;28342:24;;28155:89;;28342:13;:24::i;:33::-;28324:52;;;;;;;;;;;;;-1:-1:-1;;;;;28324:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28387:3:0;;28396:12;;28424:13;;-1:-1:-1;;;;;28387:3:0;;;;:8;;28396:12;;28410:37;;28443:3;;28410:28;;:9;;:13;:28::i;:37::-;28387:61;;;;;;;;;;;;;-1:-1:-1;;;;;28387:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28519:3:0;;:34;;;-1:-1:-1;;;28519:34:0;;28536:4;28519:34;;;;;;;;;;;;28504:12;;-1:-1:-1;;;;;28519:3:0;;:8;;:34;;;;;28387:61;;28519:34;;;;;;;28504:12;28519:3;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28519:34:0;;-1:-1:-1;28564:119:0;;;;28613:58;28637:33;28661:8;28637:19;:9;28651:4;28637:13;:19::i;:33::-;28613:19;;;;;:23;:58::i;:::-;28591:19;;;:80;28564:119;28718:12;28695:4;:20;;:35;;;;27615:1123;;;;;;;;:::o;31098:464::-;31157:21;31181:8;31190:4;31181:14;;;;;;;;;;;;;;;;31230;;;:8;:14;;;;;;31245:10;31230:26;;;;;;;31323:15;;31304:14;;;;31181;;;;;;;;-1:-1:-1;31230:26:0;31304:35;;:14;:18;:35::i;:::-;31285:15;:54;;31277:85;;;;;-1:-1:-1;;;31277:85:0;;;;;;;;;;;;-1:-1:-1;;;31277:85:0;;;;;;;;;;;;;;;31422:11;;31375:12;;:59;;-1:-1:-1;;;;;31375:12:0;;;;31409:10;;31375:25;:59::i;:::-;31486:11;;31450:48;;;;;;;31480:4;;31468:10;;31450:48;;;;;;;;;31523:1;31509:15;;;31535;;;;:19;-1:-1:-1;;31098:464:0:o;23064:42::-;;;;:::o;22946:39::-;;;;:::o;27040:180::-;27102:8;:15;27085:14;27128:85;27156:6;27150:3;:12;27128:85;;;27186:15;27197:3;27186:10;:15::i;:::-;27164:5;;27128:85;;;;27040:180;:::o;25474:107::-;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;;;;;;;;;;;;;;;25550:15:::1;:23:::0;25474:107::o;26147:810::-;26219:7;26239:21;26263:8;26272:4;26263:14;;;;;;;;;;;;;;;;26312;;;:8;:14;;;;;;-1:-1:-1;;;;;26312:21:0;;;;;;;;;;;26263:14;;;;;;;26369:19;;;;26418:12;;:37;;-1:-1:-1;;;26418:37:0;;26449:4;26418:37;;;;;;;;;26263:14;;-1:-1:-1;26312:21:0;;26369:19;;26263:14;;26418:12;;;;;:22;;:37;;;;;26263:14;;26418:37;;;;;:12;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26418:37:0;26485:20;;;;26418:37;;-1:-1:-1;26470:12:0;:35;:52;;;;-1:-1:-1;26509:13:0;;;26470:52;26466:402;;;26539:18;26560:49;26574:4;:20;;;26596:12;26560:13;:49::i;:::-;26539:70;;26624:19;26646;:17;:19::i;:::-;26624:41;;26682:17;26702:69;26755:15;;26702:48;26734:4;:15;;;26702:27;26717:11;26702:10;:14;;:27;;;;:::i;:69::-;26682:89;-1:-1:-1;26803:53:0;26822:33;26846:8;26822:19;26682:89;26836:4;26822:13;:19::i;:33::-;26803:14;;:18;:53::i;:::-;26786:70;;26466:402;;;;26887:62;26933:4;:15;;;26887:41;26923:4;26887:31;26903:14;26887:4;:11;;;:15;;:31;;;;:::i;:62::-;26880:69;;;;;;26147:810;;;;;:::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;25146: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;;;;;;;;;;;;;;;25245:16:::1;::::0;::::1;::::0;25241:66:::1;;25278:17;:15;:17::i;:::-;25345:63;25396:11;25345:46;25365:8;25374:4;25365:14;;;;;;;;;;;;;;;;;;:25;;;25345:15;;:19;;:46;;;;:::i;:::-;:50:::0;::::1;:63::i;:::-;25327:15;:81;;;;25447:11;25419:8;25428:4;25419:14;;;;;;;;;;;;;;;;;;:25;;:39;;;;25146:320:::0;;;:::o;23020:35::-;;;;:::o;22896:44::-;22939:1;22896:44;:::o;32075:153::-;32146:7;;-1:-1:-1;;;;;32146:7:0;32132:10;:21;32124:67;;;;-1:-1:-1;;;32124:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32202:7;:18;;-1:-1:-1;;;;;;32202:18:0;-1:-1:-1;;;;;32202:18:0;;;;;;;;;;32075:153::o;20199:79::-;20237:7;20264:6;-1:-1:-1;;;;;20264:6:0;20199:79;:::o;25659:423::-;25731:7;25762:13;;25755:3;:20;25751:324;;25799:36;22939:1;25799:14;:3;25807:5;25799:7;:14::i;:36::-;25792:43;;;;25751:324;25866:13;;25857:5;:22;25853:222;;25903:14;:3;25911:5;25903:7;:14::i;25853:222::-;25957:106;26026:22;26034:13;;26026:3;:7;;:22;;;;:::i;:::-;25957:46;22939:1;25957:24;25975:5;25957:13;;:17;;:24;;;;:::i;23226:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22517:36::-;;;;:::o;22617:::-;;;;:::o;28746:263::-;28802:4;28843:14;;;:8;:14;;;;;;;;28858:10;28843:26;;;;;;;28921:15;;28902:14;;;;:35;;:18;:35::i;:::-;28883:15;:54;28880:98;;28961:5;28954:12;;;;;28880:98;28997:4;28990:11;;;28746:263;;;;:::o;22488:22::-;;;-1:-1:-1;;;;;22488:22:0;;:::o;29077:707::-;29143:21;29167:8;29176:4;29167:14;;;;;;;;;;;;;;;;29216;;;:8;:14;;;;;;29231:10;29216:26;;;;;;;29167:14;;;;;;;;-1:-1:-1;29255:16:0;29225:4;29255:10;:16::i;:::-;29286:11;;:15;29282:184;;29318:15;29336:67;29387:4;:15;;;29336:46;29377:4;29336:36;29352:4;:19;;;29336:4;:11;;;:15;;:36;;;;:::i;:67::-;29318:85;;29418:36;29434:10;29446:7;29418:15;:36::i;:::-;29282:184;;29478:12;;:74;;-1:-1:-1;;;;;29478:12:0;29516:10;29537:4;29544:7;29478:29;:74::i;:::-;29581:11;;:24;;29597:7;29581:15;:24::i;:::-;29563:42;;;29650:19;;;;29634:46;;29675:4;;29634:36;;29563:42;29634:15;:36::i;:46::-;29616:15;;;:64;29709:15;29691:14;;;:33;29742:34;;;;;;;;29762:4;;29750:10;;29742:34;;;;;;;;;29077:707;;;;:::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;27230:309::-;27280:7;27300:20;27323:47;27356:13;;27323:28;27340:10;;27323:12;:16;;:28;;;;:::i;:47::-;27300:70;;27375:20;27403:12;27398:1;:17;27375:40;;27445:12;;27430;:27;27426:53;;;27472:1;27465:8;;;;;;27426:53;27498:15;;:33;;27518:12;27498:19;:33::i;:::-;27491:40;;;;27230:309;:::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;31674:345::-;31752:11;;31749:263;;31801:3;;:28;;;-1:-1:-1;;;31801:28:0;;31823:4;31801:28;;;;;;31780:18;;-1:-1:-1;;;;;31801:3:0;;:13;;:28;;;;;;;;;;;;;;:3;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31801:28:0;;-1:-1:-1;31848:20:0;;;31844:157;;;31889:3;;:29;;;-1:-1:-1;;;31889:29:0;;-1:-1:-1;;;;;31889:29:0;;;;;;;;;;;;;;;:3;;;;;:12;;:29;;;;;;;;;;;;;;:3;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31844:157:0;;-1:-1:-1;31844:157:0;;31959:3;;:26;;;-1:-1:-1;;;31959:26:0;;-1:-1:-1;;;;;31959:26:0;;;;;;;;;;;;;;;:3;;;;;:12;;:26;;;;;;;;;;;;;;:3;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31844:157:0;31749:263;31674:345;;:::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://6dfc4a61a9875166d391c075afbfe55f330357216a1f86607b17458cfe9603ac
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.