ETH Price: $1,901.86 (-0.50%)

Transaction Decoder

Block:
7089652 at Jan-18-2019 11:13:12 PM +UTC
Transaction Fee:
0.0013413868 ETH $2.55
Gas Used:
1,031,836 Gas / 1.3 Gwei

Emitted Events:

116 BITDINERO.Distr( to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, amount=641927501131924264980 )
117 BITDINERO.Transfer( _from=0x0000000000000000000000000000000000000000, _to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, _value=641927501131924264980 )
118 BITDINERO.Distr( to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, amount=641926730818918641696 )
119 BITDINERO.Transfer( _from=0x0000000000000000000000000000000000000000, _to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, _value=641926730818918641696 )
120 BITDINERO.Distr( to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, amount=641925960506833017308 )
121 BITDINERO.Transfer( _from=0x0000000000000000000000000000000000000000, _to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, _value=641925960506833017308 )
122 BITDINERO.Distr( to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, amount=641925190195677391804 )
123 BITDINERO.Transfer( _from=0x0000000000000000000000000000000000000000, _to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, _value=641925190195677391804 )
124 BITDINERO.Distr( to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, amount=641924419885441765196 )
125 BITDINERO.Transfer( _from=0x0000000000000000000000000000000000000000, _to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, _value=641924419885441765196 )
126 BITDINERO.Distr( to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, amount=641923649576136137472 )
127 BITDINERO.Transfer( _from=0x0000000000000000000000000000000000000000, _to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, _value=641923649576136137472 )
128 BITDINERO.Distr( to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, amount=641922879267750508644 )
129 BITDINERO.Transfer( _from=0x0000000000000000000000000000000000000000, _to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, _value=641922879267750508644 )
130 BITDINERO.Distr( to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, amount=641922108960294878700 )
131 BITDINERO.Transfer( _from=0x0000000000000000000000000000000000000000, _to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, _value=641922108960294878700 )
132 BITDINERO.Distr( to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, amount=641921338653759247652 )
133 BITDINERO.Transfer( _from=0x0000000000000000000000000000000000000000, _to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, _value=641921338653759247652 )
134 BITDINERO.Distr( to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, amount=641920568348143615500 )
135 BITDINERO.Transfer( _from=0x0000000000000000000000000000000000000000, _to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, _value=641920568348143615500 )
136 BITDINERO.Distr( to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, amount=641919798043457982232 )
137 BITDINERO.Transfer( _from=0x0000000000000000000000000000000000000000, _to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, _value=641919798043457982232 )
138 BITDINERO.Distr( to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, amount=641919027739692347860 )
139 BITDINERO.Transfer( _from=0x0000000000000000000000000000000000000000, _to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, _value=641919027739692347860 )
140 BITDINERO.Distr( to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, amount=641918257436856712372 )
141 BITDINERO.Transfer( _from=0x0000000000000000000000000000000000000000, _to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, _value=641918257436856712372 )
142 BITDINERO.Distr( to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, amount=641917487134941075780 )
143 BITDINERO.Transfer( _from=0x0000000000000000000000000000000000000000, _to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, _value=641917487134941075780 )
144 BITDINERO.Distr( to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, amount=641916716833955438072 )
145 BITDINERO.Transfer( _from=0x0000000000000000000000000000000000000000, _to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, _value=641916716833955438072 )
146 BITDINERO.Distr( to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, amount=641915946533889799260 )
147 BITDINERO.Transfer( _from=0x0000000000000000000000000000000000000000, _to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, _value=641915946533889799260 )
148 BITDINERO.Distr( to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, amount=641915176234744159344 )
149 BITDINERO.Transfer( _from=0x0000000000000000000000000000000000000000, _to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, _value=641915176234744159344 )
150 BITDINERO.Distr( to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, amount=641914405936528518312 )
151 BITDINERO.Transfer( _from=0x0000000000000000000000000000000000000000, _to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, _value=641914405936528518312 )
152 BITDINERO.Distr( to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, amount=641913635639232876176 )
153 BITDINERO.Transfer( _from=0x0000000000000000000000000000000000000000, _to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, _value=641913635639232876176 )
154 BITDINERO.Distr( to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, amount=641912865342867232924 )
155 BITDINERO.Transfer( _from=0x0000000000000000000000000000000000000000, _to=[Receiver] 0x427a2c0144ef1f58705d0e5ef20465392e93bc80, _value=641912865342867232924 )

Account State Difference:

  Address   Before After State Difference Code
0x05bFFA4A...9605C54F4
0.0013515388 Eth
Nonce: 1
0.000010152 Eth
Nonce: 2
0.0013413868
0x3f5FA71E...15484c3B7
(Bw Pool)
4,720.296167685509930789 Eth4,720.297509072309930789 Eth0.0013413868

Execution Trace

0x427a2c0144ef1f58705d0e5ef20465392e93bc80.CALL( )
  • BITDINERO.CALL( )
    • 0x60561bed12144cafae6bb4d98b28d4ea6e6031d8.CALL( )
    • BITDINERO.CALL( )
      • 0x60561bed12144cafae6bb4d98b28d4ea6e6031d8.CALL( )
      • BITDINERO.CALL( )
        • 0x60561bed12144cafae6bb4d98b28d4ea6e6031d8.CALL( )
        • BITDINERO.CALL( )
          • 0x60561bed12144cafae6bb4d98b28d4ea6e6031d8.CALL( )
          • BITDINERO.CALL( )
            • 0x60561bed12144cafae6bb4d98b28d4ea6e6031d8.CALL( )
            • BITDINERO.CALL( )
              • 0x60561bed12144cafae6bb4d98b28d4ea6e6031d8.CALL( )
              • BITDINERO.CALL( )
                • 0x60561bed12144cafae6bb4d98b28d4ea6e6031d8.CALL( )
                • BITDINERO.CALL( )
                  • 0x60561bed12144cafae6bb4d98b28d4ea6e6031d8.CALL( )
                  • BITDINERO.CALL( )
                    • 0x60561bed12144cafae6bb4d98b28d4ea6e6031d8.CALL( )
                    • BITDINERO.CALL( )
                      • 0x60561bed12144cafae6bb4d98b28d4ea6e6031d8.CALL( )
                      • BITDINERO.CALL( )
                        • 0x60561bed12144cafae6bb4d98b28d4ea6e6031d8.CALL( )
                        • BITDINERO.CALL( )
                          • 0x60561bed12144cafae6bb4d98b28d4ea6e6031d8.CALL( )
                          • BITDINERO.CALL( )
                            • 0x60561bed12144cafae6bb4d98b28d4ea6e6031d8.CALL( )
                            • BITDINERO.CALL( )
                              • 0x60561bed12144cafae6bb4d98b28d4ea6e6031d8.CALL( )
                              • BITDINERO.CALL( )
                                • 0x60561bed12144cafae6bb4d98b28d4ea6e6031d8.CALL( )
                                • BITDINERO.CALL( )
                                  • 0x60561bed12144cafae6bb4d98b28d4ea6e6031d8.CALL( )
                                  • BITDINERO.CALL( )
                                    • 0x60561bed12144cafae6bb4d98b28d4ea6e6031d8.CALL( )
                                    • BITDINERO.CALL( )
                                      • 0x60561bed12144cafae6bb4d98b28d4ea6e6031d8.CALL( )
                                      • BITDINERO.CALL( )
                                        • 0x60561bed12144cafae6bb4d98b28d4ea6e6031d8.CALL( )
                                        • BITDINERO.CALL( )
                                          • 0x60561bed12144cafae6bb4d98b28d4ea6e6031d8.CALL( )
                                            pragma solidity ^0.4.22;
                                            
                                            library SafeMath {
                                              function mul(uint256 a, uint256 b) internal pure returns (uint256) {
                                                uint256 c = a * b;
                                                assert(a == 0 || c / a == b);
                                                return c;
                                              }
                                            
                                              function div(uint256 a, uint256 b) internal pure returns (uint256) {
                                                uint256 c = a / b;
                                                return c;
                                              }
                                            
                                              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 ForeignToken {
                                                function balanceOf(address _owner) constant public returns (uint256);
                                                function transfer(address _to, uint256 _value) public returns (bool);
                                            }
                                            
                                            contract ERC20Basic {
                                                uint256 public totalSupply;
                                                function balanceOf(address who) public constant returns (uint256);
                                                function transfer(address to, uint256 value) public returns (bool);
                                                event Transfer(address indexed from, address indexed to, uint256 value);
                                            }
                                            
                                            contract ERC20 is ERC20Basic {
                                                function allowance(address owner, address spender) public constant returns (uint256);
                                                function transferFrom(address from, address to, uint256 value) public returns (bool);
                                                function approve(address spender, uint256 value) public returns (bool);
                                                event Approval(address indexed owner, address indexed spender, uint256 value);
                                            }
                                            
                                            interface Token { 
                                                function distr(address _to, uint256 _value) external returns (bool);
                                                function totalSupply() constant external returns (uint256 supply);
                                                function balanceOf(address _owner) constant external returns (uint256 balance);
                                            }
                                            
                                            contract BITDINERO is ERC20 {
                                            
                                             
                                                
                                                using SafeMath for uint256;
                                                address owner = msg.sender;
                                            
                                                mapping (address => uint256) balances;
                                                mapping (address => mapping (address => uint256)) allowed;
                                                mapping (address => bool) public blacklist;
                                            
                                                string public constant name = "Bit Dinero";
                                                string public constant symbol = "XBD";
                                                uint public constant decimals = 18;
                                                
                                            uint256 public totalSupply = 30000000000e18;
                                                
                                            uint256 public totalDistributed = 15000000000e18;
                                                
                                            uint256 public totalRemaining = totalSupply.sub(totalDistributed);
                                                
                                            uint256 public value = 150000e18;
                                            
                                            
                                            
                                                event Transfer(address indexed _from, address indexed _to, uint256 _value);
                                                event Approval(address indexed _owner, address indexed _spender, uint256 _value);
                                                
                                                event Distr(address indexed to, uint256 amount);
                                                event DistrFinished();
                                                
                                                event Burn(address indexed burner, uint256 value);
                                            
                                                bool public distributionFinished = false;
                                                
                                                modifier canDistr() {
                                                    require(!distributionFinished);
                                                    _;
                                                }
                                                
                                                modifier onlyOwner() {
                                                    require(msg.sender == owner);
                                                    _;
                                                }
                                                
                                                modifier onlyWhitelist() {
                                                    require(blacklist[msg.sender] == false);
                                                    _;
                                                }
                                                
                                                function BITDINERO() public {
                                                    owner = msg.sender;
                                                    balances[owner] = totalDistributed;
                                                }
                                                
                                                function transferOwnership(address newOwner) onlyOwner public {
                                                    if (newOwner != address(0)) {
                                                        owner = newOwner;
                                                    }
                                                }
                                                
                                                function finishDistribution() onlyOwner canDistr public returns (bool) {
                                                    distributionFinished = true;
                                                    emit DistrFinished();
                                                    return true;
                                                }
                                                
                                                function distr(address _to, uint256 _amount) canDistr private returns (bool) {
                                                    totalDistributed = totalDistributed.add(_amount);
                                                    totalRemaining = totalRemaining.sub(_amount);
                                                    balances[_to] = balances[_to].add(_amount);
                                                    emit Distr(_to, _amount);
                                                    emit Transfer(address(0), _to, _amount);
                                                    return true;
                                                    
                                                    if (totalDistributed >= totalSupply) {
                                                        distributionFinished = true;
                                                    }
                                                }
                                                
                                                function () external payable {
                                                    getTokens();
                                                 }
                                                
                                                function getTokens() payable canDistr onlyWhitelist public {
                                                    if (value > totalRemaining) {
                                                        value = totalRemaining;
                                                    }
                                                    
                                                    require(value <= totalRemaining);
                                                    
                                                    address investor = msg.sender;
                                                    uint256 toGive = value;
                                                    
                                                    distr(investor, toGive);
                                                    
                                                    if (toGive > 0) {
                                                        blacklist[investor] = true;
                                                    }
                                            
                                                    if (totalDistributed >= totalSupply) {
                                                        distributionFinished = true;
                                                    }
                                                    
                                                    value = value.div(100000).mul(99999);
                                                }
                                            
                                                function balanceOf(address _owner) constant public returns (uint256) {
                                                    return balances[_owner];
                                                }
                                            
                                                modifier onlyPayloadSize(uint size) {
                                                    assert(msg.data.length >= size + 4);
                                                    _;
                                                }
                                                
                                                function transfer(address _to, uint256 _amount) onlyPayloadSize(2 * 32) public returns (bool success) {
                                                    require(_to != address(0));
                                                    require(_amount <= balances[msg.sender]);
                                                    
                                                    balances[msg.sender] = balances[msg.sender].sub(_amount);
                                                    balances[_to] = balances[_to].add(_amount);
                                                    emit Transfer(msg.sender, _to, _amount);
                                                    return true;
                                                }
                                                
                                                function transferFrom(address _from, address _to, uint256 _amount) onlyPayloadSize(3 * 32) public returns (bool success) {
                                                    require(_to != address(0));
                                                    require(_amount <= balances[_from]);
                                                    require(_amount <= allowed[_from][msg.sender]);
                                                    
                                                    balances[_from] = balances[_from].sub(_amount);
                                                    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_amount);
                                                    balances[_to] = balances[_to].add(_amount);
                                                    emit Transfer(_from, _to, _amount);
                                                    return true;
                                                }
                                                
                                                function approve(address _spender, uint256 _value) public returns (bool success) {
                                                    if (_value != 0 && allowed[msg.sender][_spender] != 0) { return false; }
                                                    allowed[msg.sender][_spender] = _value;
                                                    emit Approval(msg.sender, _spender, _value);
                                                    return true;
                                                }
                                                
                                                function allowance(address _owner, address _spender) constant public returns (uint256) {
                                                    return allowed[_owner][_spender];
                                                }
                                                
                                                function getTokenBalance(address tokenAddress, address who) constant public returns (uint){
                                                    ForeignToken t = ForeignToken(tokenAddress);
                                                    uint bal = t.balanceOf(who);
                                                    return bal;
                                                }
                                                
                                                function withdraw() onlyOwner public {
                                                    uint256 etherBalance = address(this).balance;
                                                    owner.transfer(etherBalance);
                                                }
                                                
                                                function burn(uint256 _value) onlyOwner public {
                                                    require(_value <= balances[msg.sender]);
                                            
                                                    address burner = msg.sender;
                                                    balances[burner] = balances[burner].sub(_value);
                                                    totalSupply = totalSupply.sub(_value);
                                                    totalDistributed = totalDistributed.sub(_value);
                                                    emit Burn(burner, _value);
                                                }
                                                
                                                function withdrawForeignTokens(address _tokenContract) onlyOwner public returns (bool) {
                                                    ForeignToken token = ForeignToken(_tokenContract);
                                                    uint256 amount = token.balanceOf(address(this));
                                                    return token.transfer(owner, amount);
                                                }
                                            }