Transaction Hash:
Block:
12494911 at May-24-2021 04:31:28 AM +UTC
Transaction Fee:
0.001615145051823081 ETH
$4.06
Gas Used:
46,147 Gas / 35.000001123 Gwei
Emitted Events:
238 |
ares.Approval( _owner=[Sender] 0x4aec0a40226f257d8a4bd831a27ed684e819cfaf, _spender=0xdF1AFBC5...b672a4Eb3, _value=10000000000000000000000000 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x358AA737...09AaBd523 | |||||
0x4aeC0A40...4E819CFAF |
0.519394946603387101 Eth
Nonce: 59
|
0.51777980155156402 Eth
Nonce: 60
| 0.001615145051823081 | ||
0xEA674fdD...16B898ec8
Miner
| (Ethermine) | 1,465.445975916962942382 Eth | 1,465.447591062014765463 Eth | 0.001615145051823081 |
Execution Trace
ares.approve( _spender=0xdF1AFBC5D532a607329b095E39a013Eb672a4Eb3, _value=10000000000000000000000000 ) => ( success=True )
approve[ares (ln:49)]
Approval[ares (ln:51)]
pragma solidity ^0.6.0; // SPDX-License-Identifier: MIT library SafeMath { function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } contract ares { using SafeMath for uint256; string public constant name = "Ares Protocol"; string public constant symbol = "ARES"; uint256 public constant decimals = 18; uint256 public constant totalSupply = 1000000000*10**decimals; mapping (address => uint256) private balances; mapping (address => mapping (address => uint256)) private allowed; event Transfer(address indexed _from, address indexed _to, uint256 _value); event Approval(address indexed _owner, address indexed _spender, uint256 _value); constructor() public { balances[msg.sender] = totalSupply; } function balanceOf(address _owner) public view returns (uint256 balance) { return balances[_owner]; } function transfer(address _to, uint256 _value) public returns (bool success) { require (_to != address(0), "not enough balance !"); require((balances[msg.sender] >= _value), ""); balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true; } function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) { require (_to != address(0), "not enough balance !"); require(balances[_from] >= _value && allowed[_from][msg.sender] >= _value, "not enough allowed balance"); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(_from, _to, _value); return true; } function approve(address _spender, uint256 _value) public returns (bool success) { allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } function allowance(address _owner, address _spender) public view returns (uint256 remaining) { return allowed[_owner][_spender]; } function batchTransfer( address payable[] memory _users, uint256[] memory _amounts ) public returns (bool) { require(_users.length == _amounts.length,"not same length"); for(uint8 i = 0; i < _users.length; i++){ require(_users[i] != address(0),"address is zero"); require(balances[msg.sender] >= _amounts[i] ,"not enough balance !"); balances[msg.sender] = balances[msg.sender].sub(_amounts[i]); balances[_users[i]] = balances[_users[i]].add(_amounts[i]); emit Transfer(msg.sender, _users[i], _amounts[i]); } return true; } }