Transaction Hash:
Block:
4928277 at Jan-18-2018 09:03:48 AM +UTC
Transaction Fee:
0.0026287 ETH
$4.77
Gas Used:
52,574 Gas / 50 Gwei
Emitted Events:
33 |
ContentAdNetworkToken.Transfer( _from=[Sender] 0x92e705b0aa3b6130a5b8b1e130f52f4bab313e87, _to=0x06f971eC65b4C684376723537ae2314aAec0a5c1, _value=929000000000000000000 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x4Bb96091...F90f81B01
Miner
| (Ethpool 2) | 64.247518278350568792 Eth | 64.250146978350568792 Eth | 0.0026287 | |
0x5f378990...DBFa8A841 | |||||
0x92E705b0...bAb313E87 |
0.22742094175228268 Eth
Nonce: 24
|
0.22479224175228268 Eth
Nonce: 25
| 0.0026287 |
Execution Trace
ContentAdNetworkToken.transfer( _to=0x06f971eC65b4C684376723537ae2314aAec0a5c1, _value=929000000000000000000 ) => ( success=True )
pragma solidity ^0.4.11; contract Owner { address public owner; function Owner() { owner = msg.sender; } modifier onlyOwner() { require(msg.sender == owner); _; } function transferOwnership(address newOwner) onlyOwner { owner = newOwner; } } contract TokenRecipient { function receiveApproval( address _from, uint256 _value, address _token, bytes _extraData); } contract Token { string public standard = "Token 0.1"; string public name; string public symbol; uint8 public decimals; uint256 public totalSupply; mapping (address => uint256) public balanceOf; mapping (address => mapping (address => uint256)) public allowance; event Transfer(address indexed _from, address indexed _to, uint256 _value); event Approval(address indexed _owner, address indexed _spender, uint256 _value); function Token ( uint256 initialSupply, string tokenName, uint8 decimalUnits, string tokenSymbol ) { balanceOf[msg.sender] = initialSupply; // Give the creator all initial tokens totalSupply = initialSupply; // Update total supply name = tokenName; // Set the name for display purposes symbol = tokenSymbol; // Set the symbol for display purposes decimals = decimalUnits; // Amount of decimals for display purposes } function transfer(address _to, uint256 _value) returns (bool success) { 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] -= _value; balanceOf[_to] += _value; Transfer(msg.sender, _to, _value); return true; } function approve(address _spender, uint256 _value) returns (bool success) { require(balanceOf[msg.sender] >= _value); allowance[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); return true; } function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns (bool success) { TokenRecipient spender = TokenRecipient(_spender); if (approve(_spender, _value)) { spender.receiveApproval( msg.sender, _value, this, _extraData ); return true; } } function transferFrom(address _from, address _to, uint256 _value) returns (bool success) { 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] -= _value; balanceOf[_to] += _value; allowance[_from][msg.sender] -= _value; Transfer(_from, _to, _value); return true; } } //Business Service Token contract ContentAdNetworkToken is Token, Owner { uint256 public constant INITIAL_SUPPLY = 15 * 10000 * 10000 * 1 ether; // 1e9 * 1e18 string public constant NAME = "Content and Ad Network"; //名称 string public constant SYMBOL = "CAN"; // 简称 // string public constant STANDARD = "Token 1.0"; uint8 public constant DECIMALS = 18; uint256 public constant BUY = 0; // 用于自动买卖 uint256 constant RATE = 1 szabo; bool private couldTrade = false; // string public standard = STANDARD; // string public name; // string public symbol; // uint public decimals; uint256 public sellPrice; uint256 public buyPrice; uint minBalanceForAccounts; mapping (address => uint256) public balanceOf; mapping (address => bool) frozenAccount; event FrozenFunds(address indexed _target, bool _frozen); function ContentAdNetworkToken() Token(INITIAL_SUPPLY, NAME, DECIMALS, SYMBOL) { balanceOf[msg.sender] = totalSupply; buyPrice = 100000000; sellPrice = 100000000; } function transfer(address _to, uint256 _value) returns (bool success) { if (balanceOf[msg.sender] < _value) { revert(); // Check if the sender has enough } if (balanceOf[_to] + _value < balanceOf[_to]) { revert(); // Check for overflows } if (frozenAccount[msg.sender]) { revert(); // Check if frozen } balanceOf[msg.sender] -= _value; balanceOf[_to] += _value; Transfer(msg.sender, _to, _value); return true; } function transferFrom(address _from, address _to, uint256 _value) returns (bool success) { if (frozenAccount[_from]) { revert(); // Check if frozen } 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] -= _value; balanceOf[_to] += _value; allowance[_from][msg.sender] -= _value; Transfer(_from, _to, _value); return true; } function freezeAccount(address _target, bool freeze) onlyOwner { frozenAccount[_target] = freeze; FrozenFunds(_target, freeze); } function setPrices(uint256 newSellPrice, uint256 newBuyPrice) onlyOwner { sellPrice = newSellPrice; buyPrice = newBuyPrice; } function buy() payable returns (uint amount) { require(couldTrade); amount = msg.value * RATE / buyPrice; require(balanceOf[this] >= amount); require(balanceOf[msg.sender] + amount >= amount); balanceOf[this] -= amount; balanceOf[msg.sender] += amount; Transfer(this, msg.sender, amount); return amount; } function sell(uint256 amountInWeiDecimalIs18) returns (uint256 revenue) { require(couldTrade); uint256 amount = amountInWeiDecimalIs18; require(balanceOf[msg.sender] >= amount); require(!frozenAccount[msg.sender]); revenue = amount * sellPrice / RATE; balanceOf[this] += amount; balanceOf[msg.sender] -= amount; require(msg.sender.send(revenue)); Transfer(msg.sender, this, amount); return revenue; } function withdraw(uint256 amount) onlyOwner returns (bool success) { require(msg.sender.send(amount)); return true; } function setCouldTrade(uint256 amountInWeiDecimalIs18) onlyOwner returns (bool success) { couldTrade = true; require(balanceOf[msg.sender] >= amountInWeiDecimalIs18); require(balanceOf[this] + amountInWeiDecimalIs18 >= amountInWeiDecimalIs18); balanceOf[msg.sender] -= amountInWeiDecimalIs18; balanceOf[this] += amountInWeiDecimalIs18; Transfer(msg.sender, this, amountInWeiDecimalIs18); return true; } function stopTrade() onlyOwner returns (bool success) { couldTrade = false; uint256 _remain = balanceOf[this]; require(balanceOf[msg.sender] + _remain >= _remain); balanceOf[msg.sender] += _remain; balanceOf[this] -= _remain; Transfer(this, msg.sender, _remain); return true; } function () { revert(); } }