Transaction Hash:
Block:
21432743 at Dec-18-2024 11:37:59 PM +UTC
Transaction Fee:
0.000335554281356778 ETH
$0.81
Gas Used:
24,222 Gas / 13.853285499 Gwei
Emitted Events:
64 |
Jigstack.Approval( owner=[Sender] 0x546fdf3381017674f532b52919fb24bc695ab75d, spender=0x7a250d56...659F2488D, value=0 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x1F8A6268...Cf2016D13 | |||||
0x546FDf33...c695Ab75D |
0.009280166579214547 Eth
Nonce: 64
|
0.008944612297857769 Eth
Nonce: 65
| 0.000335554281356778 | ||
0x95222290...5CC4BAfe5
Miner
| (beaverbuild) | 5.517634739996006327 Eth | 5.517661805306642669 Eth | 0.000027065310636342 |
Execution Trace
Jigstack.approve( spender=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, amount=0 ) => ( True )
approve[ERC20 (ln:95)]
_approve[ERC20 (ln:96)]
Approval[ERC20 (ln:138)]
_msgSender[ERC20 (ln:96)]
pragma solidity 0.5.17; interface IERC20 { function totalSupply() external view 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); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } } contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor () internal { } // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } } contract ERC20Detailed is IERC20 { string private _name; string private _symbol; uint8 private _decimals; constructor (string memory name, string memory symbol, uint8 decimals) public { _name = name; _symbol = symbol; _decimals = decimals; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } } contract ERC20 is Context, IERC20 { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; function totalSupply() public view returns (uint256) { return _totalSupply; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _approve(address owner, address spender, uint256 amount) internal { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } } contract Jigstack is ERC20, ERC20Detailed { string private constant _name = "Jigstack"; string private constant _symbol = "STAK"; uint8 private constant _decimals = 18; address private constant _teamWallet= 0x0875f465b064156b02465fC8657b21E105D863f5; uint256 internal constant _tokenUnit = 10**18; uint256 internal constant _billion = 10**9; uint256 internal constant _totalSupply = 3 * _billion * _tokenUnit; constructor() ERC20Detailed(_name, _symbol, _decimals) public { _mint(_teamWallet, _totalSupply); } }