More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 582 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Unstake | 20453279 | 34 days ago | IN | 0 ETH | 0.00011624 | ||||
Unstake | 19566261 | 158 days ago | IN | 0 ETH | 0.0019006 | ||||
Unstake | 19468659 | 172 days ago | IN | 0 ETH | 0.00185933 | ||||
Unstake | 19468655 | 172 days ago | IN | 0 ETH | 0.00662356 | ||||
Unstake | 19451959 | 174 days ago | IN | 0 ETH | 0.00069431 | ||||
Unstake | 19451958 | 174 days ago | IN | 0 ETH | 0.00274383 | ||||
Unstake | 18930063 | 247 days ago | IN | 0 ETH | 0.00195437 | ||||
Unstake | 18930058 | 247 days ago | IN | 0 ETH | 0.00203123 | ||||
Unstake | 18930045 | 247 days ago | IN | 0 ETH | 0.00212465 | ||||
Unstake | 18779563 | 268 days ago | IN | 0 ETH | 0.00223177 | ||||
Unstake | 18756518 | 272 days ago | IN | 0 ETH | 0.00070959 | ||||
Unstake | 18720277 | 277 days ago | IN | 0 ETH | 0.00180695 | ||||
Unstake | 18708738 | 278 days ago | IN | 0 ETH | 0.00409277 | ||||
Unstake | 18655178 | 286 days ago | IN | 0 ETH | 0.00067841 | ||||
Unstake | 18650319 | 287 days ago | IN | 0 ETH | 0.00087147 | ||||
Unstake | 18650318 | 287 days ago | IN | 0 ETH | 0.00088045 | ||||
Unstake | 18650272 | 287 days ago | IN | 0 ETH | 0.00086539 | ||||
Unstake | 18650259 | 287 days ago | IN | 0 ETH | 0.00091263 | ||||
Unstake | 18522020 | 304 days ago | IN | 0 ETH | 0.00377917 | ||||
Unstake | 18513877 | 306 days ago | IN | 0 ETH | 0.00112884 | ||||
Unstake | 18385765 | 324 days ago | IN | 0 ETH | 0.00052525 | ||||
Unstake | 18035567 | 373 days ago | IN | 0 ETH | 0.00399882 | ||||
Unstake | 17884274 | 394 days ago | IN | 0 ETH | 0.00203064 | ||||
Unstake | 17727348 | 416 days ago | IN | 0 ETH | 0.00058858 | ||||
Unstake | 17727346 | 416 days ago | IN | 0 ETH | 0.00059923 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
DCAREMining
Compiler Version
v0.7.4+commit.3f05b770
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-11-18 */ // SPDX-License-Identifier: None pragma solidity >=0.4.22 <0.8.0; 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) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); 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) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } 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); } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; return msg.data; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library Address { function isContract(address account) internal view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } 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"); } 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"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract ERC20 is Context, IERC20 { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; constructor (string memory name, string memory symbol) { _name = name; _symbol = symbol; _decimals = 18; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _setupDecimals(uint8 decimals_) internal { _decimals = decimals_; } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } } library EnumerableSet { struct Set { bytes32[] _values; mapping (bytes32 => uint256) _indexes; } function _add(Set storage set, bytes32 value) private returns (bool) { if (!_contains(set, value)) { set._values.push(value); set._indexes[value] = set._values.length; return true; } else { return false; } } function _remove(Set storage set, bytes32 value) private returns (bool) { uint256 valueIndex = set._indexes[value]; if (valueIndex != 0) { uint256 toDeleteIndex = valueIndex - 1; uint256 lastIndex = set._values.length - 1; bytes32 lastvalue = set._values[lastIndex]; set._values[toDeleteIndex] = lastvalue; set._indexes[lastvalue] = toDeleteIndex + 1; set._values.pop(); delete set._indexes[value]; return true; } else { return false; } } function _contains(Set storage set, bytes32 value) private view returns (bool) { return set._indexes[value] != 0; } function _length(Set storage set) private view returns (uint256) { return set._values.length; } function _at(Set storage set, uint256 index) private view returns (bytes32) { require(set._values.length > index, "EnumerableSet: index out of bounds"); return set._values[index]; } struct AddressSet { Set _inner; } function add(AddressSet storage set, address value) internal returns (bool) { return _add(set._inner, bytes32(uint256(value))); } function remove(AddressSet storage set, address value) internal returns (bool) { return _remove(set._inner, bytes32(uint256(value))); } function contains(AddressSet storage set, address value) internal view returns (bool) { return _contains(set._inner, bytes32(uint256(value))); } function length(AddressSet storage set) internal view returns (uint256) { return _length(set._inner); } function at(AddressSet storage set, uint256 index) internal view returns (address) { return address(uint256(_at(set._inner, index))); } struct UintSet { Set _inner; } function add(UintSet storage set, uint256 value) internal returns (bool) { return _add(set._inner, bytes32(value)); } function remove(UintSet storage set, uint256 value) internal returns (bool) { return _remove(set._inner, bytes32(value)); } function contains(UintSet storage set, uint256 value) internal view returns (bool) { return _contains(set._inner, bytes32(value)); } function length(UintSet storage set) internal view returns (uint256) { return _length(set._inner); } function at(UintSet storage set, uint256 index) internal view returns (uint256) { return uint256(_at(set._inner, index)); } } abstract contract AccessControl is Context { using EnumerableSet for EnumerableSet.AddressSet; using Address for address; struct RoleData { EnumerableSet.AddressSet members; bytes32 adminRole; } mapping (bytes32 => RoleData) private _roles; bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); function hasRole(bytes32 role, address account) public view returns (bool) { return _roles[role].members.contains(account); } function getRoleMemberCount(bytes32 role) public view returns (uint256) { return _roles[role].members.length(); } function getRoleMember(bytes32 role, uint256 index) public view returns (address) { return _roles[role].members.at(index); } function getRoleAdmin(bytes32 role) public view returns (bytes32) { return _roles[role].adminRole; } function grantRole(bytes32 role, address account) public virtual { require(hasRole(_roles[role].adminRole, _msgSender()), "AccessControl: sender must be an admin to grant"); _grantRole(role, account); } function revokeRole(bytes32 role, address account) public virtual { require(hasRole(_roles[role].adminRole, _msgSender()), "AccessControl: sender must be an admin to revoke"); _revokeRole(role, account); } function renounceRole(bytes32 role, address account) public virtual { require(account == _msgSender(), "AccessControl: can only renounce roles for self"); _revokeRole(role, account); } function _setupRole(bytes32 role, address account) internal virtual { _grantRole(role, account); } function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { emit RoleAdminChanged(role, _roles[role].adminRole, adminRole); _roles[role].adminRole = adminRole; } function _grantRole(bytes32 role, address account) private { if (_roles[role].members.add(account)) { emit RoleGranted(role, account, _msgSender()); } } function _revokeRole(bytes32 role, address account) private { if (_roles[role].members.remove(account)) { emit RoleRevoked(role, account, _msgSender()); } } } abstract contract ITokenRecipient { function tokenFallback(address _from, uint256 _value, bytes memory _data) public virtual returns (bool); } interface ICommittee { function committee(uint256 _idx) external view returns (address); } contract DCAREToken is ERC20, AccessControl, Ownable { using SafeMath for uint256; address public INITIAL_FC_VOTING_CONTRACT_ADDRESS; bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); uint256 public constant MAXIMUM_SUPPLY = 3500000; uint256[7] public INITIAL_SUPPLY = [105000, 50000, 35000, 25000, 10000, 10000, 10000]; address[] public admins; address[] public minters; constructor(address fcVotingContractAddress) ERC20("DCARE Token", "DCARE") { INITIAL_FC_VOTING_CONTRACT_ADDRESS = fcVotingContractAddress; _setupDecimals(6); _setupRole(DEFAULT_ADMIN_ROLE, INITIAL_FC_VOTING_CONTRACT_ADDRESS); admins.push(INITIAL_FC_VOTING_CONTRACT_ADDRESS); _mintInitialSupply(); } modifier onlyAdmin() { require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), "Caller is not an Admin"); _; } modifier onlyMinter() { require(hasRole(MINTER_ROLE, msg.sender), "Caller is not a Minter"); _; } function grantAdminRole(address _adminAddress) public onlyAdmin { _setupRole(DEFAULT_ADMIN_ROLE, _adminAddress); admins.push(_adminAddress); } function revokeAdminRole(address _adminAddress) public onlyAdmin { revokeRole(DEFAULT_ADMIN_ROLE, _adminAddress); for (uint256 i = 0; i < admins.length; i++) { if (i >= admins.length) { break; } if (admins[i] == _adminAddress) { if (i != admins.length - 1) { admins[i] = admins[admins.length - 1]; } admins.pop(); } } } function grantMinterRole(address _minterAddress) public onlyAdmin { _setupRole(MINTER_ROLE, _minterAddress); minters.push(_minterAddress); } function revokeMinterRole(address _minterAddress) public onlyAdmin { revokeRole(MINTER_ROLE, _minterAddress); for (uint256 i = 0; i < minters.length; i++) { if (i >= minters.length) { break; } if (minters[i] == _minterAddress) { if (i != minters.length - 1) { minters[i] = minters[minters.length - 1]; } minters.pop(); } } } function mint(address _receiver, uint256 _amount) public onlyMinter { require( totalSupply().add(_amount) <= MAXIMUM_SUPPLY.mul(10 ** decimals()), "The limit of the maximum allowable emission of tokens has been exceeded" ); _mint(_receiver, _amount); } function _mintInitialSupply() private { ICommittee committeeContract = ICommittee(INITIAL_FC_VOTING_CONTRACT_ADDRESS); address committee; for (uint8 i = 0; i < 7; i++) { committee = committeeContract.committee(i); _mint(committee, INITIAL_SUPPLY[i].mul(10 ** decimals())); } } function transfer(address _to, uint256 _value, bytes memory _data) public returns (bool success) { _transfer(_msgSender(), _to, _value); if (Address.isContract(_to)) { ITokenRecipient receiver = ITokenRecipient(_to); bool result = receiver.tokenFallback(_msgSender(), _value, _data); if (!result) { revert("The recipient contract has no fallback function to receive tokens properly"); } } return true; } function transfer(address _to, uint256 _value) public override returns (bool success) { _transfer(_msgSender(), _to, _value); if (Address.isContract(_to)) { ITokenRecipient receiver = ITokenRecipient(_to); bool result = receiver.tokenFallback( _msgSender(), _value, hex"00"); if (!result) { revert("The recipient contract has no fallback function to receive tokens properly"); } } return true; } function adminsNumber() public view returns (uint256) { return admins.length; } function mintersNumber() public view returns (uint256) { return minters.length; } } interface ITerminable { function terminate() external; } struct Stake { uint256 stakingTime; uint256 stakedUntilTime; uint256 amount; } contract DCAREMining is Ownable, ITerminable { using SafeMath for uint256; address public constant SOLVE_TOKEN_CONTRACT_ADDRESS = address(0x446C9033E7516D820cc9a2ce2d0B7328b579406F); uint256 public constant SOLVE_TOKEN_DECIMALS = 8; address public constant DCARE_TOKEN_CONTRACT_ADDRESS = address(0x29C7653F1bdb29C5f2cD44DAAA1d3FAd18475B5D); uint256 public constant DCARE_TOKEN_DECIMALS = 6; address public constant COMMITTEE_CONTRACT_ADDRESS = address(0x972A5AFcAaBa9352E6DCCDc8Da872c987f1d13aF); uint256 public constant PROMOTIONAL_MINING_RATE = 75; uint256 public constant NORMAL_MINING_RATE = 100; uint256 public constant PROMOTION_PERIOD = 9 days; uint256 public constant STAKING_PERIOD = 365 days; uint256 public constant TERMINATION_TIME = 1640908800; uint256 public deploymentTime; mapping (address => Stake[]) public stakes; bool public terminated; IERC20 SOLVEToken; DCAREToken token; event Staked(address indexed _address, uint256 indexed _amount); event Unstaked(address indexed _address, uint256 indexed _amount); event Terminate(); constructor() { SOLVEToken = IERC20(SOLVE_TOKEN_CONTRACT_ADDRESS); token = DCAREToken(DCARE_TOKEN_CONTRACT_ADDRESS); deploymentTime = block.timestamp; } modifier onlyCommittee() { require(COMMITTEE_CONTRACT_ADDRESS == _msgSender(), "Caller is not the DCARE Committee contract"); _; } function stake(uint256 _amount) public { require(!terminated, "Contract is terminated by voting"); require(block.timestamp < TERMINATION_TIME, "Contract is terminated due to expiration"); require(_amount % miningRate() == 0, "Invalid stake amount"); if (SOLVEToken.transferFrom(msg.sender, address(this), _amount.mul(10 ** SOLVE_TOKEN_DECIMALS))) { token.mint(msg.sender, _amount.mul(10 ** DCARE_TOKEN_DECIMALS).div(miningRate())); stakes[msg.sender].push(Stake({ stakingTime: block.timestamp, stakedUntilTime: block.timestamp.add(STAKING_PERIOD), amount: _amount })); emit Staked(msg.sender, _amount); } } function unstake() public { Stake[] storage memberStakes = stakes[msg.sender]; uint256 tokensAmount = 0; for (uint8 i = 0; i < memberStakes.length; i++) { if (block.timestamp > memberStakes[i].stakedUntilTime && memberStakes[i].amount > 0) { tokensAmount = tokensAmount.add(memberStakes[i].amount); memberStakes[i].amount = 0; } } if (tokensAmount > 0) { SOLVEToken.transfer(msg.sender, tokensAmount.mul(10 ** SOLVE_TOKEN_DECIMALS)); emit Unstaked(msg.sender, tokensAmount); } } function terminate() public override onlyCommittee { terminated = true; emit Terminate(); } function miningRate() public view returns (uint256) { if (block.timestamp < deploymentTime.add(PROMOTION_PERIOD)) { return PROMOTIONAL_MINING_RATE; } return NORMAL_MINING_RATE; } function retrieveTokens(address _tokenContractAddress, uint256 _amount) public onlyOwner { require(_tokenContractAddress != SOLVE_TOKEN_CONTRACT_ADDRESS, "You can't withdraw SOLVE tokens"); IERC20 tokenContract = IERC20(_tokenContractAddress); tokenContract.transfer(msg.sender, _amount); } receive() external payable { msg.sender.transfer(msg.value); } function retrieveEther() public onlyOwner { if (address(this).balance > 0) { msg.sender.transfer(address(this).balance); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":"_address","type":"address"},{"indexed":true,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[],"name":"Terminate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_address","type":"address"},{"indexed":true,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Unstaked","type":"event"},{"inputs":[],"name":"COMMITTEE_CONTRACT_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DCARE_TOKEN_CONTRACT_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DCARE_TOKEN_DECIMALS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NORMAL_MINING_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROMOTIONAL_MINING_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROMOTION_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SOLVE_TOKEN_CONTRACT_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SOLVE_TOKEN_DECIMALS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STAKING_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TERMINATION_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deploymentTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"miningRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"retrieveEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContractAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"retrieveTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakes","outputs":[{"internalType":"uint256","name":"stakingTime","type":"uint256"},{"internalType":"uint256","name":"stakedUntilTime","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"terminate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"terminated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b50600061002161017560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073446c9033e7516d820cc9a2ce2d0b7328b579406f600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507329c7653f1bdb29c5f2cd44daaa1d3fad18475b5d600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504260018190555061017d565b600033905090565b61187e8061018c6000396000f3fe6080604052600436106101395760003560e01c8063715018a6116100ab578063a94492ae1161006f578063a94492ae146104c2578063d4f8db6114610503578063ecda10f51461052e578063f2fde38b14610559578063fe3f3be4146105aa578063ffadbaf7146105d557610187565b8063715018a6146103c357806385a074e9146103da5780638813d1571461041b5780638da5cb5b14610446578063a694fc3a1461048757610187565b8063224ee04f116100fd578063224ee04f1461025157806326dd1b6f146102685780632c3678cc146102a95780632def6620146102d457806334e8c679146102eb578063584b62a11461034657610187565b80630104db1b1461018c5780630b66f3b6146101b75780630c08bf88146101e25780630e602ba7146101f9578063194307bf1461022457610187565b36610187573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610184573d6000803e3d6000fd5b50005b600080fd5b34801561019857600080fd5b506101a1610600565b6040518082815260200191505060405180910390f35b3480156101c357600080fd5b506101cc610608565b6040518082815260200191505060405180910390f35b3480156101ee57600080fd5b506101f7610610565b005b34801561020557600080fd5b5061020e6106f8565b6040518082815260200191505060405180910390f35b34801561023057600080fd5b506102396106fd565b60405180821515815260200191505060405180910390f35b34801561025d57600080fd5b50610266610710565b005b34801561027457600080fd5b5061027d61082b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102b557600080fd5b506102be610843565b6040518082815260200191505060405180910390f35b3480156102e057600080fd5b506102e9610875565b005b3480156102f757600080fd5b506103446004803603604081101561030e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ac0565b005b34801561035257600080fd5b5061039f6004803603604081101561036957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cf5565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103cf57600080fd5b506103d8610d3c565b005b3480156103e657600080fd5b506103ef610ec2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561042757600080fd5b50610430610eda565b6040518082815260200191505060405180910390f35b34801561045257600080fd5b5061045b610ee1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561049357600080fd5b506104c0600480360360208110156104aa57600080fd5b8101908080359060200190929190505050610f0a565b005b3480156104ce57600080fd5b506104d7611351565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561050f57600080fd5b50610518611369565b6040518082815260200191505060405180910390f35b34801561053a57600080fd5b5061054361136e565b6040518082815260200191505060405180910390f35b34801561056557600080fd5b506105a86004803603602081101561057c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611374565b005b3480156105b657600080fd5b506105bf61157f565b6040518082815260200191505060405180910390f35b3480156105e157600080fd5b506105ea611584565b6040518082815260200191505060405180910390f35b6301e1338081565b6361ce480081565b610618611589565b73ffffffffffffffffffffffffffffffffffffffff1673972a5afcaaba9352e6dccdc8da872c987f1d13af73ffffffffffffffffffffffffffffffffffffffff16146106af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806117d8602a913960400191505060405180910390fd5b6001600360006101000a81548160ff0219169083151502179055507f9445eb3a835635ca60c2af0e86a44426b64f118a16b8aa8f2807f1f70b274d4c60405160405180910390a1565b606481565b600360009054906101000a900460ff1681565b610718611589565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000471115610829573373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610827573d6000803e3d6000fd5b505b565b73446c9033e7516d820cc9a2ce2d0b7328b579406f81565b600061085d620bdd8060015461159190919063ffffffff16565b42101561086d57604b9050610872565b606490505b90565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000805b82805490508160ff16101561098857828160ff16815481106108da57fe5b9060005260206000209060030201600101544211801561091a57506000838260ff168154811061090657fe5b906000526020600020906003020160020154115b1561097b57610952838260ff168154811061093157fe5b9060005260206000209060030201600201548361159190919063ffffffff16565b91506000838260ff168154811061096557fe5b9060005260206000209060030201600201819055505b80806001019150506108bc565b506000811115610abc57600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb336109e86008600a0a8561161990919063ffffffff16565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610a3b57600080fd5b505af1158015610a4f573d6000803e3d6000fd5b505050506040513d6020811015610a6557600080fd5b810190808051906020019092919050505050803373ffffffffffffffffffffffffffffffffffffffff167f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f7560405160405180910390a35b5050565b610ac8611589565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b73446c9033e7516d820cc9a2ce2d0b7328b579406f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f596f752063616e277420776974686472617720534f4c564520746f6b656e730081525060200191505060405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610cb457600080fd5b505af1158015610cc8573d6000803e3d6000fd5b505050506040513d6020811015610cde57600080fd5b810190808051906020019092919050505050505050565b60026020528160005260406000208181548110610d1157600080fd5b9060005260206000209060030201600091509150508060000154908060010154908060020154905083565b610d44611589565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b73972a5afcaaba9352e6dccdc8da872c987f1d13af81565b620bdd8081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900460ff1615610f8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f6e7472616374206973207465726d696e6174656420627920766f74696e6781525060200191505060405180910390fd5b6361ce48004210610fe9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806117b06028913960400191505060405180910390fd5b6000610ff3610843565b8281610ffb57fe5b061461106f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f496e76616c6964207374616b6520616d6f756e7400000000000000000000000081525060200191505060405180910390fd5b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33306110c66008600a0a8661161990919063ffffffff16565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561113657600080fd5b505af115801561114a573d6000803e3d6000fd5b505050506040513d602081101561116057600080fd5b81019080805190602001909291905050501561134e57600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19336111e56111c0610843565b6111d76006600a0a8761161990919063ffffffff16565b61169f90919063ffffffff16565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561123857600080fd5b505af115801561124c573d6000803e3d6000fd5b50505050600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180606001604052804281526020016112b76301e133804261159190919063ffffffff16565b81526020018381525090806001815401808255809150506001900390600052602060002090600302016000909190919091506000820151816000015560208201518160010155604082015181600201555050803373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d60405160405180910390a35b50565b7329c7653f1bdb29c5f2cd44daaa1d3fad18475b5d81565b604b81565b60015481565b61137c611589565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461143c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118026026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600681565b600881565b600033905090565b60008082840190508381101561160f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083141561162c5760009050611699565b600082840290508284828161163d57fe5b0414611694576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806118286021913960400191505060405180910390fd5b809150505b92915050565b60006116e183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116e9565b905092915050565b60008083118290611795576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561175a57808201518184015260208101905061173f565b50505050905090810190601f1680156117875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816117a157fe5b04905080915050939250505056fe436f6e7472616374206973207465726d696e617465642064756520746f2065787069726174696f6e43616c6c6572206973206e6f742074686520444341524520436f6d6d697474656520636f6e74726163744f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220241b385eb023ce1fbb2766ff3fbef861113b4f78ba0a6ac4c8824108e0983d4f64736f6c63430007040033
Deployed Bytecode
0x6080604052600436106101395760003560e01c8063715018a6116100ab578063a94492ae1161006f578063a94492ae146104c2578063d4f8db6114610503578063ecda10f51461052e578063f2fde38b14610559578063fe3f3be4146105aa578063ffadbaf7146105d557610187565b8063715018a6146103c357806385a074e9146103da5780638813d1571461041b5780638da5cb5b14610446578063a694fc3a1461048757610187565b8063224ee04f116100fd578063224ee04f1461025157806326dd1b6f146102685780632c3678cc146102a95780632def6620146102d457806334e8c679146102eb578063584b62a11461034657610187565b80630104db1b1461018c5780630b66f3b6146101b75780630c08bf88146101e25780630e602ba7146101f9578063194307bf1461022457610187565b36610187573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610184573d6000803e3d6000fd5b50005b600080fd5b34801561019857600080fd5b506101a1610600565b6040518082815260200191505060405180910390f35b3480156101c357600080fd5b506101cc610608565b6040518082815260200191505060405180910390f35b3480156101ee57600080fd5b506101f7610610565b005b34801561020557600080fd5b5061020e6106f8565b6040518082815260200191505060405180910390f35b34801561023057600080fd5b506102396106fd565b60405180821515815260200191505060405180910390f35b34801561025d57600080fd5b50610266610710565b005b34801561027457600080fd5b5061027d61082b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102b557600080fd5b506102be610843565b6040518082815260200191505060405180910390f35b3480156102e057600080fd5b506102e9610875565b005b3480156102f757600080fd5b506103446004803603604081101561030e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ac0565b005b34801561035257600080fd5b5061039f6004803603604081101561036957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cf5565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103cf57600080fd5b506103d8610d3c565b005b3480156103e657600080fd5b506103ef610ec2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561042757600080fd5b50610430610eda565b6040518082815260200191505060405180910390f35b34801561045257600080fd5b5061045b610ee1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561049357600080fd5b506104c0600480360360208110156104aa57600080fd5b8101908080359060200190929190505050610f0a565b005b3480156104ce57600080fd5b506104d7611351565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561050f57600080fd5b50610518611369565b6040518082815260200191505060405180910390f35b34801561053a57600080fd5b5061054361136e565b6040518082815260200191505060405180910390f35b34801561056557600080fd5b506105a86004803603602081101561057c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611374565b005b3480156105b657600080fd5b506105bf61157f565b6040518082815260200191505060405180910390f35b3480156105e157600080fd5b506105ea611584565b6040518082815260200191505060405180910390f35b6301e1338081565b6361ce480081565b610618611589565b73ffffffffffffffffffffffffffffffffffffffff1673972a5afcaaba9352e6dccdc8da872c987f1d13af73ffffffffffffffffffffffffffffffffffffffff16146106af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806117d8602a913960400191505060405180910390fd5b6001600360006101000a81548160ff0219169083151502179055507f9445eb3a835635ca60c2af0e86a44426b64f118a16b8aa8f2807f1f70b274d4c60405160405180910390a1565b606481565b600360009054906101000a900460ff1681565b610718611589565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000471115610829573373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610827573d6000803e3d6000fd5b505b565b73446c9033e7516d820cc9a2ce2d0b7328b579406f81565b600061085d620bdd8060015461159190919063ffffffff16565b42101561086d57604b9050610872565b606490505b90565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000805b82805490508160ff16101561098857828160ff16815481106108da57fe5b9060005260206000209060030201600101544211801561091a57506000838260ff168154811061090657fe5b906000526020600020906003020160020154115b1561097b57610952838260ff168154811061093157fe5b9060005260206000209060030201600201548361159190919063ffffffff16565b91506000838260ff168154811061096557fe5b9060005260206000209060030201600201819055505b80806001019150506108bc565b506000811115610abc57600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb336109e86008600a0a8561161990919063ffffffff16565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610a3b57600080fd5b505af1158015610a4f573d6000803e3d6000fd5b505050506040513d6020811015610a6557600080fd5b810190808051906020019092919050505050803373ffffffffffffffffffffffffffffffffffffffff167f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f7560405160405180910390a35b5050565b610ac8611589565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b73446c9033e7516d820cc9a2ce2d0b7328b579406f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f596f752063616e277420776974686472617720534f4c564520746f6b656e730081525060200191505060405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610cb457600080fd5b505af1158015610cc8573d6000803e3d6000fd5b505050506040513d6020811015610cde57600080fd5b810190808051906020019092919050505050505050565b60026020528160005260406000208181548110610d1157600080fd5b9060005260206000209060030201600091509150508060000154908060010154908060020154905083565b610d44611589565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b73972a5afcaaba9352e6dccdc8da872c987f1d13af81565b620bdd8081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900460ff1615610f8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f6e7472616374206973207465726d696e6174656420627920766f74696e6781525060200191505060405180910390fd5b6361ce48004210610fe9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806117b06028913960400191505060405180910390fd5b6000610ff3610843565b8281610ffb57fe5b061461106f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f496e76616c6964207374616b6520616d6f756e7400000000000000000000000081525060200191505060405180910390fd5b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33306110c66008600a0a8661161990919063ffffffff16565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561113657600080fd5b505af115801561114a573d6000803e3d6000fd5b505050506040513d602081101561116057600080fd5b81019080805190602001909291905050501561134e57600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19336111e56111c0610843565b6111d76006600a0a8761161990919063ffffffff16565b61169f90919063ffffffff16565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561123857600080fd5b505af115801561124c573d6000803e3d6000fd5b50505050600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180606001604052804281526020016112b76301e133804261159190919063ffffffff16565b81526020018381525090806001815401808255809150506001900390600052602060002090600302016000909190919091506000820151816000015560208201518160010155604082015181600201555050803373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d60405160405180910390a35b50565b7329c7653f1bdb29c5f2cd44daaa1d3fad18475b5d81565b604b81565b60015481565b61137c611589565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461143c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118026026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600681565b600881565b600033905090565b60008082840190508381101561160f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083141561162c5760009050611699565b600082840290508284828161163d57fe5b0414611694576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806118286021913960400191505060405180910390fd5b809150505b92915050565b60006116e183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116e9565b905092915050565b60008083118290611795576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561175a57808201518184015260208101905061173f565b50505050905090810190601f1680156117875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816117a157fe5b04905080915050939250505056fe436f6e7472616374206973207465726d696e617465642064756520746f2065787069726174696f6e43616c6c6572206973206e6f742074686520444341524520436f6d6d697474656520636f6e74726163744f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220241b385eb023ce1fbb2766ff3fbef861113b4f78ba0a6ac4c8824108e0983d4f64736f6c63430007040033
Deployed Bytecode Sourcemap
20942:3597:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24348:10;:19;;:30;24368:9;24348:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20942:3597;;;;;21639:49;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21693:53;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23675:106;;;;;;;;;;;;;:::i;:::-;;21529:48;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21837:22;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24390:144;;;;;;;;;;;;;:::i;:::-;;21025:106;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23787:205;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23103:566;;;;;;;;;;;;;:::i;:::-;;23998:310;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21788:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3191:148;;;;;;;;;;;;;:::i;:::-;;21359:104;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21585:49;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2965:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22400:697;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21192:106;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21471:52;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21752:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3353:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21304:48;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21137;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21639:49;21680:8;21639:49;:::o;21693:53::-;21736:10;21693:53;:::o;23675:106::-;22321:12;:10;:12::i;:::-;22291:42;;21420;22291;;;22283:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23746:4:::1;23733:10;;:17;;;;;;;;;;;;;;;;;;23764:11;;;;;;;;;;23675:106::o:0;21529:48::-;21574:3;21529:48;:::o;21837:22::-;;;;;;;;;;;;;:::o;24390:144::-;3108:12;:10;:12::i;:::-;3098:22;;:6;;;;;;;;;;:22;;;3090:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24467:1:::1;24443:21;:25;24439:90;;;24479:10;:19;;:42;24499:21;24479:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24439:90;24390:144::o:0;21025:106::-;21088:42;21025:106;:::o;23787:205::-;23830:7;23868:36;21628:6;23868:14;;:18;;:36;;;;:::i;:::-;23850:15;:54;23846:107;;;21521:2;23915:30;;;;23846:107;21574:3;23961:25;;23787:205;;:::o;23103:566::-;23137:28;23168:6;:18;23175:10;23168:18;;;;;;;;;;;;;;;23137:49;;23195:20;23231:7;23226:264;23248:12;:19;;;;23244:1;:23;;;23226:264;;;23305:12;23318:1;23305:15;;;;;;;;;;;;;;;;;;;;:31;;;23287:15;:49;:79;;;;;23365:1;23340:12;23353:1;23340:15;;;;;;;;;;;;;;;;;;;;:22;;;:26;23287:79;23283:200;;;23394:40;23411:12;23424:1;23411:15;;;;;;;;;;;;;;;;;;;;:22;;;23394:12;:16;;:40;;;;:::i;:::-;23379:55;;23472:1;23447:12;23460:1;23447:15;;;;;;;;;;;;;;;;;;;;:22;;:26;;;;23283:200;23269:3;;;;;;;23226:264;;;;23517:1;23502:12;:16;23498:166;;;23529:10;;;;;;;;;;;:19;;;23549:10;23561:44;21184:1;23578:2;:26;23561:12;:16;;:44;;;;:::i;:::-;23529:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23643:12;23631:10;23622:34;;;;;;;;;;;;23498:166;23103:566;;:::o;23998:310::-;3108:12;:10;:12::i;:::-;3098:22;;:6;;;;;;;;;;:22;;;3090:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21088:42:::1;24102:53;;:21;:53;;;;24094:97;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24200:20;24230:21;24200:52;;24259:13;:22;;;24282:10;24294:7;24259:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;3168:1;23998:310:::0;;:::o;21788:42::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3191:148::-;3108:12;:10;:12::i;:::-;3098:22;;:6;;;;;;;;;;:22;;;3090:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3298:1:::1;3261:40;;3282:6;::::0;::::1;;;;;;;;3261:40;;;;;;;;;;;;3329:1;3312:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3191:148::o:0;21359:104::-;21420:42;21359:104;:::o;21585:49::-;21628:6;21585:49;:::o;2965:79::-;3003:7;3030:6;;;;;;;;;;;3023:13;;2965:79;:::o;22400:697::-;22455:10;;;;;;;;;;;22454:11;22446:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21736:10;22517:15;:34;22509:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22637:1;22621:12;:10;:12::i;:::-;22611:7;:22;;;;;;:27;22603:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22677:10;;;;;;;;;;;:23;;;22701:10;22721:4;22728:39;21184:1;22740:2;:26;22728:7;:11;;:39;;;;:::i;:::-;22677:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22673:419;;;22780:5;;;;;;;;;;;:10;;;22791;22803:57;22847:12;:10;:12::i;:::-;22803:39;21351:1;22815:2;:26;22803:7;:11;;:39;;;;:::i;:::-;:43;;:57;;;;:::i;:::-;22780:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22872:6;:18;22879:10;22872:18;;;;;;;;;;;;;;;22896:144;;;;;;;;22926:15;22896:144;;;;22969:35;21680:8;22969:15;:19;;:35;;;;:::i;:::-;22896:144;;;;23023:7;22896:144;;;22872:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23076:7;23064:10;23057:27;;;;;;;;;;;;22673:419;22400:697;:::o;21192:106::-;21255:42;21192:106;:::o;21471:52::-;21521:2;21471:52;:::o;21752:29::-;;;;:::o;3353:244::-;3108:12;:10;:12::i;:::-;3098:22;;:6;;;;;;;;;;:22;;;3090:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3462:1:::1;3442:22;;:8;:22;;;;3434:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3552:8;3523:38;;3544:6;::::0;::::1;;;;;;;;3523:38;;;;;;;;;;;;3581:8;3572:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3353:244:::0;:::o;21304:48::-;21351:1;21304:48;:::o;21137:::-;21184:1;21137:48;:::o;2397:106::-;2450:15;2485:10;2478:17;;2397:106;:::o;102:181::-;160:7;180:9;196:1;192;:5;180:17;;221:1;216;:6;;208:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;274:1;267:8;;;102:181;;;;:::o;653:280::-;711:7;770:1;765;:6;761:47;;;795:1;788:8;;;;761:47;820:9;836:1;832;:5;820:17;;865:1;860;856;:5;;;;;;:10;848:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;924:1;917:8;;;653:280;;;;;:::o;947:132::-;1005:7;1032:39;1036:1;1039;1032:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1025:46;;947:132;;;;:::o;1093:201::-;1179:7;1211:1;1207;:5;1214:12;1199:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1238:9;1254:1;1250;:5;;;;;;1238:17;;1285:1;1278:8;;;1093:201;;;;;:::o
Swarm Source
ipfs://241b385eb023ce1fbb2766ff3fbef861113b4f78ba0a6ac4c8824108e0983d4f
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.01069 | 1,002,400 | $10,715.64 |
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.