Contract 0x5814d3c40a5A951EFdb4A37Bd93f4407450Cd424 1

Contract Overview

Balance:
0.01 Ether
Txn Hash
Method
Block
From
To
Value
0xb28e380d066aaa8b3533600c1db5b48369dd540d80ba6ff2460fcaf7d86b3dc3Mint323523702022-06-24 12:33:2810 days 11 hrs ago0x1c9f9483e1f7b5e4c455ef80d1c26773a541cfe8 IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4240.03 Ether0.00065457 2
0xe42193aad94e79086de2af7d899a3f38fd0f400bd7c7ad83e15dfeb79f13182cNominate New Own...292665822022-01-15 3:17:28170 days 20 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4240 Ether0.00004707 1
0x3663a2069758c8ce2b3a5580ac83df3b38dc69f0b86072adb1a33b149b640853Transfer253716442021-06-09 20:30:24390 days 3 hrs ago0xe30a877cb11d3f1baac590cf208d24aa8946b6f9 IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4240.01 Ether0.000042082
0xb9c2a7bc35b8b7a944e06eecec7bd6c86804e73aba5b8003bfa18fc5fda20faaBurn251126732021-05-28 7:01:16402 days 16 hrs ago0x15adbea538f541271da5e4436e41285e386e3336 IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4240 Ether0.000470545
0x0c669da0ddb19ce0477963655589b4e27259df58f84c4a35b1157429e9bf8d27Burn251126402021-05-28 6:58:56402 days 16 hrs ago0x15adbea538f541271da5e4436e41285e386e3336 IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4240 Ether0.000470185
0x55d4f43cb4b4406936b141156ec94cda71d4e61c14b40b1d55db86a8f4cac56cMint251124742021-05-28 6:47:08402 days 16 hrs ago0x15adbea538f541271da5e4436e41285e386e3336 IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4241 Ether0.001292585
0x571d9e0ddb5f46d168092daae718244bd7b29a7a224bf6bf8af890c4263ac531Burn248960772021-05-17 17:53:24413 days 5 hrs ago0x57170b6ae91d06102ec7d984d551d590ce1504e5 IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4240 Ether0.000646632
0x5ae36fb839e49a68487a6e226bf12817017871c219a38949394be945b5a34c73Burn248960752021-05-17 17:53:16413 days 5 hrs ago0x57170b6ae91d06102ec7d984d551d590ce1504e5 IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4240 Ether0.000062
0xd1bc8f8e0482f79a260db731e854bf9e255532302020341d17279e3029a7ef9fMint248960552021-05-17 17:51:56413 days 5 hrs ago0x57170b6ae91d06102ec7d984d551d590ce1504e5 IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4241 Ether0.000476762
0x9123a05427d434d6a9e46af2ee281130aac0273b033e8f743f17630e6ffc0ba4Mint248959792021-05-17 17:46:52413 days 5 hrs ago0x57170b6ae91d06102ec7d984d551d590ce1504e5 IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4240.1 Ether0.000476762
0x02c9001674c8dd172476815d24b36f32ed1f4479ef497c3d3dd7c62d65f2f910Mint248959462021-05-17 17:44:40413 days 5 hrs ago0x57170b6ae91d06102ec7d984d551d590ce1504e5 IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4240.1 Ether0.000476762
0x3eb1ef8b00d8d3083918edb11ecff3c6627b9d29efc550fe55bc29bc28141c9cMint248422822021-05-15 6:06:12415 days 17 hrs ago0xd18a8a30372b7a9fb8aa0ee8b85524a3a6ea3928 IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4240.01 Ether0.001448415
0x408f6baecc9ced0189dd49a2bd1364512ffe5cb9d9c2d40bc975fdf48183c057Mint248170392021-05-13 19:22:44417 days 4 hrs ago0x96e13626ea705905ecd7cb7fdf58f3305bb20d69 IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4240.01 Ether0.000476762
0x40697537158a31494f204460e4e302bb3efc8a6616153af7e1ad7363eb5fc523Mint248168922021-05-13 19:08:08417 days 4 hrs ago0x96e13626ea705905ecd7cb7fdf58f3305bb20d69 IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4240.01 Ether0.000476762
0xe4367889dec701cb71d6d8b972410588ba45643ca1fb33287d92b3ee8292da32Mint248168702021-05-13 19:05:56417 days 4 hrs ago0x96e13626ea705905ecd7cb7fdf58f3305bb20d69 IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4240.01 Ether0.000766443
0x3897e2f3faa1cf83b3d82508f3b005f3a46d5236d8c8caf969ac894e47fe3e75Mint248153782021-05-13 16:37:32417 days 6 hrs ago0xe51a50e95c5a92cb4650eacf6ffcb3eb25c7a012 IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4240.5 Ether0.000971643
0x5ba10747cc868c13a315c7edff7c3d4a59ba7c4a7db13e8bae4ddda10228189dMint248104172021-05-13 8:37:12417 days 14 hrs ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4241 Ether0.000238381
0x3d39141b628c247dbb5343a2f2675990733eaae82d8d568b6775b12d66161a0bBurn248103742021-05-13 8:32:56417 days 15 hrs ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4240 Ether0.000258791
0x4b2776d8045160cf05d82eb6ca3f2edf3291df4ccfe783c2296b25a49bea7ebdBurn248103542021-05-13 8:30:56417 days 15 hrs ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4240 Ether0.000261841
0x4b430545e3a02d0bdd73eccd1900e3fa397af6ac3ad11f0380a6eb33dec4195bBurn248103102021-05-13 8:26:32417 days 15 hrs ago0xde910777c787903f78c89e7a0bf7f4c435cbb1fe IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4240 Ether0.000263931
0xe101fb63958067e28b2ca8d75cc3bb0d09d6713d5403b925d08e8f99c1fe5e3aMint248102832021-05-13 8:23:48417 days 15 hrs ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4240 Ether0.000238381
0x737054f29be79de56941032dee10fc3e6f29b519cc4a113b9c9c843c9d64538fMint248102712021-05-13 8:22:36417 days 15 hrs ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4240.125 Ether0.000238381
0x59202a572240244fc73c0d0f9616e72b1836e446f040e894d90fd46d3e657a5bMint248102552021-05-13 8:21:00417 days 15 hrs ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4240.25 Ether0.000238381
0x783cb47fa05cf8b41bd30bdc1560c033d14021c44842ec85f67430171f6a045dMint248102382021-05-13 8:19:20417 days 15 hrs ago0xde910777c787903f78c89e7a0bf7f4c435cbb1fe IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4240.001 Ether0.000255481
0x4a6f749410fadaee701dcada7772c4b0c2d2f5665ab7661b61c4e58fd2cc8d4fMint248102222021-05-13 8:17:44417 days 15 hrs ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0x5814d3c40a5a951efdb4a37bd93f4407450cd4240.25 Ether0.000294581
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xb28e380d066aaa8b3533600c1db5b48369dd540d80ba6ff2460fcaf7d86b3dc3323523702022-06-24 12:33:2810 days 11 hrs ago 0x5814d3c40a5a951efdb4a37bd93f4407450cd424 0x1da40f4d00109f71ea610a2dc0bf2698e19034b80 Ether
0xb28e380d066aaa8b3533600c1db5b48369dd540d80ba6ff2460fcaf7d86b3dc3323523702022-06-24 12:33:2810 days 11 hrs ago 0x5814d3c40a5a951efdb4a37bd93f4407450cd424 0x1da40f4d00109f71ea610a2dc0bf2698e19034b80 Ether
0xb28e380d066aaa8b3533600c1db5b48369dd540d80ba6ff2460fcaf7d86b3dc3323523702022-06-24 12:33:2810 days 11 hrs ago 0x5814d3c40a5a951efdb4a37bd93f4407450cd424 0x44af736495544a726ed15cb0ebe2d87a6bcc18320 Ether
0xb28e380d066aaa8b3533600c1db5b48369dd540d80ba6ff2460fcaf7d86b3dc3323523702022-06-24 12:33:2810 days 11 hrs ago 0x5814d3c40a5a951efdb4a37bd93f4407450cd424 0xd0a1e359811322d97991e03f863a0c30c2cf029c0 Ether
0xb28e380d066aaa8b3533600c1db5b48369dd540d80ba6ff2460fcaf7d86b3dc3323523702022-06-24 12:33:2810 days 11 hrs ago 0x5814d3c40a5a951efdb4a37bd93f4407450cd424 0x44af736495544a726ed15cb0ebe2d87a6bcc18320 Ether
0xb28e380d066aaa8b3533600c1db5b48369dd540d80ba6ff2460fcaf7d86b3dc3323523702022-06-24 12:33:2810 days 11 hrs ago 0x5814d3c40a5a951efdb4a37bd93f4407450cd424 0xd0a1e359811322d97991e03f863a0c30c2cf029c0.03 Ether
0xb28e380d066aaa8b3533600c1db5b48369dd540d80ba6ff2460fcaf7d86b3dc3323523702022-06-24 12:33:2810 days 11 hrs ago 0x5814d3c40a5a951efdb4a37bd93f4407450cd424 0x44af736495544a726ed15cb0ebe2d87a6bcc18320 Ether
0xa721f81259168f41ae82f6a7dea92ebc804ecd1628369a1e77d5c59a2ffe0c2f320750682022-06-08 18:53:5226 days 4 hrs ago 0x5814d3c40a5a951efdb4a37bd93f4407450cd424 0x242a3df52c375bee81b1c668741d7c63af68fdd20 Ether
0xa721f81259168f41ae82f6a7dea92ebc804ecd1628369a1e77d5c59a2ffe0c2f320750682022-06-08 18:53:5226 days 4 hrs ago 0x5814d3c40a5a951efdb4a37bd93f4407450cd424 0x242a3df52c375bee81b1c668741d7c63af68fdd20 Ether
0xa721f81259168f41ae82f6a7dea92ebc804ecd1628369a1e77d5c59a2ffe0c2f320750682022-06-08 18:53:5226 days 4 hrs ago 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db6 0x5814d3c40a5a951efdb4a37bd93f4407450cd4240 Ether
0x5f18dee3ac6c4d8306765c7d06df7371cf2041652ba23f48522dcf801056f7ef304239372022-03-16 3:04:44110 days 20 hrs ago 0x5814d3c40a5a951efdb4a37bd93f4407450cd424 0x242a3df52c375bee81b1c668741d7c63af68fdd20 Ether
0x5f18dee3ac6c4d8306765c7d06df7371cf2041652ba23f48522dcf801056f7ef304239372022-03-16 3:04:44110 days 20 hrs ago 0x5814d3c40a5a951efdb4a37bd93f4407450cd424 0x242a3df52c375bee81b1c668741d7c63af68fdd20 Ether
0x5f18dee3ac6c4d8306765c7d06df7371cf2041652ba23f48522dcf801056f7ef304239372022-03-16 3:04:44110 days 20 hrs ago 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db6 0x5814d3c40a5a951efdb4a37bd93f4407450cd4240 Ether
0x1dab0c8e3743144a0581d53f52d7942b1b1f0c15f41b689dd4b31979e9774d5d303177452022-03-11 3:51:44115 days 19 hrs ago 0x5814d3c40a5a951efdb4a37bd93f4407450cd424 0x242a3df52c375bee81b1c668741d7c63af68fdd20 Ether
0x1dab0c8e3743144a0581d53f52d7942b1b1f0c15f41b689dd4b31979e9774d5d303177452022-03-11 3:51:44115 days 19 hrs ago 0x5814d3c40a5a951efdb4a37bd93f4407450cd424 0x242a3df52c375bee81b1c668741d7c63af68fdd20 Ether
0x1dab0c8e3743144a0581d53f52d7942b1b1f0c15f41b689dd4b31979e9774d5d303177452022-03-11 3:51:44115 days 19 hrs ago 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db6 0x5814d3c40a5a951efdb4a37bd93f4407450cd4240 Ether
0xe35da4a9a919177f4f59373f18fa77baaa99afe9adab215b5196a10b8a771b2e284105442021-11-16 16:33:04230 days 7 hrs ago 0x5814d3c40a5a951efdb4a37bd93f4407450cd424 0x242a3df52c375bee81b1c668741d7c63af68fdd20 Ether
0xe35da4a9a919177f4f59373f18fa77baaa99afe9adab215b5196a10b8a771b2e284105442021-11-16 16:33:04230 days 7 hrs ago 0x5814d3c40a5a951efdb4a37bd93f4407450cd424 0x242a3df52c375bee81b1c668741d7c63af68fdd20 Ether
0xe35da4a9a919177f4f59373f18fa77baaa99afe9adab215b5196a10b8a771b2e284105442021-11-16 16:33:04230 days 7 hrs ago 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db6 0x5814d3c40a5a951efdb4a37bd93f4407450cd4240 Ether
0xf1a705431789677e43e2a306873374f59a6bcf249bd23d8b95be469cb9b5cdd2271203662021-09-09 10:03:52298 days 13 hrs ago 0x5814d3c40a5a951efdb4a37bd93f4407450cd424 0x242a3df52c375bee81b1c668741d7c63af68fdd20 Ether
0xf1a705431789677e43e2a306873374f59a6bcf249bd23d8b95be469cb9b5cdd2271203662021-09-09 10:03:52298 days 13 hrs ago 0x5814d3c40a5a951efdb4a37bd93f4407450cd424 0x242a3df52c375bee81b1c668741d7c63af68fdd20 Ether
0xf1a705431789677e43e2a306873374f59a6bcf249bd23d8b95be469cb9b5cdd2271203662021-09-09 10:03:52298 days 13 hrs ago 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db6 0x5814d3c40a5a951efdb4a37bd93f4407450cd4240 Ether
0x5a34584f255c2f14e7cd31cceb867c4903a51154de7d93f742668180f33a4dc9253713352021-06-09 20:09:48390 days 3 hrs ago 0xee6324aa7fc84b311e9957b0d9245b7534cac39b 0x5814d3c40a5a951efdb4a37bd93f4407450cd4240 Ether
0x3d5532cbb780ccbb06cd8a6da04f3f54720cd36ecd63d1bc02fa3402cdcbd37d253712922021-06-09 20:06:56390 days 3 hrs ago 0x0639f90a29609955434f444d146bbecb92f5b2af 0x5814d3c40a5a951efdb4a37bd93f4407450cd4240 Ether
0xd06ae797e29df8ef203a507ad81b3808a2f0c86d0dbbd685206f86e3c5fb914c253712332021-06-09 20:03:00390 days 3 hrs ago 0x0639f90a29609955434f444d146bbecb92f5b2af 0x5814d3c40a5a951efdb4a37bd93f4407450cd4240 Ether
[ Download CSV Export 
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0xe2515489FF7Ab63e6DC82a5D904D7Fa7b423e008

Contract Name:
NativeEtherWrapper

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-05-13
*/

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

* Synthetix: NativeEtherWrapper.sol
*
* Latest source (may be newer): https://github.com/Synthetixio/synthetix/blob/master/contracts/NativeEtherWrapper.sol
* Docs: https://docs.synthetix.io/contracts/NativeEtherWrapper
*
* Contract Dependencies: 
*	- IAddressResolver
*	- MixinResolver
*	- Owned
* 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);
}


// https://docs.synthetix.io/contracts/source/interfaces/iaddressresolver
interface IAddressResolver {
    function getAddress(bytes32 name) external view returns (address);

    function getSynth(bytes32 key) external view returns (address);

    function requireAndGetAddress(bytes32 name, string calldata reason) external view returns (address);
}


interface IWETH {
    // 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);

    // WETH-specific functions.
    function deposit() external payable;

    function withdraw(uint amount) external;

    // Events
    event Transfer(address indexed from, address indexed to, uint value);
    event Approval(address indexed owner, address indexed spender, uint value);
    event Deposit(address indexed to, uint amount);
    event Withdrawal(address indexed to, uint amount);
}


// https://docs.synthetix.io/contracts/source/interfaces/ietherwrapper
contract IEtherWrapper {
    function mint(uint amount) external;

    function burn(uint amount) external;

    function distributeFees() external;

    function capacity() external view returns (uint);

    function getReserves() external view returns (uint);

    function totalIssuedSynths() external view returns (uint);

    function calculateMintFee(uint amount) public view returns (uint);

    function calculateBurnFee(uint amount) public view returns (uint);

    function maxETH() public view returns (uint256);

    function mintFeeRate() public view returns (uint256);

    function burnFeeRate() public view returns (uint256);

    function weth() public view returns (IWETH);
}


// https://docs.synthetix.io/contracts/source/interfaces/isynth
interface ISynth {
    // Views
    function currencyKey() external view returns (bytes32);

    function transferableSynths(address account) external view returns (uint);

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

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

    // Restricted: used internally to Synthetix
    function burn(address account, uint amount) external;

    function issue(address account, uint amount) external;
}


// 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);
}


// https://docs.synthetix.io/contracts/source/interfaces/iissuer
interface IIssuer {
    // Views
    function anySynthOrSNXRateIsInvalid() external view returns (bool anyRateInvalid);

    function availableCurrencyKeys() external view returns (bytes32[] memory);

    function availableSynthCount() external view returns (uint);

    function availableSynths(uint index) external view returns (ISynth);

    function canBurnSynths(address account) external view returns (bool);

    function collateral(address account) external view returns (uint);

    function collateralisationRatio(address issuer) external view returns (uint);

    function collateralisationRatioAndAnyRatesInvalid(address _issuer)
        external
        view
        returns (uint cratio, bool anyRateIsInvalid);

    function debtBalanceOf(address issuer, bytes32 currencyKey) external view returns (uint debtBalance);

    function issuanceRatio() external view returns (uint);

    function lastIssueEvent(address account) external view returns (uint);

    function maxIssuableSynths(address issuer) external view returns (uint maxIssuable);

    function minimumStakeTime() external view returns (uint);

    function remainingIssuableSynths(address issuer)
        external
        view
        returns (
            uint maxIssuable,
            uint alreadyIssued,
            uint totalSystemDebt
        );

    function synths(bytes32 currencyKey) external view returns (ISynth);

    function getSynths(bytes32[] calldata currencyKeys) external view returns (ISynth[] memory);

    function synthsByAddress(address synthAddress) external view returns (bytes32);

    function totalIssuedSynths(bytes32 currencyKey, bool excludeEtherCollateral) external view returns (uint);

    function transferableSynthetixAndAnyRateIsInvalid(address account, uint balance)
        external
        view
        returns (uint transferable, bool anyRateIsInvalid);

    // Restricted: used internally to Synthetix
    function issueSynths(address from, uint amount) external;

    function issueSynthsOnBehalf(
        address issueFor,
        address from,
        uint amount
    ) external;

    function issueMaxSynths(address from) external;

    function issueMaxSynthsOnBehalf(address issueFor, address from) external;

    function burnSynths(address from, uint amount) external;

    function burnSynthsOnBehalf(
        address burnForAddress,
        address from,
        uint amount
    ) external;

    function burnSynthsToTarget(address from) external;

    function burnSynthsToTargetOnBehalf(address burnForAddress, address from) external;

    function liquidateDelinquentAccount(
        address account,
        uint susdAmount,
        address liquidator
    ) external returns (uint totalRedeemed, uint amountToLiquidate);
}


// Inheritance


// Internal references


// https://docs.synthetix.io/contracts/source/contracts/addressresolver
contract AddressResolver is Owned, IAddressResolver {
    mapping(bytes32 => address) public repository;

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

    /* ========== RESTRICTED FUNCTIONS ========== */

    function importAddresses(bytes32[] calldata names, address[] calldata destinations) external onlyOwner {
        require(names.length == destinations.length, "Input lengths must match");

        for (uint i = 0; i < names.length; i++) {
            bytes32 name = names[i];
            address destination = destinations[i];
            repository[name] = destination;
            emit AddressImported(name, destination);
        }
    }

    /* ========= PUBLIC FUNCTIONS ========== */

    function rebuildCaches(MixinResolver[] calldata destinations) external {
        for (uint i = 0; i < destinations.length; i++) {
            destinations[i].rebuildCache();
        }
    }

    /* ========== VIEWS ========== */

    function areAddressesImported(bytes32[] calldata names, address[] calldata destinations) external view returns (bool) {
        for (uint i = 0; i < names.length; i++) {
            if (repository[names[i]] != destinations[i]) {
                return false;
            }
        }
        return true;
    }

    function getAddress(bytes32 name) external view returns (address) {
        return repository[name];
    }

    function requireAndGetAddress(bytes32 name, string calldata reason) external view returns (address) {
        address _foundAddress = repository[name];
        require(_foundAddress != address(0), reason);
        return _foundAddress;
    }

    function getSynth(bytes32 key) external view returns (address) {
        IIssuer issuer = IIssuer(repository["Issuer"]);
        require(address(issuer) != address(0), "Cannot find Issuer address");
        return address(issuer.synths(key));
    }

    /* ========== EVENTS ========== */

    event AddressImported(bytes32 name, address destination);
}


// solhint-disable payable-fallback

// https://docs.synthetix.io/contracts/source/contracts/readproxy
contract ReadProxy is Owned {
    address public target;

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

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

    function() external {
        // The basics of a proxy read call
        // Note that msg.sender in the underlying will always be the address of this contract.
        assembly {
            calldatacopy(0, 0, calldatasize)

            // Use of staticcall - this will revert if the underlying function mutates state
            let result := staticcall(gas, sload(target_slot), 0, calldatasize, 0, 0)
            returndatacopy(0, 0, returndatasize)

            if iszero(result) {
                revert(0, returndatasize)
            }
            return(0, returndatasize)
        }
    }

    event TargetUpdated(address newTarget);
}


// Inheritance


// Internal references


// https://docs.synthetix.io/contracts/source/contracts/mixinresolver
contract MixinResolver {
    AddressResolver public resolver;

    mapping(bytes32 => address) private addressCache;

    constructor(address _resolver) internal {
        resolver = AddressResolver(_resolver);
    }

    /* ========== INTERNAL FUNCTIONS ========== */

    function combineArrays(bytes32[] memory first, bytes32[] memory second)
        internal
        pure
        returns (bytes32[] memory combination)
    {
        combination = new bytes32[](first.length + second.length);

        for (uint i = 0; i < first.length; i++) {
            combination[i] = first[i];
        }

        for (uint j = 0; j < second.length; j++) {
            combination[first.length + j] = second[j];
        }
    }

    /* ========== PUBLIC FUNCTIONS ========== */

    // Note: this function is public not external in order for it to be overridden and invoked via super in subclasses
    function resolverAddressesRequired() public view returns (bytes32[] memory addresses) {}

    function rebuildCache() public {
        bytes32[] memory requiredAddresses = resolverAddressesRequired();
        // The resolver must call this function whenver it updates its state
        for (uint i = 0; i < requiredAddresses.length; i++) {
            bytes32 name = requiredAddresses[i];
            // Note: can only be invoked once the resolver has all the targets needed added
            address destination =
                resolver.requireAndGetAddress(name, string(abi.encodePacked("Resolver missing target: ", name)));
            addressCache[name] = destination;
            emit CacheUpdated(name, destination);
        }
    }

    /* ========== VIEWS ========== */

    function isResolverCached() external view returns (bool) {
        bytes32[] memory requiredAddresses = resolverAddressesRequired();
        for (uint i = 0; i < requiredAddresses.length; i++) {
            bytes32 name = requiredAddresses[i];
            // false if our cache is invalid or if the resolver doesn't have the required address
            if (resolver.getAddress(name) != addressCache[name] || addressCache[name] == address(0)) {
                return false;
            }
        }

        return true;
    }

    /* ========== INTERNAL FUNCTIONS ========== */

    function requireAndGetAddress(bytes32 name) internal view returns (address) {
        address _foundAddress = addressCache[name];
        require(_foundAddress != address(0), string(abi.encodePacked("Missing address: ", name)));
        return _foundAddress;
    }

    /* ========== EVENTS ========== */

    event CacheUpdated(bytes32 name, address destination);
}


// @unsupported: ovm


// Inheritance


// Internal references


// https://docs.synthetix.io/contracts/source/contracts/nativeetherwrapper
contract NativeEtherWrapper is Owned, MixinResolver {
    bytes32 private constant CONTRACT_ETHER_WRAPPER = "EtherWrapper";
    bytes32 private constant CONTRACT_SYNTHSETH = "SynthsETH";

    constructor(address _owner, address _resolver) public Owned(_owner) MixinResolver(_resolver) {}

    /* ========== PUBLIC FUNCTIONS ========== */

    /* ========== VIEWS ========== */
    function resolverAddressesRequired() public view returns (bytes32[] memory addresses) {
        bytes32[] memory addresses = new bytes32[](2);
        addresses[0] = CONTRACT_ETHER_WRAPPER;
        addresses[1] = CONTRACT_SYNTHSETH;
        return addresses;
    }

    function etherWrapper() internal view returns (IEtherWrapper) {
        return IEtherWrapper(requireAndGetAddress(CONTRACT_ETHER_WRAPPER));
    }

    function weth() internal view returns (IWETH) {
        return etherWrapper().weth();
    }

    function synthsETH() internal view returns (IERC20) {
        return IERC20(requireAndGetAddress(CONTRACT_SYNTHSETH));
    }

    /* ========== MUTATIVE FUNCTIONS ========== */

    function mint() public payable {
        uint amount = msg.value;
        require(amount > 0, "msg.value must be greater than 0");

        // Convert sent ETH into WETH.
        weth().deposit.value(amount)();

        // Approve for the EtherWrapper.
        weth().approve(address(etherWrapper()), amount);

        // Now call mint.
        etherWrapper().mint(amount);

        // Transfer the sETH to msg.sender.
        synthsETH().transfer(msg.sender, synthsETH().balanceOf(address(this)));

        emit Minted(msg.sender, amount);
    }

    function burn(uint amount) public {
        require(amount > 0, "amount must be greater than 0");
        IWETH weth = weth();

        // Transfer sETH from the msg.sender.
        synthsETH().transferFrom(msg.sender, address(this), amount);

        // Approve for the EtherWrapper.
        synthsETH().approve(address(etherWrapper()), amount);

        // Now call burn.
        etherWrapper().burn(amount);

        // Convert WETH to ETH and send to msg.sender.
        weth.withdraw(weth.balanceOf(address(this)));
        // solhint-disable avoid-low-level-calls
        msg.sender.call.value(address(this).balance)("");

        emit Burned(msg.sender, amount);
    }

    function() external payable {
        // Allow the WETH contract to send us ETH during
        // our call to WETH.deposit. The gas stipend it gives
        // is 2300 gas, so it's not possible to do much else here.
    }

    /* ========== EVENTS ========== */
    // While these events are replicated in the core EtherWrapper,
    // it is useful to see the usage of the NativeEtherWrapper contract.
    event Minted(address indexed account, uint amount);
    event Burned(address indexed account, uint amount);
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_resolver","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"name","type":"bytes32"},{"indexed":false,"internalType":"address","name":"destination","type":"address"}],"name":"CacheUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Minted","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"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isResolverCached","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"mint","outputs":[],"payable":true,"stateMutability":"payable","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":[],"name":"rebuildCache","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"resolver","outputs":[{"internalType":"contract AddressResolver","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"resolverAddressesRequired","outputs":[{"internalType":"bytes32[]","name":"addresses","type":"bytes32[]"}],"payable":false,"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b506040516110703803806110708339818101604052604081101561003357600080fd5b50805160209091015180826001600160a01b038116610099576040805162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f74206265203000000000000000604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825560408051928352602083019190915280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a150600280546001600160a01b039092166001600160a01b03199092169190911790555050610f4c806101246000396000f3fe6080604052600436106100915760003560e01c806353a47bb71161005957806353a47bb714610152578063741853601461016757806379ba50971461017c578063899ffef4146101915780638da5cb5b146101f657610091565b806304f3bcec146100935780631249c58b146100c45780631627540c146100cc5780632af64bd3146100ff57806342966c6814610128575b005b34801561009f57600080fd5b506100a861020b565b604080516001600160a01b039092168252519081900360200190f35b61009161021a565b3480156100d857600080fd5b50610091600480360360208110156100ef57600080fd5b50356001600160a01b031661051c565b34801561010b57600080fd5b50610114610578565b604080519115158252519081900360200190f35b34801561013457600080fd5b506100916004803603602081101561014b57600080fd5b5035610683565b34801561015e57600080fd5b506100a86109c2565b34801561017357600080fd5b506100916109d1565b34801561018857600080fd5b50610091610b99565b34801561019d57600080fd5b506101a6610c55565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101e25781810151838201526020016101ca565b505050509050019250505060405180910390f35b34801561020257600080fd5b506100a8610ccc565b6002546001600160a01b031681565b348061026d576040805162461bcd60e51b815260206004820181905260248201527f6d73672e76616c7565206d7573742062652067726561746572207468616e2030604482015290519081900360640190fd5b610275610cdb565b6001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156102af57600080fd5b505af11580156102c3573d6000803e3d6000fd5b50505050506102d0610cdb565b6001600160a01b031663095ea7b36102e6610d4e565b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561033657600080fd5b505af115801561034a573d6000803e3d6000fd5b505050506040513d602081101561036057600080fd5b5061036b9050610d4e565b6001600160a01b031663a0712d68826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b505050506103d0610d6d565b6001600160a01b031663a9059cbb336103e7610d6d565b6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561043c57600080fd5b505afa158015610450573d6000803e3d6000fd5b505050506040513d602081101561046657600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b1580156104b757600080fd5b505af11580156104cb573d6000803e3d6000fd5b505050506040513d60208110156104e157600080fd5b505060408051828152905133917f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe919081900360200190a250565b610524610d84565b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b60006060610584610c55565b905060005b81518110156106795760008282815181106105a057fe5b6020908102919091018101516000818152600383526040908190205460025482516321f8a72160e01b81526004810185905292519395506001600160a01b03918216949116926321f8a721926024808201939291829003018186803b15801561060857600080fd5b505afa15801561061c573d6000803e3d6000fd5b505050506040513d602081101561063257600080fd5b50516001600160a01b031614158061065f57506000818152600360205260409020546001600160a01b0316155b156106705760009350505050610680565b50600101610589565b5060019150505b90565b600081116106d8576040805162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e2030000000604482015290519081900360640190fd5b60006106e2610cdb565b90506106ec610d6d565b604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b0392909216916323b872dd916064808201926020929091908290030181600087803b15801561074457600080fd5b505af1158015610758573d6000803e3d6000fd5b505050506040513d602081101561076e57600080fd5b506107799050610d6d565b6001600160a01b031663095ea7b361078f610d4e565b846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156107df57600080fd5b505af11580156107f3573d6000803e3d6000fd5b505050506040513d602081101561080957600080fd5b506108149050610d4e565b6001600160a01b03166342966c68836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561085957600080fd5b505af115801561086d573d6000803e3d6000fd5b5050604080516370a0823160e01b815230600482015290516001600160a01b0385169350632e1a7d4d925083916370a08231916024808301926020929190829003018186803b1580156108bf57600080fd5b505afa1580156108d3573d6000803e3d6000fd5b505050506040513d60208110156108e957600080fd5b5051604080516001600160e01b031960e085901b168152600481019290925251602480830192600092919082900301818387803b15801561092957600080fd5b505af115801561093d573d6000803e3d6000fd5b5050604051339250479150600081818185875af1925050503d8060008114610981576040519150601f19603f3d011682016040523d82523d6000602084013e610986565b606091505b50506040805184815290513392507f696de425f79f4a40bc6d2122ca50507f0efbeabbff86a84871b7196ab8ea8df79181900360200190a25050565b6001546001600160a01b031681565b60606109db610c55565b905060005b8151811015610b955760008282815181106109f757fe5b602090810291909101810151600254604080517f5265736f6c766572206d697373696e67207461726765743a2000000000000000818601526039808201859052825180830390910181526059820180845263dacb2d0160e01b9052605d8201858152607d83019384528151609d84015281519597506000966001600160a01b039095169563dacb2d01958995939492939260bd0191908501908083838c5b83811015610aad578181015183820152602001610a95565b50505050905090810190601f168015610ada5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015610af857600080fd5b505afa158015610b0c573d6000803e3d6000fd5b505050506040513d6020811015610b2257600080fd5b505160008381526003602090815260409182902080546001600160a01b0319166001600160a01b03851690811790915582518681529182015281519293507f88a93678a3692f6789d9546fc621bf7234b101ddb7d4fe479455112831b8aa68929081900390910190a150506001016109e0565b5050565b6001546001600160a01b03163314610be25760405162461bcd60e51b8152600401808060200182810382526035815260200180610eb46035913960400191505060405180910390fd5b600054600154604080516001600160a01b03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6040805160028082526060808301845292839291906020830190803883390190505090506b22ba3432b92bb930b83832b960a11b81600081518110610c9657fe5b602002602001018181525050680a6f2dce8d0e68aa8960bb1b81600181518110610cbc57fe5b6020908102919091010152905090565b6000546001600160a01b031681565b6000610ce5610d4e565b6001600160a01b0316633fc8cef36040518163ffffffff1660e01b815260040160206040518083038186803b158015610d1d57600080fd5b505afa158015610d31573d6000803e3d6000fd5b505050506040513d6020811015610d4757600080fd5b5051905090565b6000610d686b22ba3432b92bb930b83832b960a11b610dcf565b905090565b6000610d68680a6f2dce8d0e68aa8960bb1b610dcf565b6000546001600160a01b03163314610dcd5760405162461bcd60e51b815260040180806020018281038252602f815260200180610ee9602f913960400191505060405180910390fd5b565b600081815260036020908152604080832054815170026b4b9b9b4b7339030b2323932b9b99d1607d1b9381019390935260318084018690528251808503909101815260519093019091526001600160a01b03169081610eac5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e71578181015183820152602001610e59565b50505050905090810190601f168015610e9e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b509291505056fe596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e6572736869704f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6ea265627a7a723158205440feb76760d81bf7cf1ac0dae8e6f196bbf524ccf55137d94ab5d0b4391e9064736f6c63430005100032000000000000000000000000b64ff7a4a33acdf48d97dab0d764afd0f6176882000000000000000000000000242a3df52c375bee81b1c668741d7c63af68fdd2

Libraries Used


Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading

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