Contract 0x1d551351613a28d676BaC1Af157799e201279198

  Note: Our ETH balance display is temporarily unavailable. Please check back later.
Txn Hash Method
Block
From
To
Value
0x97160fc5b3542ddbea44a326016e35a5d7b36b423330aac1141215edb7d45e61Rebuild Caches202652052024-01-22 21:21:1888 days 6 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.000000104960.000100252
0xa28a1f2cad0748ec7e41708b58a40d1467a487905c537d032453659727417b81Rebuild Caches202646772024-01-22 21:03:4288 days 6 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.0000001049610.000100252
0x3e1714115dce2ef47b33fdc03944be5c3d05e765ef6ac5fb27c975ccb0987011Rebuild Caches180196442023-12-01 21:49:16140 days 5 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.0000001049630.000100252
0x703b1cc9ad7f476721ab456d4706847b4a547df028df01f9bb6db72bab36e745Rebuild Caches180191062023-12-01 21:31:20140 days 6 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.0000001049640.000100253
0x626d838954b3c4193cd40e273575a71fb2054fc6110606d763e74e8c3219b7d6Rebuild Caches180185762023-12-01 21:13:40140 days 6 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.0000001049610.000100252
0xb10917d73b550af23594cbf4185c179eee1ad253a6543e0ab4ed6d98072c92bdRebuild Caches180181582023-12-01 20:59:44140 days 6 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.0000001049630.000100252
0x197cdcc45e17a47dbd16c9d52d675d39cac7f3087e0fc9bda66314a3b9b770d3Rebuild Caches180177352023-12-01 20:45:38140 days 7 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.0000001049620.000100252
0xe1a0a560d5fc115ea581e82e665a79cb455d1e3e32f38a1112ca014fb57a9dc8Rebuild Caches180173022023-12-01 20:31:12140 days 7 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.0000001049610.000100252
0xd7b50319bfdedd2b2ae0a4ee4955b50c148c9d4ba37f2c842181c7b29ec12f22Rebuild Caches180168742023-12-01 20:16:56140 days 7 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.0000001049630.000100252
0x1cbf505559e7f14b77996cca36f1f46698e79f488c811dc6652d6c5f2e889504Rebuild Caches180164372023-12-01 20:02:22140 days 7 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.0000001049610.000100252
0xbfd2021bfee83eef43614ad22161e5aa4c159463f39da7827228f3014d39742bRebuild Caches180160262023-12-01 19:48:40140 days 7 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.0000001049640.000100253
0xd0d7980cc15be4b9c94bf2f0c961042c34d2ffe1959c5cf458542352453cda5aRebuild Caches180130452023-12-01 18:09:18140 days 9 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.0000001049630.000100252
0xbd8cc41dea10812eb35814718a08030097cb5fb3f2025ea44cce1e1bb5e8ef91Rebuild Caches180125042023-12-01 17:51:16140 days 9 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.0000001049620.000100252
0x8dcfe17ee93c0bd5dce103546aef2997b2625fe429bb41459ce01c9196e4a378Rebuild Caches180119642023-12-01 17:33:16140 days 10 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.000000104960.000100252
0x638bedc2ad980ed1669d977a9dfef9861caaf7cc34846c527f4c918d60403d00Rebuild Caches180114252023-12-01 17:15:18140 days 10 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.0000001049630.000100252
0xc300e75a9c9bb262b008a60a5e0c31d036505680417965cb877b9db0c0d35d2bRebuild Caches180108232023-12-01 16:55:14140 days 10 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.0000001049630.000100252
0x2c04ae45a781568e37f7f75beeb114b39dc1273e10ad1cdc9c025ae83bca8538Rebuild Caches180103002023-12-01 16:37:48140 days 11 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.0000001049630.000100252
0xf486641dd5af6bd9d4b8a8126dfb23e057f2713badb50b454458eb5d9cda13abRebuild Caches142634742023-09-05 23:03:36227 days 4 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.0010469920521.00000005
0xc05f5d3bdb6a109e13d6ed61708835965bc0e3e8edec862cf6eb41370960abf1Rebuild Caches142629822023-09-05 22:47:12227 days 5 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.0010469920521.00000005
0x1634b7243b735648211a1ef7c960e1a748ac54211c81eabbb5c2645fa50e9e01Rebuild Caches142624802023-09-05 22:30:28227 days 5 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.0010469920521.00000005
0xbd734a056c4e6acbb58518e0c03e3950da908e5d88fc9202d07b9b8db9f7a107Rebuild Caches142619862023-09-05 22:14:00227 days 5 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.0010469800521.00000005
0x7fd48f7a82902e479397225ffd2f032477c521bb2b7b7837dbce64585e618b30Rebuild Caches142614882023-09-05 21:57:24227 days 5 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.0010469680521.00000005
0x8c54601c3b5c163a240d11050a91c8ad2a864b8724a0497a75597d5bbd25f596Rebuild Caches142604032023-09-05 21:21:14227 days 6 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.0010469800521.00000005
0x65f34d4460a4f448884512d8d7ca4569637d871544e0526415ed7cfd8cf98609Rebuild Caches142599062023-09-05 21:04:40227 days 6 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.0010469800521.00000005
0x8ce82a7e82a08f30ebccdff9dd1e8ff135dc7d9b9ade4a664b96f1a15343fb14Rebuild Caches142594192023-09-05 20:48:26227 days 6 hrs ago0x48914229dedd5a9922f44441ffccfc2cb7856ee9 IN  0x1d551351613a28d676bac1af157799e2012791980 ETH0.0010469920521.00000005
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x250cb934df408033c43141c7632bcd039aa5f2a37b3d9fd669a98286e404f398125188002023-07-27 13:47:48267 days 14 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0x250cb934df408033c43141c7632bcd039aa5f2a37b3d9fd669a98286e404f398125188002023-07-27 13:47:48267 days 14 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0x01723b27e4c58e03c99296fa69ab0a30fe76d60f7e21f1a93ad22667ae80d740125107032023-07-27 9:17:54267 days 18 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0xba3fcf837dd916a33274f2641c5a74503dc3d26c05594ebf4806b613f465c7d8125106892023-07-27 9:17:26267 days 18 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0xb67fbc3821e6342c0999827dbdaadaf217531cf8e0a924e8041f9e2d75a56e6e125106592023-07-27 9:16:26267 days 18 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0xb67fbc3821e6342c0999827dbdaadaf217531cf8e0a924e8041f9e2d75a56e6e125106592023-07-27 9:16:26267 days 18 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0x8e13ada499a3b143b412668af4c7313408a8f27df1afcfe32969e0d7d5b04700124902412023-07-26 21:55:50268 days 5 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0x75dac70776fd0d6d68d6d0796c7a10810720676ba4c7b540f5de712784938425124902362023-07-26 21:55:40268 days 5 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0x3bfaf6b25c7af51d1f2a59fae4d8626ff541c93d82ba27b0a21248a3656dddc4124902312023-07-26 21:55:30268 days 5 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0x158074d13fc31b89b1188b505742528f928ca3199b7af8bfb7e0c02e901d7809124902252023-07-26 21:55:18268 days 5 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0x812e4df7e29d40fbad4a935c8849459b2ed06027359329d24c52c0f24580e482124902182023-07-26 21:55:04268 days 5 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0x2520719cd348ca6fbb49cb237c078c88d82e7b13937caa48170efddff26ba906124902122023-07-26 21:54:52268 days 5 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0x6fb31859c30e1931c8a0a9bf1f2b1ca0c24929cf8f810245a7e5e79f82f1cdaf124902052023-07-26 21:54:38268 days 5 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0x67a911e2adb8d8fa8ea86d138ea4e5f67c0945dbca445e575a2c38c112b47cab124901982023-07-26 21:54:24268 days 5 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0x76ec37b9508d7c04639c210662709390f812525ca52b29d5dcc40c2df4d45ea4124900312023-07-26 21:48:50268 days 5 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0x0f246ad9dccae24105bdc36031dadef9cf23d7de8360f682f94b485b9e67ee9e124900262023-07-26 21:48:40268 days 5 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0x54aebd16c5711a750e0662c52ee6f03c7937aa8dc0afed0d06f881eef8ab079a124900212023-07-26 21:48:30268 days 5 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0x41f9929e31dbbab4dd0c3e27f04b03455132958fce63fcfee24a69e9b9462a46124900162023-07-26 21:48:20268 days 5 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0x541961e067413cb1cf22242941cdb4dadd1e5b5468344e801b04131c3536193d124900112023-07-26 21:48:10268 days 6 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0xb8f979ea60c79cb96f93ac24d44bb041088598209b6c5227b94b610589011bb9124900052023-07-26 21:47:58268 days 6 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0x63b0e8ff10a764ee51f06986d5351d45398ca1aca4aef3703f4973db0a1041b2124900002023-07-26 21:47:48268 days 6 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0x3e5b74cd16331284aaf7899278a515eebd33e00717cc8259c67475dc19a1173a124899952023-07-26 21:47:38268 days 6 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0xe6421ca2d123f8490bc8c56c00ff75ea932cc92cca0cf9a946bbfb819fd38f06124899902023-07-26 21:47:28268 days 6 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0xec910f345f2b670d3984196071ccb2eb59139c45e972e47b645ac429460eef6e124899852023-07-26 21:47:18268 days 6 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
0xd462d3c5adbfd02f32c812a7690dd47d68ebbe55f8e28274cd98204dcdc38cba124899802023-07-26 21:47:08268 days 6 hrs ago 0x9fc84992df5496797784374b810e04238728743d 0x1d551351613a28d676bac1af157799e2012791980 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

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 goerli-optimism.etherscan.io on 2022-08-30
*/

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

* 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) 2022 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 allNetworksDebtInfo()
        external
        view
        returns (
            uint256 debt,
            uint256 sharesSupply,
            bool isStale
        );

    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 excludeOtherCollateral) external view returns (uint);

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

    function liquidationAmounts(address account, bool isSelfLiquidation)
        external
        view
        returns (
            uint totalRedeemed,
            uint debtToRemove,
            uint escrowToLiquidate,
            uint initialDebtBalance
        );

    // Restricted: used internally to Synthetix
    function addSynths(ISynth[] calldata synthsToAdd) external;

    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 burnForRedemption(
        address deprecatedSynthProxy,
        address account,
        uint balance
    ) external;

    function setCurrentPeriodId(uint128 periodId) external;

    function liquidateAccount(address account, bool isSelfLiquidation)
        external
        returns (
            uint totalRedeemed,
            uint debtRemoved,
            uint escrowToLiquidate
        );

    function issueSynthsWithoutDebt(
        bytes32 currencyKey,
        address to,
        uint amount
    ) external returns (bool rateInvalid);

    function burnSynthsWithoutDebt(
        bytes32 currencyKey,
        address to,
        uint amount
    ) external returns (bool rateInvalid);
}


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


// 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"}]

608060405234801561001057600080fd5b50604051610ab9380380610ab98339818101604052602081101561003357600080fd5b5051806001600160a01b038116610091576040805162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f74206265203000000000000000604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825560408051928352602083019190915280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a150506109bf806100fa6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063766f781511610071578063766f78151461015157806379ba5097146101bf5780638da5cb5b146101c75780639f42102f146101cf578063ab0b8f77146102a1578063dacb2d011461035f576100a9565b80631627540c146100ae578063187f7935146100d657806321f8a7211461010f578063514560611461012c57806353a47bb714610149575b600080fd5b6100d4600480360360208110156100c457600080fd5b50356001600160a01b03166103d4565b005b6100f3600480360360208110156100ec57600080fd5b5035610430565b604080516001600160a01b039092168252519081900360200190f35b6100f36004803603602081101561012557600080fd5b503561044b565b6100f36004803603602081101561014257600080fd5b5035610466565b6100f361056e565b6100d46004803603602081101561016757600080fd5b810190602081018135600160201b81111561018157600080fd5b82018360208201111561019357600080fd5b803590602001918460208302840111600160201b831117156101b457600080fd5b50909250905061057d565b6100d4610607565b6100f36106c3565b61028d600480360360408110156101e557600080fd5b810190602081018135600160201b8111156101ff57600080fd5b82018360208201111561021157600080fd5b803590602001918460208302840111600160201b8311171561023257600080fd5b919390929091602081019035600160201b81111561024f57600080fd5b82018360208201111561026157600080fd5b803590602001918460208302840111600160201b8311171561028257600080fd5b5090925090506106d2565b604080519115158252519081900360200190f35b6100d4600480360360408110156102b757600080fd5b810190602081018135600160201b8111156102d157600080fd5b8201836020820111156102e357600080fd5b803590602001918460208302840111600160201b8311171561030457600080fd5b919390929091602081019035600160201b81111561032157600080fd5b82018360208201111561033357600080fd5b803590602001918460208302840111600160201b8311171561035457600080fd5b50909250905061075b565b6100f36004803603604081101561037557600080fd5b81359190810190604081016020820135600160201b81111561039657600080fd5b8201836020820111156103a857600080fd5b803590602001918460018302840111600160201b831117156103c957600080fd5b509092509050610867565b6103dc6108db565b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b6002602052600090815260409020546001600160a01b031681565b6000908152600260205260409020546001600160a01b031690565b6524b9b9bab2b960d11b600090815260026020527f0651498423135bdecab48e2d306f14d560a72d49179b71410fd95b5d25ce349a546001600160a01b0316806104f7576040805162461bcd60e51b815260206004820152601a60248201527f43616e6e6f742066696e64204973737565722061646472657373000000000000604482015290519081900360640190fd5b806001600160a01b03166332608039846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561053b57600080fd5b505afa15801561054f573d6000803e3d6000fd5b505050506040513d602081101561056557600080fd5b50519392505050565b6001546001600160a01b031681565b60005b818110156106025782828281811061059457fe5b905060200201356001600160a01b03166001600160a01b031663741853606040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105de57600080fd5b505af11580156105f2573d6000803e3d6000fd5b5050600190920191506105809050565b505050565b6001546001600160a01b031633146106505760405162461bcd60e51b81526004018080602001828103825260358152602001806109276035913960400191505060405180910390fd5b600054600154604080516001600160a01b03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b031681565b6000805b8481101561074d578383828181106106ea57fe5b905060200201356001600160a01b03166001600160a01b03166002600088888581811061071357fe5b60209081029290920135835250810191909152604001600020546001600160a01b031614610745576000915050610753565b6001016106d6565b50600190505b949350505050565b6107636108db565b8281146107b7576040805162461bcd60e51b815260206004820152601860248201527f496e707574206c656e67746873206d757374206d617463680000000000000000604482015290519081900360640190fd5b60005b838110156108605760008585838181106107d057fe5b90506020020135905060008484848181106107e757fe5b600085815260026020908152604091829020805493820295909501356001600160a01b03166001600160a01b03199093168317909455805186815293840182905280519194507fefe884cc7f82a6cf3cf68f64221519dcf96b5cae9048e1bb008ee32cd05aaa9193829003019150a150506001016107ba565b5050505050565b6000838152600260205260408120546001600160a01b03168383826108d05760405162461bcd60e51b815260206004820190815260248201839052908190604401848480828437600083820152604051601f909101601f19169092018290039550909350505050fd5b509095945050505050565b6000546001600160a01b031633146109245760405162461bcd60e51b815260040180806020018281038252602f81526020018061095c602f913960400191505060405180910390fd5b56fe596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e6572736869704f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6ea265627a7a723158201e2709a3e9dd99e1ddcb9a7a5efd2bf3c231445d85a2b8786479f80b5322fca564736f6c6343000510003200000000000000000000000073570075092502472e4b61a7058df1a4a1db12f2

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063766f781511610071578063766f78151461015157806379ba5097146101bf5780638da5cb5b146101c75780639f42102f146101cf578063ab0b8f77146102a1578063dacb2d011461035f576100a9565b80631627540c146100ae578063187f7935146100d657806321f8a7211461010f578063514560611461012c57806353a47bb714610149575b600080fd5b6100d4600480360360208110156100c457600080fd5b50356001600160a01b03166103d4565b005b6100f3600480360360208110156100ec57600080fd5b5035610430565b604080516001600160a01b039092168252519081900360200190f35b6100f36004803603602081101561012557600080fd5b503561044b565b6100f36004803603602081101561014257600080fd5b5035610466565b6100f361056e565b6100d46004803603602081101561016757600080fd5b810190602081018135600160201b81111561018157600080fd5b82018360208201111561019357600080fd5b803590602001918460208302840111600160201b831117156101b457600080fd5b50909250905061057d565b6100d4610607565b6100f36106c3565b61028d600480360360408110156101e557600080fd5b810190602081018135600160201b8111156101ff57600080fd5b82018360208201111561021157600080fd5b803590602001918460208302840111600160201b8311171561023257600080fd5b919390929091602081019035600160201b81111561024f57600080fd5b82018360208201111561026157600080fd5b803590602001918460208302840111600160201b8311171561028257600080fd5b5090925090506106d2565b604080519115158252519081900360200190f35b6100d4600480360360408110156102b757600080fd5b810190602081018135600160201b8111156102d157600080fd5b8201836020820111156102e357600080fd5b803590602001918460208302840111600160201b8311171561030457600080fd5b919390929091602081019035600160201b81111561032157600080fd5b82018360208201111561033357600080fd5b803590602001918460208302840111600160201b8311171561035457600080fd5b50909250905061075b565b6100f36004803603604081101561037557600080fd5b81359190810190604081016020820135600160201b81111561039657600080fd5b8201836020820111156103a857600080fd5b803590602001918460018302840111600160201b831117156103c957600080fd5b509092509050610867565b6103dc6108db565b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b6002602052600090815260409020546001600160a01b031681565b6000908152600260205260409020546001600160a01b031690565b6524b9b9bab2b960d11b600090815260026020527f0651498423135bdecab48e2d306f14d560a72d49179b71410fd95b5d25ce349a546001600160a01b0316806104f7576040805162461bcd60e51b815260206004820152601a60248201527f43616e6e6f742066696e64204973737565722061646472657373000000000000604482015290519081900360640190fd5b806001600160a01b03166332608039846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561053b57600080fd5b505afa15801561054f573d6000803e3d6000fd5b505050506040513d602081101561056557600080fd5b50519392505050565b6001546001600160a01b031681565b60005b818110156106025782828281811061059457fe5b905060200201356001600160a01b03166001600160a01b031663741853606040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105de57600080fd5b505af11580156105f2573d6000803e3d6000fd5b5050600190920191506105809050565b505050565b6001546001600160a01b031633146106505760405162461bcd60e51b81526004018080602001828103825260358152602001806109276035913960400191505060405180910390fd5b600054600154604080516001600160a01b03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b031681565b6000805b8481101561074d578383828181106106ea57fe5b905060200201356001600160a01b03166001600160a01b03166002600088888581811061071357fe5b60209081029290920135835250810191909152604001600020546001600160a01b031614610745576000915050610753565b6001016106d6565b50600190505b949350505050565b6107636108db565b8281146107b7576040805162461bcd60e51b815260206004820152601860248201527f496e707574206c656e67746873206d757374206d617463680000000000000000604482015290519081900360640190fd5b60005b838110156108605760008585838181106107d057fe5b90506020020135905060008484848181106107e757fe5b600085815260026020908152604091829020805493820295909501356001600160a01b03166001600160a01b03199093168317909455805186815293840182905280519194507fefe884cc7f82a6cf3cf68f64221519dcf96b5cae9048e1bb008ee32cd05aaa9193829003019150a150506001016107ba565b5050505050565b6000838152600260205260408120546001600160a01b03168383826108d05760405162461bcd60e51b815260206004820190815260248201839052908190604401848480828437600083820152604051601f909101601f19169092018290039550909350505050fd5b509095945050505050565b6000546001600160a01b031633146109245760405162461bcd60e51b815260040180806020018281038252602f81526020018061095c602f913960400191505060405180910390fd5b56fe596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e6572736869704f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6ea265627a7a723158201e2709a3e9dd99e1ddcb9a7a5efd2bf3c231445d85a2b8786479f80b5322fca564736f6c63430005100032

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000073570075092502472e4b61a7058df1a4a1db12f2

-----Decoded View---------------
Arg [0] : _owner (address): 0x73570075092502472E4b61A7058Df1A4a1DB12f2

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000073570075092502472e4b61a7058df1a4a1db12f2


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