Contract 0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4 11

 

Contract Overview

Synthetix: SNX Token
Balance:
0 Ether

EtherValue:
$0.00

Token:
Txn Hash Method
Index
From
To
Value
0xc58663b7d05f67f823386d8a531b3d0feaf7c0d1b794e3911b50e94afc214b82Issue Max Synths265830412022-09-30 22:19:1025 secs ago0x9cdddce5b047098aeb3351a949d719451e086cd9 IN Synthetix: SNX Token0 Ether0.0000522884410.001
0x3514d7d99bfa24b414719bd50a7249b7509b5f644179fd99b633f0064f06665fApprove265829482022-09-30 22:18:101 min ago0x8c1415382969164cc1cef73f6e9e89ed7cdab7d2 IN Synthetix: SNX Token0 Ether0.000054464410.001
0xb7d3a59a62bcb8e22487e678cfebf9028b19bb588b320191e9b0ea3248f1440cIssue Max Synths265828852022-09-30 22:17:092 mins ago0x45d7795dd63c17a0fe72b567854eb8483ef33247 IN Synthetix: SNX Token0 Ether0.0000444029860.001
0xb6af9182a28e0e9109bb487e65c3e9d265a1b17f3d6a44009d115947aa2e6ecdIssue Synths265828372022-09-30 22:16:382 mins ago0xc47f2266b6076b79c0a6a9906c6592b34c03c914 IN Synthetix: SNX Token0 Ether0.0000465886010.001
0xbfc36e7e1b024d5b9b34966db264f0857ea7db457a3a0c8bb31210636fc0d3dfIssue Max Synths265828332022-09-30 22:16:382 mins ago0x446b3829013f94ea309318e294d8ed7825950e09 IN Synthetix: SNX Token0 Ether0.0000444029860.001
0x9000f7a9fb5aebc585335039a2ffae0237f314b839a24838f999286c6b2ab8b3Approve265828182022-09-30 22:16:233 mins ago0x0330f77f3c57940094a65446625c3b3c71606a6a IN Synthetix: SNX Token0 Ether0.000054464410.001
0x2ed79222c1740aef8a170d2c47d9570c1b763a6ec87cab2958e02639e3ea385aBurn Synths265828022022-09-30 22:16:233 mins ago0x40d175ca198474bbdf8258dd9f512ec40d083772 IN Synthetix: SNX Token0 Ether0.0000475603430.001
0xac8923cb126799a0b425a68ac5c16cdf355c561538bd5193ed6e9475951f8210Approve265826422022-09-30 22:14:534 mins ago0xd86045dd51af8cc0732fc5880737ded777e33ec9 IN Synthetix: SNX Token0 Ether0.0000678244060.001
0x2e408e5d8651ada61c972b03c89576b0ec0892613a5e49fb00d554e5a01ed500Burn Synths To T...265825862022-09-30 22:14:235 mins ago0xf0df547b76af0fef5f6959a96ec8a026132f236b IN Synthetix: SNX Token0 Ether0.0000446988150.001
0xfb9cf0302f429db98e69b82ee8a7ef0a5d17eab598f2aee98ac23033a7d46c27Burn Synths265825832022-09-30 22:14:235 mins ago0xd86045dd51af8cc0732fc5880737ded777e33ec9 IN Synthetix: SNX Token0 Ether0.0000472970.001
0xa00d2c9246f6ab947cd6289b4f02d069c8c8cec01f1dc57993d5d2520e81b873Issue Synths265824962022-09-30 22:13:375 mins ago0x12cb6f5eb0d90f8978deb060c46539e8b8725509 IN Synthetix: SNX Token0 Ether0.0000471884550.001
0x682c9b51732b9e269f97e06e3414412ba96697e08899c6752156d996bdd34e41Burn Synths265824282022-09-30 22:13:226 mins ago0xf619fc95d58b25b708f36a6452760314bf8bb173 IN Synthetix: SNX Token0 Ether0.0000537724050.001
0x0f8b55c05bc1ec763a0ae7021440692450df8ed6bd3023f2c905d4c0c3da8c45Issue Max Synths265822352022-09-30 22:11:517 mins ago0xc5d16847874f3c47c5dfec353d01105896459d0f IN Synthetix: SNX Token0 Ether0.0000558430630.001
0xc573c36c58d2613bde96c3db34f90ce8fc4a1565271c7de605c6960b8869c14eIssue Max Synths265822262022-09-30 22:11:517 mins ago0xf484dcd112000fd70c075677a84eef410e5de117 IN Synthetix: SNX Token0 Ether0.0000558070550.001
0x06aafa2b2e5f89ac018b7b795cfa126fb72e289a8cee6655085f10959d9ef1eaIssue Max Synths265821512022-09-30 22:11:028 mins ago0x4879032313fa7648bf821f9880ba2c645d0f356b IN Synthetix: SNX Token0 Ether0.0000495642410.001
0xbf0f5a14b37e19478717e148d04465363a9897a9854608c820d7f4bc191301d1Issue Synths265820352022-09-30 22:10:478 mins ago0x258b3859bd1ec183e1cb0d124590894a0dcf85a4 IN Synthetix: SNX Token0 Ether0.0000518827190.001
0x4b8bbdb96954da8a46c4dceca5617dd7c18e204af0fe1f6f19e9036881f94b80Issue Synths265817522022-09-30 22:09:479 mins ago0xe9d7c994bbc7ea7f1e2c872de103e3038e1009d8 IN Synthetix: SNX Token0 Ether0.0000518296110.001
0x1919d418ec0dc3eca841ab908d2d5ac2db5dde4e548222c0595e60a2915d45e9Issue Max Synths265817012022-09-30 22:08:5910 mins ago0x9fa1cd2d29014f2317aa03712fcace59b2b3d7aa IN Synthetix: SNX Token0 Ether0.0000450251540.001
0x8611519f4ae355bf841e09577daabdf859a0cad77f9f9f16a0f9d3b6055914c8Approve265815862022-09-30 22:08:1311 mins ago0x5233da102431d5fceb27e16620959fdbc8604389 IN Synthetix: SNX Token0 Ether0.0000552339070.001
0x92d5636e5940bf567ad673d45eb9d541bafa90bd7c30ab2eaa970926ec5bb579Issue Max Synths265815072022-09-30 22:07:5811 mins ago0x97dbf4d74fccca9767d9243a1380adfc000c3638 IN Synthetix: SNX Token0 Ether0.0000448365580.001
0xdea80c0d529502e1ba0da87bd29eb1fc39b60ae5b88b40b8d8ad99cb6e754847Burn Synths265814812022-09-30 22:07:2812 mins ago0x5233da102431d5fceb27e16620959fdbc8604389 IN Synthetix: SNX Token0 Ether0.0000474446470.001
0xd530a3cb9d3c2c9be39bbc71c02cb838cde7f39b0014e3519321e3992e7f29acIssue Max Synths265814702022-09-30 22:07:2812 mins ago0x99e58c4abbf610a01497a6d7f1ff881796fa2c1d IN Synthetix: SNX Token0 Ether0.0000448896720.001
0xff4e5fe64587425ab43c8d83177bd949c56d9e6f3f1d3009d82021812f74b5d6Issue Max Synths265814572022-09-30 22:07:1112 mins ago0x29e51338196ca590ee1f713e891834f5ebedacfe IN Synthetix: SNX Token0 Ether0.0000449067720.001
0x650958ad83d63410de88f02130b392374ec39b7c893567ebce8ded0061dc3646Issue Max Synths265814552022-09-30 22:07:1112 mins ago0xdf3ceabb8d6e9109789bfdd38c37a8b81d1c7f1a IN Synthetix: SNX Token0 Ether0.0000448365640.001
0xf9bccad9dfcc3826e4e4b443523736f5304e0d487b3015aad16700c789aea6d2Exchange With Tr...265814472022-09-30 22:07:1112 mins ago0xbc0149db35d62aba237e1acb2c4ffc5ff3426ea5 IN Synthetix: SNX Token0 Ether0.0000586012090.001
[ Download CSV Export 

OVERVIEW

The Synthetix Network Token (SNX) is the native token of Synthetix, a synthetic asset (Synth) issuance protocol built on Ethereum. The SNX token is used as collateral to issue Synths, ERC-20 tokens that track the price of assets like Gold, Silver, Oil and Bitcoin.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xc58663b7d05f67f823386d8a531b3d0feaf7c0d1b794e3911b50e94afc214b82265830412022-09-30 22:19:1025 secs ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0xc58663b7d05f67f823386d8a531b3d0feaf7c0d1b794e3911b50e94afc214b82265830412022-09-30 22:19:1025 secs ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0xa9f749e13fcd5437a8178a01178773675da7e3d444e427957aed4c1ada5d8063265830232022-09-30 22:18:5540 secs ago 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744dSynthetix: SNX Token0 Ether
0xa9f749e13fcd5437a8178a01178773675da7e3d444e427957aed4c1ada5d8063265830232022-09-30 22:18:5540 secs ago 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744dSynthetix: SNX Token0 Ether
0x2d3bf4555095f9097974750bfe8e1e9d96085faa79e1515adaf59a53fab38909265830112022-09-30 22:18:4055 secs ago 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744dSynthetix: SNX Token0 Ether
0x2d3bf4555095f9097974750bfe8e1e9d96085faa79e1515adaf59a53fab38909265830112022-09-30 22:18:4055 secs ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0x2d3bf4555095f9097974750bfe8e1e9d96085faa79e1515adaf59a53fab38909265830112022-09-30 22:18:4055 secs ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0x2d3bf4555095f9097974750bfe8e1e9d96085faa79e1515adaf59a53fab38909265830112022-09-30 22:18:4055 secs ago 0x320616dbe138aa2f3db7a5a46ba79a13032cc5f2Synthetix: SNX Token0 Ether
0x3247fba2dfca71d8e138867d4b00b01ad85fb0b352cae972e7457e087893b418265829972022-09-30 22:18:4055 secs ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0x3247fba2dfca71d8e138867d4b00b01ad85fb0b352cae972e7457e087893b418265829972022-09-30 22:18:4055 secs ago 0xa44f3da37e4266999f9d3cab82da6371e416d1bfSynthetix: SNX Token0 Ether
0x3247fba2dfca71d8e138867d4b00b01ad85fb0b352cae972e7457e087893b418265829972022-09-30 22:18:4055 secs ago 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744dSynthetix: SNX Token0 Ether
0x3247fba2dfca71d8e138867d4b00b01ad85fb0b352cae972e7457e087893b418265829972022-09-30 22:18:4055 secs ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0x3247fba2dfca71d8e138867d4b00b01ad85fb0b352cae972e7457e087893b418265829972022-09-30 22:18:4055 secs ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0x3247fba2dfca71d8e138867d4b00b01ad85fb0b352cae972e7457e087893b418265829972022-09-30 22:18:4055 secs ago 0x11431a89893025d2a48dca4eddc396f8c8117187Synthetix: SNX Token0 Ether
0x3247fba2dfca71d8e138867d4b00b01ad85fb0b352cae972e7457e087893b418265829972022-09-30 22:18:4055 secs ago 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744dSynthetix: SNX Token0 Ether
0x3247fba2dfca71d8e138867d4b00b01ad85fb0b352cae972e7457e087893b418265829972022-09-30 22:18:4055 secs ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0x3247fba2dfca71d8e138867d4b00b01ad85fb0b352cae972e7457e087893b418265829972022-09-30 22:18:4055 secs ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0x3247fba2dfca71d8e138867d4b00b01ad85fb0b352cae972e7457e087893b418265829972022-09-30 22:18:4055 secs ago 0xa44f3da37e4266999f9d3cab82da6371e416d1bfSynthetix: SNX Token0 Ether
0x3247fba2dfca71d8e138867d4b00b01ad85fb0b352cae972e7457e087893b418265829972022-09-30 22:18:4055 secs ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0x3247fba2dfca71d8e138867d4b00b01ad85fb0b352cae972e7457e087893b418265829972022-09-30 22:18:4055 secs ago 0xa44f3da37e4266999f9d3cab82da6371e416d1bfSynthetix: SNX Token0 Ether
0x3247fba2dfca71d8e138867d4b00b01ad85fb0b352cae972e7457e087893b418265829972022-09-30 22:18:4055 secs ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0x3247fba2dfca71d8e138867d4b00b01ad85fb0b352cae972e7457e087893b418265829972022-09-30 22:18:4055 secs ago 0x9056eb7ca982a5dd65a584189994e6a27318067dSynthetix: SNX Token0 Ether
0x3247fba2dfca71d8e138867d4b00b01ad85fb0b352cae972e7457e087893b418265829972022-09-30 22:18:4055 secs ago 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744dSynthetix: SNX Token0 Ether
0x3247fba2dfca71d8e138867d4b00b01ad85fb0b352cae972e7457e087893b418265829972022-09-30 22:18:4055 secs ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0x3247fba2dfca71d8e138867d4b00b01ad85fb0b352cae972e7457e087893b418265829972022-09-30 22:18:4055 secs ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Genesis Bytecode Match Only)

Contract Name:
ProxyERC20

Compiler Version
v0.5.16

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Optimistic.Etherscan.io on 2021-08-25
*/

/*

Note:

This is a PROXY contract, it defers requests to its underlying TARGET contract. 
Always use this address in your applications and never the TARGET as it is liable to change.

*//*
   ____            __   __        __   _
  / __/__ __ ___  / /_ / /  ___  / /_ (_)__ __
 _\ \ / // // _ \/ __// _ \/ -_)/ __// / \ \ /
/___/ \_, //_//_/\__//_//_/\__/ \__//_/ /_\_\
     /___/

* Synthetix: ProxyERC20.sol
*
* Latest source (may be newer): https://github.com/Synthetixio/synthetix/blob/master/contracts/ProxyERC20.sol
* Docs: https://docs.synthetix.io/contracts/ProxyERC20
*
* Contract Dependencies: 
*	- IERC20
*	- Owned
*	- Proxy
* Libraries: (none)
*
* MIT License
* ===========
*
* Copyright (c) 2021 Synthetix
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
*/



pragma solidity ^0.5.16;

// https://docs.synthetix.io/contracts/source/contracts/owned
contract Owned {
    address public owner;
    address public nominatedOwner;

    constructor(address _owner) public {
        require(_owner != address(0), "Owner address cannot be 0");
        owner = _owner;
        emit OwnerChanged(address(0), _owner);
    }

    function nominateNewOwner(address _owner) external onlyOwner {
        nominatedOwner = _owner;
        emit OwnerNominated(_owner);
    }

    function acceptOwnership() external {
        require(msg.sender == nominatedOwner, "You must be nominated before you can accept ownership");
        emit OwnerChanged(owner, nominatedOwner);
        owner = nominatedOwner;
        nominatedOwner = address(0);
    }

    modifier onlyOwner {
        _onlyOwner();
        _;
    }

    function _onlyOwner() private view {
        require(msg.sender == owner, "Only the contract owner may perform this action");
    }

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


// Inheritance


// Internal references


// https://docs.synthetix.io/contracts/source/contracts/proxyable
contract Proxyable is Owned {
    // This contract should be treated like an abstract contract

    /* The proxy this contract exists behind. */
    Proxy public proxy;
    Proxy public integrationProxy;

    /* 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 public messageSender;

    constructor(address payable _proxy) internal {
        // This contract is abstract, and thus cannot be instantiated directly
        require(owner != address(0), "Owner must be set");

        proxy = Proxy(_proxy);
        emit ProxyUpdated(_proxy);
    }

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

    function setIntegrationProxy(address payable _integrationProxy) external onlyOwner {
        integrationProxy = Proxy(_integrationProxy);
    }

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

    modifier onlyProxy {
        _onlyProxy();
        _;
    }

    function _onlyProxy() private view {
        require(Proxy(msg.sender) == proxy || Proxy(msg.sender) == integrationProxy, "Only the proxy can call");
    }

    modifier optionalProxy {
        _optionalProxy();
        _;
    }

    function _optionalProxy() private {
        if (Proxy(msg.sender) != proxy && Proxy(msg.sender) != integrationProxy && messageSender != msg.sender) {
            messageSender = msg.sender;
        }
    }

    modifier optionalProxy_onlyOwner {
        _optionalProxy_onlyOwner();
        _;
    }

    // solhint-disable-next-line func-name-mixedcase
    function _optionalProxy_onlyOwner() private {
        if (Proxy(msg.sender) != proxy && Proxy(msg.sender) != integrationProxy && messageSender != msg.sender) {
            messageSender = msg.sender;
        }
        require(messageSender == owner, "Owner only function");
    }

    event ProxyUpdated(address proxyAddress);
}


// Inheritance


// Internal references


// https://docs.synthetix.io/contracts/source/contracts/proxy
contract Proxy is Owned {
    Proxyable public target;

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

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

    function _emit(
        bytes calldata 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)
                }
        }
    }

    // solhint-disable no-complex-fallback
    function() external payable {
        // Mutable call setting Proxyable.messageSender as this is using call not 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, "Must be proxy target");
        _;
    }

    event TargetUpdated(Proxyable newTarget);
}


// https://docs.synthetix.io/contracts/source/interfaces/ierc20
interface IERC20 {
    // ERC20 Optional Views
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);

    // Views
    function totalSupply() external view returns (uint);

    function balanceOf(address owner) external view returns (uint);

    function allowance(address owner, address spender) external view returns (uint);

    // Mutative functions
    function transfer(address to, uint value) external returns (bool);

    function approve(address spender, uint value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint value
    ) external returns (bool);

    // Events
    event Transfer(address indexed from, address indexed to, uint value);

    event Approval(address indexed owner, address indexed spender, uint value);
}


// Inheritance


// https://docs.synthetix.io/contracts/source/contracts/proxyerc20
contract ProxyERC20 is Proxy, IERC20 {
    constructor(address _owner) public Proxy(_owner) {}

    // ------------- ERC20 Details ------------- //

    function name() public view returns (string memory) {
        // Immutable static call from target contract
        return IERC20(address(target)).name();
    }

    function symbol() public view returns (string memory) {
        // Immutable static call from target contract
        return IERC20(address(target)).symbol();
    }

    function decimals() public view returns (uint8) {
        // Immutable static call from target contract
        return IERC20(address(target)).decimals();
    }

    // ------------- ERC20 Interface ------------- //

    /**
     * @dev Total number of tokens in existence
     */
    function totalSupply() public view returns (uint256) {
        // Immutable static call from target contract
        return IERC20(address(target)).totalSupply();
    }

    /**
     * @dev Gets the balance of the specified address.
     * @param account The address to query the balance of.
     * @return An uint256 representing the amount owned by the passed address.
     */
    function balanceOf(address account) public view returns (uint256) {
        // Immutable static call from target contract
        return IERC20(address(target)).balanceOf(account);
    }

    /**
     * @dev Function to check the amount of tokens that an owner allowed to a spender.
     * @param owner address The address which owns the funds.
     * @param spender address The address which will spend the funds.
     * @return A uint256 specifying the amount of tokens still available for the spender.
     */
    function allowance(address owner, address spender) public view returns (uint256) {
        // Immutable static call from target contract
        return IERC20(address(target)).allowance(owner, spender);
    }

    /**
     * @dev Transfer token for a specified address
     * @param to The address to transfer to.
     * @param value The amount to be transferred.
     */
    function transfer(address to, uint256 value) public returns (bool) {
        // Mutable state call requires the proxy to tell the target who the msg.sender is.
        target.setMessageSender(msg.sender);

        // Forward the ERC20 call to the target contract
        IERC20(address(target)).transfer(to, value);

        // Event emitting will occur via Synthetix.Proxy._emit()
        return true;
    }

    /**
     * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
     * Beware that changing an allowance with this method brings the risk that someone may use both the old
     * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
     * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     * @param spender The address which will spend the funds.
     * @param value The amount of tokens to be spent.
     */
    function approve(address spender, uint256 value) public returns (bool) {
        // Mutable state call requires the proxy to tell the target who the msg.sender is.
        target.setMessageSender(msg.sender);

        // Forward the ERC20 call to the target contract
        IERC20(address(target)).approve(spender, value);

        // Event emitting will occur via Synthetix.Proxy._emit()
        return true;
    }

    /**
     * @dev Transfer tokens from one address to another
     * @param from address The address which you want to send tokens from
     * @param to address The address which you want to transfer to
     * @param value uint256 the amount of tokens to be transferred
     */
    function transferFrom(
        address from,
        address to,
        uint256 value
    ) public returns (bool) {
        // Mutable state call requires the proxy to tell the target who the msg.sender is.
        target.setMessageSender(msg.sender);

        // Forward the ERC20 call to the target contract
        IERC20(address(target)).transferFrom(from, to, value);

        // Event emitting will occur via Synthetix.Proxy._emit()
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract Proxyable","name":"newTarget","type":"address"}],"name":"TargetUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"uint256","name":"numTopics","type":"uint256"},{"internalType":"bytes32","name":"topic1","type":"bytes32"},{"internalType":"bytes32","name":"topic2","type":"bytes32"},{"internalType":"bytes32","name":"topic3","type":"bytes32"},{"internalType":"bytes32","name":"topic4","type":"bytes32"}],"name":"_emit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract Proxyable","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"target","outputs":[{"internalType":"contract Proxyable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

80604052600436106100f35760003560e01c8063776d1a011161008a57806395d89b411161005957806395d89b411461059d578063a9059cbb146105bb578063d4b8399214610606578063dd62ed3e14610624576100f3565b8063776d1a011461045a57806379ba50971461049f5780638da5cb5b146104bd578063907dff97146104db576100f3565b806323b872dd116100c657806323b872dd14610352578063313ce567146103a757806353a47bb7146103db57806370a0823114610415576100f3565b806306fdde03146101e7578063095ea7b31461027c5780631627540c146102db57806318160ddd14610322575b600060026100ff6113c3565b906101000a90046001600160a01b03166001600160a01b031663bc67f8325a61012661141e565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160006040518083038160008780610162611464565b158015610177576000806101746114b0565b50505b505a61018161151b565b5050505050501580156101a1573d6000803e3d600061019e6114b0565b50505b50505050604051366000823760008036833460026101bd6113c3565b5a6101c661151b565b5050505050503d6000833e806101e3573d826101e06114b0565b50505b3d82f35b3480156101fc576000806101f96114b0565b50505b50610205610671565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610241578082015183820152602001610229565b50505050905090810190601f16801561026e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102915760008061028e6114b0565b50505b506102c7600480360360408110156102b1576000806102ae6114b0565b50505b506001600160a01b038135169060200135610801565b604051901515815260200160405180910390f35b3480156102f0576000806102ed6114b0565b50505b50610320600480360360208110156103105760008061030d6114b0565b50505b50356001600160a01b0316610995565b005b348015610337576000806103346114b0565b50505b50610340610a0f565b60405190815260200160405180910390f35b348015610367576000806103646114b0565b50505b506102c760048036036060811015610387576000806103846114b0565b50505b506001600160a01b03813581169160208101359091169060400135610aca565b3480156103bc576000806103b96114b0565b50505b506103c5610c6a565b60405160ff909116815260200160405180910390f35b3480156103f0576000806103ed6114b0565b50505b506103f9610cba565b6040516001600160a01b03909116815260200160405180910390f35b34801561042a576000806104276114b0565b50505b506103406004803603602081101561044a576000806104476114b0565b50505b50356001600160a01b0316610cd9565b34801561046f5760008061046c6114b0565b50505b506103206004803603602081101561048f5760008061048c6114b0565b50505b50356001600160a01b0316610dab565b3480156104b4576000806104b16114b0565b50505b50610320610e26565b3480156104d2576000806104cf6114b0565b50505b506103f9610fa9565b3480156104f0576000806104ed6114b0565b50505b50610320600480360360c08110156105105760008061050d6114b0565b50505b810190602081018135640100000000811115610534576000806105316114b0565b50505b82018360208201111561054f5760008061054c6114b0565b50505b8035906020019184600183028401116401000000008311171561057a576000806105776114b0565b50505b919350915080359060208101359060408101359060608101359060800135610fb4565b3480156105b2576000806105af6114b0565b50505b506102056110ed565b3480156105d0576000806105cd6114b0565b50505b506102c7600480360360408110156105f0576000806105ed6114b0565b50505b506001600160a01b03813516906020013561113e565b34801561061b576000806106186114b0565b50505b506103f961125f565b348015610639576000806106366114b0565b50505b5061034060048036036040811015610659576000806106566114b0565b50505b506001600160a01b038135811691602001351661126b565b60606000600261067f6113c3565b906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186806106c2611464565b1580156106d7576000806106d46114b0565b50505b505a6106e1611606565b5050505050158015610700573d6000803e3d60006106fd6114b0565b50505b505050506040513d6000823e601f3d908101601f1916820160405260208110156107325760008061072f6114b0565b50505b810190808051604051939291908464010000000082111561075b576000806107586114b0565b50505b908301906020820185811115610779576000806107766114b0565b50505b825164010000000081118282018810171561079c576000806107996114b0565b50505b825250602001908051906020019080838360005b838110156107c85780820151838201526020016107b0565b50505050905090810190601f1680156107f55780820380516001836020036101000a031916815260200191505b50604052505050905090565b600080600261080e6113c3565b906101000a90046001600160a01b03166001600160a01b031663bc67f8325a61083561141e565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160006040518083038160008780610871611464565b158015610886576000806108836114b0565b50505b505a61089061151b565b5050505050501580156108b0573d6000803e3d60006108ad6114b0565b50505b5050505060026000906108c16113c3565b906101000a90046001600160a01b03166001600160a01b031663095ea7b384846040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260440160206040518083038160008780610922611464565b158015610937576000806109346114b0565b50505b505a61094161151b565b505050505050158015610961573d6000803e3d600061095e6114b0565b50505b505050506040513d60208110156109805760008061097d6114b0565b50505b81019080805150600193505050505b92915050565b61099d611346565b80600180806109aa6113c3565b816001600160a01b0302191690836001600160a01b03160217906109cc6116cc565b5050507f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce22816040516001600160a01b03909116815260200160405180910390a150565b6000806002610a1c6113c3565b906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b81526004016020604051808303818680610a5f611464565b158015610a7457600080610a716114b0565b50505b505a610a7e611606565b5050505050158015610a9d573d6000803e3d6000610a9a6114b0565b50505b505050506040513d6020811015610abc57600080610ab96114b0565b50505b810190808051935050505090565b6000806002610ad76113c3565b906101000a90046001600160a01b03166001600160a01b031663bc67f8325a610afe61141e565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160006040518083038160008780610b3a611464565b158015610b4f57600080610b4c6114b0565b50505b505a610b5961151b565b505050505050158015610b79573d6000803e3d6000610b766114b0565b50505b505050506002600090610b8a6113c3565b906101000a90046001600160a01b03166001600160a01b03166323b872dd8585856040516001600160e01b031960e086901b1681526001600160a01b039384166004820152919092166024820152604481019190915260640160206040518083038160008780610bf8611464565b158015610c0d57600080610c0a6114b0565b50505b505a610c1761151b565b505050505050158015610c37573d6000803e3d6000610c346114b0565b50505b505050506040513d6020811015610c5657600080610c536114b0565b50505b810190808051506001979650505050505050565b6000806002610c776113c3565b906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b81526004016020604051808303818680610a5f611464565b60006001610cc66113c3565b906101000a90046001600160a01b031681565b6000806002610ce66113c3565b906101000a90046001600160a01b03166001600160a01b03166370a08231836040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303818680610d3f611464565b158015610d5457600080610d516114b0565b50505b505a610d5e611606565b5050505050158015610d7d573d6000803e3d6000610d7a6114b0565b50505b505050506040513d6020811015610d9c57600080610d996114b0565b50505b81019080805195945050505050565b610db3611346565b806002600181610dc16113c3565b816001600160a01b0302191690836001600160a01b0316021790610de36116cc565b5050507f814250a3b8c79fcbe2ead2c131c952a278491c8f4322a79fe84b5040a810373e816040516001600160a01b03909116815260200160405180910390a150565b60006001610e326113c3565b906101000a90046001600160a01b03166001600160a01b03165a610e5461141e565b6001600160a01b031614610ea25760405162461bcd60e51b815260040180806020018281038252603581526020018061171b6035913960400191505060405180910390610e9f6114b0565b50505b7fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c600080610ece6113c3565b906101000a90046001600160a01b03166001600090610eeb6113c3565b906101000a90046001600160a01b03166040516001600160a01b039283168152911660208201526040908101905180910390a160006001610f2a6113c3565b906101000a90046001600160a01b03166000806101000a81610f4a6113c3565b816001600160a01b0302191690836001600160a01b0316021790610f6c6116cc565b5050506000600160006101000a81610f826113c3565b816001600160a01b0302191690836001600160a01b0316021790610fa46116cc565b505050565b600080610cc66113c3565b60006002610fc06113c3565b906101000a90046001600160a01b03166001600160a01b03165a610fe261141e565b6001600160a01b03161461103c5760405162461bcd60e51b8152602060048201526014602482015273135d5cdd081899481c1c9bde1e481d185c99d95d60621b6044820152606401604051809103906110396114b0565b50505b8560608882806020601f82018190048102016040519081016040528181529291906020840183838082843760009201919091525092935089925050811590506110a457600181146110af57600281146110bb57600381146110c857600481146110d6576110e1565b8260208301a06110e1565b868360208401a16110e1565b85878460208501a26110e1565b8486888560208601a36110e1565b838587898660208701a45b50505050505050505050565b6060600060026110fb6113c3565b906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186806106c2611464565b600080600261114b6113c3565b906101000a90046001600160a01b03166001600160a01b031663bc67f8325a61117261141e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087806111ae611464565b1580156111c3576000806111c06114b0565b50505b505a6111cd61151b565b5050505050501580156111ed573d6000803e3d60006111ea6114b0565b50505b5050505060026000906111fe6113c3565b906101000a90046001600160a01b03166001600160a01b031663a9059cbb84846040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260440160206040518083038160008780610922611464565b60006002610cc66113c3565b60008060026112786113c3565b906101000a90046001600160a01b03166001600160a01b031663dd62ed3e84846040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186806112d9611464565b1580156112ee576000806112eb6114b0565b50505b505a6112f8611606565b5050505050158015611317573d6000803e3d60006113146114b0565b50505b505050506040513d6020811015611336576000806113336114b0565b50505b8101908080519695505050505050565b6000806113516113c3565b906101000a90046001600160a01b03166001600160a01b03165a61137361141e565b6001600160a01b0316146113c15760405162461bcd60e51b815260040180806020018281038252602f815260200180611750602f9139604001915050604051809103906113be6114b0565b50505b565b6303daa959598160e01b8152836004820152602081602483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b8051935060005b6040811015610fa457600082820152602001611407565b6373509064598160e01b8152602081600483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b80516000825293506020611407565b638435035b598160e01b8152836004820152602081602483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b80516000825293506020611407565b632a2a7adb598160e01b8152600481016020815285602082015260005b868110156114e85780860151828201604001526020016114cd565b506020828760640184336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b505050565b6385979f76598160e01b815261154c565b808083111561098f575090919050565b808083101561098f575090919050565b836004820152846024820152606060448201528760648201526084810160005b8981101561158457808901518282015260200161156c565b506060828a60a40184336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b815160408301513d6000853e8c8c82606087013350600060045af150596115d98e3d61153c565b8d016115e5818761152c565b5b828110156115fa57600081526020016115e6565b50929d50505050505050565b638540661f598160e01b8152836004820152846024820152606060448201528660648201526084810160005b8881101561164a578088015182820152602001611632565b506060828960a40184336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b815160408301513d6000853e8b8b82606087013350600060045af1505961169f8d3d61153c565b8c016116ab818761152c565b5b828110156116c057600081526020016116ac565b50929c50505050505050565b6322bd64c0598160e01b8152836004820152846024820152600081604483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b60008152602061140756fe596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e6572736869704f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6e

Library Used

SafeDecimalMath : 0x0142f40c25ce1f1177ed131101fa19217396cb88

Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.