Transaction Hash:
Block:
9173171 at Dec-28-2019 12:04:22 AM +UTC
Transaction Fee:
0.0015779043 ETH
$3.23
Gas Used:
309,393 Gas / 5.1 Gwei
Emitted Events:
| 103 |
ERC20Token.Transfer( from=[Sender] 0xd69029bf3561a3ca164739e1574be06510e2bc21, to=0x0000000000000000000000000000000000000000, value=750000000000000000000 )
|
| 104 |
0x9c1342c1708b5708865a2801fc96d966bad67210.0x6dfc0576ff2e859e84c11ce699c4b4cbd18d83bd6e63342e4ff34fc1f5bbc032( 0x6dfc0576ff2e859e84c11ce699c4b4cbd18d83bd6e63342e4ff34fc1f5bbc032, 0x000000000000000000000000d69029bf3561a3ca164739e1574be06510e2bc21, 0x000000000000000000000000000000000000000000000000000000005e069c06, 0x0000000000000000000000000000000000000000000000004563918244f40000 )
|
| 105 |
0x26db2ea3e57daf7628d4c2061654ba629aff79ba.0x6dfc0576ff2e859e84c11ce699c4b4cbd18d83bd6e63342e4ff34fc1f5bbc032( 0x6dfc0576ff2e859e84c11ce699c4b4cbd18d83bd6e63342e4ff34fc1f5bbc032, 0x000000000000000000000000d69029bf3561a3ca164739e1574be06510e2bc21, 0x000000000000000000000000000000000000000000000000000000005e069c06, 0x0000000000000000000000000000000000000000000000004563918244f40000 )
|
Account State Difference:
| Address | Before | After | State Difference | ||
|---|---|---|---|---|---|
| 0x1bbbbBF7...2D6F60B68 | |||||
| 0x26db2eA3...29AFF79ba | 122.822 Eth | 123.172 Eth | 0.35 | ||
| 0x56C438eE...8cDfc928e | |||||
|
0x829BD824...93333A830
Miner
| (F2Pool Old) | 5,881.990668812006313797 Eth | 5,881.992246716306313797 Eth | 0.0015779043 | |
| 0x8F36a0B0...144cBCc1a | |||||
| 0x9bF9A32B...2827a3b19 | 52.638 Eth | 52.788 Eth | 0.15 | ||
| 0x9C1342c1...6baD67210 | 1,563.42919 Eth | 1,567.92919 Eth | 4.5 | ||
| 0xD69029bF...510E2bc21 |
10.694964838 Eth
Nonce: 24
|
5.6933869337 Eth
Nonce: 25
| 5.0015779043 |
Execution Trace
ETH 5
0x9c1342c1708b5708865a2801fc96d966bad67210.CALL( )
-
0x26db2ea3e57daf7628d4c2061654ba629aff79ba.STATICCALL( ) 0x1bbbbbf73cf7c97918cde3ce46016c02d6f60b68.CALL( )-
0xba312605f29e18226ee641f03180d8e2cd8682e2.75be2914( ) -
0x731cd54b7ad50d9fee60d2b56a3fe027a258b095.9096fcd2( )
-
-
0x8f36a0b0b8fdbba7bcb6fe00d8d6747144cbcc1a.96f0ff62( ) 0x1bbbbbf73cf7c97918cde3ce46016c02d6f60b68.STATICCALL( )-
0xba312605f29e18226ee641f03180d8e2cd8682e2.DELEGATECALL( ) -
0x731cd54b7ad50d9fee60d2b56a3fe027a258b095.9096fcd2( )
-
-
0x1bbbbbf73cf7c97918cde3ce46016c02d6f60b68.c0855de4( ) -
0x2d3d35ebd20caef1decdb70a02de1c9c16233ae7.STATICCALL( ) -
ERC20Token.balanceOf( _owner=0xD69029bF3561a3ca164739E1574be06510E2bc21 ) => ( balance=4551890240000000000000 )
-
ERC20Token.API_MoveToken( _from=0xD69029bF3561a3ca164739E1574be06510E2bc21, _to=0x0000000000000000000000000000000000000000, _value=750000000000000000000 )
- ETH 5
0x49b2225ce7f67aa5352bc34b6cc45b57c0d5444e.8f7b462a( ) ETH 5
0x49b2225ce7f67aa5352bc34b6cc45b57c0d5444e.e379bd2f( )- ETH 5
0xba312605f29e18226ee641f03180d8e2cd8682e2.DELEGATECALL( )
- ETH 5
-
0x26db2ea3e57daf7628d4c2061654ba629aff79ba.STATICCALL( ) - ETH 0.35
0x26db2ea3e57daf7628d4c2061654ba629aff79ba.CALL( ) -
0x9bf9a32bd22b95013e5f555619314302827a3b19.STATICCALL( ) - ETH 0.15
0x9bf9a32bd22b95013e5f555619314302827a3b19.CALL( ) 0x26db2ea3e57daf7628d4c2061654ba629aff79ba.07796ea9( )-
0xba312605f29e18226ee641f03180d8e2cd8682e2.DELEGATECALL( ) -
0xba312605f29e18226ee641f03180d8e2cd8682e2.DELEGATECALL( ) -
0xba312605f29e18226ee641f03180d8e2cd8682e2.DELEGATECALL( )
-
-
0x9bf9a32bd22b95013e5f555619314302827a3b19.07796ea9( ) -
0x8f36a0b0b8fdbba7bcb6fe00d8d6747144cbcc1a.8101420a( )
// File: contracts/interface/token/ERC20Interface.sol
///////////////////////////////////////////////////////////////////////////////////
//// Standard ERC-20 token contract (EPK) ///
///////////////////////////////////////////////////////////////////////////////////
/// ///
/// Standard ERC-20 token contract definition as mentioned above ///
/// ///
///////////////////////////////////////////////////////////////////////////////////
/// Mr.K by 2019/08/01 ///
///////////////////////////////////////////////////////////////////////////////////
pragma solidity >=0.5.0 <0.6.0;
contract ERC20Interface
{
uint256 public totalSupply;
string public name;
uint8 public decimals;
string public symbol;
function balanceOf(address _owner) public view returns (uint256 balance);
function transfer(address _to, uint256 _value) public returns (bool success);
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
function approve(address _spender, uint256 _value) public returns (bool success);
function allowance(address _owner, address _spender) public view returns (uint256 remaining);
event Transfer(address indexed _from, address indexed _to, uint256 _value);
event Approval(address indexed _owner, address indexed _spender, uint256 _value);
/// 只有合约可以调用的内部API
function API_MoveToken(address _from, address _to, uint256 _value) external;
}
// File: contracts/interface/ticket/TicketInterface.sol
///////////////////////////////////////////////////////////////////////////////////
//// EPK record contract ///
///////////////////////////////////////////////////////////////////////////////////
/// ///
/// Used to pay EPK to unlock accounts, record payment results, and provide a ///
/// query method for querying whether one account has been unlocked. ///
/// ///
///////////////////////////////////////////////////////////////////////////////////
/// Mr.K by 2019/08/01 ///
///////////////////////////////////////////////////////////////////////////////////
pragma solidity >=0.5.0 <0.6.0;
interface TicketInterface {
//One address needs to have enough EPK to unlock accounts. If one account has been unlocked before, the method will not take effect.
function PaymentTicket() external;
//Check if the one address has paid EPK to unlock the account.
function HasTicket( address ownerAddr ) external view returns (bool);
}
// File: contracts/InternalModule.sol
pragma solidity >=0.5.0 <0.6.0;
contract InternalModule {
address[] _authAddress;
address _contractOwner;
address _managerAddress;
constructor() public {
_contractOwner = msg.sender;
}
modifier OwnerOnly() {
require( _contractOwner == msg.sender ); _;
}
modifier ManagerOnly() {
require(msg.sender == _managerAddress); _;
}
modifier APIMethod() {
bool exist = false;
for (uint i = 0; i < _authAddress.length; i++) {
if ( _authAddress[i] == msg.sender ) {
exist = true;
break;
}
}
require(exist); _;
}
function SetRoundManager(address rmaddr ) external OwnerOnly {
_managerAddress = rmaddr;
}
function AddAuthAddress(address _addr) external ManagerOnly {
_authAddress.push(_addr);
}
function DelAuthAddress(address _addr) external ManagerOnly {
for (uint i = 0; i < _authAddress.length; i++) {
if (_authAddress[i] == _addr) {
for (uint j = 0; j < _authAddress.length - 1; j++) {
_authAddress[j] = _authAddress[j+1];
}
delete _authAddress[_authAddress.length - 1];
_authAddress.length--;
}
}
}
}
// File: contracts/ERC20Token.sol
pragma solidity >=0.5.0 <0.6.0;
contract ERC20Token is ERC20Interface, InternalModule {
string public name = "Name";
string public symbol = "Symbol";
uint8 public decimals = 18;
uint256 public totalSupply = 1000000000 * 10 ** 18;
uint256 constant private MAX_UINT256 = 2 ** 256 - 1;
uint256 private constant brunMaxLimit = (1000000000 * 10 ** 18) - (10000000 * 10 ** 18);
mapping (address => uint256) public balances;
mapping (address => mapping (address => uint256)) public allowed;
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
constructor(string memory tokenName, string memory tokenSymbol, uint256 tokenTotalSupply, uint256 mint) public {
name = tokenName;
symbol = tokenSymbol;
totalSupply = tokenTotalSupply;
balances[_contractOwner] = mint;
balances[address(this)] = tokenTotalSupply - mint;
}
function transfer(address _to, uint256 _value) public
returns (bool success) {
require(balances[msg.sender] >= _value);
balances[msg.sender] -= _value;
balances[_to] += _value;
emit Transfer(msg.sender, _to, _value);
return true;
}
function transferFrom(address _from, address _to, uint256 _value) public
returns (bool success) {
uint256 allowance = allowed[_from][msg.sender];
require(balances[_from] >= _value && allowance >= _value);
balances[_to] += _value;
balances[_from] -= _value;
if (allowance < MAX_UINT256) {
allowed[_from][msg.sender] -= _value;
}
emit Transfer(_from, _to, _value);
return true;
}
function balanceOf(address _owner) public view
returns (uint256 balance) {
return balances[_owner];
}
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];
}
uint256 private ticketPrice = 60000000000000000000;
mapping( address => bool ) private _paymentTicketAddrMapping;
function PaymentTicket() external {
require( _paymentTicketAddrMapping[msg.sender] == false, "ERC20_ERR_001");
require( balances[msg.sender] >= ticketPrice, "ERC20_ERR_002");
balances[msg.sender] -= ticketPrice;
if ( balances[address(0x0)] == brunMaxLimit ) {
balances[_contractOwner] += ticketPrice;
} else if ( balances[address(0x0)] + ticketPrice >= brunMaxLimit ) {
balances[_contractOwner] += (balances[address(0x0)] + ticketPrice) - brunMaxLimit;
balances[address(0x0)] = brunMaxLimit;
} else {
balances[address(0x0)] += ticketPrice;
}
_paymentTicketAddrMapping[msg.sender] = true;
}
function HasTicket( address ownerAddr ) external view returns (bool) {
return _paymentTicketAddrMapping[ownerAddr];
}
function API_MoveToken(address _from, address _to, uint256 _value) external APIMethod {
require( balances[_from] >= _value, "ERC20_ERR_003" );
balances[_from] -= _value;
if ( _to == address(0x0) ) {
if ( balances[address(0x0)] == brunMaxLimit ) {
balances[_contractOwner] += _value;
} else if ( balances[address(0x0)] + _value >= brunMaxLimit ) {
balances[_contractOwner] += (balances[address(0x0)] + _value) - brunMaxLimit;
balances[address(0x0)] = brunMaxLimit;
} else {
balances[address(0x0)] += _value;
}
} else {
balances[_to] += _value;
}
emit Transfer( _from, _to, _value );
}
}