编译器
0.6.12+commit.27d51765
文件 1 的 9:burnable.sol
pragma solidity 0.6.12;
interface Burnable {
function burn(uint256 amount) external returns (bool);
}
文件 2 的 9:context.sol
pragma solidity 0.6.12;
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;
}
}
文件 3 的 9:controller.sol
pragma solidity 0.6.12;
interface IController {
function set_pair(address pair) external;
function set_ready(bool _ready) external;
function notify() external;
}
文件 4 的 9:erc20.sol
pragma solidity 0.6.12;
import "./safe-math.sol";
import "./context.sol";
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) {
uint256 size;
assembly { size := extcodesize(account) }
return size > 0;
}
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) public {
_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 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, "SafeERC20: decreased allowance below zero");
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
function _callOptionalReturn(IERC20 token, bytes memory data) private {
bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
if (returndata.length > 0) {
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}
文件 5 的 9:ownable.sol
pragma solidity 0.6.12;
import "./context.sol";
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () internal {
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;
}
}
文件 6 的 9:presale.sol
pragma solidity 0.6.12;
import "./interfaces/burnable.sol";
import "./interfaces/uniswap-v2.sol";
import "./interfaces/controller.sol";
import "./interfaces/token-timelock.sol";
import "./libs/ownable.sol";
import "./libs/erc20.sol";
import "./libs/safe-math.sol";
contract YvsPresale is Ownable {
using SafeMath for uint256;
using SafeERC20 for IERC20;
IERC20 public token;
address payable public team;
address payable public marketing;
address payable public listing;
address public controller;
address payable public treasury = 0xe04af79053639D2c4C1c3827F72e52459eE0E88e;
address public timelock;
uint256 public start;
uint256 public duration = 5 days;
uint256 public grace = 12 days;
uint256 public cap = 100000000000000000000000;
uint256 public threshold = 90;
uint256 public total;
uint256 public deposited;
uint256 public depositors;
uint256 public min = 1000000000000000000;
uint256 public max = 50000000000000000000;
uint256 public rate = 45000000000000000000;
uint256 public referralRate = 10;
uint256 public referralRateReferrer = 5;
uint256 public referralRateDepositor = 5;
uint256 public referralRateBase = 1000;
string public contact;
bool public finalized = false;
bool public completed = false;
bool public cancelled = false;
bool public closed = false;
struct ReferralBonus {
uint256 count;
uint256 amount;
}
mapping(address => uint256) public deposits;
mapping(address => uint256) public balances;
mapping(address => ReferralBonus) public bonus;
mapping(bytes12 => address) public referrals;
mapping(address => bool) public registered;
UniswapRouterV2 internal uniswap = UniswapRouterV2(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
UniswapV2Factory internal factory = UniswapV2Factory(0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f);
address internal weth = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
event PresaleEntered(address indexed account, uint256 value, uint256 amount);
event DailyBonusEarned(address indexed beneficiary, uint256 amount);
event ReferrerEarned(address indexed beneficiary, address indexed account, uint256 amount);
event DepositorEarned(address indexed account, uint256 amount);
event Claimed(address indexed recipient, uint256 amount);
event Refunded(address indexed recipient, uint256 amount);
event ReferralSet(address indexed account, bytes12 code);
event LiquidityAddedAndLocked(uint256 amount, address timelock);
event Salvaged(address token, uint256 amount);
event DustCollected(address recipient, uint256 amount);
event Destroyed(uint256 amount);
event Completed();
constructor(
address _token,
address _timelock,
uint256 _start,
string memory _contact
) public {
require(_start >= block.timestamp);
token = IERC20(_token);
timelock = _timelock;
start = _start;
contact = _contact;
team = 0x0dB32cD2805c541375DFa609D4866D132A4687A6;
marketing = 0x685Da6c75698611ac875d8a485d6eFB18A88921D;
listing = 0xBF2Ba575C25F36Ea507726656a7fdB4374974Aa2;
}
receive () external payable {
enter(msg.value);
}
function enter(uint256 _amount) public payable active {
require(msg.value == _amount);
require(msg.sender != address(0));
require(valid(msg.sender, _amount));
uint256 amount;
uint256 acquired;
amount = _amount.mul(rate).div(1e18);
require(distributable(amount), "not enough tokens for distribution");
uint256 dailyBonus;
if (block.timestamp <= start.add(1 days)) {
dailyBonus = amount.mul(125).div(1000);
}
else if (block.timestamp <= start.add(2 days)) {
dailyBonus = amount.mul(75).div(1000);
}
else if (block.timestamp <= start.add(3 days)) {
dailyBonus = amount.mul(50).div(1000);
}
else if (block.timestamp <= start.add(4 days)) {
dailyBonus = amount.mul(25).div(1000);
}
if (dailyBonus > 0) {
if (distributable(amount.add(dailyBonus))) {
acquired = acquired.add(dailyBonus);
emit DailyBonusEarned(msg.sender, dailyBonus);
}
}
uint256 distribution = amount.add(acquired);
deposits[msg.sender] = deposits[msg.sender].add(_amount);
balances[msg.sender] = balances[msg.sender].add(distribution);
emit PresaleEntered(msg.sender, amount, distribution);
deposited = deposited.add(_amount);
depositors = depositors.add(1);
total = total.add(distribution);
}
function enter(uint256 _amount, bytes12 _code) public payable active {
require(msg.value == _amount);
require(msg.sender != address(0));
require(valid(msg.sender, _amount));
require(referrals[_code] != address(0), "referral code is invalid");
require(referrals[_code] != msg.sender, "can not use your own referral code");
uint256 acquired;
uint256 amount;
amount = _amount.mul(rate).div(1e18);
require(distributable(amount), "not enough tokens for distribution");
uint256 dailyBonus;
if (block.timestamp <= start.add(1 days)) {
dailyBonus = amount.mul(125).div(1000);
}
else if (block.timestamp <= start.add(2 days)) {
dailyBonus = amount.mul(75).div(1000);
}
else if (block.timestamp <= start.add(3 days)) {
dailyBonus = amount.mul(50).div(1000);
}
else if (block.timestamp <= start.add(4 days)) {
dailyBonus = amount.mul(25).div(1000);
}
if (dailyBonus > 0) {
if (distributable(amount.add(dailyBonus))) {
acquired = acquired.add(dailyBonus);
emit DailyBonusEarned(msg.sender, dailyBonus);
}
}
uint256 referralBonus = amount.mul(referralRate).div(referralRateBase);
if (referralBonus > 0) {
if (distributable(amount.add(acquired).add(referralBonus))) {
address referrer = referrals[_code];
uint256 referrerBonus = amount.mul(referralRateReferrer).div(referralRateBase);
uint256 depositorBonus = amount.mul(referralRateDepositor).div(referralRateBase);
balances[referrer] = balances[referrer].add(referrerBonus);
bonus[referrer].count = bonus[referrer].count.add(1);
bonus[referrer].amount = bonus[referrer].amount.add(referrerBonus);
acquired = acquired.add(depositorBonus);
total = total.add(referrerBonus);
emit ReferrerEarned(referrer, msg.sender, referrerBonus);
emit DepositorEarned(msg.sender, depositorBonus);
}
}
uint256 distribution = amount.add(acquired);
deposits[msg.sender] = deposits[msg.sender].add(_amount);
balances[msg.sender] = balances[msg.sender].add(distribution);
emit PresaleEntered(msg.sender, amount, distribution);
deposited = deposited.add(_amount);
depositors = depositors.add(1);
total = total.add(distribution);
}
function refund() external {
require(cancelled, "presale is not cancelled");
require(deposits[msg.sender] > 0, "you have not deposited anything");
msg.sender.transfer(deposits[msg.sender]);
emit Refunded(msg.sender, deposits[msg.sender]);
deposited = deposited.sub(deposits[msg.sender]);
total = total.sub(balances[msg.sender]);
deposits[msg.sender] = 0;
balances[msg.sender] = 0;
}
function claim() external distributed {
require(balances[msg.sender]> 0, "you can not claim any tokens");
token.safeTransfer(msg.sender, balances[msg.sender]);
emit Claimed(msg.sender, balances[msg.sender]);
balances[msg.sender] = 0;
}
function referral(bytes12 code) external {
require(referrals[code] == address(0), "referral code already set");
require(!registered[msg.sender], "you have already set a referral code");
referrals[code] = address(msg.sender);
registered[msg.sender] = true;
emit ReferralSet(msg.sender, code);
}
function distribute() external {
require(concluded(), "presale is not concluded");
require(address(this).balance >= deposited, "!balance >= deposited");
if (deposited > 0) {
uint256 _liquidity = deposited.mul(30).div(100);
uint256 _team = deposited.mul(20).div(100);
uint256 _marketing = deposited.mul(30).div(100);
uint256 _listing = deposited
.sub(_liquidity)
.sub(_team)
.sub(_marketing);
uint256 _uniswap = _liquidity.mul(rate).div(1e18);
token.safeApprove(address(uniswap), _uniswap);
( , , uint256 added) = uniswap.addLiquidityETH{value: _liquidity}(address(token), _uniswap, 0, 0, address(timelock), block.timestamp + 5 minutes);
emit LiquidityAddedAndLocked(added, timelock);
address pair = factory.getPair(address(token), weth);
ITokenTimelock(timelock).set_token(pair);
IController(controller).set_pair(pair);
IController(controller).set_ready(true);
IController(controller).notify();
team.transfer(_team);
marketing.transfer(_marketing);
listing.transfer(_listing);
}
completed = true;
emit Completed();
}
function salvage(address _token) external distributed onlyOwner {
require(_token != address(token), "can not salvage token");
uint256 balance = IERC20(_token).balanceOf(address(this));
if (balance > 0) {
IERC20(_token).safeTransfer(treasury, balance);
emit Salvaged(_token, balance);
}
}
function collect_dust() external distributed onlyOwner {
require(!cancelled);
require(block.timestamp >= start.add(grace), "grace period not over");
uint256 balance = address(this).balance;
if (balance > 0) {
treasury.transfer(balance);
emit DustCollected(treasury, balance);
}
}
function destroy() external distributed onlyOwner {
require(!cancelled);
require(block.timestamp >= start.add(grace), "grace period not over");
uint256 balance = token.balanceOf(address(this));
if (balance > 0) {
Burnable(address(token)).burn(balance);
emit Destroyed(balance);
}
}
function set_controller(address _controller) external onlyOwner {
require(controller == address(0), "!controller");
controller = _controller;
}
function update(string memory _contact) external onlyOwner {
contact = _contact;
}
function cancel() external onlyOwner {
cancelled = true;
}
function close() external onlyOwner {
require(reached(), "threshold is not reached");
closed = true;
}
function claimable() external view returns (uint256 amount) {
if (!cancelled) {
amount = balances[msg.sender];
}
}
function valid(address account, uint256 amount) internal view returns (bool) {
bool above = deposits[account].add(amount) >= min;
bool below = deposits[account].add(amount) <= max;
return (above && below);
}
function distributable(uint256 amount) internal view returns (bool) {
bool below = total.add(amount) <= cap;
return (below);
}
function concluded() internal view returns (bool) {
if (closed) {
return true;
}
if (block.timestamp > start.add(duration) && !cancelled) {
return true;
}
return false;
}
function reached() internal view returns (bool) {
bool above = total.mul(100).div(cap) >= threshold;
return (above);
}
modifier distributed {
require(
completed,
"tokens were not distributed yet"
);
_;
}
modifier active {
require(
block.timestamp >= start,
"presale has not started yet"
);
require(
block.timestamp <= start.add(duration),
"presale has concluded"
);
require(
!cancelled,
"presale was cancelled"
);
require(
!closed,
"presale was closed"
);
_;
}
}
文件 7 的 9:safe-math.sol
pragma solidity 0.6.12;
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;
}
}
文件 8 的 9:token-timelock.sol
pragma solidity 0.6.12;
interface ITokenTimelock {
function set_token(address token_) external;
}
文件 9 的 9:uniswap-v2.sol
pragma solidity 0.6.12;
interface UniswapRouterV2 {
function swapExactTokensForTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function addLiquidity(
address tokenA,
address tokenB,
uint256 amountADesired,
uint256 amountBDesired,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
)
external
returns (
uint256 amountA,
uint256 amountB,
uint256 liquidity
);
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
returns (
uint256 amountToken,
uint256 amountETH,
uint256 liquidity
);
function removeLiquidity(
address tokenA,
address tokenB,
uint256 liquidity,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
) external returns (uint256 amountA, uint256 amountB);
function getAmountsOut(uint256 amountIn, address[] calldata path)
external
view
returns (uint256[] memory amounts);
function getAmountsIn(uint256 amountOut, address[] calldata path)
external
view
returns (uint256[] memory amounts);
function swapETHForExactTokens(
uint256 amountOut,
address[] calldata path,
address to,
uint256 deadline
) external payable returns (uint256[] memory amounts);
function swapExactETHForTokens(
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external payable returns (uint256[] memory amounts);
}
interface IUniswapV2Pair {
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
event Transfer(address indexed from, address indexed to, uint256 value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint256);
function balanceOf(address owner) external view returns (uint256);
function allowance(address owner, address spender)
external
view
returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
function transfer(address to, uint256 value) external returns (bool);
function transferFrom(
address from,
address to,
uint256 value
) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint256);
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) external;
event Mint(address indexed sender, uint256 amount0, uint256 amount1);
event Burn(
address indexed sender,
uint256 amount0,
uint256 amount1,
address indexed to
);
event Swap(
address indexed sender,
uint256 amount0In,
uint256 amount1In,
uint256 amount0Out,
uint256 amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint256);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves()
external
view
returns (
uint112 reserve0,
uint112 reserve1,
uint32 blockTimestampLast
);
function price0CumulativeLast() external view returns (uint256);
function price1CumulativeLast() external view returns (uint256);
function kLast() external view returns (uint256);
function mint(address to) external returns (uint256 liquidity);
function burn(address to)
external
returns (uint256 amount0, uint256 amount1);
function swap(
uint256 amount0Out,
uint256 amount1Out,
address to,
bytes calldata data
) external;
function skim(address to) external;
function sync() external;
}
interface UniswapV2Factory {
event PairCreated(
address indexed token0,
address indexed token1,
address pair,
uint256
);
function getPair(address tokenA, address tokenB)
external
view
returns (address pair);
function allPairs(uint256) external view returns (address pair);
function allPairsLength() external view returns (uint256);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function createPair(address tokenA, address tokenB)
external
returns (address pair);
}
{
"compilationTarget": {
"localhost/presale.sol": "YvsPresale"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
}
[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_timelock","type":"address"},{"internalType":"uint256","name":"_start","type":"uint256"},{"internalType":"string","name":"_contact","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[],"name":"Completed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DailyBonusEarned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DepositorEarned","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Destroyed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DustCollected","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"timelock","type":"address"}],"name":"LiquidityAddedAndLocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PresaleEntered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bytes12","name":"code","type":"bytes12"}],"name":"ReferralSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ReferrerEarned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Refunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Salvaged","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bonus","outputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimable","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"close","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"closed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"collect_dust","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"completed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contact","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"controller","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposited","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"depositors","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"deposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"destroy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distribute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"duration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes12","name":"_code","type":"bytes12"}],"name":"enter","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"enter","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"finalized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"grace","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"listing","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketing","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"max","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"min","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":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes12","name":"code","type":"bytes12"}],"name":"referral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"referralRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referralRateBase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referralRateDepositor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referralRateReferrer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes12","name":"","type":"bytes12"}],"name":"referrals","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"registered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"salvage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"name":"set_controller","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"start","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"team","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"threshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timelock","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"total","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":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_contact","type":"string"}],"name":"update","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]