Contract 0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9 16

 
Txn Hash Method
Block
From
To
Value
0x25b2d8f4f51c47edd484840bc8d183450ab7944453d89db426a935e509ee5f6cApprove1102446082023-09-30 15:33:133 mins ago 0x86aabcd459587bc1a347ae1e2d15223856354ec9 IN Synthetix: sUSD Token0 ETH0.00002206550.03419903
0x0fa857450f1ccbbeb6e2b31266abda0d3366a76ec762a030ecdcf8c28aef6009Approve1102444962023-09-30 15:29:297 mins ago0x02a3a92b339a742815a5a13d9afda5e3d344e540 IN Synthetix: sUSD Token0 ETH0.0000204557760.030779005
0xda487cff0a4a9b4da0359c1df589fdfa461634e234fff768564b72516f100632Approve1102444472023-09-30 15:27:519 mins ago 0x86aabcd459587bc1a347ae1e2d15223856354ec9 IN Synthetix: sUSD Token0 ETH0.0000211985860.046774139
0x8276df40b5e49e4eb77e915fdc3f6dcc2ee54bcad218493d7fc846005dc9fd05Approve1102443212023-09-30 15:23:3913 mins ago0xe0b536a468496f9e9590f62e3b97f4a085b30283 IN Synthetix: sUSD Token0 ETH0.0000218615620.030679953
0xe6940537effab3cae5990b556099f78f52206ce96859d74bcc5a37f82c1847e8Approve1102443172023-09-30 15:23:3113 mins ago0x50ed348f85de0772a61ff63bbe33df8db30de1b2 IN Synthetix: sUSD Token0 ETH0.0000211261990.0309683
0x1434d3cf633f54f0418e366e566a004fd6d60f4fed2254266ae3b28e5b8f4299Approve1102441402023-09-30 15:17:3719 mins ago0xdb6d1c652f881c276d2a8bae27ea96e48b54e279 IN Synthetix: sUSD Token0 ETH0.0000200701250.036889008
0x2732818b296392cb5a82ddd51cddbf03e2cab538cf8ec547f469f35d9e33916fApprove1102439222023-09-30 15:10:2126 mins ago0x5a825c64df9dee1e35fe9041ca8d69509414c4a7 IN Synthetix: sUSD Token0 ETH0.0000242820630.040887555
0xa9d319712549aa764596df835b418c8749017ef3441668e1d2f397ea7abccec2Approve1102438942023-09-30 15:09:2527 mins ago0x6c76e681cbc01b283677cb5255587c22a29780f0 IN Synthetix: sUSD Token0 ETH0.0000334337060.147810205
0xa5308409ca564776d170dd90979025bf3637b13077230361cfeec50c2e9bd7eaApprove1102438352023-09-30 15:07:2729 mins ago0xda4c866715686a65a85b2f55b05061b6daa4e89f IN Synthetix: sUSD Token0 ETH0.0000265279130.04088174
0xbfa2218f029397daa62c8465c0bb1db80911b8f98c0c082c90bcbcf4e1094390Approve1102438352023-09-30 15:07:2729 mins ago0x378ee40034ad627195da0dadb8b6773b363adab8 IN Synthetix: sUSD Token0 ETH0.0000266110560.043142802
0x66e66adcf0729f182b9d139a1caaa7087e6e64998afdded38bb624f78808d413Transfer1102436472023-09-30 15:01:1136 mins ago0xdbee2b501021ec7d8d6fe48f1829118178d2e4a3 IN Synthetix: sUSD Token0 ETH0.0000249034490.034837314
0x18ec411493982d3b9f05c8a6d769285a2b60a6f99c39d9d9149ff461665c703cApprove1102436172023-09-30 15:00:1137 mins ago0x5ce0595582e42f88ce7c0062c5ec80dd5e76d193 IN Synthetix: sUSD Token0 ETH0.0000220713860.027770167
0xbda838d9a4022ecb2d784954c88d9814a4f5f93022b3f66f20cfa606fad9aeabApprove1102436092023-09-30 14:59:5537 mins ago0xea90b15aea60c87ec7b1726edda16b706f73e867 IN Synthetix: sUSD Token0 ETH0.0000254845860.031331264
0x5197baebb8eeaddfc178090902c71abb00de42ebf3b58f797d97e85cc4b3a9feApprove1102435892023-09-30 14:59:1537 mins ago0x2092a1067b2ed5c736bed299a4e5dfb5480f02d2 IN Synthetix: sUSD Token0 ETH0.0000176338270.0424667
0xd0e9db44516a66f55653af2a960d18ba2f1c6454b6454f59852fa3873f37766aApprove1102435042023-09-30 14:56:2540 mins ago 0xf3fefb661a19dc87e7e6a6b012efaff12fbe1e41 IN Synthetix: sUSD Token0 ETH0.0000201571180.045227585
0x0ffbf2210a5bc76f8143d7110253e04b0478946b1beed890a6ff376d78d7f76eApprove1102434552023-09-30 14:54:4742 mins ago0xacc2c59c954048fe4fc8d9f1c5dcc8b93afe53bf IN Synthetix: sUSD Token0 ETH0.0000187947770.0565645
0xa0c166b7639921ba8e9d52bbe5abcae0a79f46376d942511c325e58f55074ed4Approve1102432842023-09-30 14:49:0548 mins ago0xeda73c9fa6a90cea2bcc5529e9e12c012e13655b IN Synthetix: sUSD Token0 ETH0.000022563260.1349459
0xbf1b953f0cf1d2b3fc6080f0478e9a98e184ac2b24167c81a28adfba9e5a1dd3Transfer1102431932023-09-30 14:46:0351 mins ago0x1777c6d588fd931751762836811529c0073d6376 IN Synthetix: sUSD Token0 ETH0.0000389188630.1761481
0xe381c3d590146f0cef3ef3a638b4e6472ef19276d5e7f24bab42b95c28db9a5bApprove1102431042023-09-30 14:43:0554 mins ago0x26cb543de5893c7f7269fdf9821fa47ec9c10d91 IN Synthetix: sUSD Token0 ETH0.000016434810.027014547
0xd22e2492ee751ff7e25fdd57e4dca94205bb8bb430e53df04cf90b82b5decfddApprove1102429992023-09-30 14:39:3557 mins ago0xf06719b76bf01957d6bc19d84a5f2ac67f8e0cf1 IN Synthetix: sUSD Token0 ETH0.0000167968860.0287236
0x4882643a821cb7396c3a2da16c81cc4a26d82280d85a35c09ea46202f1612e4dApprove1102429792023-09-30 14:38:5558 mins ago0x7bc43896da0f7ac10ad5123765cc1b81f8911881 IN Synthetix: sUSD Token0 ETH0.0000163534130.033778755
0xa0d283f0ee663ff4161b8b0f8cb6e5449ba751677be78a4dbcef9b3fe93df735Approve1102428992023-09-30 14:36:151 hr ago0x5814075d9f40357c1054b42363eea9fc34f26e60 IN Synthetix: sUSD Token0 ETH0.0000226231080.028414433
0xba9929032d724ba362c3e693e38611f560d2a1e0aee74ce1ab30da783a2d1a6aApprove1102428472023-09-30 14:34:311 hr 2 mins ago0x4efc1db07e1e7f3af655c3f10f7f8cee842c116d IN Synthetix: sUSD Token0 ETH0.0000203126620.027363571
0xf40ebaa92aa304b6ed4c9b3f7b5edc2fb8499c3e699386985d911200c2545688Approve1102427902023-09-30 14:32:371 hr 4 mins ago0x8db63f56502b8596bc2e56939c1710034e5883e6 IN Synthetix: sUSD Token0 ETH0.0000214162830.028043806
0xbcb4f49074d426f58298a73ebfa9b71dc938deb745df4b2ac79784e4b84db825Approve1102427442023-09-30 14:31:051 hr 6 mins ago0xcd0b67a61e5e8f4616c19e421e929813b6d947df IN Synthetix: sUSD Token0 ETH0.00001394230.0314297
[ Download CSV Export 

OVERVIEW

A synthetic asset issued by the Synthetix protocol which tracks the price of the United States Dollar (USD). sUSD can be traded on Synthetix.Exchange for other synthetic assets through a peer-to-contract system with no slippage.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x427b6f6233866034e60643317997ad372654b07596ab3ada421f7380c78b79ac1075583842023-07-30 11:12:2562 days 4 hrs ago Synthetix: sUSD Token 0xdfa2d3a0d32f870d87f8a0d7aa6b9cdeb7bc5adb0 ETH
0x427b6f6233866034e60643317997ad372654b07596ab3ada421f7380c78b79ac1075583842023-07-30 11:12:2562 days 4 hrs ago 0xd14451e0fa44b18f08aeb1e4a4d092b823caca68Synthetix: sUSD Token0 ETH
0x427b6f6233866034e60643317997ad372654b07596ab3ada421f7380c78b79ac1075583842023-07-30 11:12:2562 days 4 hrs ago 0xdfa2d3a0d32f870d87f8a0d7aa6b9cdeb7bc5adbSynthetix: sUSD Token0 ETH
0x427b6f6233866034e60643317997ad372654b07596ab3ada421f7380c78b79ac1075583842023-07-30 11:12:2562 days 4 hrs ago Synthetix: sUSD Token 0xdfa2d3a0d32f870d87f8a0d7aa6b9cdeb7bc5adb0 ETH
0x427b6f6233866034e60643317997ad372654b07596ab3ada421f7380c78b79ac1075583842023-07-30 11:12:2562 days 4 hrs ago Synthetix: sUSD Token 0xdfa2d3a0d32f870d87f8a0d7aa6b9cdeb7bc5adb0 ETH
0x427b6f6233866034e60643317997ad372654b07596ab3ada421f7380c78b79ac1075583842023-07-30 11:12:2562 days 4 hrs ago Aave: aSUSD Token V3Synthetix: sUSD Token0 ETH
0x427b6f6233866034e60643317997ad372654b07596ab3ada421f7380c78b79ac1075583842023-07-30 11:12:2562 days 4 hrs ago Synthetix: sUSD Token 0xdfa2d3a0d32f870d87f8a0d7aa6b9cdeb7bc5adb0 ETH
0x427b6f6233866034e60643317997ad372654b07596ab3ada421f7380c78b79ac1075583842023-07-30 11:12:2562 days 4 hrs ago 0x9999e52681287b265d78a5415e613ee619420bf6Synthetix: sUSD Token0 ETH
0x427b6f6233866034e60643317997ad372654b07596ab3ada421f7380c78b79ac1075583842023-07-30 11:12:2562 days 4 hrs ago Synthetix: sUSD Token 0xdfa2d3a0d32f870d87f8a0d7aa6b9cdeb7bc5adb0 ETH
0x427b6f6233866034e60643317997ad372654b07596ab3ada421f7380c78b79ac1075583842023-07-30 11:12:2562 days 4 hrs ago 0xd14451e0fa44b18f08aeb1e4a4d092b823caca68Synthetix: sUSD Token0 ETH
0xac68280c59745b3ae7a60ccb7a9bf73d0db5fad43be3e0d3e1e676b1a90d5ec61075583832023-07-30 11:12:2362 days 4 hrs ago 0xdfa2d3a0d32f870d87f8a0d7aa6b9cdeb7bc5adbSynthetix: sUSD Token0 ETH
0xac68280c59745b3ae7a60ccb7a9bf73d0db5fad43be3e0d3e1e676b1a90d5ec61075583832023-07-30 11:12:2362 days 4 hrs ago Synthetix: sUSD Token 0xdfa2d3a0d32f870d87f8a0d7aa6b9cdeb7bc5adb0 ETH
0xac68280c59745b3ae7a60ccb7a9bf73d0db5fad43be3e0d3e1e676b1a90d5ec61075583832023-07-30 11:12:2362 days 4 hrs ago Synthetix: sUSD Token 0xdfa2d3a0d32f870d87f8a0d7aa6b9cdeb7bc5adb0 ETH
0xac68280c59745b3ae7a60ccb7a9bf73d0db5fad43be3e0d3e1e676b1a90d5ec61075583832023-07-30 11:12:2362 days 4 hrs ago Aave: aSUSD Token V3Synthetix: sUSD Token0 ETH
0xac68280c59745b3ae7a60ccb7a9bf73d0db5fad43be3e0d3e1e676b1a90d5ec61075583832023-07-30 11:12:2362 days 4 hrs ago Synthetix: sUSD Token 0xdfa2d3a0d32f870d87f8a0d7aa6b9cdeb7bc5adb0 ETH
0xac68280c59745b3ae7a60ccb7a9bf73d0db5fad43be3e0d3e1e676b1a90d5ec61075583832023-07-30 11:12:2362 days 4 hrs ago 0xa9f3c3cae095527061e6d270dbe163693e6fda9dSynthetix: sUSD Token0 ETH
0xa91c80505c0f980771244b91b1d41249dde61ef3ea0669359218cc0b73d66f131075583792023-07-30 11:12:1562 days 4 hrs ago Synthetix: sUSD Token 0xdfa2d3a0d32f870d87f8a0d7aa6b9cdeb7bc5adb0 ETH
0xa91c80505c0f980771244b91b1d41249dde61ef3ea0669359218cc0b73d66f131075583792023-07-30 11:12:1562 days 4 hrs ago 0x6d5ba400640226e24b50214d2bbb3d4db8e6e15aSynthetix: sUSD Token0 ETH
0xa91c80505c0f980771244b91b1d41249dde61ef3ea0669359218cc0b73d66f131075583792023-07-30 11:12:1562 days 4 hrs ago Synthetix: sUSD Token 0xdfa2d3a0d32f870d87f8a0d7aa6b9cdeb7bc5adb0 ETH
0xa91c80505c0f980771244b91b1d41249dde61ef3ea0669359218cc0b73d66f131075583792023-07-30 11:12:1562 days 4 hrs ago 0x6d5ba400640226e24b50214d2bbb3d4db8e6e15aSynthetix: sUSD Token0 ETH
0xa91c80505c0f980771244b91b1d41249dde61ef3ea0669359218cc0b73d66f131075583792023-07-30 11:12:1562 days 4 hrs ago 0xdfa2d3a0d32f870d87f8a0d7aa6b9cdeb7bc5adbSynthetix: sUSD Token0 ETH
0xa91c80505c0f980771244b91b1d41249dde61ef3ea0669359218cc0b73d66f131075583792023-07-30 11:12:1562 days 4 hrs ago Synthetix: sUSD Token 0xdfa2d3a0d32f870d87f8a0d7aa6b9cdeb7bc5adb0 ETH
0xa91c80505c0f980771244b91b1d41249dde61ef3ea0669359218cc0b73d66f131075583792023-07-30 11:12:1562 days 4 hrs ago Synthetix: sUSD Token 0xdfa2d3a0d32f870d87f8a0d7aa6b9cdeb7bc5adb0 ETH
0xa91c80505c0f980771244b91b1d41249dde61ef3ea0669359218cc0b73d66f131075583792023-07-30 11:12:1562 days 4 hrs ago 0x6d5ba400640226e24b50214d2bbb3d4db8e6e15aSynthetix: sUSD Token0 ETH
0x6b7e220e3b7879b85df6456914ebc73ea972c12d54143af07cea87411b72a1fc1075583592023-07-30 11:11:3562 days 4 hrs ago 0xdfa2d3a0d32f870d87f8a0d7aa6b9cdeb7bc5adbSynthetix: sUSD Token0 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Genesis Bytecode Match Only)

Contract Name:
ProxyERC20

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

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

/*

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;

    /* 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 setMessageSender(address sender) external onlyProxy {
        messageSender = sender;
    }

    modifier onlyProxy {
        _onlyProxy();
        _;
    }

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

    modifier optionalProxy {
        _optionalProxy();
        _;
    }

    function _optionalProxy() private {
        if (Proxy(msg.sender) != proxy && 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 && 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"}]

6080604052600436106100f35760003560e01c8063776d1a011161008a57806395d89b411161005957806395d89b4114610473578063a9059cbb14610488578063d4b83992146104c1578063dd62ed3e146104d6576100f3565b8063776d1a011461038157806379ba5097146103b45780638da5cb5b146103c9578063907dff97146103de576100f3565b806323b872dd116100c657806323b872dd146102af578063313ce567146102f257806353a47bb71461031d57806370a082311461034e576100f3565b806306fdde031461017c578063095ea7b3146102065780631627540c1461025357806318160ddd14610288575b60025460408051635e33fc1960e11b815233600482015290516001600160a01b039092169163bc67f8329160248082019260009290919082900301818387803b15801561013f57600080fd5b505af1158015610153573d6000803e3d6000fd5b5050505060405136600082376000803683346002545af13d6000833e80610178573d82fd5b3d82f35b34801561018857600080fd5b50610191610511565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101cb5781810151838201526020016101b3565b50505050905090810190601f1680156101f85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021257600080fd5b5061023f6004803603604081101561022957600080fd5b506001600160a01b038135169060200135610648565b604080519115158252519081900360200190f35b34801561025f57600080fd5b506102866004803603602081101561027657600080fd5b50356001600160a01b0316610736565b005b34801561029457600080fd5b5061029d610792565b60408051918252519081900360200190f35b3480156102bb57600080fd5b5061023f600480360360608110156102d257600080fd5b506001600160a01b03813581169160208101359091169060400135610808565b3480156102fe57600080fd5b506103076108ff565b6040805160ff9092168252519081900360200190f35b34801561032957600080fd5b50610332610944565b604080516001600160a01b039092168252519081900360200190f35b34801561035a57600080fd5b5061029d6004803603602081101561037157600080fd5b50356001600160a01b0316610953565b34801561038d57600080fd5b50610286600480360360208110156103a457600080fd5b50356001600160a01b03166109d6565b3480156103c057600080fd5b50610286610a32565b3480156103d557600080fd5b50610332610aee565b3480156103ea57600080fd5b50610286600480360360c081101561040157600080fd5b81019060208101813564010000000081111561041c57600080fd5b82018360208201111561042e57600080fd5b8035906020019184600183028401116401000000008311171561045057600080fd5b919350915080359060208101359060408101359060608101359060800135610afd565b34801561047f57600080fd5b50610191610c06565b34801561049457600080fd5b5061023f600480360360408110156104ab57600080fd5b506001600160a01b038135169060200135610c4b565b3480156104cd57600080fd5b50610332610d04565b3480156104e257600080fd5b5061029d600480360360408110156104f957600080fd5b506001600160a01b0381358116916020013516610d13565b600254604080516306fdde0360e01b815290516060926001600160a01b0316916306fdde03916004808301926000929190829003018186803b15801561055657600080fd5b505afa15801561056a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561059357600080fd5b81019080805160405193929190846401000000008211156105b357600080fd5b9083019060208201858111156105c857600080fd5b82516401000000008111828201881017156105e257600080fd5b82525081516020918201929091019080838360005b8381101561060f5781810151838201526020016105f7565b50505050905090810190601f16801561063c5780820380516001836020036101000a031916815260200191505b50604052505050905090565b60025460408051635e33fc1960e11b815233600482015290516000926001600160a01b03169163bc67f832916024808301928692919082900301818387803b15801561069357600080fd5b505af11580156106a7573d6000803e3d6000fd5b50506002546040805163095ea7b360e01b81526001600160a01b03888116600483015260248201889052915191909216935063095ea7b3925060448083019260209291908290030181600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050506040513d602081101561072b57600080fd5b506001949350505050565b61073e610d9f565b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b600254604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b1580156107d757600080fd5b505afa1580156107eb573d6000803e3d6000fd5b505050506040513d602081101561080157600080fd5b5051905090565b60025460408051635e33fc1960e11b815233600482015290516000926001600160a01b03169163bc67f832916024808301928692919082900301818387803b15801561085357600080fd5b505af1158015610867573d6000803e3d6000fd5b5050600254604080516323b872dd60e01b81526001600160a01b03898116600483015288811660248301526044820188905291519190921693506323b872dd925060648083019260209291908290030181600087803b1580156108c957600080fd5b505af11580156108dd573d6000803e3d6000fd5b505050506040513d60208110156108f357600080fd5b50600195945050505050565b6002546040805163313ce56760e01b815290516000926001600160a01b03169163313ce567916004808301926020929190829003018186803b1580156107d757600080fd5b6001546001600160a01b031681565b600254604080516370a0823160e01b81526001600160a01b038481166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b1580156109a457600080fd5b505afa1580156109b8573d6000803e3d6000fd5b505050506040513d60208110156109ce57600080fd5b505192915050565b6109de610d9f565b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f814250a3b8c79fcbe2ead2c131c952a278491c8f4322a79fe84b5040a810373e9181900360200190a150565b6001546001600160a01b03163314610a7b5760405162461bcd60e51b8152600401808060200182810382526035815260200180610deb6035913960400191505060405180910390fd5b600054600154604080516001600160a01b03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b031681565b6002546001600160a01b03163314610b53576040805162461bcd60e51b8152602060048201526014602482015273135d5cdd081899481c1c9bde1e481d185c99d95d60621b604482015290519081900360640190fd5b604080516020601f89018190048102820181019092528781528791606091908a908490819084018382808284376000920191909152509293508992505081159050610bbd5760018114610bc85760028114610bd45760038114610be15760048114610bef57610bfa565b8260208301a0610bfa565b868360208401a1610bfa565b85878460208501a2610bfa565b8486888560208601a3610bfa565b838587898660208701a45b50505050505050505050565b600254604080516395d89b4160e01b815290516060926001600160a01b0316916395d89b41916004808301926000929190829003018186803b15801561055657600080fd5b60025460408051635e33fc1960e11b815233600482015290516000926001600160a01b03169163bc67f832916024808301928692919082900301818387803b158015610c9657600080fd5b505af1158015610caa573d6000803e3d6000fd5b50506002546040805163a9059cbb60e01b81526001600160a01b03888116600483015260248201889052915191909216935063a9059cbb925060448083019260209291908290030181600087803b15801561070157600080fd5b6002546001600160a01b031681565b60025460408051636eb1769f60e11b81526001600160a01b03858116600483015284811660248301529151600093929092169163dd62ed3e91604480820192602092909190829003018186803b158015610d6c57600080fd5b505afa158015610d80573d6000803e3d6000fd5b505050506040513d6020811015610d9657600080fd5b50519392505050565b6000546001600160a01b03163314610de85760405162461bcd60e51b815260040180806020018281038252602f815260200180610e20602f913960400191505060405180910390fd5b56fe596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e6572736869704f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6ea265627a7a723158208e94edf35869a730a856486697ccc72821948d0c9c45ee17f049d8c4e3cbb9a564736f6c63430005100032

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.