Feature Tip: Add private address tag to any address under My Name Tag !
Token migration announcement. Synthetix Proxy SNX token contract has migrated to a new address.
ERC-20
Old Contract
Overview
Max Total Supply
0 SNX
Holders
14,561 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0 SNXValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
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 Name:
Proxy
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *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
- No Contract Security Audit Submitted- Submit Audit Here
[{"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
608060405234801561001057600080fd5b5060405160208061066b833981016040525180600160a060020a038116151561003857600080fd5b60008054600160a060020a031916600160a060020a038316908117825560408051928352602083019190915280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a150506105ca806100a16000396000f3006080604052600436106100985763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631627540c811461018357806353a47bb7146101a4578063776d1a01146101d557806379ba5097146101f65780638da5cb5b1461020b578063907dff971461022057806395578ebd14610250578063befff6af14610279578063d4b8399214610293575b60025474010000000000000000000000000000000000000000900460ff16156100e157604051366000823760008036836002545af43d6000833e8015156100dd573d82fd5b3d82f35b600254604080517fbc67f8320000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163bc67f8329160248082019260009290919082900301818387803b15801561014657600080fd5b505af115801561015a573d6000803e3d6000fd5b5050505060405136600082376000803683346002545af13d6000833e8015156100dd573d82fd5b005b34801561018f57600080fd5b50610181600160a060020a03600435166102a8565b3480156101b057600080fd5b506101b9610320565b60408051600160a060020a039092168252519081900360200190f35b3480156101e157600080fd5b50610181600160a060020a036004351661032f565b34801561020257600080fd5b506101816103a7565b34801561021757600080fd5b506101b961043e565b34801561022c57600080fd5b5061018160246004803582810192910135903560443560643560843560a43561044d565b34801561025c57600080fd5b50610265610517565b604080519115158252519081900360200190f35b34801561028557600080fd5b506101816004351515610538565b34801561029f57600080fd5b506101b961058f565b600054600160a060020a031633146102bf57600080fd5b60018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b600154600160a060020a031681565b600054600160a060020a0316331461034657600080fd5b60028054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f814250a3b8c79fcbe2ead2c131c952a278491c8f4322a79fe84b5040a810373e9181900360200190a150565b600154600160a060020a031633146103be57600080fd5b60005460015460408051600160a060020a03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a1600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b600054600160a060020a031681565b600254600090606090600160a060020a0316331461046a57600080fd5b604080516020601f8b01819004810282018101909252898152899350908a90849081908401838280828437820191505050505050905086600081146104ce57600181146104d957600281146104e557600381146104f257600481146105005761050b565b8260208301a061050b565b868360208401a161050b565b85878460208501a261050b565b8486888560208601a361050b565b838587898660208701a45b50505050505050505050565b60025474010000000000000000000000000000000000000000900460ff1681565b600054600160a060020a0316331461054f57600080fd5b60028054911515740100000000000000000000000000000000000000000274ff000000000000000000000000000000000000000019909216919091179055565b600254600160a060020a0316815600a165627a7a723058209e104efaf0a7b150d5357b3a38b0260a3741a240fef678863453d378cc0622b90029000000000000000000000000b12a54406840a7ddfa9246efb3bf4724bf55f5f8
Deployed Bytecode
0x6080604052600436106100985763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631627540c811461018357806353a47bb7146101a4578063776d1a01146101d557806379ba5097146101f65780638da5cb5b1461020b578063907dff971461022057806395578ebd14610250578063befff6af14610279578063d4b8399214610293575b60025474010000000000000000000000000000000000000000900460ff16156100e157604051366000823760008036836002545af43d6000833e8015156100dd573d82fd5b3d82f35b600254604080517fbc67f8320000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163bc67f8329160248082019260009290919082900301818387803b15801561014657600080fd5b505af115801561015a573d6000803e3d6000fd5b5050505060405136600082376000803683346002545af13d6000833e8015156100dd573d82fd5b005b34801561018f57600080fd5b50610181600160a060020a03600435166102a8565b3480156101b057600080fd5b506101b9610320565b60408051600160a060020a039092168252519081900360200190f35b3480156101e157600080fd5b50610181600160a060020a036004351661032f565b34801561020257600080fd5b506101816103a7565b34801561021757600080fd5b506101b961043e565b34801561022c57600080fd5b5061018160246004803582810192910135903560443560643560843560a43561044d565b34801561025c57600080fd5b50610265610517565b604080519115158252519081900360200190f35b34801561028557600080fd5b506101816004351515610538565b34801561029f57600080fd5b506101b961058f565b600054600160a060020a031633146102bf57600080fd5b60018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b600154600160a060020a031681565b600054600160a060020a0316331461034657600080fd5b60028054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f814250a3b8c79fcbe2ead2c131c952a278491c8f4322a79fe84b5040a810373e9181900360200190a150565b600154600160a060020a031633146103be57600080fd5b60005460015460408051600160a060020a03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a1600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b600054600160a060020a031681565b600254600090606090600160a060020a0316331461046a57600080fd5b604080516020601f8b01819004810282018101909252898152899350908a90849081908401838280828437820191505050505050905086600081146104ce57600181146104d957600281146104e557600381146104f257600481146105005761050b565b8260208301a061050b565b868360208401a161050b565b85878460208501a261050b565b8486888560208601a361050b565b838587898660208701a45b50505050505050505050565b60025474010000000000000000000000000000000000000000900460ff1681565b600054600160a060020a0316331461054f57600080fd5b60028054911515740100000000000000000000000000000000000000000274ff000000000000000000000000000000000000000019909216919091179055565b600254600160a060020a0316815600a165627a7a723058209e104efaf0a7b150d5357b3a38b0260a3741a240fef678863453d378cc0622b90029
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
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.