Contract 0x84f87E3636Aa9cC1080c07E6C61aDfDCc23c0db6

Contract Overview

Balance:
0 Ether
Txn Hash
Method
Block
From
To
Value
0x77e083e62122dd8d3d07a0acd98545355a75c96947360d3805d739a800271adaRebuild Caches323199572022-06-22 17:13:4412 days 7 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.00038502 1
0xe8d1d13df510b781f735e234bc37235ed4e1e82626a174c0deb1ffb8f35d45b6Rebuild Caches323199542022-06-22 17:13:2812 days 7 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.0016462 1
0x86a111889aa1654fa36478e6e802fe6a20494b094db5c8cb4c3d73a749965cc3Import Addresses323199492022-06-22 17:13:0812 days 7 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.000039 1
0xeaf911d9354e1fd69744aabdb8e12bd6671d7e082614fb8e5509f1f5fff78999Import Addresses321740282022-06-14 15:58:4020 days 8 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.00004898 1
0xa721f81259168f41ae82f6a7dea92ebc804ecd1628369a1e77d5c59a2ffe0c2fRebuild Caches320750682022-06-08 18:53:5226 days 5 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.00155404 1
0xf54e21dc1aba9e55f40b8c08524e32d030d8126895bf2fec1790057b5c4c4014Rebuild Caches320750672022-06-08 18:53:4426 days 5 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.00273355 1
0xf5124d0f9dd592e7d06aadc8b5339b9be0cb71595b8107c1e618f18703347c4bImport Addresses320750622022-06-08 18:53:2026 days 5 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.00011864 1
0x00fd1ee56f595613b5f501563a506623ac5074b737f6b8da1a4cf8b90949255fRebuild Caches317690562022-05-23 17:13:0442 days 7 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.0008061 1
0x42e0da07bfba022b46f18915f064b47c797410c75eace6a542e3b15189f39736Import Addresses317690482022-05-23 17:12:3242 days 7 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.00003173 1
0x14c2993b9b912a0f01791f8d9e7a5fb654b33e74b0565ed4f4563c2ba2b591faRebuild Caches317686602022-05-23 16:43:2042 days 7 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.0008061 1
0x71a87df3b31dd5eb8c6e172e580624ce0abdb77eb95b0d52dfcbb898d56adbd0Import Addresses317686512022-05-23 16:42:4442 days 7 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.00003173 1
0x1fae2936c0abad1951f12c2f9e0d5d07625d06db7dc9c6ed7a9e34e15c2b2393Rebuild Caches317683742022-05-23 16:22:4442 days 8 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.0008061 1
0x3e971a78597813222480d08b0c62a32a85d79c65e1684bda62b2828be40dabf9Import Addresses317683652022-05-23 16:22:0842 days 8 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.00003173 1
0xda6f4e930396c96fa904e4bf2ed50f809c18413b1bfe49d2102be9f48664f693Rebuild Caches317680452022-05-23 15:58:3242 days 8 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.0008061 1
0x55b6b83faaaa83efe23dd8dacd11fa0016e74faf6ebb44224ffdc0b331ea437fImport Addresses317680392022-05-23 15:58:0842 days 8 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.00003173 1
0xb364247ed3e0ef351b1933e069e21567269441de161644f8d16ea2029db73484Rebuild Caches317677022022-05-23 15:33:5242 days 9 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.0008061 1
0x81c0846420dba0d259e7c5495560f29cbcf4c87eaa14340d50d28374e97651c3Import Addresses317676942022-05-23 15:33:2042 days 9 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.00003173 1
0x6d6c081f6a669372b453db58b0b8a5a8fe99bcc19f900d3066b4a344d64d540eImport Addresses316375432022-05-16 16:58:0049 days 7 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.00007748 2.5
0x6b11389c2a6b4d175aa6016c027ce9c2635df0095d52016c45080f4965e25a86Rebuild Caches315767962022-05-13 5:41:3252 days 18 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.00073994 1
0x8b279ca65bbeec1b275e1349186d8a8bf9d368f060576f718c203661afa5ae20Rebuild Caches315767932022-05-13 5:41:2052 days 18 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.00224323 1
0x5ed560e045801c4e8b459b21eb277e707e5b751b39d34421fccae153e245a024Import Addresses315767852022-05-13 5:40:4052 days 18 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.0001023 1
0x8766548efa3fdce5b67b080fde963d1a45e778b803c383505f73e7160db686b7Import Addresses315288032022-05-10 14:31:2855 days 10 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.00010261 2.5
0xe10a5e4536aa07ab762fc90f0339aef3bff76b287ddb25a6781b11f79512bd31Rebuild Caches315271402022-05-10 12:27:0055 days 12 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.00075394 1
0x73c7d19284592be1661e3555ec2831118639db8db83e9e70e13f7269787b8ba7Rebuild Caches315271372022-05-10 12:26:4855 days 12 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.00218868 1
0x85a351c1787a46a70db586d7a90c2c1455eaaac43bd3f78d7a691a5390989b9bImport Addresses315271292022-05-10 12:26:1655 days 12 hrs ago0x73570075092502472e4b61a7058df1a4a1db12f2 IN  0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether0.00006823 1
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xfb24eb9cccd28957acc2a41e458910b5116662db6797e8b1d97ed06dc9b55bbb325437272022-07-04 15:30:169 hrs 5 mins ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0xfb24eb9cccd28957acc2a41e458910b5116662db6797e8b1d97ed06dc9b55bbb325437272022-07-04 15:30:169 hrs 5 mins ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0xfb24eb9cccd28957acc2a41e458910b5116662db6797e8b1d97ed06dc9b55bbb325437272022-07-04 15:30:169 hrs 5 mins ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0xfb24eb9cccd28957acc2a41e458910b5116662db6797e8b1d97ed06dc9b55bbb325437272022-07-04 15:30:169 hrs 5 mins ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0xfb24eb9cccd28957acc2a41e458910b5116662db6797e8b1d97ed06dc9b55bbb325437272022-07-04 15:30:169 hrs 5 mins ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0xfb24eb9cccd28957acc2a41e458910b5116662db6797e8b1d97ed06dc9b55bbb325437272022-07-04 15:30:169 hrs 5 mins ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0xfb24eb9cccd28957acc2a41e458910b5116662db6797e8b1d97ed06dc9b55bbb325437272022-07-04 15:30:169 hrs 5 mins ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0xfb24eb9cccd28957acc2a41e458910b5116662db6797e8b1d97ed06dc9b55bbb325437272022-07-04 15:30:169 hrs 5 mins ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0xfb24eb9cccd28957acc2a41e458910b5116662db6797e8b1d97ed06dc9b55bbb325437272022-07-04 15:30:169 hrs 5 mins ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0xfb24eb9cccd28957acc2a41e458910b5116662db6797e8b1d97ed06dc9b55bbb325437272022-07-04 15:30:169 hrs 5 mins ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0xfb24eb9cccd28957acc2a41e458910b5116662db6797e8b1d97ed06dc9b55bbb325437272022-07-04 15:30:169 hrs 5 mins ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0xdaa48ed1d9f82594d9cf95329ccc5046d7260bbb881263058e8bfe69cc943402324472132022-06-29 5:40:365 days 18 hrs ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0x179daffd6a685fb45a2c45947221c3e7e69f9e2f585b95fbe9e6a97af6d03f2f324471412022-06-29 5:35:405 days 19 hrs ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0x179daffd6a685fb45a2c45947221c3e7e69f9e2f585b95fbe9e6a97af6d03f2f324471412022-06-29 5:35:405 days 19 hrs ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0x179daffd6a685fb45a2c45947221c3e7e69f9e2f585b95fbe9e6a97af6d03f2f324471412022-06-29 5:35:405 days 19 hrs ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0x179daffd6a685fb45a2c45947221c3e7e69f9e2f585b95fbe9e6a97af6d03f2f324471412022-06-29 5:35:405 days 19 hrs ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0x179daffd6a685fb45a2c45947221c3e7e69f9e2f585b95fbe9e6a97af6d03f2f324471412022-06-29 5:35:405 days 19 hrs ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0x179daffd6a685fb45a2c45947221c3e7e69f9e2f585b95fbe9e6a97af6d03f2f324471412022-06-29 5:35:405 days 19 hrs ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0x179daffd6a685fb45a2c45947221c3e7e69f9e2f585b95fbe9e6a97af6d03f2f324471412022-06-29 5:35:405 days 19 hrs ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0x179daffd6a685fb45a2c45947221c3e7e69f9e2f585b95fbe9e6a97af6d03f2f324471412022-06-29 5:35:405 days 19 hrs ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0x179daffd6a685fb45a2c45947221c3e7e69f9e2f585b95fbe9e6a97af6d03f2f324471412022-06-29 5:35:405 days 19 hrs ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0x179daffd6a685fb45a2c45947221c3e7e69f9e2f585b95fbe9e6a97af6d03f2f324471412022-06-29 5:35:405 days 19 hrs ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0x179daffd6a685fb45a2c45947221c3e7e69f9e2f585b95fbe9e6a97af6d03f2f324471412022-06-29 5:35:405 days 19 hrs ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0xb7b7ca8dbe95caeac2575b466d0f33a43eb637fefdb34f097db47e20cd732a3a324290822022-06-28 8:20:166 days 16 hrs ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
0x5931169b591804dcb436c370a4351bc9d72fc989898e1dd9a150d239d13d5a50324290582022-06-28 8:18:366 days 16 hrs ago 0x242a3df52c375bee81b1c668741d7c63af68fdd2 0x84f87e3636aa9cc1080c07e6c61adfdcc23c0db60 Ether
[ Download CSV Export 
Loading

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

Contract Name:
AddressResolver

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 2020-12-15
*/

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

* Synthetix: AddressResolver.sol
*
* Latest source (may be newer): https://github.com/Synthetixio/synthetix/blob/master/contracts/AddressResolver.sol
* Docs: https://docs.synthetix.io/contracts/AddressResolver
*
* Contract Dependencies: 
*	- IAddressResolver
*	- Owned
* Libraries: (none)
*
* MIT License
* ===========
*
* Copyright (c) 2020 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);
}


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


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


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

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"name","type":"bytes32"},{"indexed":false,"internalType":"address","name":"destination","type":"address"}],"name":"AddressImported","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"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32[]","name":"names","type":"bytes32[]"},{"internalType":"address[]","name":"destinations","type":"address[]"}],"name":"areAddressesImported","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"name","type":"bytes32"}],"name":"getAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"getSynth","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32[]","name":"names","type":"bytes32[]"},{"internalType":"address[]","name":"destinations","type":"address[]"}],"name":"importAddresses","outputs":[],"payable":false,"stateMutability":"nonpayable","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 MixinResolver[]","name":"destinations","type":"address[]"}],"name":"rebuildCaches","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"repository","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"name","type":"bytes32"},{"internalType":"string","name":"reason","type":"string"}],"name":"requireAndGetAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50604051610ab9380380610ab98339818101604052602081101561003357600080fd5b5051806001600160a01b038116610091576040805162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f74206265203000000000000000604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825560408051928352602083019190915280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a150506109bf806100fa6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063766f781511610071578063766f78151461015157806379ba5097146101bf5780638da5cb5b146101c75780639f42102f146101cf578063ab0b8f77146102a1578063dacb2d011461035f576100a9565b80631627540c146100ae578063187f7935146100d657806321f8a7211461010f578063514560611461012c57806353a47bb714610149575b600080fd5b6100d4600480360360208110156100c457600080fd5b50356001600160a01b03166103d4565b005b6100f3600480360360208110156100ec57600080fd5b5035610430565b604080516001600160a01b039092168252519081900360200190f35b6100f36004803603602081101561012557600080fd5b503561044b565b6100f36004803603602081101561014257600080fd5b5035610466565b6100f361056e565b6100d46004803603602081101561016757600080fd5b810190602081018135600160201b81111561018157600080fd5b82018360208201111561019357600080fd5b803590602001918460208302840111600160201b831117156101b457600080fd5b50909250905061057d565b6100d4610607565b6100f36106c3565b61028d600480360360408110156101e557600080fd5b810190602081018135600160201b8111156101ff57600080fd5b82018360208201111561021157600080fd5b803590602001918460208302840111600160201b8311171561023257600080fd5b919390929091602081019035600160201b81111561024f57600080fd5b82018360208201111561026157600080fd5b803590602001918460208302840111600160201b8311171561028257600080fd5b5090925090506106d2565b604080519115158252519081900360200190f35b6100d4600480360360408110156102b757600080fd5b810190602081018135600160201b8111156102d157600080fd5b8201836020820111156102e357600080fd5b803590602001918460208302840111600160201b8311171561030457600080fd5b919390929091602081019035600160201b81111561032157600080fd5b82018360208201111561033357600080fd5b803590602001918460208302840111600160201b8311171561035457600080fd5b50909250905061075b565b6100f36004803603604081101561037557600080fd5b81359190810190604081016020820135600160201b81111561039657600080fd5b8201836020820111156103a857600080fd5b803590602001918460018302840111600160201b831117156103c957600080fd5b509092509050610867565b6103dc6108db565b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b6002602052600090815260409020546001600160a01b031681565b6000908152600260205260409020546001600160a01b031690565b6524b9b9bab2b960d11b600090815260026020527f0651498423135bdecab48e2d306f14d560a72d49179b71410fd95b5d25ce349a546001600160a01b0316806104f7576040805162461bcd60e51b815260206004820152601a60248201527f43616e6e6f742066696e64204973737565722061646472657373000000000000604482015290519081900360640190fd5b806001600160a01b03166332608039846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561053b57600080fd5b505afa15801561054f573d6000803e3d6000fd5b505050506040513d602081101561056557600080fd5b50519392505050565b6001546001600160a01b031681565b60005b818110156106025782828281811061059457fe5b905060200201356001600160a01b03166001600160a01b031663741853606040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105de57600080fd5b505af11580156105f2573d6000803e3d6000fd5b5050600190920191506105809050565b505050565b6001546001600160a01b031633146106505760405162461bcd60e51b81526004018080602001828103825260358152602001806109276035913960400191505060405180910390fd5b600054600154604080516001600160a01b03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b031681565b6000805b8481101561074d578383828181106106ea57fe5b905060200201356001600160a01b03166001600160a01b03166002600088888581811061071357fe5b60209081029290920135835250810191909152604001600020546001600160a01b031614610745576000915050610753565b6001016106d6565b50600190505b949350505050565b6107636108db565b8281146107b7576040805162461bcd60e51b815260206004820152601860248201527f496e707574206c656e67746873206d757374206d617463680000000000000000604482015290519081900360640190fd5b60005b838110156108605760008585838181106107d057fe5b90506020020135905060008484848181106107e757fe5b600085815260026020908152604091829020805493820295909501356001600160a01b03166001600160a01b03199093168317909455805186815293840182905280519194507fefe884cc7f82a6cf3cf68f64221519dcf96b5cae9048e1bb008ee32cd05aaa9193829003019150a150506001016107ba565b5050505050565b6000838152600260205260408120546001600160a01b03168383826108d05760405162461bcd60e51b815260206004820190815260248201839052908190604401848480828437600083820152604051601f909101601f19169092018290039550909350505050fd5b509095945050505050565b6000546001600160a01b031633146109245760405162461bcd60e51b815260040180806020018281038252602f81526020018061095c602f913960400191505060405180910390fd5b56fe596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e6572736869704f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6ea265627a7a723158200e994a3fbd50641129fcc3fbe8acde6d9bd970de1ca37a528a032c6a9b771d0e64736f6c63430005100032000000000000000000000000b64ff7a4a33acdf48d97dab0d764afd0f6176882

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.