More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,889 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Exit | 19416399 | 214 days ago | IN | 0 ETH | 0.00492174 | ||||
Withdraw | 19033360 | 268 days ago | IN | 0 ETH | 0.00330384 | ||||
Withdraw | 15240303 | 805 days ago | IN | 0 ETH | 0.00077707 | ||||
Withdraw | 14809100 | 876 days ago | IN | 0 ETH | 0.00115793 | ||||
Withdraw | 14773739 | 882 days ago | IN | 0 ETH | 0.00310593 | ||||
Withdraw | 14619352 | 906 days ago | IN | 0 ETH | 0.00307937 | ||||
Withdraw | 14368955 | 945 days ago | IN | 0 ETH | 0.00212543 | ||||
Get Reward | 14344555 | 949 days ago | IN | 0 ETH | 0.00140137 | ||||
Withdraw | 14245685 | 964 days ago | IN | 0 ETH | 0.00407158 | ||||
Withdraw | 14245661 | 964 days ago | IN | 0 ETH | 0.0043555 | ||||
Withdraw | 14221546 | 968 days ago | IN | 0 ETH | 0.00421087 | ||||
Withdraw | 14182441 | 974 days ago | IN | 0 ETH | 0.00240109 | ||||
Withdraw | 14182441 | 974 days ago | IN | 0 ETH | 0.00366169 | ||||
Withdraw | 14141482 | 980 days ago | IN | 0 ETH | 0.00448171 | ||||
Get Reward | 14140200 | 981 days ago | IN | 0 ETH | 0.00431017 | ||||
Withdraw | 14140200 | 981 days ago | IN | 0 ETH | 0.00629528 | ||||
Withdraw | 14102232 | 986 days ago | IN | 0 ETH | 0.00966294 | ||||
Withdraw | 14072007 | 991 days ago | IN | 0 ETH | 0.00985039 | ||||
Get Reward | 14072005 | 991 days ago | IN | 0 ETH | 0.01267198 | ||||
Withdraw | 14017134 | 1000 days ago | IN | 0 ETH | 0.0072726 | ||||
Withdraw | 13980384 | 1005 days ago | IN | 0 ETH | 0.01456357 | ||||
Withdraw | 13954241 | 1009 days ago | IN | 0 ETH | 0.0125785 | ||||
Withdraw | 13931591 | 1013 days ago | IN | 0 ETH | 0.00609782 | ||||
Withdraw | 13864362 | 1023 days ago | IN | 0 ETH | 0.00751184 | ||||
Withdraw | 13852139 | 1025 days ago | IN | 0 ETH | 0.00762531 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
dgStaking3
Compiler Version
v0.7.5+commit.eb77ed08
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-12-19 */ // SPDX-License-Identifier: -- 🎲 -- pragma solidity ^0.7.5; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, 'SafeMath: addition overflow'); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, 'SafeMath: subtraction overflow'); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, 'SafeMath: multiplication overflow'); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, 'SafeMath: division by zero'); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, 'SafeMath: modulo by zero'); return a % b; } } library Math { function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } function average(uint256 a, uint256 b) internal pure returns (uint256) { return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2); } } contract Context { constructor() {} function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; return msg.data; } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _owner = _msgSender(); emit OwnershipTransferred( address(0), _owner ); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require( isOwner(), 'Ownable: caller is not the owner' ); _; } function isOwner() public view returns (bool) { return _msgSender() == _owner; } function renounceOwnership() public onlyOwner { emit OwnershipTransferred( _owner, address(0x0) ); _owner = address(0x0); } function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal { require( newOwner != address(0x0), 'Ownable: new owner is the zero address' ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library Address { function isContract(address account) internal view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; assembly { codehash := extcodehash(account) } return (codehash != 0x0 && codehash != accountHash); } function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, 'Address: insufficient balance' ); (bool success, ) = recipient.call{value: amount}(''); require( success, 'Address: unable to send value' ); } } library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { callOptionalReturn( token, abi.encodeWithSelector( token.transfer.selector, to, value ) ); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { callOptionalReturn( token, abi.encodeWithSelector( token.transferFrom.selector, from, to, value ) ); } function safeApprove( IERC20 token, address spender, uint256 value ) internal { 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); callOptionalReturn( token, abi.encodeWithSelector( token.approve.selector, spender, newAllowance ) ); } function callOptionalReturn( IERC20 token, bytes memory data ) private { require( address(token).isContract(), 'SafeERC20: call to non-contract' ); (bool success, bytes memory returndata) = address(token).call(data); require( success, 'SafeERC20: low-level call failed' ); if (returndata.length > 0) { require( abi.decode(returndata, (bool)), 'SafeERC20: ERC20 operation did not succeed' ); } } } contract LPTokenWrapper { using SafeMath for uint256; using SafeERC20 for IERC20; IERC20 public uni = IERC20( 0x44c21F5DCB285D92320AE345C92e8B6204Be8CdF ); uint256 private _totalSupply; mapping(address => uint256) private _balances; function totalSupply() public view returns (uint256) { return _totalSupply; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function _stake(uint256 amount) internal { _totalSupply = _totalSupply.add(amount); _balances[msg.sender] = _balances[msg.sender].add(amount); uni.safeTransferFrom( msg.sender, address(this), amount ); } function _withdraw(uint256 amount) internal { _totalSupply = _totalSupply.sub(amount); _balances[msg.sender] = _balances[msg.sender].sub(amount); uni.safeTransfer( msg.sender, amount ); } } contract dgStaking3 is LPTokenWrapper, Ownable { using SafeMath for uint256; using SafeERC20 for IERC20; IERC20 public dg = IERC20( 0xEE06A81a695750E71a662B51066F2c74CF4478a0 ); uint256 public constant DURATION = 5 weeks; uint256 public periodFinish; uint256 public rewardRate; uint256 public lastUpdateTime; uint256 public rewardPerTokenStored; mapping(address => uint256) public userRewardPerTokenPaid; mapping(address => uint256) public rewards; event RewardAdded( uint256 reward ); event Staked( address indexed user, uint256 amount ); event Withdrawn( address indexed user, uint256 amount ); event RewardPaid( address indexed user, uint256 reward ); modifier updateReward(address account) { rewardPerTokenStored = rewardPerToken(); lastUpdateTime = lastTimeRewardApplicable(); if (account != address(0)) { rewards[account] = earned(account); userRewardPerTokenPaid[account] = rewardPerTokenStored; } _; } function lastTimeRewardApplicable() public view returns (uint256) { return Math.min( block.timestamp, periodFinish ); } function rewardPerToken() public view returns (uint256) { if (totalSupply() == 0) { return rewardPerTokenStored; } return rewardPerTokenStored.add( lastTimeRewardApplicable() .sub(lastUpdateTime) .mul(rewardRate) .mul(1e18) .div(totalSupply()) ); } function earned( address account ) public view returns (uint256) { return balanceOf(account) .mul(rewardPerToken().sub(userRewardPerTokenPaid[account])) .div(1E18) .add(rewards[account]); } function stake( uint256 amount ) public updateReward(msg.sender) { require( amount > 0, 'Cannot stake 0' ); _stake(amount); emit Staked( msg.sender, amount ); } function withdraw( uint256 amount ) public updateReward(msg.sender) { require( amount > 0, 'Cannot withdraw 0' ); _withdraw(amount); emit Withdrawn( msg.sender, amount ); } function exit() external { withdraw(balanceOf(msg.sender)); getReward(); } function getReward() public updateReward(msg.sender) returns (uint256 reward) { reward = earned(msg.sender); if (reward > 0) { rewards[msg.sender] = 0; dg.safeTransfer(msg.sender, reward); emit RewardPaid(msg.sender, reward); } } function notifyRewardAmount(uint256 reward) external onlyOwner updateReward(address(0x0)) { if (block.timestamp >= periodFinish) { rewardRate = reward.div(DURATION); } else { uint256 remaining = periodFinish.sub(block.timestamp); uint256 leftover = remaining.mul(rewardRate); rewardRate = reward.add(leftover).div(DURATION); } lastUpdateTime = block.timestamp; periodFinish = block.timestamp.add(DURATION); emit RewardAdded(reward); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dg","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"exit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getReward","outputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"name":"notifyRewardAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodFinish","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerTokenStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","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":"uni","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userRewardPerTokenPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600080546001600160a01b03199081167344c21f5dcb285d92320ae345c92e8b6204be8cdf179091556004805490911673ee06a81a695750e71a662b51066f2c74cf4478a017905534801561005857600080fd5b506100616100b2565b600380546001600160a01b0319166001600160a01b0392831617908190556040519116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36100b6565b3390565b610ffe806100c56000396000f3fe608060405234801561001057600080fd5b506004361061014c5760003560e01c806380faa57d116100c3578063cd3daf9d1161007c578063cd3daf9d146102d4578063df136d65146102dc578063e9fad8ee146102e4578063ebe2b12b146102ec578063edc9af95146102f4578063f2fde38b146102fc5761014c565b806380faa57d1461025d5780638b876347146102655780638da5cb5b1461028b5780638f32d59b14610293578063a694fc3a146102af578063c8f33c91146102cc5761014c565b80633c6b16ab116101155780633c6b16ab146101de5780633d18b912146101fb57806355568b031461020357806370a0823114610227578063715018a61461024d5780637b0a47ee146102555761014c565b80628cc262146101515780630700037d1461018957806318160ddd146101af5780631be05289146101b75780632e1a7d4d146101bf575b600080fd5b6101776004803603602081101561016757600080fd5b50356001600160a01b0316610322565b60408051918252519081900360200190f35b6101776004803603602081101561019f57600080fd5b50356001600160a01b0316610390565b6101776103a2565b6101776103a9565b6101dc600480360360208110156101d557600080fd5b50356103b0565b005b6101dc600480360360208110156101f457600080fd5b5035610497565b6101776105f9565b61020b6106cb565b604080516001600160a01b039092168252519081900360200190f35b6101776004803603602081101561023d57600080fd5b50356001600160a01b03166106da565b6101dc6106f5565b610177610798565b61017761079e565b6101776004803603602081101561027b57600080fd5b50356001600160a01b03166107b1565b61020b6107c3565b61029b6107d2565b604080519115158252519081900360200190f35b6101dc600480360360208110156102c557600080fd5b50356107f8565b6101776108dc565b6101776108e2565b610177610930565b6101dc610936565b610177610952565b61020b610958565b6101dc6004803603602081101561031257600080fd5b50356001600160a01b0316610967565b6001600160a01b0381166000908152600a6020908152604080832054600990925282205461038a919061038490670de0b6b3a76400009061037e9061036f906103696108e2565b906109c9565b610378886106da565b90610a26565b90610a86565b90610af0565b92915050565b600a6020526000908152604090205481565b6001545b90565b622e248081565b336103b96108e2565b6008556103c461079e565b6007556001600160a01b0381161561040b576103df81610322565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b60008211610454576040805162461bcd60e51b8152602060048201526011602482015270043616e6e6f74207769746864726177203607c1b604482015290519081900360640190fd5b61045d82610b4a565b60408051838152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a25050565b61049f6107d2565b6104f0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60006104fa6108e2565b60085561050561079e565b6007556001600160a01b0381161561054c5761052081610322565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b600554421061056a5761056282622e2480610a86565b6006556105ac565b60055460009061057a90426109c9565b9050600061059360065483610a2690919063ffffffff16565b90506105a6622e248061037e8684610af0565b60065550505b4260078190556105bf90622e2480610af0565b6005556040805183815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a15050565b6000336106046108e2565b60085561060f61079e565b6007556001600160a01b038116156106565761062a81610322565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b61065f33610322565b915081156106c757336000818152600a6020526040812055600454610690916001600160a01b039091169084610b9b565b60408051838152905133917fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486919081900360200190a25b5090565b6004546001600160a01b031681565b6001600160a01b031660009081526002602052604090205490565b6106fd6107d2565b61074e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b60065481565b60006107ac42600554610bf2565b905090565b60096020526000908152604090205481565b6003546001600160a01b031690565b6003546000906001600160a01b03166107e9610c08565b6001600160a01b031614905090565b336108016108e2565b60085561080c61079e565b6007556001600160a01b038116156108535761082781610322565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b60008211610899576040805162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b604482015290519081900360640190fd5b6108a282610c0c565b60408051838152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a25050565b60075481565b60006108ec6103a2565b6108f957506008546103a6565b6107ac6109276109076103a2565b61037e670de0b6b3a764000061037860065461037860075461036961079e565b60085490610af0565b60085481565b610947610942336106da565b6103b0565b61094f6105f9565b50565b60055481565b6000546001600160a01b031681565b61096f6107d2565b6109c0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61094f81610c62565b600082821115610a20576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082610a355750600061038a565b82820282848281610a4257fe5b0414610a7f5760405162461bcd60e51b8152600401808060200182810382526021815260200180610f7e6021913960400191505060405180910390fd5b9392505050565b6000808211610adc576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610ae757fe5b04949350505050565b600082820183811015610a7f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600154610b5790826109c9565b60015533600090815260026020526040902054610b7490826109c9565b33600081815260026020526040812092909255905461094f916001600160a01b0390911690835b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610bed908490610d03565b505050565b6000818310610c015781610a7f565b5090919050565b3390565b600154610c199082610af0565b60015533600090815260026020526040902054610c369082610af0565b33600081815260026020526040812092909255905461094f916001600160a01b03909116903084610ec1565b6001600160a01b038116610ca75760405162461bcd60e51b8152600401808060200182810382526026815260200180610f586026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b610d15826001600160a01b0316610f1b565b610d66576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310610da45780518252601f199092019160209182019101610d85565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610e06576040519150601f19603f3d011682016040523d82523d6000602084013e610e0b565b606091505b509150915081610e62576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ebb57808060200190516020811015610e7e57600080fd5b5051610ebb5760405162461bcd60e51b815260040180806020018281038252602a815260200180610f9f602a913960400191505060405180910390fd5b50505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ebb908590610d03565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590610f4f5750808214155b94935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122009302dc8ca32c6626aca3ae9e337860138ffd3e6d6cfbf3b77ea1407003f4df464736f6c63430007050033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061014c5760003560e01c806380faa57d116100c3578063cd3daf9d1161007c578063cd3daf9d146102d4578063df136d65146102dc578063e9fad8ee146102e4578063ebe2b12b146102ec578063edc9af95146102f4578063f2fde38b146102fc5761014c565b806380faa57d1461025d5780638b876347146102655780638da5cb5b1461028b5780638f32d59b14610293578063a694fc3a146102af578063c8f33c91146102cc5761014c565b80633c6b16ab116101155780633c6b16ab146101de5780633d18b912146101fb57806355568b031461020357806370a0823114610227578063715018a61461024d5780637b0a47ee146102555761014c565b80628cc262146101515780630700037d1461018957806318160ddd146101af5780631be05289146101b75780632e1a7d4d146101bf575b600080fd5b6101776004803603602081101561016757600080fd5b50356001600160a01b0316610322565b60408051918252519081900360200190f35b6101776004803603602081101561019f57600080fd5b50356001600160a01b0316610390565b6101776103a2565b6101776103a9565b6101dc600480360360208110156101d557600080fd5b50356103b0565b005b6101dc600480360360208110156101f457600080fd5b5035610497565b6101776105f9565b61020b6106cb565b604080516001600160a01b039092168252519081900360200190f35b6101776004803603602081101561023d57600080fd5b50356001600160a01b03166106da565b6101dc6106f5565b610177610798565b61017761079e565b6101776004803603602081101561027b57600080fd5b50356001600160a01b03166107b1565b61020b6107c3565b61029b6107d2565b604080519115158252519081900360200190f35b6101dc600480360360208110156102c557600080fd5b50356107f8565b6101776108dc565b6101776108e2565b610177610930565b6101dc610936565b610177610952565b61020b610958565b6101dc6004803603602081101561031257600080fd5b50356001600160a01b0316610967565b6001600160a01b0381166000908152600a6020908152604080832054600990925282205461038a919061038490670de0b6b3a76400009061037e9061036f906103696108e2565b906109c9565b610378886106da565b90610a26565b90610a86565b90610af0565b92915050565b600a6020526000908152604090205481565b6001545b90565b622e248081565b336103b96108e2565b6008556103c461079e565b6007556001600160a01b0381161561040b576103df81610322565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b60008211610454576040805162461bcd60e51b8152602060048201526011602482015270043616e6e6f74207769746864726177203607c1b604482015290519081900360640190fd5b61045d82610b4a565b60408051838152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a25050565b61049f6107d2565b6104f0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60006104fa6108e2565b60085561050561079e565b6007556001600160a01b0381161561054c5761052081610322565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b600554421061056a5761056282622e2480610a86565b6006556105ac565b60055460009061057a90426109c9565b9050600061059360065483610a2690919063ffffffff16565b90506105a6622e248061037e8684610af0565b60065550505b4260078190556105bf90622e2480610af0565b6005556040805183815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a15050565b6000336106046108e2565b60085561060f61079e565b6007556001600160a01b038116156106565761062a81610322565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b61065f33610322565b915081156106c757336000818152600a6020526040812055600454610690916001600160a01b039091169084610b9b565b60408051838152905133917fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486919081900360200190a25b5090565b6004546001600160a01b031681565b6001600160a01b031660009081526002602052604090205490565b6106fd6107d2565b61074e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b60065481565b60006107ac42600554610bf2565b905090565b60096020526000908152604090205481565b6003546001600160a01b031690565b6003546000906001600160a01b03166107e9610c08565b6001600160a01b031614905090565b336108016108e2565b60085561080c61079e565b6007556001600160a01b038116156108535761082781610322565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b60008211610899576040805162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b604482015290519081900360640190fd5b6108a282610c0c565b60408051838152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a25050565b60075481565b60006108ec6103a2565b6108f957506008546103a6565b6107ac6109276109076103a2565b61037e670de0b6b3a764000061037860065461037860075461036961079e565b60085490610af0565b60085481565b610947610942336106da565b6103b0565b61094f6105f9565b50565b60055481565b6000546001600160a01b031681565b61096f6107d2565b6109c0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61094f81610c62565b600082821115610a20576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082610a355750600061038a565b82820282848281610a4257fe5b0414610a7f5760405162461bcd60e51b8152600401808060200182810382526021815260200180610f7e6021913960400191505060405180910390fd5b9392505050565b6000808211610adc576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610ae757fe5b04949350505050565b600082820183811015610a7f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600154610b5790826109c9565b60015533600090815260026020526040902054610b7490826109c9565b33600081815260026020526040812092909255905461094f916001600160a01b0390911690835b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610bed908490610d03565b505050565b6000818310610c015781610a7f565b5090919050565b3390565b600154610c199082610af0565b60015533600090815260026020526040902054610c369082610af0565b33600081815260026020526040812092909255905461094f916001600160a01b03909116903084610ec1565b6001600160a01b038116610ca75760405162461bcd60e51b8152600401808060200182810382526026815260200180610f586026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b610d15826001600160a01b0316610f1b565b610d66576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310610da45780518252601f199092019160209182019101610d85565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610e06576040519150601f19603f3d011682016040523d82523d6000602084013e610e0b565b606091505b509150915081610e62576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ebb57808060200190516020811015610e7e57600080fd5b5051610ebb5760405162461bcd60e51b815260040180806020018281038252602a815260200180610f9f602a913960400191505060405180910390fd5b50505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ebb908590610d03565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590610f4f5750808214155b94935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122009302dc8ca32c6626aca3ae9e337860138ffd3e6d6cfbf3b77ea1407003f4df464736f6c63430007050033
Deployed Bytecode Sourcemap
8644:3781:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10470:288;;;;;;;;;;;;;;;;-1:-1:-1;10470:288:0;-1:-1:-1;;;;;10470:288:0;;:::i;:::-;;;;;;;;;;;;;;;;9127:42;;;;;;;;;;;;;;;;-1:-1:-1;9127:42:0;-1:-1:-1;;;;;9127:42:0;;:::i;7845:91::-;;;:::i;8862:42::-;;;:::i;11077:315::-;;;;;;;;;;;;;;;;-1:-1:-1;11077:315:0;;:::i;:::-;;11845:577;;;;;;;;;;;;;;;;-1:-1:-1;11845:577:0;;:::i;11505:332::-;;;:::i;8768:85::-;;;:::i;:::-;;;;-1:-1:-1;;;;;8768:85:0;;;;;;;;;;;;;;7944:110;;;;;;;;;;;;;;;;-1:-1:-1;7944:110:0;-1:-1:-1;;;;;7944:110:0;;:::i;2504:181::-;;;:::i;8951:25::-;;;:::i;9837:200::-;;;:::i;9063:57::-;;;;;;;;;;;;;;;;-1:-1:-1;9063:57:0;-1:-1:-1;;;;;9063:57:0;;:::i;2164:79::-;;;:::i;2402:94::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;10766:303;;;;;;;;;;;;;;;;-1:-1:-1;10766:303:0;;:::i;8983:29::-;;;:::i;10045:417::-;;;:::i;9019:35::-;;;:::i;11400:97::-;;;:::i;8917:27::-;;;:::i;7661:86::-;;;:::i;2693:109::-;;;;;;;;;;;;;;;;-1:-1:-1;2693:109:0;-1:-1:-1;;;;;2693:109:0;;:::i;10470:288::-;-1:-1:-1;;;;;10733:16:0;;10567:7;10733:16;;;:7;:16;;;;;;;;;10657:22;:31;;;;;;10599:151;;10733:16;10599:115;;10709:4;;10599:91;;10636:53;;:16;:14;:16::i;:::-;:20;;:53::i;:::-;10599:18;10609:7;10599:9;:18::i;:::-;:36;;:91::i;:::-;:109;;:115::i;:::-;:133;;:151::i;:::-;10592:158;10470:288;-1:-1:-1;;10470:288:0:o;9127:42::-;;;;;;;;;;;;;:::o;7845:91::-;7916:12;;7845:91;;:::o;8862:42::-;8897:7;8862:42;:::o;11077:315::-;11165:10;9570:16;:14;:16::i;:::-;9547:20;:39;9614:26;:24;:26::i;:::-;9597:14;:43;-1:-1:-1;;;;;9657:21:0;;;9653:157;;9714:15;9721:7;9714:6;:15::i;:::-;-1:-1:-1;;;;;9695:16:0;;;;;;:7;:16;;;;;;;;:34;;;;9778:20;;9744:22;:31;;;;;;:54;9653:157;11224:1:::1;11215:6;:10;11193:77;;;::::0;;-1:-1:-1;;;11193:77:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;11193:77:0;;;;;;;;;;;;;::::1;;11283:17;11293:6;11283:9;:17::i;:::-;11318:66;::::0;;;;;;;11342:10:::1;::::0;11318:66:::1;::::0;;;;;::::1;::::0;;::::1;11077:315:::0;;:::o;11845:577::-;2305:9;:7;:9::i;:::-;2283:91;;;;;-1:-1:-1;;;2283:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11956:3:::1;9570:16;:14;:16::i;:::-;9547:20;:39:::0;9614:26:::1;:24;:26::i;:::-;9597:14;:43:::0;-1:-1:-1;;;;;9657:21:0;::::1;::::0;9653:157:::1;;9714:15;9721:7;9714:6;:15::i;:::-;-1:-1:-1::0;;;;;9695:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:34;;;;9778:20:::1;::::0;9744:22:::1;:31:::0;;;;;;:54;9653:157:::1;12001:12:::2;;11982:15;:31;11978:304;;12043:20;:6:::0;8897:7:::2;12043:10;:20::i;:::-;12030:10;:33:::0;11978:304:::2;;;12116:12;::::0;12096:17:::2;::::0;12116:33:::2;::::0;12133:15:::2;12116:16;:33::i;:::-;12096:53;;12164:16;12183:25;12197:10;;12183:9;:13;;:25;;;;:::i;:::-;12164:44:::0;-1:-1:-1;12236:34:0::2;8897:7;12236:20;:6:::0;12164:44;12236:10:::2;:20::i;:34::-;12223:10;:47:::0;-1:-1:-1;;11978:304:0::2;12309:15;12292:14;:32:::0;;;12350:29:::2;::::0;8897:7:::2;12350:19;:29::i;:::-;12335:12;:44:::0;12395:19:::2;::::0;;;;;;;::::2;::::0;;;;::::2;::::0;;::::2;2385:1:::1;11845:577:::0;:::o;11505:332::-;11594:14;11564:10;9570:16;:14;:16::i;:::-;9547:20;:39;9614:26;:24;:26::i;:::-;9597:14;:43;-1:-1:-1;;;;;9657:21:0;;;9653:157;;9714:15;9721:7;9714:6;:15::i;:::-;-1:-1:-1;;;;;9695:16:0;;;;;;:7;:16;;;;;;;;:34;;;;9778:20;;9744:22;:31;;;;;;:54;9653:157;11635:18:::1;11642:10;11635:6;:18::i;:::-;11626:27:::0;-1:-1:-1;11668:10:0;;11664:166:::1;;11703:10;11717:1;11695:19:::0;;;:7:::1;:19;::::0;;;;:23;11733:2:::1;::::0;:35:::1;::::0;-1:-1:-1;;;;;11733:2:0;;::::1;::::0;11761:6;11733:15:::1;:35::i;:::-;11788:30;::::0;;;;;;;11799:10:::1;::::0;11788:30:::1;::::0;;;;;::::1;::::0;;::::1;11664:166;11505:332:::0;;:::o;8768:85::-;;;-1:-1:-1;;;;;8768:85:0;;:::o;7944:110::-;-1:-1:-1;;;;;8028:18:0;8001:7;8028:18;;;:9;:18;;;;;;;7944:110::o;2504:181::-;2305:9;:7;:9::i;:::-;2283:91;;;;;-1:-1:-1;;;2283:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2601:6:::1;::::0;2566:79:::1;::::0;2630:3:::1;::::0;-1:-1:-1;;;;;2601:6:0::1;::::0;2566:79:::1;::::0;2630:3;;2566:79:::1;2656:6;:21:::0;;-1:-1:-1;;;;;;2656:21:0::1;::::0;;2504:181::o;8951:25::-;;;;:::o;9837:200::-;9921:7;9953:76;9976:15;10006:12;;9953:8;:76::i;:::-;9946:83;;9837:200;:::o;9063:57::-;;;;;;;;;;;;;:::o;2164:79::-;2229:6;;-1:-1:-1;;;;;2229:6:0;2164:79;:::o;2402:94::-;2482:6;;2442:4;;-1:-1:-1;;;;;2482:6:0;2466:12;:10;:12::i;:::-;-1:-1:-1;;;;;2466:22:0;;2459:29;;2402:94;:::o;10766:303::-;10851:10;9570:16;:14;:16::i;:::-;9547:20;:39;9614:26;:24;:26::i;:::-;9597:14;:43;-1:-1:-1;;;;;9657:21:0;;;9653:157;;9714:15;9721:7;9714:6;:15::i;:::-;-1:-1:-1;;;;;9695:16:0;;;;;;:7;:16;;;;;;;;:34;;;;9778:20;;9744:22;:31;;;;;;:54;9653:157;10910:1:::1;10901:6;:10;10879:74;;;::::0;;-1:-1:-1;;;10879:74:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;10879:74:0;;;;;;;;;;;;;::::1;;10966:14;10973:6;10966;:14::i;:::-;10998:63;::::0;;;;;;;11019:10:::1;::::0;10998:63:::1;::::0;;;;;::::1;::::0;;::::1;10766:303:::0;;:::o;8983:29::-;;;;:::o;10045:417::-;10119:7;10148:13;:11;:13::i;:::-;10144:78;;-1:-1:-1;10190:20:0;;10183:27;;10144:78;10241:213;10280:163;10429:13;:11;:13::i;:::-;10280:126;10401:4;10280:98;10367:10;;10280:64;10329:14;;10280:26;:24;:26::i;:163::-;10241:20;;;:24;:213::i;9019:35::-;;;;:::o;11400:97::-;11436:31;11445:21;11455:10;11445:9;:21::i;:::-;11436:8;:31::i;:::-;11478:11;:9;:11::i;:::-;;11400:97::o;8917:27::-;;;;:::o;7661:86::-;;;-1:-1:-1;;;;;7661:86:0;;:::o;2693:109::-;2305:9;:7;:9::i;:::-;2283:91;;;;;-1:-1:-1;;;2283:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2766:28:::1;2785:8;2766:18;:28::i;282:182::-:0;340:7;373:1;368;:6;;360:49;;;;;-1:-1:-1;;;360:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;432:5:0;;;282:182::o;472:248::-;530:7;554:6;550:47;;-1:-1:-1;584:1:0;577:8;;550:47;621:5;;;625:1;621;:5;:1;645:5;;;;;:10;637:56;;;;-1:-1:-1;;;637:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;711:1;472:248;-1:-1:-1;;;472:248:0:o;728:264::-;786:7;818:1;814;:5;806:44;;;;;-1:-1:-1;;;806:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;861:9;877:1;873;:5;;;;;;;728:264;-1:-1:-1;;;;728:264:0:o;95:179::-;153:7;185:5;;;209:6;;;;201:46;;;;;-1:-1:-1;;;201:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;8368:269;8440:12;;:24;;8457:6;8440:16;:24::i;:::-;8425:12;:39;8520:10;8510:21;;;;:9;:21;;;;;;:33;;8536:6;8510:25;:33::i;:::-;8487:10;8477:21;;;;:9;:21;;;;;:66;;;;8556:3;;:73;;-1:-1:-1;;;;;8556:3:0;;;;8612:6;4728:327;4912:124;;;-1:-1:-1;;;;;4912:124:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4912:124:0;-1:-1:-1;;;4912:124:0;;;4859:188;;4892:5;;4859:18;:188::i;:::-;4728:327;;;:::o;1296:106::-;1354:7;1385:1;1381;:5;:13;;1393:1;1381:13;;;-1:-1:-1;1389:1:0;;1374:20;-1:-1:-1;1296:106:0:o;1605:98::-;1685:10;1605:98;:::o;8062:298::-;8131:12;;:24;;8148:6;8131:16;:24::i;:::-;8116:12;:39;8211:10;8201:21;;;;:9;:21;;;;;;:33;;8227:6;8201:25;:33::i;:::-;8178:10;8168:21;;;;:9;:21;;;;;:66;;;;8247:3;;:105;;-1:-1:-1;;;;;8247:3:0;;;;8315:4;8335:6;8247:20;:105::i;2810:268::-;-1:-1:-1;;;;;2898:24:0;;2876:112;;;;-1:-1:-1;;;2876:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3025:6;;3004:38;;-1:-1:-1;;;;;3004:38:0;;;;3025:6;;3004:38;;3025:6;;3004:38;3053:6;:17;;-1:-1:-1;;;;;;3053:17:0;-1:-1:-1;;;;;3053:17:0;;;;;;;;;;2810:268::o;6938:615::-;7079:27;7087:5;-1:-1:-1;;;;;7079:25:0;;:27::i;:::-;7057:108;;;;;-1:-1:-1;;;7057:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7179:12;7193:23;7228:5;-1:-1:-1;;;;;7220:19:0;7240:4;7220:25;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7220:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7178:67;;;;7278:7;7256:89;;;;;-1:-1:-1;;;7256:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7362:17;;:21;7358:188;;7437:10;7426:30;;;;;;;;;;;;;;;-1:-1:-1;7426:30:0;7400:134;;;;-1:-1:-1;;;7400:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6938:615;;;;:::o;5063:381::-;5274:151;;;-1:-1:-1;;;;;5274:151:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5274:151:0;-1:-1:-1;;;5274:151:0;;;5221:215;;5254:5;;5221:18;:215::i;3803:317::-;3863:4;4029:20;;3929:66;4069:15;;;;;:42;;;4100:11;4088:8;:23;;4069:42;4061:51;3803:317;-1:-1:-1;;;;3803:317:0:o
Swarm Source
ipfs://09302dc8ca32c6626aca3ae9e337860138ffd3e6d6cfbf3b77ea1407003f4df4
Loading...
Loading
Loading...
Loading
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.