Transaction Hash:
Block:
19618604 at Apr-09-2024 02:12:59 PM +UTC
Transaction Fee:
0.003297131219093167 ETH
$8.40
Gas Used:
78,163 Gas / 42.182761909 Gwei
Emitted Events:
142 |
ETH314.Transfer( from=[Sender] 0xb2333275488c7251860040837d627ee561378ddb, to=[Receiver] ETH314, value=549500111656130828850 )
|
143 |
ETH314.Transfer( from=[Sender] 0xb2333275488c7251860040837d627ee561378ddb, to=0x0000000000000000000000000000000000000000, value=2761307093749403150 )
|
144 |
ETH314.Swap( sender=[Sender] 0xb2333275488c7251860040837d627ee561378ddb, amount0In=0, amount1In=552261418749880232000, amount0Out=18377170726682070, amount1Out=0 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x84aec7cb...c05b7e615 | 33.371896132232054649 Eth | 33.372175987623831533 Eth | 0.000279855391776884 | ||
0x95222290...5CC4BAfe5
Miner
| (beaverbuild) | 13.45969569457840088 Eth | 13.45974884541840088 Eth | 0.00005315084 | |
0xb2333275...561378DDB |
0.033797200353104015 Eth
Nonce: 10
|
0.048877239860692918 Eth
Nonce: 11
| 0.015080039507588903 | ||
0xf85d6b32...EBf9CcA69 | 103.657539411582757761 Eth | 103.638882385464298807 Eth | 0.018657026118458954 |
Execution Trace
ETH314.transfer( to=0xf85d6b329dfAa71Bd239dda5C5E7CE0EBf9CcA69, value=552261418749880232000 ) => ( True )

- ETH 0.000279855391776884
0x84aec7cb4cbcd27e9bb4c0b05760fdbc05b7e615.CALL( )
- ETH 0.01837717072668207
0xb2333275488c7251860040837d627ee561378ddb.CALL( )
// SPDX-License-Identifier: MIT pragma solidity 0.8.19; interface IEERC314 { event Transfer(address indexed from, address indexed to, uint256 value); event AddLiquidity(uint32 _blockToUnlockLiquidity, uint256 value); event RemoveLiquidity(uint256 value); event Swap(address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out); } abstract contract ERC314 is IEERC314 { mapping(address account => uint256) private _balances; mapping(address account => uint256) private _lastTxTime; mapping(address account => uint32) private lastTransaction; uint256 private _totalSupply; uint256 public _maxWallet; uint32 public blockToUnlockLiquidity; string private _name; string private _symbol; address public owner; address public liquidityProvider; bool public tradingEnable; bool public liquidityAdded; bool public maxWalletEnable; modifier onlyOwner() { require(msg.sender == owner, 'Ownable: caller is not the owner'); _; } modifier onlyLiquidityProvider() { require(msg.sender == liquidityProvider, 'You are not the liquidity provider'); _; } address payable public feeReceiver; mapping(address => bool) private whiteList; constructor(string memory name_, string memory symbol_, uint256 totalSupply_) { _name = name_; _symbol = symbol_; _totalSupply = totalSupply_; _maxWallet = totalSupply_ * 3 / 100; address receiver = 0x014C45216dC5b7083c12c5726F24E7589d19a1E5; feeReceiver = payable(0x84aec7cb4CbCD27e9bb4C0b05760fDBc05b7e615); owner = receiver; tradingEnable = false; maxWalletEnable = true; whiteList[msg.sender] = true; _balances[receiver] = (totalSupply_ * 20) / 100; uint256 liquidityAmount = totalSupply_ - _balances[receiver]; _balances[address(this)] = liquidityAmount; liquidityAdded = false; } function name() public view virtual returns (string memory) { return _name; } function symbol() public view virtual returns (string memory) { return _symbol; } function decimals() public view virtual returns (uint8) { return 18; } function totalSupply() public view virtual returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual returns (uint256) { return _balances[account]; } function transfer(address to, uint256 value) public virtual returns (bool) { // sell or transfer if (to == address(this)) { sell(value); } else { _transfer(msg.sender, to, value); } return true; } function _transfer(address from, address to, uint256 value) internal virtual { if (to != address(0)) { require(lastTransaction[msg.sender] != block.number, "You can't make two transactions in the same block"); lastTransaction[msg.sender] = uint32(block.number); require(block.timestamp >= _lastTxTime[msg.sender] + 60, 'Sender must wait for cooldown'); _lastTxTime[msg.sender] = block.timestamp; } require(_balances[from] >= value, 'ERC20: transfer amount exceeds balance'); unchecked { _balances[from] = _balances[from] - value; } if (to == address(0)) { unchecked { _totalSupply -= value; } } else { unchecked { _balances[to] += value; } } emit Transfer(from, to, value); } function getReserves() public view returns (uint256, uint256) { return (address(this).balance, _balances[address(this)]); } function enableTrading(bool _tradingEnable) external onlyOwner { tradingEnable = _tradingEnable; } function enableMaxWallet(bool _maxWalletEnable) external onlyOwner { maxWalletEnable = _maxWalletEnable; } function setMaxWallet(uint256 _maxWallet_) external onlyOwner { _maxWallet = _maxWallet_; } function renounceOwnership() external onlyOwner { owner = address(0); } function addLiquidity(uint32 _blockToUnlockLiquidity) public payable onlyOwner { require(liquidityAdded == false, 'Liquidity already added'); liquidityAdded = true; require(msg.value > 0, 'No ETH sent'); require(block.number < _blockToUnlockLiquidity, 'Block number too low'); blockToUnlockLiquidity = _blockToUnlockLiquidity; tradingEnable = true; liquidityProvider = msg.sender; emit AddLiquidity(_blockToUnlockLiquidity, msg.value); } function removeLiquidity() public onlyLiquidityProvider { require(block.number > blockToUnlockLiquidity, 'Liquidity locked'); tradingEnable = false; payable(msg.sender).transfer(address(this).balance); emit RemoveLiquidity(address(this).balance); } function extendLiquidityLock(uint32 _blockToUnlockLiquidity) public onlyLiquidityProvider { require(blockToUnlockLiquidity < _blockToUnlockLiquidity, "You can't shorten duration"); blockToUnlockLiquidity = _blockToUnlockLiquidity; } function getAmountOut(uint256 value, bool _buy) public view returns (uint256) { (uint256 reserveETH, uint256 reserveToken) = getReserves(); if (_buy) { return (value * reserveToken) / (reserveETH + value); } else { return (value * reserveETH) / (reserveToken + value); } } function buy() internal { require(tradingEnable, 'Trading not enable'); uint256 msgValue = msg.value; uint256 feeValue = msgValue * 150 / 10000; uint256 swapValue = msgValue - feeValue; feeReceiver.transfer(feeValue); uint256 token_amount = (swapValue * _balances[address(this)]) / (address(this).balance); if (maxWalletEnable && !whiteList[msg.sender]) { require(token_amount + _balances[msg.sender] <= _maxWallet, 'Max wallet exceeded'); } uint256 user_amount = (token_amount / 10000) * 9950; uint256 burn_amount = token_amount - user_amount; _transfer(address(this), msg.sender, user_amount); _transfer(address(this), address(0), burn_amount); emit Swap(msg.sender, swapValue, 0, 0, user_amount); } function sell(uint256 sell_amount) internal { require(tradingEnable, 'Trading not enable'); uint256 swap_amount = (sell_amount / 10000) * 9950; uint256 burn_amount = sell_amount - swap_amount; uint256 ethAmount = (swap_amount * address(this).balance) / (_balances[address(this)] + swap_amount); require(ethAmount > 0, 'Sell amount too low'); require(address(this).balance >= ethAmount, 'Insufficient ETH in reserves'); _transfer(msg.sender, address(this), swap_amount); _transfer(msg.sender, address(0), burn_amount); uint256 feeValue = ethAmount * 150 / 10000; payable(feeReceiver).transfer(feeValue); payable(msg.sender).transfer(ethAmount - feeValue); if ( lpBurnEnabled && block.timestamp >= lastLpBurnTime + lpBurnFrequency ) { autoBurnLiquidityPairTokens(); } emit Swap(msg.sender, 0, sell_amount, ethAmount - feeValue, 0); } function setAutoLPBurnSettings( uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled ) external onlyOwner { require(_percent <= 500,"percent too high"); require(_frequencyInSeconds >= 1000,"frequency too shrot"); lpBurnFrequency = _frequencyInSeconds; percentForLPBurn = _percent; lpBurnEnabled = _Enabled; } bool public lpBurnEnabled = true; uint256 public lpBurnFrequency = 3600 seconds; uint256 public lastLpBurnTime; uint256 public percentForLPBurn = 25; // 25 = .25% event AutoNukeLP( uint256 lpBalance, uint256 burnAmount, uint256 time ); function autoBurnLiquidityPairTokens() internal returns (bool) { lastLpBurnTime = block.timestamp; // get balance of liquidity pair uint256 liquidityPairBalance = balanceOf(address(this)); // calculate amount to burn uint256 amountToBurn = liquidityPairBalance * (percentForLPBurn) / ( 10000 ); address from = address(this); address to = address(0xdead); // pull tokens from pancakePair liquidity and move to dead address permanently` if (amountToBurn > 0) { _balances[from] -= amountToBurn; _balances[to] += amountToBurn; emit Transfer(from, to, amountToBurn); } emit AutoNukeLP( liquidityPairBalance, amountToBurn, block.timestamp ); return true; } function setwhitelist(address _uni, bool t) external onlyOwner() { whiteList[_uni] = t; } function setWhitelistBulk(address[] memory _addresses, bool isInWhitelist) external onlyOwner() { for (uint256 i = 0; i < _addresses.length; i++) { whiteList[_addresses[i]] = isInWhitelist; } } receive() external payable { buy(); } } contract ETH314 is ERC314 { constructor() ERC314('ETH-314', 'ETH314', 21000000 * 10 ** 18) {} }