Contract 0xC011A72400E58ecD99Ee497CF89E3775d4bd732F 5

 
Token migration announcement. Synthetix Proxy SNX token contract has migrated to a new address.
Txn Hash
Method
Block
From
To
Value
0x08b0aaa3ac805c6cbb10694faea476b458f01f812a6e6e291cff7cbb40f81f04Issue Synths(pending)2022-09-25 2:46:316 days 14 hrs ago0xa8afc4b5280e85d262d875301c6a9ccca0ecc235 IN Synthetix: Legacy Proxy SNX0 Ether(Pending)(Pending)
0x50204a8c01b856068bf802bfa97ac84c6ad7c2969662d41c2cdd955ec30c80edApprove(pending)2022-09-25 2:34:096 days 14 hrs ago0x3ab6778a4d9d1c4e0bad647e13b94556d214b371 IN Synthetix: Legacy Proxy SNX0 Ether(Pending)(Pending)
0x7b2336bbd0d9d53512503465a871a25c7c4332af38a6c7f8ec7383a4ba1c7a6dIssue Max Synths(pending)2022-09-25 2:28:346 days 14 hrs ago0xa8afc4b5280e85d262d875301c6a9ccca0ecc235 IN Synthetix: Legacy Proxy SNX0 Ether(Pending)(Pending)
0xc944bff5429549a06adc7ae2181ef130a1a9cddf867a81964104545e5a09dccdIssue Max Synths(pending)2022-09-25 2:28:296 days 14 hrs ago0xa8afc4b5280e85d262d875301c6a9ccca0ecc235 IN Synthetix: Legacy Proxy SNX0 Ether(Pending)(Pending)
0x739bbd436e7d72aa5ea8106cab2f093233fde638bf6930b2ca74f47f7b0f329fBurn Synths(pending)2022-09-25 2:28:296 days 14 hrs ago0xa8afc4b5280e85d262d875301c6a9ccca0ecc235 IN Synthetix: Legacy Proxy SNX0 Ether(Pending)(Pending)
0x0ad1bbf812e48dbd3fbd4d4dfed47ff2dbf32807c672c3d89262569641a1209cApprove(pending)2022-09-25 2:13:586 days 14 hrs ago0x3ab6778a4d9d1c4e0bad647e13b94556d214b371 IN Synthetix: Legacy Proxy SNX0 Ether(Pending)(Pending)
0xd09fe9e9c6ac30ffaab1b317cfd9361455c9e838c9d753a345db45c24462fbaeIssue Max Synths(pending)2022-09-25 2:13:576 days 14 hrs ago0xa8afc4b5280e85d262d875301c6a9ccca0ecc235 IN Synthetix: Legacy Proxy SNX0 Ether(Pending)(Pending)
0x1344084ed5bb99885374c8edc6ba03389b707505ef1fe39b926ae6b567fff611Transfer(pending)2022-09-25 2:13:356 days 14 hrs ago0xceca451e619a216e6922b853d4fce7ba619c4ea2 IN Synthetix: Legacy Proxy SNX0 Ether(Pending)(Pending)
0xd74c8b34523cf71d771f1c2a0fad8d379b824498070da46ad874fe8e29b80aadTransfer154272072022-08-28 10:17:4034 days 6 hrs ago0xb3475eff5add9099b62295951be9c062cb7d04df IN  Synthetix: Legacy Proxy SNX0 Ether0.00013613 4.24361198
0xcc7a5851156e27e94f3323ce0e3ea60c8ac95803206d64cc25ca3f06ebc4fda5Transfer152670272022-08-03 3:18:5059 days 13 hrs ago0x3fcb3264c5350b9a89d00ba1ed87ce0bbdd60d60 IN  Synthetix: Legacy Proxy SNX0 Ether0.00038857 12.13054164
0xc05024bec3797da517ad41f30e482567f16be23eafbda9c723e08d6f6cce406dIssue Max Synths152436422022-07-30 11:58:2163 days 5 hrs ago0xb19f2950997ddcb9694ba9a9d2a0249b2f95a370 IN  Synthetix: Legacy Proxy SNX0 Ether0.000094533
0xb44d661f7827a7fc62c5badcfa5917ad82bdd7300f041e0ce6c5488a7d086137Transfer152159162022-07-26 4:16:0867 days 12 hrs ago0x2db7076f011505a534ecfa7e45513edba2fb651d IN  Synthetix: Legacy Proxy SNX0 Ether0.00084894 26.44269295
0xe783c46bf7b7109b7c988e4103e9c95d60e986fc9bc623b58ae9425c14ec00b5Transfer151292072022-07-12 17:31:2280 days 23 hrs ago0x0c90dd3c90df673e992e1caf50334d11757adaf7 IN  Synthetix: Legacy Proxy SNX0 Ether0.00175688 54.70250844
0xdef6fd8fc985c3c0432b3a003cc33d51a457177463bd244080b248b03d89ae93Transfer150634642022-07-02 13:51:2091 days 3 hrs ago0x633a71c88f46358894b8509e4eeebb0db4a71604 IN  Synthetix: Legacy Proxy SNX0 Ether0.00040071 12.5142648
0x3a3f5f0fe91f6f92d089c8c5fe1996d845647b20f0f20246d3f86604fcf73df9Transfer150632902022-07-02 13:09:3691 days 3 hrs ago0x633a71c88f46358894b8509e4eeebb0db4a71604 IN  Synthetix: Legacy Proxy SNX0 Ether0.00036506 11.39662987
0xe2131720f5a5fb001f4f8350a8a776d7631b87c44559bf792847c91e37d10119Transfer150626852022-07-02 10:53:2191 days 6 hrs ago0x633a71c88f46358894b8509e4eeebb0db4a71604 IN  Synthetix: Legacy Proxy SNX0 Ether0.00022423 7
0x3a047bcd1871d742701921333538f73b32bf2dc87667a21c36a1d173e3dfead9Transfer150468702022-06-29 20:53:0693 days 20 hrs ago0xc77ad9bfdc6a35069d26ff14e1e384fbef9ddc0e IN  Synthetix: Legacy Proxy SNX0 Ether0.00206161 64.35900812
0x6059cdcbad4d3d39d3242e57f9af09e3416cda25611a5b0c479bdd676257d9e8Approve150192652022-06-24 16:48:1899 days 12 mins agoENS Name stacking.eth IN  Synthetix: Legacy Proxy SNX0 Ether0.00134908 42.14718296
0xc0bbe8d5a417c28726a55bed1e564e24ea31d133107a7f2a8157c990d929307fTransfer148751492022-05-30 22:24:13123 days 18 hrs ago0xcf6f734787dd8bb975abc1577c6b442848e7bd86 IN  Synthetix: Legacy Proxy SNX0 Ether0.00152712 47.58447389
0x7924d7f34b66d28ee7f2e07eb906e6a9e826bb3b20fb4af6f9d6338e047aa272Transfer147959022022-05-18 1:16:01136 days 15 hrs ago0x58474a4590c58339d02d6a2996938278ee07205d IN  Synthetix: Legacy Proxy SNX0 Ether0.00060214 18.75547725
0xa960cc4cea9c50e643a9c23860dbd0d51fc970cadca999d571d6577b1051200eTransfer146490952022-04-24 18:43:30159 days 22 hrs ago0xe15439072aaaad130094a400defe2703bb09df44 IN  Synthetix: Legacy Proxy SNX0 Ether0.0011228335
0xa139bec7a0c121e6f7e282d702ca40f59e4db389be01101d47c6e1f07f1bdcdaTransfer146105272022-04-18 17:30:43165 days 23 hrs ago0xe15439072aaaad130094a400defe2703bb09df44 IN  Synthetix: Legacy Proxy SNX0 Ether0.0018934859
0x103af50590b0fa107f3aa38a94303e3fd1f9a89b950b37e4e809b5e71f7a40bbTransfer146103352022-04-18 16:50:39166 days 9 mins ago0xe15439072aaaad130094a400defe2703bb09df44 IN  Synthetix: Legacy Proxy SNX0 Ether0.0014762746
0x0ce3bf34846eaf9edfaf5d2b3c5feaf156ab689619aeb91e00fe157bffd85754Transfer141996702022-02-13 19:26:46229 days 21 hrs ago0x46045b150fe49bef68e395e93fa4575a7af69105 IN  Synthetix: Legacy Proxy SNX0 Ether0.0020876 65
0xd11b8eb4c2948493c84b92a8ea5fc2cc22dc94f2893e9649da3db22d9249efb1Transfer139670572022-01-08 20:53:45265 days 20 hrs ago0xf7411aed9bf7aa16c2d75f6263da9f6223371d52 IN  Synthetix: Legacy Proxy SNX0 Ether0.0096351300
[ Download CSV Export 

OVERVIEW

The legacy proxy token contract for Synthetix SNX token.

MORE INFORMATION

Synthetix Network Token proxy contract.
A proxy contract that, if it does not recognise the function being called on it, passes all value and call data to an underlying target contract.

This proxy has the capacity to toggle between DELEGATECALL and CALL style proxy functionality.

The former executes in the proxy's context, and so will preserve msg.sender and store data at the proxy address. The latter will not.
Therefore, any contract the proxy wraps in the CALL style must implement the Proxyable interface, in order that it can pass msg.sender into the underlying contract as the state parameter, messageSender.

Latest 10 internal transactions
Parent Txn Hash Block From To Value
0x225cec8cdba9dd206d191667f87032ab4deee68e6c63702f0680f84c3e8b46ef107179482020-08-23 17:29:41768 days 23 hrs ago Synthetix: Legacy Proxy SNX Synthetix: Underlying SNX Token0.00256079 Ether
0x872cae0014c3012f4b328c34494552563e68a450140b6ac42c24109529dbffef96328662020-03-08 20:09:48936 days 20 hrs ago Synthetix: Legacy Proxy SNX Synthetix: Old Synth SNX 140.11475868 Ether
0x21c5c6b27d8c0a2acff5b3d6a899945c6255b849665c0d95a2063e47c8c6954091672152019-12-26 19:32:311009 days 21 hrs ago Synthetix: Legacy Proxy SNX Synthetix: Old Synth SNX 120.02538071 Ether
0x4e991d28fd8e765a9139db6a4e546b1f5c03917636a79f82dc42c76d652ea25490893972019-12-11 15:25:121025 days 1 hr ago Synthetix: Legacy Proxy SNX Synthetix: Old Synth SNX 110.01845 Ether
0xc3451f17f318a01883e0b1f2c4bcbd7b6efad87f3d6d91630731b7a270433ee487589242019-10-17 13:59:421080 days 3 hrs ago Synthetix: Legacy Proxy SNX Synthetix: Old Synth SNX 90.0015 Ether
0x97aa05f0f63e3fba250ae9e99efdbb05b2806d8bc11a2f1b97a850e5ddd997be87271112019-10-12 13:56:591085 days 3 hrs ago Synthetix: Legacy Proxy SNX Synthetix: Old Synth SNX 90.011 Ether
0x177b3ef40aa82e60bc52559306d3eaecaae320e1a8e8c80ddbb6d53a89ade88a73116972019-03-05 21:22:041305 days 19 hrs ago Synthetix: Legacy Proxy SNX Synthetix: Old Synth SNX 11.79 Ether
0xfcd1548c17faec5ff2495e546950fa5efa0797e23a8c9d5713444b0629a65d3558694022018-06-28 13:57:291556 days 3 hrs ago Synthetix: Legacy Proxy SNX 0x01da95f253122636d0776017311892835a15d9dd0.02 Ether
0x9342732b9ad8d00427401197cf8f49ce70a189ce98ac53c51da9a4592e02fe7758657102018-06-27 22:28:261556 days 18 hrs ago Synthetix: Legacy Proxy SNX 0x01da95f253122636d0776017311892835a15d9dd0.02 Ether
0x8ea3c34fa150023582255a726b7d7ab3d5b66678da090c8d1350c0d0914e244857695262018-06-11 9:37:271573 days 7 hrs ago Synthetix: Legacy Proxy SNX 0x01da95f253122636d0776017311892835a15d9dd0.001 Ether
[ Download CSV Export 
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

Contract Source Code Verified (Exact Match)

Contract Name:
Proxy

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-06-12
*/

/* 
 * 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 Security Audit

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"}]

608060405234801561001057600080fd5b5060405160208061066b833981016040525180600160a060020a038116151561003857600080fd5b60008054600160a060020a031916600160a060020a038316908117825560408051928352602083019190915280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a150506105ca806100a16000396000f3006080604052600436106100985763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631627540c811461018357806353a47bb7146101a4578063776d1a01146101d557806379ba5097146101f65780638da5cb5b1461020b578063907dff971461022057806395578ebd14610250578063befff6af14610279578063d4b8399214610293575b60025474010000000000000000000000000000000000000000900460ff16156100e157604051366000823760008036836002545af43d6000833e8015156100dd573d82fd5b3d82f35b600254604080517fbc67f8320000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163bc67f8329160248082019260009290919082900301818387803b15801561014657600080fd5b505af115801561015a573d6000803e3d6000fd5b5050505060405136600082376000803683346002545af13d6000833e8015156100dd573d82fd5b005b34801561018f57600080fd5b50610181600160a060020a03600435166102a8565b3480156101b057600080fd5b506101b9610320565b60408051600160a060020a039092168252519081900360200190f35b3480156101e157600080fd5b50610181600160a060020a036004351661032f565b34801561020257600080fd5b506101816103a7565b34801561021757600080fd5b506101b961043e565b34801561022c57600080fd5b5061018160246004803582810192910135903560443560643560843560a43561044d565b34801561025c57600080fd5b50610265610517565b604080519115158252519081900360200190f35b34801561028557600080fd5b506101816004351515610538565b34801561029f57600080fd5b506101b961058f565b600054600160a060020a031633146102bf57600080fd5b60018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b600154600160a060020a031681565b600054600160a060020a0316331461034657600080fd5b60028054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f814250a3b8c79fcbe2ead2c131c952a278491c8f4322a79fe84b5040a810373e9181900360200190a150565b600154600160a060020a031633146103be57600080fd5b60005460015460408051600160a060020a03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a1600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b600054600160a060020a031681565b600254600090606090600160a060020a0316331461046a57600080fd5b604080516020601f8b01819004810282018101909252898152899350908a90849081908401838280828437820191505050505050905086600081146104ce57600181146104d957600281146104e557600381146104f257600481146105005761050b565b8260208301a061050b565b868360208401a161050b565b85878460208501a261050b565b8486888560208601a361050b565b838587898660208701a45b50505050505050505050565b60025474010000000000000000000000000000000000000000900460ff1681565b600054600160a060020a0316331461054f57600080fd5b60028054911515740100000000000000000000000000000000000000000274ff000000000000000000000000000000000000000019909216919091179055565b600254600160a060020a0316815600a165627a7a723058209e104efaf0a7b150d5357b3a38b0260a3741a240fef678863453d378cc0622b90029000000000000000000000000b12a54406840a7ddfa9246efb3bf4724bf55f5f8

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

000000000000000000000000b12a54406840a7ddfa9246efb3bf4724bf55f5f8

-----Decoded View---------------
Arg [0] : _owner (address): 0xB12a54406840a7DDfa9246EfB3bF4724bF55f5f8

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


Swarm Source

bzzr://9e104efaf0a7b150d5357b3a38b0260a3741a240fef678863453d378cc0622b9
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.