Address Contract Partially Verified
Address
0x9e82DB0E7bC5B7029089cc0aE1c7032d9932Cbb8
Balance
0 ETH
Nonce
1
Code Size
8559 bytes
Creator
0x5b4103fF...BD06 at tx 0x52048e90...78239b
Indexed Transactions
0
Contract Bytecode
8559 bytes
0x608060405260043610610101575f3560e01c806370a0823111610094578063a9059cbb11610063578063a9059cbb1461036c578063c0b6f561146103a8578063dd62ed3e146103c4578063e086e5ec14610400578063f25f4b561461040a57610141565b806370a08231146102d457806379ba50971461031057806395ccea671461032657806395d89b411461034257610141565b806323b872dd116100d057806323b872dd14610236578063313ce5671461027257806344337ea11461029c578063537df3b6146102b857610141565b806306fdde031461017c578063095ea7b3146101a657806318160ddd146101e257806323b62b751461020c57610141565b36610141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161013890611c06565b60405180910390fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017390611c06565b60405180910390fd5b348015610187575f5ffd5b50610190610434565b60405161019d9190611c84565b60405180910390f35b3480156101b1575f5ffd5b506101cc60048036038101906101c79190611d35565b610471565b6040516101d99190611d8d565b60405180910390f35b3480156101ed575f5ffd5b506101f6610643565b6040516102039190611db5565b60405180910390f35b348015610217575f5ffd5b50610220610655565b60405161022d9190611ddd565b60405180910390f35b348015610241575f5ffd5b5061025c60048036038101906102579190611df6565b610679565b6040516102699190611d8d565b60405180910390f35b34801561027d575f5ffd5b50610286610a61565b6040516102939190611e61565b60405180910390f35b6102b660048036038101906102b19190611e7a565b610a69565b005b6102d260048036038101906102cd9190611e7a565b610c1a565b005b3480156102df575f5ffd5b506102fa60048036038101906102f59190611e7a565b610dc9565b6040516103079190611db5565b60405180910390f35b34801561031b575f5ffd5b50610324610e10565b005b610340600480360381019061033b9190611d35565b611095565b005b34801561034d575f5ffd5b50610356611294565b6040516103639190611c84565b60405180910390f35b348015610377575f5ffd5b50610392600480360381019061038d9190611d35565b6112d1565b60405161039f9190611d8d565b60405180910390f35b6103c260048036038101906103bd9190611e7a565b6114a5565b005b3480156103cf575f5ffd5b506103ea60048036038101906103e59190611ea5565b61164e565b6040516103f79190611db5565b60405180910390f35b6104086116d0565b005b348015610415575f5ffd5b5061041e6118c6565b60405161042b9190611ddd565b60405180910390f35b60606040518060400160405280600781526020017f47616d626c655800000000000000000000000000000000000000000000000000815250905090565b5f5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104d7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610639578160015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106309190611db5565b60405180910390a35b6001905092915050565b5f6a52b7d2dcc80cd2e4000000905090565b7f0000000000000000000000005b4103ff8d7998d5e40b3670ac64b5a4a10abd0681565b5f835f5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f9054906101000a900460ff161561070957806040517fffa4e6180000000000000000000000000000000000000000000000000000000081526004016107009190611ddd565b60405180910390fd5b835f5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f9054906101000a900460ff161561079857806040517fffa4e61800000000000000000000000000000000000000000000000000000000815260040161078f9190611ddd565b60405180910390fd5b845f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806107fe57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15610835576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050858110156108eb576040517fc45cb51300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85810360015f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560015f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051610a3f9190611db5565b60405180910390a3610a528888886118ea565b60019450505050509392505050565b5f6012905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aef576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f9054906101000a900460ff1615610b7d57806040517fffa4e618000000000000000000000000000000000000000000000000000000008152600401610b749190611ddd565b60405180910390fd5b60015f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167ff9b68063b051b82957fa193585681240904fed808db8b30fc5a2d2202c6ed62760405160405180910390a250565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ca0576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f9054906101000a900460ff16610d2d57806040517fffa4e618000000000000000000000000000000000000000000000000000000008152600401610d249190611ddd565b60405180910390fd5b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f2b6bf71b58b3583add364b3d9060ebf8019650f65f5be35f5464b9cb3e4ba2d460405160405180910390a250565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01549050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e96576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611052575f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350611093565b5f60035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461111b576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff163b0361116b576040517f1045b33e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016111c8929190611ee3565b6020604051808303815f875af11580156111e4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112089190611f34565b905080611241576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff167f23d6711a1d031134a36921253c75aa59e967d38e369ac625992824315e204f20836040516112879190611db5565b60405180910390a2505050565b60606040518060400160405280600581526020017f474d424c58000000000000000000000000000000000000000000000000000000815250905090565b5f335f5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f9054906101000a900460ff161561136157806040517fffa4e6180000000000000000000000000000000000000000000000000000000081526004016113589190611ddd565b60405180910390fd5b835f5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f9054906101000a900460ff16156113f057806040517fffa4e6180000000000000000000000000000000000000000000000000000000081526004016113e79190611ddd565b60405180910390fd5b845f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061145657503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1561148d576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114983387876118ea565b6001935050505092915050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461152b576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611590576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fb150023a879fd806e3599b6ca8ee3b60f0e360ab3846d128d67ebce1a391639a60405160405180910390a350565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611756576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f4790505f8103611793576040517fcff858f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516117d990611f8c565b5f6040518083038185875af1925050503d805f8114611813576040519150601f19603f3d011682016040523d82523d5f602084013e611818565b606091505b5050905080611853576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f94b2de810873337ed265c5f8cf98c9cffefa06b8607f9a2f1fbaebdfbcfbef1c836040516118ba9190611db5565b60405180910390a25050565b7f000000000000000000000000afadaeb9bce9b602fcba1bdaeba7242d207acba081565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f825f01549050838110156119a9576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6103e860016103e8901c6005876119c19190611fcd565b6119cb919061200e565b6119d5919061206e565b90505f81866119e4919061209e565b90508581836119f3919061200e565b14611a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2a9061211b565b60405180910390fd5b858303855f0181905550815f5f7f000000000000000000000000afadaeb9bce9b602fcba1bdaeba7242d207acba073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f828254019250508190555080845f015f82825401925050819055507f000000000000000000000000afadaeb9bce9b602fcba1bdaeba7242d207acba073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b359190611db5565b60405180910390a38673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b9a9190611db5565b60405180910390a35050505050505050565b5f82825260208201905092915050565b7f43616e6e6f742073656e642045544820746f207468697320636f6e74726163745f82015250565b5f611bf0602083611bac565b9150611bfb82611bbc565b602082019050919050565b5f6020820190508181035f830152611c1d81611be4565b9050919050565b5f81519050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611c5682611c24565b611c608185611bac565b9350611c70818560208601611c2e565b611c7981611c3c565b840191505092915050565b5f6020820190508181035f830152611c9c8184611c4c565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611cd182611ca8565b9050919050565b611ce181611cc7565b8114611ceb575f5ffd5b50565b5f81359050611cfc81611cd8565b92915050565b5f819050919050565b611d1481611d02565b8114611d1e575f5ffd5b50565b5f81359050611d2f81611d0b565b92915050565b5f5f60408385031215611d4b57611d4a611ca4565b5b5f611d5885828601611cee565b9250506020611d6985828601611d21565b9150509250929050565b5f8115159050919050565b611d8781611d73565b82525050565b5f602082019050611da05f830184611d7e565b92915050565b611daf81611d02565b82525050565b5f602082019050611dc85f830184611da6565b92915050565b611dd781611cc7565b82525050565b5f602082019050611df05f830184611dce565b92915050565b5f5f5f60608486031215611e0d57611e0c611ca4565b5b5f611e1a86828701611cee565b9350506020611e2b86828701611cee565b9250506040611e3c86828701611d21565b9150509250925092565b5f60ff82169050919050565b611e5b81611e46565b82525050565b5f602082019050611e745f830184611e52565b92915050565b5f60208284031215611e8f57611e8e611ca4565b5b5f611e9c84828501611cee565b91505092915050565b5f5f60408385031215611ebb57611eba611ca4565b5b5f611ec885828601611cee565b9250506020611ed985828601611cee565b9150509250929050565b5f604082019050611ef65f830185611dce565b611f036020830184611da6565b9392505050565b611f1381611d73565b8114611f1d575f5ffd5b50565b5f81519050611f2e81611f0a565b92915050565b5f60208284031215611f4957611f48611ca4565b5b5f611f5684828501611f20565b91505092915050565b5f81905092915050565b50565b5f611f775f83611f5f565b9150611f8282611f69565b5f82019050919050565b5f611f9682611f6c565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611fd782611d02565b9150611fe283611d02565b9250828202611ff081611d02565b9150828204841483151761200757612006611fa0565b5b5092915050565b5f61201882611d02565b915061202383611d02565b925082820190508082111561203b5761203a611fa0565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61207882611d02565b915061208383611d02565b92508261209357612092612041565b5b828204905092915050565b5f6120a882611d02565b91506120b383611d02565b92508282039050818111156120cb576120ca611fa0565b5b92915050565b7f496e76616c6964207472616e7366657220616d6f756e740000000000000000005f82015250565b5f612105601783611bac565b9150612110826120d1565b602082019050919050565b5f6020820190508181035f830152612132816120f9565b905091905056fea2646970667358221220cc2abffe60848429e6c3b74757e533909c51d85c87c2d6a21cd609bf3cf5e11464736f6c634300081b0033
Verified Source Code Partial Match
Compiler: v0.8.27+commit.40a35a09
EVM: cancun
Optimization: No
GambleX.sol 235 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;
interface IERC20 {
function totalSupply() external pure 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);
}
contract GambleX is IERC20 {
string private constant _name = "GambleX";
string private constant _symbol = "GMBLX";
uint8 private constant _decimals = 18;
uint256 private constant _totalSupply = 100_000_000 * 1e18;
address public immutable feeWallet;
address public immutable mainWallet;
uint256 private constant _FEE_PERCENT = 5; // Represents 0.5%
uint256 private constant _FEE_DIVISOR = 1000;
struct Account {
uint256 balance;
bool isBlacklisted;
}
mapping(address => Account) private _accounts;
mapping(address => mapping(address => uint256)) private _allowances;
address private _owner;
address private _pendingOwner;
error NotOwner();
error Blacklisted(address account);
error InvalidRecipient();
error InsufficientBalance();
error TransferFailed();
error ZeroAddress();
error NoETHToWithdraw();
error TokenAddressNotContract();
error AllowanceExceeded();
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
event AddedToBlacklist(address indexed account);
event RemovedFromBlacklist(address indexed account);
event EmergencyWithdrawal(address indexed token, uint256 amount);
event OwnershipTransferInitiated(address indexed previousOwner, address indexed newOwner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
event ETHWithdrawn(address indexed owner, uint256 amount);
modifier onlyOwner() {
if (msg.sender != _owner) revert NotOwner();
_;
}
modifier notBlacklisted(address account) {
if (_accounts[account].isBlacklisted) revert Blacklisted(account);
_;
}
modifier validRecipient(address recipient) {
if (recipient == address(0) || recipient == address(this)) revert InvalidRecipient();
_;
}
constructor(address _feeWalletAddress, address _mainWalletAddress) payable {
if (_feeWalletAddress == address(0)) revert ZeroAddress();
if (_mainWalletAddress == address(0)) revert ZeroAddress();
feeWallet = _feeWalletAddress;
mainWallet = _mainWalletAddress;
_owner = _mainWalletAddress;
_accounts[_mainWalletAddress].balance = _totalSupply;
emit Transfer(address(0), _mainWalletAddress, _totalSupply);
}
receive() external payable {
revert("Cannot send ETH to this contract");
}
fallback() external payable {
revert("Cannot send ETH to this contract");
}
function name() external pure returns (string memory) {
return _name;
}
function symbol() external pure returns (string memory) {
return _symbol;
}
function decimals() external pure returns (uint8) {
return _decimals;
}
function totalSupply() external pure override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) external view override returns (uint256) {
return _accounts[account].balance;
}
function transfer(address recipient, uint256 amount)
external
override
notBlacklisted(msg.sender)
notBlacklisted(recipient)
validRecipient(recipient)
returns (bool)
{
_transfer(msg.sender, recipient, amount);
return true;
}
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) {
if (spender == address(0)) revert ZeroAddress();
if (_allowances[msg.sender][spender] != amount) {
_allowances[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
}
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
)
external
override
notBlacklisted(sender)
notBlacklisted(recipient)
validRecipient(recipient)
returns (bool)
{
uint256 currentAllowance = _allowances[sender][msg.sender];
if (currentAllowance < amount) revert AllowanceExceeded();
unchecked {
_allowances[sender][msg.sender] = currentAllowance - amount;
}
emit Approval(sender, msg.sender, _allowances[sender][msg.sender]);
_transfer(sender, recipient, amount);
return true;
}
function addToBlacklist(address account) external payable onlyOwner {
if (_accounts[account].isBlacklisted) revert Blacklisted(account);
_accounts[account].isBlacklisted = true;
emit AddedToBlacklist(account);
}
function removeFromBlacklist(address account) external payable onlyOwner {
if (!_accounts[account].isBlacklisted) revert Blacklisted(account);
_accounts[account].isBlacklisted = false;
emit RemovedFromBlacklist(account);
}
function emergencyWithdraw(address tokenAddress, uint256 amount) external payable onlyOwner {
if (tokenAddress.code.length == 0) revert TokenAddressNotContract();
bool success = IERC20(tokenAddress).transfer(_owner, amount);
if (!success) revert TransferFailed();
emit EmergencyWithdrawal(tokenAddress, amount);
}
function withdrawETH() external payable onlyOwner {
uint256 ethBalance;
assembly {
ethBalance := selfbalance()
}
if (ethBalance == 0) revert NoETHToWithdraw();
(bool success, ) = _owner.call{value: ethBalance}("");
if (!success) revert TransferFailed();
emit ETHWithdrawn(_owner, ethBalance);
}
function initiateOwnershipTransfer(address newOwner) external payable onlyOwner {
if (newOwner == address(0)) revert ZeroAddress();
_pendingOwner = newOwner;
emit OwnershipTransferInitiated(_owner, newOwner);
}
function acceptOwnership() external {
if (msg.sender != _pendingOwner) revert NotOwner();
if (_owner != _pendingOwner) {
address previousOwner = _owner;
_owner = _pendingOwner;
_pendingOwner = address(0);
emit OwnershipTransferred(previousOwner, _owner);
} else {
_pendingOwner = address(0);
}
}
function _transfer(
address sender,
address recipient,
uint256 amount
)
internal
{
Account storage senderAccount = _accounts[sender];
Account storage recipientAccount = _accounts[recipient];
uint256 senderBalance = senderAccount.balance;
if (senderBalance < amount) revert InsufficientBalance();
uint256 feeAmount = (amount * _FEE_PERCENT + (_FEE_DIVISOR >> 1)) / _FEE_DIVISOR;
uint256 transferAmount = amount - feeAmount;
// Check for rounding errors
require(feeAmount + transferAmount == amount, "Invalid transfer amount");
unchecked {
senderAccount.balance = senderBalance - amount;
_accounts[feeWallet].balance += feeAmount;
recipientAccount.balance += transferAmount;
}
emit Transfer(sender, feeWallet, feeAmount);
emit Transfer(sender, recipient, transferAmount);
}
}
Read Contract
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
feeWallet 0xf25f4b56 → address
mainWallet 0x23b62b75 → address
name 0x06fdde03 → string
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
Write Contract 9 functions
These functions modify contract state and require a wallet transaction to execute.
acceptOwnership 0x79ba5097
No parameters
addToBlacklist 0x44337ea1
address account
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
emergencyWithdraw 0x95ccea67
address tokenAddress
uint256 amount
initiateOwnershipTransfer 0xc0b6f561
address newOwner
removeFromBlacklist 0x537df3b6
address account
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
withdrawETH 0xe086e5ec
No parameters
Recent Transactions
No transactions found for this address