Contract Overview |  Synthetix
Balance: 0 Ether
Ether Value: $0
Transactions: 19664 txns
Token Tracker: Synthetix Network Token (SNX)
Misc:
Address Watch: Add To Watch List
Contract Creator: 0xb12a54406840a7ddfa9246efb3bf4724bf55f5f8at txn 0xa733e675705a8af67f4f82df796be763d4f389a45216a89bf5d09f7e7d1aec11
Token Balance:
 Latest 25 transactions from a total of 19664 transactions

TxHash Age From To Value [TxFee]
0x978eb68c69ba00279aca83e8256ef4094c55adaedb4fbeed2b5cdbde8445de17 58 secs ago0xf9d9eb4cdf653f1315adc09efdf9a11385dc0546  IN   Synthetix0 Ether0.0051317925
0x59ca237db3aa6296d69e1ab642c11c9e4325ac04d83bec9a708d494040f9e9cd6 mins agoKucoin  IN   Synthetix0 Ether0.0011842506
0x4369aba9ec4d525b2f3d89c6475ad19b39cee56317a186bb83dce299bfc4f6207 mins ago0x13a4843a477646abb2b6a3883b7580082ad91a6d  IN   Synthetix0 Ether0.0007659251
0x35cbd3eeddab2ee0f1c555c6769a8b137f381da77efbe1042da753f4fa8b7aa611 mins agoKucoin  IN   Synthetix0 Ether0.001391017368
0xa07d31cf379d1c20777b1aa5f4166738ff3d19cc4b51e929439c1c496a8fc93713 mins ago0x13a4843a477646abb2b6a3883b7580082ad91a6d  IN   Synthetix0 Ether0.0008994518
0xc31bde4d68914ecf8dbb84202bd9b9db69f15234674a5a2897e4ae3f6f4696e914 mins ago0x3989634881db165a91dea818d50b79daf5ee4efc  IN   Synthetix0 Ether0.000757744
0xa735b0ba6bd4a895cc1eb0673f989c972fdfeda98b51fb481c4c99f0c5d83cb819 mins ago0xdf909e1e43076ca7193949e2fbfc1d9dee96a424  IN   Synthetix0 Ether0.004729352
0xef56a67c715c2dafdd5916b755ebe485ce770d71537fda6ce3f1a1109ef40dad23 mins ago0xdf909e1e43076ca7193949e2fbfc1d9dee96a424  IN   Synthetix0 Ether0.0012070017
0xd77f5059792ef9cbfeb820b9e7f762a24caa5460401c88dd7a456f7be536821326 mins ago0xdf909e1e43076ca7193949e2fbfc1d9dee96a424  IN   Synthetix0 Ether0.001182338
0x71c90f8c55f5025933d65c28eafa755b2593a51e0d1c0e47aea0a20413dc071e30 mins ago0xdf909e1e43076ca7193949e2fbfc1d9dee96a424  IN   Synthetix0 Ether0.0004971477
0x7b1d8505213dde18aff90dabb8ec13ab65bc92e60ad959f884d22ed7b8a7871135 mins ago0xa363aeb68fde9be4bbd85f8c947f1105f0d28b86  IN   Synthetix0 Ether0.0065674464
0xfba7a5fb5fd32a7d486cbcfb2b3ef0c0158bf1c8b21d646b49f1290de2b3fe1942 mins agoKucoin  IN   Synthetix0 Ether0.00106451736
0x8e84584853dd26cb88a78449c59de41b29f1d6d220337f85b55b778e73b4bc6347 mins ago0x3e4729e311083fa44a2693ebd00265f10e4b052d  IN   Synthetix0 Ether0.000426372
0x386e4f9a8025a5cd8ce8f976eeeb0f7a18ea2929b2ecb8e43a54469d521da26647 mins ago0xd45a71e7929bd46010deb0d4e003fee0b00ce388  IN   Synthetix0 Ether0.000426756
0x9352d8a64188bfcb9f13e3c08e7793c3956277b8e54c31da435a2893492fd24b48 mins ago0x859e4386a275e0606d7dfb1a1ae38932e50ea0c4  IN   Synthetix0 Ether0.000426756
0x0a7587f2a902e0ff95e992827fcdc8872acd26fbf04d0bb993a11a2560d79b7149 mins agoKucoin  IN   Synthetix0 Ether0.001032744
0x9ff11f2eda492d7c4e13f57e36eca5ad47efbe894a966a68185fea9b5d63512155 mins agoKucoin  IN   Synthetix0 Ether0.00104578495
0x2bb2d2e1eb039608b93efb562cb330cd097840bcc65a2a590f39276e2a3011e456 mins ago0xf9d9eb4cdf653f1315adc09efdf9a11385dc0546  IN   Synthetix0 Ether0.0118234
0x12148cc0798ad838bbafa615a0396cec23427ed3082b67448d483549b717671657 mins ago0xa363aeb68fde9be4bbd85f8c947f1105f0d28b86  IN   Synthetix0 Ether0.006502859
0x918bc66310c1d0113a926924d7d52d99bcfebe0586ebbec294645851b025ec1557 mins agoKucoin  IN   Synthetix0 Ether0.0009818364
0x23c49b303974aa9e9e316a8c015ad21e14be3bcbaea9e7b6424d21772bdcbdbe57 mins ago0xf9d9eb4cdf653f1315adc09efdf9a11385dc0546  IN   Synthetix0 Ether0.0118234
0x3ee8b980d4344f1d2c18131c50df8c00fc2775825b28bdcb81ed1197209bb1f81 hr agoKucoin  IN   Synthetix0 Ether0.0008778324
0xfb662ac6656ff4661d65a13b3bcdf3aa5e77db49a12dfbccffa37eb47491f66d1 hr 9 mins agoKucoin  IN   Synthetix0 Ether0.0011885388
0xc5db07e25b4f5e00bae1641da429685783876b29aee4572a0d4d97e1048d5daa1 hr 12 mins agoKucoin  IN   Synthetix0 Ether0.00151593
0x819a0ffccc442f0d441a438aa0139933a3fb3b83307b61632cf6e12c63ed2ae01 hr 15 mins ago0xa363aeb68fde9be4bbd85f8c947f1105f0d28b86  IN   Synthetix0 Ether0.006502859
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 3 Internal Transactions

ParentTxHash Block Age From To Value
0xfcd1548c17faec5ff2495e546950fa5efa0797e23a8c9d5713444b0629a65d355869402209 days 19 hrs ago0xc011a72400e58ecd99ee497cf89e3775d4bd732f0x01da95f253122636d0776017311892835a15d9dd0.02 Ether
0x9342732b9ad8d00427401197cf8f49ce70a189ce98ac53c51da9a4592e02fe775865710210 days 10 hrs ago0xc011a72400e58ecd99ee497cf89e3775d4bd732f0x01da95f253122636d0776017311892835a15d9dd0.02 Ether
0x8ea3c34fa150023582255a726b7d7ab3d5b66678da090c8d1350c0d0914e24485769526226 days 23 hrs ago0xc011a72400e58ecd99ee497cf89e3775d4bd732f0x01da95f253122636d0776017311892835a15d9dd0.001 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: Proxy
Compiler Text: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

/* 
 * Havven Token Contract Proxy
 * ========================
 * 
 * This contract points to an underlying target which implements its
 * actual functionality, while allowing that functionality to be upgraded.
 */

pragma solidity 0.4.24;

/**
 * @title A contract with an owner.
 * @notice Contract ownership can be transferred by first nominating the new owner,
 * who must then accept the ownership, which prevents accidental incorrect ownership transfers.
 */
contract Owned {
    address public owner;
    address public nominatedOwner;

    /**
     * @dev Owned Constructor
     */
    constructor(address _owner)
        public
    {
        require(_owner != address(0));
        owner = _owner;
        emit OwnerChanged(address(0), _owner);
    }

    /**
     * @notice Nominate a new owner of this contract.
     * @dev Only the current owner may nominate a new owner.
     */
    function nominateNewOwner(address _owner)
        external
        onlyOwner
    {
        nominatedOwner = _owner;
        emit OwnerNominated(_owner);
    }

    /**
     * @notice Accept the nomination to be owner.
     */
    function acceptOwnership()
        external
    {
        require(msg.sender == nominatedOwner);
        emit OwnerChanged(owner, nominatedOwner);
        owner = nominatedOwner;
        nominatedOwner = address(0);
    }

    modifier onlyOwner
    {
        require(msg.sender == owner);
        _;
    }

    event OwnerNominated(address newOwner);
    event OwnerChanged(address oldOwner, address newOwner);
}

// This contract should be treated like an abstract contract
contract Proxyable is Owned {
    /* The proxy this contract exists behind. */
    Proxy public proxy;

    /* The caller of the proxy, passed through to this contract.
     * Note that every function using this member must apply the onlyProxy or
     * optionalProxy modifiers, otherwise their invocations can use stale values. */ 
    address messageSender; 

    constructor(address _proxy, address _owner)
        Owned(_owner)
        public
    {
        proxy = Proxy(_proxy);
        emit ProxyUpdated(_proxy);
    }

    function setProxy(address _proxy)
        external
        onlyOwner
    {
        proxy = Proxy(_proxy);
        emit ProxyUpdated(_proxy);
    }

    function setMessageSender(address sender)
        external
        onlyProxy
    {
        messageSender = sender;
    }

    modifier onlyProxy {
        require(Proxy(msg.sender) == proxy);
        _;
    }

    modifier optionalProxy
    {
        if (Proxy(msg.sender) != proxy) {
            messageSender = msg.sender;
        }
        _;
    }

    modifier optionalProxy_onlyOwner
    {
        if (Proxy(msg.sender) != proxy) {
            messageSender = msg.sender;
        }
        require(messageSender == owner);
        _;
    }

    event ProxyUpdated(address proxyAddress);
}

contract Proxy is Owned {

    Proxyable public target;
    bool public useDELEGATECALL;

    constructor(address _owner)
        Owned(_owner)
        public
    {}

    function setTarget(Proxyable _target)
        external
        onlyOwner
    {
        target = _target;
        emit TargetUpdated(_target);
    }

    function setUseDELEGATECALL(bool value) 
        external
        onlyOwner
    {
        useDELEGATECALL = value;
    }

    function _emit(bytes callData, uint numTopics,
                   bytes32 topic1, bytes32 topic2,
                   bytes32 topic3, bytes32 topic4)
        external
        onlyTarget
    {
        uint size = callData.length;
        bytes memory _callData = callData;

        assembly {
            /* The first 32 bytes of callData contain its length (as specified by the abi). 
             * Length is assumed to be a uint256 and therefore maximum of 32 bytes
             * in length. It is also leftpadded to be a multiple of 32 bytes.
             * This means moving call_data across 32 bytes guarantees we correctly access
             * the data itself. */
            switch numTopics
            case 0 {
                log0(add(_callData, 32), size)
            } 
            case 1 {
                log1(add(_callData, 32), size, topic1)
            }
            case 2 {
                log2(add(_callData, 32), size, topic1, topic2)
            }
            case 3 {
                log3(add(_callData, 32), size, topic1, topic2, topic3)
            }
            case 4 {
                log4(add(_callData, 32), size, topic1, topic2, topic3, topic4)
            }
        }
    }

    function()
        external
        payable
    {
        if (useDELEGATECALL) {
            assembly {
                /* Copy call data into free memory region. */
                let free_ptr := mload(0x40)
                calldatacopy(free_ptr, 0, calldatasize)

                /* Forward all gas and call data to the target contract. */
                let result := delegatecall(gas, sload(target_slot), free_ptr, calldatasize, 0, 0)
                returndatacopy(free_ptr, 0, returndatasize)

                /* Revert if the call failed, otherwise return the result. */
                if iszero(result) { revert(free_ptr, returndatasize) }
                return(free_ptr, returndatasize)
            }
        } else {
            /* Here we are as above, but must send the messageSender explicitly 
             * since we are using CALL rather than DELEGATECALL. */
            target.setMessageSender(msg.sender);
            assembly {
                let free_ptr := mload(0x40)
                calldatacopy(free_ptr, 0, calldatasize)

                /* We must explicitly forward ether to the underlying contract as well. */
                let result := call(gas, sload(target_slot), callvalue, free_ptr, calldatasize, 0, 0)
                returndatacopy(free_ptr, 0, returndatasize)

                if iszero(result) { revert(free_ptr, returndatasize) }
                return(free_ptr, returndatasize)
            }
        }
    }

    modifier onlyTarget {
        require(Proxyable(msg.sender) == target);
        _;
    }

    event TargetUpdated(Proxyable newTarget);
}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"nominatedOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"}],"name":"setTarget","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"callData","type":"bytes"},{"name":"numTopics","type":"uint256"},{"name":"topic1","type":"bytes32"},{"name":"topic2","type":"bytes32"},{"name":"topic3","type":"bytes32"},{"name":"topic4","type":"bytes32"}],"name":"_emit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"useDELEGATECALL","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"bool"}],"name":"setUseDELEGATECALL","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"target","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_owner","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newTarget","type":"address"}],"name":"TargetUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"}]

  Contract Creation Code Switch To Opcodes View
608060405234801561001057600080fd5b5060405160208061066b833981016040525180600160a060020a038116151561003857600080fd5b60008054600160a060020a031916600160a060020a038316908117825560408051928352602083019190915280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a150506105ca806100a16000396000f3006080604052600436106100985763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631627540c811461018357806353a47bb7146101a4578063776d1a01146101d557806379ba5097146101f65780638da5cb5b1461020b578063907dff971461022057806395578ebd14610250578063befff6af14610279578063d4b8399214610293575b60025474010000000000000000000000000000000000000000900460ff16156100e157604051366000823760008036836002545af43d6000833e8015156100dd573d82fd5b3d82f35b600254604080517fbc67f8320000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163bc67f8329160248082019260009290919082900301818387803b15801561014657600080fd5b505af115801561015a573d6000803e3d6000fd5b5050505060405136600082376000803683346002545af13d6000833e8015156100dd573d82fd5b005b34801561018f57600080fd5b50610181600160a060020a03600435166102a8565b3480156101b057600080fd5b506101b9610320565b60408051600160a060020a039092168252519081900360200190f35b3480156101e157600080fd5b50610181600160a060020a036004351661032f565b34801561020257600080fd5b506101816103a7565b34801561021757600080fd5b506101b961043e565b34801561022c57600080fd5b5061018160246004803582810192910135903560443560643560843560a43561044d565b34801561025c57600080fd5b50610265610517565b604080519115158252519081900360200190f35b34801561028557600080fd5b506101816004351515610538565b34801561029f57600080fd5b506101b961058f565b600054600160a060020a031633146102bf57600080fd5b60018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b600154600160a060020a031681565b600054600160a060020a0316331461034657600080fd5b60028054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f814250a3b8c79fcbe2ead2c131c952a278491c8f4322a79fe84b5040a810373e9181900360200190a150565b600154600160a060020a031633146103be57600080fd5b60005460015460408051600160a060020a03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a1600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b600054600160a060020a031681565b600254600090606090600160a060020a0316331461046a57600080fd5b604080516020601f8b01819004810282018101909252898152899350908a90849081908401838280828437820191505050505050905086600081146104ce57600181146104d957600281146104e557600381146104f257600481146105005761050b565b8260208301a061050b565b868360208401a161050b565b85878460208501a261050b565b8486888560208601a361050b565b838587898660208701a45b50505050505050505050565b60025474010000000000000000000000000000000000000000900460ff1681565b600054600160a060020a0316331461054f57600080fd5b60028054911515740100000000000000000000000000000000000000000274ff000000000000000000000000000000000000000019909216919091179055565b600254600160a060020a0316815600a165627a7a723058209e104efaf0a7b150d5357b3a38b0260a3741a240fef678863453d378cc0622b90029000000000000000000000000b12a54406840a7ddfa9246efb3bf4724bf55f5f8

    Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b12a54406840a7ddfa9246efb3bf4724bf55f5f8

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000b12a54406840a7ddfa9246efb3bf4724bf55f5f8


   Swarm Source:
bzzr://9e104efaf0a7b150d5357b3a38b0260a3741a240fef678863453d378cc0622b9

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.