ETH Price: $2,180.84 (-6.84%)

Transaction Decoder

Block:
8492539 at Sep-05-2019 09:48:42 PM +UTC
Transaction Fee:
0.00153618696 ETH $3.35
Gas Used:
288,540 Gas / 5.324 Gwei

Emitted Events:

17 DSToken.Transfer( src=0x7954707B6Ffe1b602e497eDBBb39546C4a744f34, dst=0x23340e240EB31c65C88540971897B0b7794863a1, wad=5000000000000000000 )
18 DSToken.Transfer( src=0x60D03B5B51FF7eBd13b1B98CBca3839a7cA1D60d, dst=0x23340e240EB31c65C88540971897B0b7794863a1, wad=5000000000000000000 )
19 0x672961f0253c69bca9d7f4325e47793d32af3d4b.0xd89e8b9fdd4622bd35d5d658664fa152328cf95ae834a3467ae2313bc5451310( 0xd89e8b9fdd4622bd35d5d658664fa152328cf95ae834a3467ae2313bc5451310, 0x0000000000000000000000007954707b6ffe1b602e497edbbb39546c4a744f34, 0x4af2ccce34e601c45c746862e46111b8b2006b88516c1ade934fe2a5801f9968, 0x00000000000000000000000060d03b5b51ff7ebd13b1b98cbca3839a7ca1d60d, 0000000000000000000000000000000000000000000000004563918244f40000, ad94c6b34035e03ad3263c13ca51ef0223c33337e418fe8840083e007ef26768, 4af2ccce34e601c45c746862e46111b8b2006b88516c1ade934fe2a5801f9968, 000000000000000000000000000000000000000000000002bf770e6ed08d0000, 000000000000000000000000000000000000000000000002b5e3af16b1880000, 000000000000000000000000000000000000000000000000000000005d753390, 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000, 8243085142f6fbfd6233493b84ea932d729f87038ad680badbacb6936f875674, 0000000000000000000000007954707b6ffe1b602e497edbbb39546c4a744f34, 00000000000000000000000052adf738aad93c31f798a30b2c74d658e1e9a562, 00000000000000000000000052adf738aad93c31f798a30b2c74d658e1e9a562, 0000000000000000000000000000000000000000000000000000000000000001, 0000000000000000000000000000000000000000000000004563918244f40000, 0000000000000000000000000000000000000000000000004563918244f40000, 0000000000000000000000000000000000000000000000008ac7230489e80000, 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000000 )

Account State Difference:

  Address   Before After State Difference Code
0x23340e24...7794863a1
0x52adf738...8e1E9a562
1.739509319757462973 Eth
Nonce: 6013
1.737973132797462973 Eth
Nonce: 6014
0.00153618696
0x5E5744fD...c9e2da6Bd
0x89d24A6b...a23260359
(Ethermine)
611.939275117770295496 Eth611.940811304730295496 Eth0.00153618696

Execution Trace

0x672961f0253c69bca9d7f4325e47793d32af3d4b.629315b8( )
  • 0x5e5744fd9381f9fda9107b325bbac59c9e2da6bd.d2d59658( )
  • Null: 0x000...001.913315fb( )
  • Null: 0x000...001.913315fb( )
  • Null: 0x000...001.151fcc44( )
  • 0x7010e7dad9e67093f0c4ced769449207b3b1d925.d1e47f9a( )
  • 0x5e5744fd9381f9fda9107b325bbac59c9e2da6bd.af5acbb8( )
  • 0x7010e7dad9e67093f0c4ced769449207b3b1d925.c3c95c7b( )
  • 0x5e5744fd9381f9fda9107b325bbac59c9e2da6bd.5b9a3e7a( )
  • 0x23340e240eb31c65c88540971897b0b7794863a1.10425f08( )
  • 0x23340e240eb31c65c88540971897b0b7794863a1.c44113c9( )
  • 0x95b90dba0516fd2aa991a2f4afa7817546ffb06d.15dacbea( )
    • DSToken.transferFrom( src=0x7954707B6Ffe1b602e497eDBBb39546C4a744f34, dst=0x23340e240EB31c65C88540971897B0b7794863a1, wad=5000000000000000000 ) => ( True )
    • 0x23340e240eb31c65c88540971897b0b7794863a1.07ca5192( )
    • 0x23340e240eb31c65c88540971897b0b7794863a1.c44113c9( )
    • 0x95b90dba0516fd2aa991a2f4afa7817546ffb06d.15dacbea( )
      • DSToken.transferFrom( src=0x60D03B5B51FF7eBd13b1B98CBca3839a7cA1D60d, dst=0x23340e240EB31c65C88540971897B0b7794863a1, wad=5000000000000000000 ) => ( True )
      • 0x5e5744fd9381f9fda9107b325bbac59c9e2da6bd.e758eaf4( )
        pragma solidity ^0.4.13;
        
        ////// lib/ds-math/src/math.sol
        /// math.sol -- mixin for inline numerical wizardry
        
        // This program is free software: you can redistribute it and/or modify
        // it under the terms of the GNU General Public License as published by
        // the Free Software Foundation, either version 3 of the License, or
        // (at your option) any later version.
        
        // This program is distributed in the hope that it will be useful,
        // but WITHOUT ANY WARRANTY; without even the implied warranty of
        // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        // GNU General Public License for more details.
        
        // You should have received a copy of the GNU General Public License
        // along with this program.  If not, see <http://www.gnu.org/licenses/>.
        
        /* pragma solidity ^0.4.13; */
        
        contract DSMath {
            function add(uint x, uint y) internal pure returns (uint z) {
                require((z = x + y) >= x);
            }
            function sub(uint x, uint y) internal pure returns (uint z) {
                require((z = x - y) <= x);
            }
            function mul(uint x, uint y) internal pure returns (uint z) {
                require(y == 0 || (z = x * y) / y == x);
            }
        
            function min(uint x, uint y) internal pure returns (uint z) {
                return x <= y ? x : y;
            }
            function max(uint x, uint y) internal pure returns (uint z) {
                return x >= y ? x : y;
            }
            function imin(int x, int y) internal pure returns (int z) {
                return x <= y ? x : y;
            }
            function imax(int x, int y) internal pure returns (int z) {
                return x >= y ? x : y;
            }
        
            uint constant WAD = 10 ** 18;
            uint constant RAY = 10 ** 27;
        
            function wmul(uint x, uint y) internal pure returns (uint z) {
                z = add(mul(x, y), WAD / 2) / WAD;
            }
            function rmul(uint x, uint y) internal pure returns (uint z) {
                z = add(mul(x, y), RAY / 2) / RAY;
            }
            function wdiv(uint x, uint y) internal pure returns (uint z) {
                z = add(mul(x, WAD), y / 2) / y;
            }
            function rdiv(uint x, uint y) internal pure returns (uint z) {
                z = add(mul(x, RAY), y / 2) / y;
            }
        
            // This famous algorithm is called "exponentiation by squaring"
            // and calculates x^n with x as fixed-point and n as regular unsigned.
            //
            // It's O(log n), instead of O(n) for naive repeated multiplication.
            //
            // These facts are why it works:
            //
            //  If n is even, then x^n = (x^2)^(n/2).
            //  If n is odd,  then x^n = x * x^(n-1),
            //   and applying the equation for even x gives
            //    x^n = x * (x^2)^((n-1) / 2).
            //
            //  Also, EVM division is flooring and
            //    floor[(n-1) / 2] = floor[n / 2].
            //
            function rpow(uint x, uint n) internal pure returns (uint z) {
                z = n % 2 != 0 ? x : RAY;
        
                for (n /= 2; n != 0; n /= 2) {
                    x = rmul(x, x);
        
                    if (n % 2 != 0) {
                        z = rmul(z, x);
                    }
                }
            }
        }
        
        ////// lib/ds-stop/lib/ds-auth/src/auth.sol
        // This program is free software: you can redistribute it and/or modify
        // it under the terms of the GNU General Public License as published by
        // the Free Software Foundation, either version 3 of the License, or
        // (at your option) any later version.
        
        // This program is distributed in the hope that it will be useful,
        // but WITHOUT ANY WARRANTY; without even the implied warranty of
        // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        // GNU General Public License for more details.
        
        // You should have received a copy of the GNU General Public License
        // along with this program.  If not, see <http://www.gnu.org/licenses/>.
        
        /* pragma solidity ^0.4.13; */
        
        contract DSAuthority {
            function canCall(
                address src, address dst, bytes4 sig
            ) public view returns (bool);
        }
        
        contract DSAuthEvents {
            event LogSetAuthority (address indexed authority);
            event LogSetOwner     (address indexed owner);
        }
        
        contract DSAuth is DSAuthEvents {
            DSAuthority  public  authority;
            address      public  owner;
        
            function DSAuth() public {
                owner = msg.sender;
                LogSetOwner(msg.sender);
            }
        
            function setOwner(address owner_)
                public
                auth
            {
                owner = owner_;
                LogSetOwner(owner);
            }
        
            function setAuthority(DSAuthority authority_)
                public
                auth
            {
                authority = authority_;
                LogSetAuthority(authority);
            }
        
            modifier auth {
                require(isAuthorized(msg.sender, msg.sig));
                _;
            }
        
            function isAuthorized(address src, bytes4 sig) internal view returns (bool) {
                if (src == address(this)) {
                    return true;
                } else if (src == owner) {
                    return true;
                } else if (authority == DSAuthority(0)) {
                    return false;
                } else {
                    return authority.canCall(src, this, sig);
                }
            }
        }
        
        ////// lib/ds-stop/lib/ds-note/src/note.sol
        /// note.sol -- the `note' modifier, for logging calls as events
        
        // This program is free software: you can redistribute it and/or modify
        // it under the terms of the GNU General Public License as published by
        // the Free Software Foundation, either version 3 of the License, or
        // (at your option) any later version.
        
        // This program is distributed in the hope that it will be useful,
        // but WITHOUT ANY WARRANTY; without even the implied warranty of
        // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        // GNU General Public License for more details.
        
        // You should have received a copy of the GNU General Public License
        // along with this program.  If not, see <http://www.gnu.org/licenses/>.
        
        /* pragma solidity ^0.4.13; */
        
        contract DSNote {
            event LogNote(
                bytes4   indexed  sig,
                address  indexed  guy,
                bytes32  indexed  foo,
                bytes32  indexed  bar,
                uint              wad,
                bytes             fax
            ) anonymous;
        
            modifier note {
                bytes32 foo;
                bytes32 bar;
        
                assembly {
                    foo := calldataload(4)
                    bar := calldataload(36)
                }
        
                LogNote(msg.sig, msg.sender, foo, bar, msg.value, msg.data);
        
                _;
            }
        }
        
        ////// lib/ds-stop/src/stop.sol
        /// stop.sol -- mixin for enable/disable functionality
        
        // Copyright (C) 2017  DappHub, LLC
        
        // This program is free software: you can redistribute it and/or modify
        // it under the terms of the GNU General Public License as published by
        // the Free Software Foundation, either version 3 of the License, or
        // (at your option) any later version.
        
        // This program is distributed in the hope that it will be useful,
        // but WITHOUT ANY WARRANTY; without even the implied warranty of
        // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        // GNU General Public License for more details.
        
        // You should have received a copy of the GNU General Public License
        // along with this program.  If not, see <http://www.gnu.org/licenses/>.
        
        /* pragma solidity ^0.4.13; */
        
        /* import "ds-auth/auth.sol"; */
        /* import "ds-note/note.sol"; */
        
        contract DSStop is DSNote, DSAuth {
        
            bool public stopped;
        
            modifier stoppable {
                require(!stopped);
                _;
            }
            function stop() public auth note {
                stopped = true;
            }
            function start() public auth note {
                stopped = false;
            }
        
        }
        
        ////// lib/erc20/src/erc20.sol
        /// erc20.sol -- API for the ERC20 token standard
        
        // See <https://github.com/ethereum/EIPs/issues/20>.
        
        // This file likely does not meet the threshold of originality
        // required for copyright to apply.  As a result, this is free and
        // unencumbered software belonging to the public domain.
        
        /* pragma solidity ^0.4.8; */
        
        contract ERC20Events {
            event Approval(address indexed src, address indexed guy, uint wad);
            event Transfer(address indexed src, address indexed dst, uint wad);
        }
        
        contract ERC20 is ERC20Events {
            function totalSupply() public view returns (uint);
            function balanceOf(address guy) public view returns (uint);
            function allowance(address src, address guy) public view returns (uint);
        
            function approve(address guy, uint wad) public returns (bool);
            function transfer(address dst, uint wad) public returns (bool);
            function transferFrom(
                address src, address dst, uint wad
            ) public returns (bool);
        }
        
        ////// src/base.sol
        /// base.sol -- basic ERC20 implementation
        
        // Copyright (C) 2015, 2016, 2017  DappHub, LLC
        
        // This program is free software: you can redistribute it and/or modify
        // it under the terms of the GNU General Public License as published by
        // the Free Software Foundation, either version 3 of the License, or
        // (at your option) any later version.
        
        // This program is distributed in the hope that it will be useful,
        // but WITHOUT ANY WARRANTY; without even the implied warranty of
        // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        // GNU General Public License for more details.
        
        // You should have received a copy of the GNU General Public License
        // along with this program.  If not, see <http://www.gnu.org/licenses/>.
        
        /* pragma solidity ^0.4.13; */
        
        /* import "erc20/erc20.sol"; */
        /* import "ds-math/math.sol"; */
        
        contract DSTokenBase is ERC20, DSMath {
            uint256                                            _supply;
            mapping (address => uint256)                       _balances;
            mapping (address => mapping (address => uint256))  _approvals;
        
            function DSTokenBase(uint supply) public {
                _balances[msg.sender] = supply;
                _supply = supply;
            }
        
            function totalSupply() public view returns (uint) {
                return _supply;
            }
            function balanceOf(address src) public view returns (uint) {
                return _balances[src];
            }
            function allowance(address src, address guy) public view returns (uint) {
                return _approvals[src][guy];
            }
        
            function transfer(address dst, uint wad) public returns (bool) {
                return transferFrom(msg.sender, dst, wad);
            }
        
            function transferFrom(address src, address dst, uint wad)
                public
                returns (bool)
            {
                if (src != msg.sender) {
                    _approvals[src][msg.sender] = sub(_approvals[src][msg.sender], wad);
                }
        
                _balances[src] = sub(_balances[src], wad);
                _balances[dst] = add(_balances[dst], wad);
        
                Transfer(src, dst, wad);
        
                return true;
            }
        
            function approve(address guy, uint wad) public returns (bool) {
                _approvals[msg.sender][guy] = wad;
        
                Approval(msg.sender, guy, wad);
        
                return true;
            }
        }
        
        ////// src/token.sol
        /// token.sol -- ERC20 implementation with minting and burning
        
        // Copyright (C) 2015, 2016, 2017  DappHub, LLC
        
        // This program is free software: you can redistribute it and/or modify
        // it under the terms of the GNU General Public License as published by
        // the Free Software Foundation, either version 3 of the License, or
        // (at your option) any later version.
        
        // This program is distributed in the hope that it will be useful,
        // but WITHOUT ANY WARRANTY; without even the implied warranty of
        // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        // GNU General Public License for more details.
        
        // You should have received a copy of the GNU General Public License
        // along with this program.  If not, see <http://www.gnu.org/licenses/>.
        
        /* pragma solidity ^0.4.13; */
        
        /* import "ds-stop/stop.sol"; */
        
        /* import "./base.sol"; */
        
        contract DSToken is DSTokenBase(0), DSStop {
        
            bytes32  public  symbol;
            uint256  public  decimals = 18; // standard token precision. override to customize
        
            function DSToken(bytes32 symbol_) public {
                symbol = symbol_;
            }
        
            event Mint(address indexed guy, uint wad);
            event Burn(address indexed guy, uint wad);
        
            function approve(address guy) public stoppable returns (bool) {
                return super.approve(guy, uint(-1));
            }
        
            function approve(address guy, uint wad) public stoppable returns (bool) {
                return super.approve(guy, wad);
            }
        
            function transferFrom(address src, address dst, uint wad)
                public
                stoppable
                returns (bool)
            {
                if (src != msg.sender && _approvals[src][msg.sender] != uint(-1)) {
                    _approvals[src][msg.sender] = sub(_approvals[src][msg.sender], wad);
                }
        
                _balances[src] = sub(_balances[src], wad);
                _balances[dst] = add(_balances[dst], wad);
        
                Transfer(src, dst, wad);
        
                return true;
            }
        
            function push(address dst, uint wad) public {
                transferFrom(msg.sender, dst, wad);
            }
            function pull(address src, uint wad) public {
                transferFrom(src, msg.sender, wad);
            }
            function move(address src, address dst, uint wad) public {
                transferFrom(src, dst, wad);
            }
        
            function mint(uint wad) public {
                mint(msg.sender, wad);
            }
            function burn(uint wad) public {
                burn(msg.sender, wad);
            }
            function mint(address guy, uint wad) public auth stoppable {
                _balances[guy] = add(_balances[guy], wad);
                _supply = add(_supply, wad);
                Mint(guy, wad);
            }
            function burn(address guy, uint wad) public auth stoppable {
                if (guy != msg.sender && _approvals[guy][msg.sender] != uint(-1)) {
                    _approvals[guy][msg.sender] = sub(_approvals[guy][msg.sender], wad);
                }
        
                _balances[guy] = sub(_balances[guy], wad);
                _supply = sub(_supply, wad);
                Burn(guy, wad);
            }
        
            // Optional token name
            bytes32   public  name = "";
        
            function setName(bytes32 name_) public auth {
                name = name_;
            }
        }