Transaction Hash:
Block:
19396392 at Mar-09-2024 08:37:23 AM +UTC
Transaction Fee:
0.002655930979256588 ETH
$6.06
Gas Used:
58,852 Gas / 45.128984219 Gwei
Emitted Events:
301 |
AxeCapProfitShare8.EthClaim( claimer=[Sender] 0xe9030dc28f87872a1ba72fc3808ccbe3aa624353, amount=18867224491750423 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x0b274bCd...b8e631Dd3 | 4.093296705589081607 Eth | 4.074429481097331184 Eth | 0.018867224491750423 | ||
0x4838B106...B0BAD5f97
Miner
| (Titan Builder) | 45.244097589472210357 Eth | 45.244097648324210357 Eth | 0.000000058852 | |
0xe9030dc2...3aA624353 |
0.125963737286975179 Eth
Nonce: 58
|
0.142175030799469014 Eth
Nonce: 59
| 0.016211293512493835 |
Execution Trace
AxeCapProfitShare8.CALL( )
- ETH 0.018867224491750423
0xe9030dc28f87872a1ba72fc3808ccbe3aa624353.CALL( )
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract AxeCapProfitShare8 { uint256 immutable public REVENUE_AMOUNT; address public owner; uint256 public totalSnapshotTokens; uint256 public snapshotTime; bool public isSnapshotLocked; bool public isFreezed; mapping(address => uint256) public snapshotBalances; mapping(address => bool) public hasClaimed; event AxeSnapshotLock(); event AxeSnapshotUnlock(); event EthClaim(address indexed claimer, uint256 amount); event AdminWithdraw(uint256 amount); constructor () payable { owner = msg.sender; REVENUE_AMOUNT = msg.value; } modifier onlyOwner() { require(msg.sender == owner, "Caller is not the owner"); _; } // modifier after3Days() { require(block.timestamp > snapshotTime + 3 days , "Can only call after 3 days of snapshot"); _; } function uploadSnapshot(address[] calldata users, uint256[] calldata balances) external onlyOwner { require(users.length == balances.length, "Arrays must be of equal length"); // require(users.length <= 125, "Can only upload up to 125 addresses at a time"); // note: should not have more than one user value for (uint256 i = 0; i < users.length; i++) { snapshotBalances[users[i]] += balances[i]; totalSnapshotTokens += balances[i]; } } function lockSnapshot() external onlyOwner { require(!isSnapshotLocked, "snapshot already locked"); snapshotTime = block.timestamp; isSnapshotLocked = true; emit AxeSnapshotLock(); } function freeze() external onlyOwner { require(!isFreezed, "Contract is already frozen"); isFreezed = true; emit AxeSnapshotUnlock(); } function claimETH() external { require(!isFreezed, "Contract is frozen"); require(isSnapshotLocked, "Snapshot not yet locked"); require(!hasClaimed[msg.sender], "You have already claimed your ETH"); require(snapshotBalances[msg.sender] > 0, "You do not have any AXE tokens in the snapshot"); uint256 claimableAmount = (REVENUE_AMOUNT * snapshotBalances[msg.sender]) / totalSnapshotTokens; // prevent reentrancy hasClaimed[msg.sender] = true; // see https://ethereum.stackexchange.com/questions/78124/is-transfer-still-safe-after-the-istanbul-update (bool isSuccess,) = msg.sender.call{value: claimableAmount}(""); require(isSuccess, "Claim amount tranfer failed"); emit EthClaim(msg.sender, claimableAmount); } // Function to withdraw unclaimed ETH after 7 days function withdrawUnclaimedETH() public onlyOwner after3Days { uint256 amount = address(this).balance; (bool success, ) = msg.sender.call{value: amount}(""); require(success, "Withdraw failed"); emit AdminWithdraw(amount); } receive() external payable {} }