Contract 0x8700daec35af8ff88c16bdf0418774cb3d7599b4 7

 

Contract Overview

Synthetix: SNX Token
Balance:
0 Ether

EtherValue:
$0.00

Token:
Txn Hash Method
Index
From
To
Value
0xc1ad3ce74c341b712c272d43f77858bd862a25bc79b1b03e6c0fd3f1c8c8097eIssue Max Synths137371722022-07-03 6:02:312 mins ago0x9b32e12d0678628aee378dbdf92f7f66f3f4df80 IN Synthetix: SNX Token0 Ether0.0000330442210.001
0xbd9994a69213b51536a16e3c11f8049ca9d26da19c9c1cf3adbe508d296c99d8Issue Max Synths137371562022-07-03 6:02:152 mins ago0x7e62d7bbea6c1a843552f6dbb6e1395bad769226 IN Synthetix: SNX Token0 Ether0.0000375370130.001
0x1595339359364f3511d0b5b4b9188a269a2d0542b77ff34975f8cc508c9cd32dApprove137369872022-07-03 5:58:455 mins ago0x1efb3038de631cfce0c0a231952c6b90d5d9cfe5 IN Synthetix: SNX Token0 Ether0.0000405713280.001
0x4c629eadb48f34910b8d127064f586e4edab8d2e894099882b9db4fc8ada2a83Issue Max Synths137368022022-07-03 5:56:098 mins ago0xcd59da774a35b145e9c81ad8a87914219633f83e IN Synthetix: SNX Token0 Ether0.000040700420.001
0x5b4ada0963c28ba1b689ef0f3f152aea1875d6b81f0f4da5b686e5bcdc2e1a59Issue Max Synths137364572022-07-03 5:47:2617 mins ago0x4335335c596ac1fb3872a4f3b02ddc5418f8e33d IN Synthetix: SNX Token0 Ether0.0000702480720.001
0x73b6ecd919b20cc988ef099f90fdb7362183a68825746a1cad7b2a11ad933b7eBurn Synths To T...137364302022-07-03 5:46:3318 mins ago0xd237c0ec6295fdb8566cfa3d409ad22972042bdd IN Synthetix: SNX Token0 Ether0.0000449513560.001
0xfda56bdf88c073e86f3af3cd8d189537ab3e456ba690854e07088c4e6cfa92a0Burn Synths To T...137362082022-07-03 5:44:3420 mins ago0x42dd1b3ea98420f970d0175518802a641beeb86e IN Synthetix: SNX Token0 Ether0.0000451405140.001
0xc6769cff87f63c3acd76f4c3863f41abf46b26723c343a5605a93b471e029e42Burn Synths To T...137361852022-07-03 5:44:0320 mins ago0x9311d29b185361e341803504a8c5aa5e9146171f IN Synthetix: SNX Token0 Ether0.0000401702960.001
0xc1ef95f93f68fcd125b25368c1b808cb8b5ae4f7be02f8bb7c1f7ca9e32114b0Exchange With Tr...137361032022-07-03 5:40:4423 mins ago0xa54e2cbda105729b63df2a8c9e9a5167d8060c11 IN Synthetix: SNX Token0 Ether0.0000485195280.001
0x25b8d314aa1d0f5c7b47f56a01b69bacca3f8c1b5b2e5bd24ce6be170ec1c2e6Exchange With Tr...137360752022-07-03 5:39:5824 mins ago0xa54e2cbda105729b63df2a8c9e9a5167d8060c11 IN Synthetix: SNX Token0 Ether0.0000576818920.001
0x676def93f8de1d10223ea14c6fd86ea292be5a71b3307ea7593c31557ad05bf2Exchange With Tr...137360582022-07-03 5:39:0625 mins ago0xa54e2cbda105729b63df2a8c9e9a5167d8060c11 IN Synthetix: SNX Token0 Ether0.0000685987790.001
0xe333354bfc32ff5b642d5a029d9868041af40b82d5846d4a9de3e9bdd2a2aca5Burn Synths To T...137360322022-07-03 5:38:1726 mins ago0x8e5f0095afe4cbb80880f10c009ad297b344f667 IN Synthetix: SNX Token0 Ether0.0000524776650.001
0xcc289a7f29fe6ffa59b564978f8b87d5502837b1a9719db415d068dfb04cac77Exchange With Tr...137360142022-07-03 5:37:4426 mins ago0xa54e2cbda105729b63df2a8c9e9a5167d8060c11 IN Synthetix: SNX Token0 Ether0.0000560562530.001
0x26ee6ac78d26a58d6e8fb3dd8508e0c9cd3641ea9adc4bee95a1f113a7f1ca15Liquidate Self137358402022-07-03 5:35:2229 mins ago0x3ef90ea80ced403891c5dfd029ddd980ef0ee8ad IN Synthetix: SNX Token0 Ether0.0000431226960.001
0xe5dee600debaee1b68911a3fbea905be88cb3a0db3eaa7b19d18c17612410e6cLiquidate Self137358162022-07-03 5:35:0229 mins ago0xaf806997a51a29ad14905e322d81154ba81aaa04 IN Synthetix: SNX Token0 Ether0.0000363850560.001
0xf969de877a7b8dcf4139ee8dbd578f4fdb83cc3720aaca12b21ca4674af7f43aExchange With Tr...137352912022-07-03 5:26:5537 mins ago 0x2c23f12195077bee4ac4f7d598af30904a5fbf91 IN Synthetix: SNX Token0 Ether0.0000483586490.001
0x259acf8c0e56f9abe92d197adf06fb554052d22104c9546ebdef8099fbd2d599Issue Max Synths137349012022-07-03 5:20:3744 mins ago0x215b67d707ced250c3803a19348e9c565e42d7a3 IN Synthetix: SNX Token0 Ether0.0000450678960.001
0x2e6d7b15b26f5a6d8b014a6726afc7de92a554af9762a68b4816da769ce00de9Issue Max Synths137345252022-07-03 5:16:3148 mins ago0x0eec442c632f5da69cac03439cecd6cc001f1a71 IN Synthetix: SNX Token0 Ether0.0000528106740.001
0x1a0d0f346b437b743de7477f06ab0b2b883ba1b43272c0ee734b329814c9f05eIssue Max Synths137341892022-07-03 5:13:2851 mins ago0x6f2108d752dd49db0ffec0a510d0449f092e53a7 IN Synthetix: SNX Token0 Ether0.0000532660790.001
0x7364fe7e3c4021d13158a5df4b88a3cde6266e0aa641834015a0bfaf165e11cdIssue Max Synths137340582022-07-03 5:12:0952 mins ago 0x2c23f12195077bee4ac4f7d598af30904a5fbf91 IN Synthetix: SNX Token0 Ether0.0000537296860.001
0xce0350f11a0762f8577a00471dc0f6b19c5e5ecdf450f1e0a54feff5904b9f05Issue Max Synths137340562022-07-03 5:11:5352 mins ago0x4555ddf20dd9091fa7aa7cefa426a14cbbab4876 IN Synthetix: SNX Token0 Ether0.0000535050450.001
0x924d943ec477c8d7908763bbfade21c67e30007bbbd089f73c86786991a054f9Issue Max Synths137337932022-07-03 5:10:2054 mins ago0x3f491c542a449243c7a33457847245445c747f48 IN Synthetix: SNX Token0 Ether0.0000508253160.001
0xb22f667670242dfc018821b20534d256f3334c9b0a4a1ba8fad373285254d9d2Issue Synths137336022022-07-03 5:07:1057 mins ago0x47a92c6ad39044362f8dd4f87036d2e0c147ad81 IN Synthetix: SNX Token0 Ether0.0000415266290.001
0xfbd92b49544d74b92dbd2a3625dad301b2ab17824a3ee1bef3718af9a1142f0bIssue Max Synths137335922022-07-03 5:07:1057 mins ago0xdcb7e8f1b586c94dde9b430557e4df6727779aca IN Synthetix: SNX Token0 Ether0.0000393118910.001
0xaceb9822f1e7c0004b9ebf4c9c9682652f827268b6535c95d48191889c3f2deeIssue Max Synths137334182022-07-03 5:05:0259 mins ago0xe76be9c1e10910d6bc6b63d8031729747910c2f6 IN Synthetix: SNX Token0 Ether0.0000569338930.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
0x1595339359364f3511d0b5b4b9188a269a2d0542b77ff34975f8cc508c9cd32d137369872022-07-03 5:58:455 mins ago 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744dSynthetix: SNX Token0 Ether
0x1595339359364f3511d0b5b4b9188a269a2d0542b77ff34975f8cc508c9cd32d137369872022-07-03 5:58:455 mins ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0x1595339359364f3511d0b5b4b9188a269a2d0542b77ff34975f8cc508c9cd32d137369872022-07-03 5:58:455 mins ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0x5ab43b06a2ad97a5b571f7b73852f9b88ef12f782f53671c64f843bc343ba656137369442022-07-03 5:58:156 mins ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0x5ab43b06a2ad97a5b571f7b73852f9b88ef12f782f53671c64f843bc343ba656137369442022-07-03 5:58:156 mins ago 0x9056eb7ca982a5dd65a584189994e6a27318067dSynthetix: SNX Token0 Ether
0x5ab43b06a2ad97a5b571f7b73852f9b88ef12f782f53671c64f843bc343ba656137369442022-07-03 5:58:156 mins ago 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744dSynthetix: SNX Token0 Ether
0x5ab43b06a2ad97a5b571f7b73852f9b88ef12f782f53671c64f843bc343ba656137369442022-07-03 5:58:156 mins ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0x5ab43b06a2ad97a5b571f7b73852f9b88ef12f782f53671c64f843bc343ba656137369442022-07-03 5:58:156 mins ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0x5ab43b06a2ad97a5b571f7b73852f9b88ef12f782f53671c64f843bc343ba656137369442022-07-03 5:58:156 mins ago 0x9056eb7ca982a5dd65a584189994e6a27318067dSynthetix: SNX Token0 Ether
0x5ab43b06a2ad97a5b571f7b73852f9b88ef12f782f53671c64f843bc343ba656137369442022-07-03 5:58:156 mins ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0x5ab43b06a2ad97a5b571f7b73852f9b88ef12f782f53671c64f843bc343ba656137369442022-07-03 5:58:156 mins ago 0x9056eb7ca982a5dd65a584189994e6a27318067dSynthetix: SNX Token0 Ether
0x5ab43b06a2ad97a5b571f7b73852f9b88ef12f782f53671c64f843bc343ba656137369442022-07-03 5:58:156 mins ago 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744dSynthetix: SNX Token0 Ether
0x5ab43b06a2ad97a5b571f7b73852f9b88ef12f782f53671c64f843bc343ba656137369442022-07-03 5:58:156 mins ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0x5ab43b06a2ad97a5b571f7b73852f9b88ef12f782f53671c64f843bc343ba656137369442022-07-03 5:58:156 mins ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0x5ab43b06a2ad97a5b571f7b73852f9b88ef12f782f53671c64f843bc343ba656137369442022-07-03 5:58:156 mins ago 0x0392b358ce4547601befa962680bede836606ae2Synthetix: SNX Token0 Ether
0x5ab43b06a2ad97a5b571f7b73852f9b88ef12f782f53671c64f843bc343ba656137369442022-07-03 5:58:156 mins ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0x5ab43b06a2ad97a5b571f7b73852f9b88ef12f782f53671c64f843bc343ba656137369442022-07-03 5:58:156 mins ago 0x9056eb7ca982a5dd65a584189994e6a27318067dSynthetix: SNX Token0 Ether
0x5ab43b06a2ad97a5b571f7b73852f9b88ef12f782f53671c64f843bc343ba656137369442022-07-03 5:58:156 mins ago 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744dSynthetix: SNX Token0 Ether
0x5ab43b06a2ad97a5b571f7b73852f9b88ef12f782f53671c64f843bc343ba656137369442022-07-03 5:58:156 mins ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0x5ab43b06a2ad97a5b571f7b73852f9b88ef12f782f53671c64f843bc343ba656137369442022-07-03 5:58:156 mins ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0x5ab43b06a2ad97a5b571f7b73852f9b88ef12f782f53671c64f843bc343ba656137369442022-07-03 5:58:156 mins ago 0x9056eb7ca982a5dd65a584189994e6a27318067dSynthetix: SNX Token0 Ether
0x5ab43b06a2ad97a5b571f7b73852f9b88ef12f782f53671c64f843bc343ba656137369442022-07-03 5:58:156 mins ago Synthetix: SNX Token 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744d0 Ether
0x5ab43b06a2ad97a5b571f7b73852f9b88ef12f782f53671c64f843bc343ba656137369442022-07-03 5:58:156 mins ago 0x9056eb7ca982a5dd65a584189994e6a27318067dSynthetix: SNX Token0 Ether
0x5ab43b06a2ad97a5b571f7b73852f9b88ef12f782f53671c64f843bc343ba656137369442022-07-03 5:58:156 mins ago 0xfe8e48bf36ccc3254081ec8c65965d1c8b2e744dSynthetix: SNX Token0 Ether
0x5ab43b06a2ad97a5b571f7b73852f9b88ef12f782f53671c64f843bc343ba656137369442022-07-03 5:58:156 mins 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.