Transaction Hash:
Block:
18091228 at Sep-08-2023 10:53:47 AM +UTC
Transaction Fee:
0.000527233007555352 ETH
$1.29
Gas Used:
47,628 Gas / 11.069812034 Gwei
Emitted Events:
313 |
Aeron.Transfer( from=[Sender] 0x6a594ea17aa82b17547a8a34cfd28372fb65a7b2, to=0xeC9F015C2d67e8DAdB04afac89F8Ce6Cb1fb7102, value=30080000000 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x1f9090aa...8e676c326
Miner
| 0.355354153492024024 Eth | 0.355358916292024024 Eth | 0.0000047628 | ||
0x6a594Ea1...2fB65A7B2 |
0.004286987321952797 Eth
Nonce: 30
|
0.003759754314397445 Eth
Nonce: 31
| 0.000527233007555352 | ||
0xBA5F11b1...859A8AEB6 |
Execution Trace
Aeron.transfer( _to=0xeC9F015C2d67e8DAdB04afac89F8Ce6Cb1fb7102, _value=30080000000 )
transfer[Aeron (ln:73)]
revert[Aeron (ln:74)]
revert[Aeron (ln:75)]
revert[Aeron (ln:76)]
revert[Aeron (ln:77)]
safeSub[Aeron (ln:78)]
safeAdd[Aeron (ln:79)]
Transfer[Aeron (ln:80)]
pragma solidity ^0.4.8; /** * Math operations with safety checks */ contract SafeMath { function safeMul(uint256 a, uint256 b) internal returns (uint256) { uint256 c = a * b; assert(a == 0 || c / a == b); return c; } function safeDiv(uint256 a, uint256 b) internal returns (uint256) { assert(b > 0); uint256 c = a / b; assert(a == b * c + a % b); return c; } function safeSub(uint256 a, uint256 b) internal returns (uint256) { assert(b <= a); return a - b; } function safeAdd(uint256 a, uint256 b) internal returns (uint256) { uint256 c = a + b; assert(c>=a && c>=b); return c; } function assert(bool assertion) internal { if (!assertion) { revert(); } } } contract Aeron is SafeMath { string public name; string public symbol; uint8 public decimals; uint256 public totalSupply; address public owner; /* This creates an array with all balances */ mapping (address => uint256) public balanceOf; mapping (address => uint256) public freezeOf; mapping (address => mapping (address => uint256)) public allowance; /* This generates a public event on the blockchain that will notify clients */ event Transfer(address indexed from, address indexed to, uint256 value); /* This notifies clients about the amount burnt */ event Burn(address indexed from, uint256 value); /* This notifies clients about the amount frozen */ event Freeze(address indexed from, uint256 value); /* This notifies clients about the amount unfrozen */ event Unfreeze(address indexed from, uint256 value); /* Initializes contract with initial supply tokens to the creator of the contract */ function Aeron() { balanceOf[msg.sender] = 10000000000000000; // Give the creator all initial tokens totalSupply = 10000000000000000; // Update total supply name = 'Aeron'; // Set the name for display purposes symbol = 'ARN'; // Set the symbol for display purposes decimals = 8; // Amount of decimals for display purposes owner = msg.sender; } /* Send tokens */ function transfer(address _to, uint256 _value) { if (_to == 0x0) revert(); // Prevent transfer to 0x0 address. Use burn() instead if (_value <= 0) revert(); if (balanceOf[msg.sender] < _value) revert(); // Check if the sender has enough if (balanceOf[_to] + _value < balanceOf[_to]) revert(); // Check for overflows balanceOf[msg.sender] = SafeMath.safeSub(balanceOf[msg.sender], _value); // Subtract from the sender balanceOf[_to] = SafeMath.safeAdd(balanceOf[_to], _value); // Add the same to the recipient Transfer(msg.sender, _to, _value); // Notify anyone listening that this transfer took place } /* Allow another contract to spend some tokens in your behalf */ function approve(address _spender, uint256 _value) returns (bool success) { if (_value <= 0) revert(); allowance[msg.sender][_spender] = _value; return true; } /* Transfer tokens */ function transferFrom(address _from, address _to, uint256 _value) returns (bool success) { if (_to == 0x0) revert(); // Prevent transfer to 0x0 address. Use burn() instead if (_value <= 0) revert(); if (balanceOf[_from] < _value) revert(); // Check if the sender has enough if (balanceOf[_to] + _value < balanceOf[_to]) revert(); // Check for overflows if (_value > allowance[_from][msg.sender]) revert(); // Check allowance balanceOf[_from] = SafeMath.safeSub(balanceOf[_from], _value); // Subtract from the sender balanceOf[_to] = SafeMath.safeAdd(balanceOf[_to], _value); // Add the same to the recipient allowance[_from][msg.sender] = SafeMath.safeSub(allowance[_from][msg.sender], _value); Transfer(_from, _to, _value); return true; } /* Destruction of the token */ function burn(uint256 _value) returns (bool success) { if (balanceOf[msg.sender] < _value) revert(); // Check if the sender has enough if (_value <= 0) revert(); balanceOf[msg.sender] = SafeMath.safeSub(balanceOf[msg.sender], _value); // Subtract from the sender totalSupply = SafeMath.safeSub(totalSupply,_value); // Updates totalSupply Burn(msg.sender, _value); return true; } function freeze(uint256 _value) returns (bool success) { if (balanceOf[msg.sender] < _value) revert(); // Check if the sender has enough if (_value <= 0) revert(); balanceOf[msg.sender] = SafeMath.safeSub(balanceOf[msg.sender], _value); // Subtract from the sender freezeOf[msg.sender] = SafeMath.safeAdd(freezeOf[msg.sender], _value); // Updates frozen tokens Freeze(msg.sender, _value); return true; } function unfreeze(uint256 _value) returns (bool success) { if (freezeOf[msg.sender] < _value) revert(); // Check if the sender has enough if (_value <= 0) revert(); freezeOf[msg.sender] = SafeMath.safeSub(freezeOf[msg.sender], _value); // Updates frozen tokens balanceOf[msg.sender] = SafeMath.safeAdd(balanceOf[msg.sender], _value); // Add to the sender Unfreeze(msg.sender, _value); return true; } /* Prevents accidental sending of Ether */ function () { revert(); } }