Sepolia Testnet

Contract

0x484Ae29E4b68d7625D7CBeeCA5Be51e6BA47c7c3

Overview

ETH Balance

0 ETH

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Value
0x6080604054873072024-03-14 23:44:3696 days ago1710459876IN
 Create: SynthUtil
0 ETH0.000128980.11890027

Advanced mode:
Parent Transaction Hash Block From To Value
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SynthUtil

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 2024-03-15
*/

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

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

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


interface IVirtualSynth {
    // Views
    function balanceOfUnderlying(address account) external view returns (uint);

    function rate() external view returns (uint);

    function readyToSettle() external view returns (bool);

    function secsLeftInWaitingPeriod() external view returns (uint);

    function settled() external view returns (bool);

    function synth() external view returns (ISynth);

    // Mutative functions
    function settle(address account) external;
}


// https://docs.synthetix.io/contracts/source/interfaces/isynthetix
interface ISynthetix {
    // 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 collateral(address account) external view returns (uint);

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

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

    function isWaitingPeriod(bytes32 currencyKey) external view returns (bool);

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

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

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

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

    function totalIssuedSynths(bytes32 currencyKey) external view returns (uint);

    function totalIssuedSynthsExcludeOtherCollateral(bytes32 currencyKey) external view returns (uint);

    function transferableSynthetix(address account) external view returns (uint transferable);

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

    // Mutative Functions
    function burnSynths(uint amount) external;

    function burnSynthsOnBehalf(address burnForAddress, uint amount) external;

    function burnSynthsToTarget() external;

    function burnSynthsToTargetOnBehalf(address burnForAddress) external;

    function exchange(
        bytes32 sourceCurrencyKey,
        uint sourceAmount,
        bytes32 destinationCurrencyKey
    ) external returns (uint amountReceived);

    function exchangeOnBehalf(
        address exchangeForAddress,
        bytes32 sourceCurrencyKey,
        uint sourceAmount,
        bytes32 destinationCurrencyKey
    ) external returns (uint amountReceived);

    function exchangeWithTracking(
        bytes32 sourceCurrencyKey,
        uint sourceAmount,
        bytes32 destinationCurrencyKey,
        address rewardAddress,
        bytes32 trackingCode
    ) external returns (uint amountReceived);

    function exchangeWithTrackingForInitiator(
        bytes32 sourceCurrencyKey,
        uint sourceAmount,
        bytes32 destinationCurrencyKey,
        address rewardAddress,
        bytes32 trackingCode
    ) external returns (uint amountReceived);

    function exchangeOnBehalfWithTracking(
        address exchangeForAddress,
        bytes32 sourceCurrencyKey,
        uint sourceAmount,
        bytes32 destinationCurrencyKey,
        address rewardAddress,
        bytes32 trackingCode
    ) external returns (uint amountReceived);

    function exchangeWithVirtual(
        bytes32 sourceCurrencyKey,
        uint sourceAmount,
        bytes32 destinationCurrencyKey,
        bytes32 trackingCode
    ) external returns (uint amountReceived, IVirtualSynth vSynth);

    function exchangeAtomically(
        bytes32 sourceCurrencyKey,
        uint sourceAmount,
        bytes32 destinationCurrencyKey,
        bytes32 trackingCode,
        uint minAmount
    ) external returns (uint amountReceived);

    function issueMaxSynths() external;

    function issueMaxSynthsOnBehalf(address issueForAddress) external;

    function issueSynths(uint amount) external;

    function issueSynthsOnBehalf(address issueForAddress, uint amount) external;

    function mint() external returns (bool);

    function settle(bytes32 currencyKey)
        external
        returns (
            uint reclaimed,
            uint refunded,
            uint numEntries
        );

    // Liquidations
    function liquidateDelinquentAccount(address account) external returns (bool);

    function liquidateDelinquentAccountEscrowIndex(address account, uint escrowStartIndex) external returns (bool);

    function liquidateSelf() external returns (bool);

    // Restricted Functions

    function mintSecondary(address account, uint amount) external;

    function mintSecondaryRewards(uint amount) external;

    function burnSecondary(address account, uint amount) external;

    function migrateAccountBalances(address account) external returns (uint totalEscrowRevoked, uint totalLiquidBalance);
}


pragma experimental ABIEncoderV2;

// https://docs.synthetix.io/contracts/source/interfaces/IDirectIntegration
interface IDirectIntegrationManager {
    struct ParameterIntegrationSettings {
        bytes32 currencyKey;
        address dexPriceAggregator;
        address atomicEquivalentForDexPricing;
        uint atomicExchangeFeeRate;
        uint atomicTwapWindow;
        uint atomicMaxVolumePerBlock;
        uint atomicVolatilityConsiderationWindow;
        uint atomicVolatilityUpdateThreshold;
        uint exchangeFeeRate;
        uint exchangeMaxDynamicFee;
        uint exchangeDynamicFeeRounds;
        uint exchangeDynamicFeeThreshold;
        uint exchangeDynamicFeeWeightDecay;
    }

    function getExchangeParameters(address integration, bytes32 key)
        external
        view
        returns (ParameterIntegrationSettings memory settings);

    function setExchangeParameters(
        address integration,
        bytes32[] calldata currencyKeys,
        ParameterIntegrationSettings calldata params
    ) external;
}


// https://docs.synthetix.io/contracts/source/interfaces/iexchangerates
interface IExchangeRates {
    // Structs
    struct RateAndUpdatedTime {
        uint216 rate;
        uint40 time;
    }

    // Views
    function aggregators(bytes32 currencyKey) external view returns (address);

    function aggregatorWarningFlags() external view returns (address);

    function anyRateIsInvalid(bytes32[] calldata currencyKeys) external view returns (bool);

    function anyRateIsInvalidAtRound(bytes32[] calldata currencyKeys, uint[] calldata roundIds) external view returns (bool);

    function currenciesUsingAggregator(address aggregator) external view returns (bytes32[] memory);

    function effectiveValue(
        bytes32 sourceCurrencyKey,
        uint sourceAmount,
        bytes32 destinationCurrencyKey
    ) external view returns (uint value);

    function effectiveValueAndRates(
        bytes32 sourceCurrencyKey,
        uint sourceAmount,
        bytes32 destinationCurrencyKey
    )
        external
        view
        returns (
            uint value,
            uint sourceRate,
            uint destinationRate
        );

    function effectiveValueAndRatesAtRound(
        bytes32 sourceCurrencyKey,
        uint sourceAmount,
        bytes32 destinationCurrencyKey,
        uint roundIdForSrc,
        uint roundIdForDest
    )
        external
        view
        returns (
            uint value,
            uint sourceRate,
            uint destinationRate
        );

    function effectiveAtomicValueAndRates(
        bytes32 sourceCurrencyKey,
        uint sourceAmount,
        bytes32 destinationCurrencyKey
    )
        external
        view
        returns (
            uint value,
            uint systemValue,
            uint systemSourceRate,
            uint systemDestinationRate
        );

    function effectiveAtomicValueAndRates(
        IDirectIntegrationManager.ParameterIntegrationSettings calldata sourceSettings,
        uint sourceAmount,
        IDirectIntegrationManager.ParameterIntegrationSettings calldata destinationSettings,
        IDirectIntegrationManager.ParameterIntegrationSettings calldata usdSettings
    )
        external
        view
        returns (
            uint value,
            uint systemValue,
            uint systemSourceRate,
            uint systemDestinationRate
        );

    function getCurrentRoundId(bytes32 currencyKey) external view returns (uint);

    function getLastRoundIdBeforeElapsedSecs(
        bytes32 currencyKey,
        uint startingRoundId,
        uint startingTimestamp,
        uint timediff
    ) external view returns (uint);

    function lastRateUpdateTimes(bytes32 currencyKey) external view returns (uint256);

    function rateAndTimestampAtRound(bytes32 currencyKey, uint roundId) external view returns (uint rate, uint time);

    function rateAndUpdatedTime(bytes32 currencyKey) external view returns (uint rate, uint time);

    function rateAndInvalid(bytes32 currencyKey) external view returns (uint rate, bool isInvalid);

    function rateForCurrency(bytes32 currencyKey) external view returns (uint);

    function rateIsFlagged(bytes32 currencyKey) external view returns (bool);

    function rateIsInvalid(bytes32 currencyKey) external view returns (bool);

    function rateIsStale(bytes32 currencyKey) external view returns (bool);

    function rateStalePeriod() external view returns (uint);

    function ratesAndUpdatedTimeForCurrencyLastNRounds(
        bytes32 currencyKey,
        uint numRounds,
        uint roundId
    ) external view returns (uint[] memory rates, uint[] memory times);

    function ratesAndInvalidForCurrencies(bytes32[] calldata currencyKeys)
        external
        view
        returns (uint[] memory rates, bool anyRateInvalid);

    function ratesForCurrencies(bytes32[] calldata currencyKeys) external view returns (uint[] memory);

    function synthTooVolatileForAtomicExchange(bytes32 currencyKey) external view returns (bool);

    function synthTooVolatileForAtomicExchange(IDirectIntegrationManager.ParameterIntegrationSettings calldata settings)
        external
        view
        returns (bool);

    function rateWithSafetyChecks(bytes32 currencyKey)
        external
        returns (
            uint rate,
            bool broken,
            bool invalid
        );
}


// 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/ierc20
interface IERC20 {
    // ERC20 Optional Views
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);

    // Views
    function totalSupply() external view returns (uint);

    function balanceOf(address owner) external view returns (uint);

    function allowance(address owner, address spender) external view returns (uint);

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

    function approve(address spender, uint value) external returns (bool);

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

    // Events
    event Transfer(address indexed from, address indexed to, uint value);

    event Approval(address indexed owner, address indexed spender, uint value);
}


// Inheritance


// https://docs.synthetix.io/contracts/source/contracts/synthutil
contract SynthUtil {
    IAddressResolver public addressResolverProxy;

    bytes32 internal constant CONTRACT_SYNTHETIX = "Synthetix";
    bytes32 internal constant CONTRACT_EXRATES = "ExchangeRates";
    bytes32 internal constant SUSD = "sUSD";

    constructor(address resolver) public {
        addressResolverProxy = IAddressResolver(resolver);
    }

    function _synthetix() internal view returns (ISynthetix) {
        return ISynthetix(addressResolverProxy.requireAndGetAddress(CONTRACT_SYNTHETIX, "Missing Synthetix address"));
    }

    function _exchangeRates() internal view returns (IExchangeRates) {
        return IExchangeRates(addressResolverProxy.requireAndGetAddress(CONTRACT_EXRATES, "Missing ExchangeRates address"));
    }

    function totalSynthsInKey(address account, bytes32 currencyKey) external view returns (uint total) {
        ISynthetix synthetix = _synthetix();
        IExchangeRates exchangeRates = _exchangeRates();
        uint numSynths = synthetix.availableSynthCount();
        for (uint i = 0; i < numSynths; i++) {
            ISynth synth = synthetix.availableSynths(i);
            total += exchangeRates.effectiveValue(
                synth.currencyKey(),
                IERC20(address(synth)).balanceOf(account),
                currencyKey
            );
        }
        return total;
    }

    function synthsBalances(address account)
        external
        view
        returns (
            bytes32[] memory,
            uint[] memory,
            uint[] memory
        )
    {
        ISynthetix synthetix = _synthetix();
        IExchangeRates exchangeRates = _exchangeRates();
        uint numSynths = synthetix.availableSynthCount();
        bytes32[] memory currencyKeys = new bytes32[](numSynths);
        uint[] memory balances = new uint[](numSynths);
        uint[] memory sUSDBalances = new uint[](numSynths);
        for (uint i = 0; i < numSynths; i++) {
            ISynth synth = synthetix.availableSynths(i);
            currencyKeys[i] = synth.currencyKey();
            balances[i] = IERC20(address(synth)).balanceOf(account);
            sUSDBalances[i] = exchangeRates.effectiveValue(currencyKeys[i], balances[i], SUSD);
        }
        return (currencyKeys, balances, sUSDBalances);
    }

    function synthsRates() external view returns (bytes32[] memory, uint[] memory) {
        bytes32[] memory currencyKeys = _synthetix().availableCurrencyKeys();
        return (currencyKeys, _exchangeRates().ratesForCurrencies(currencyKeys));
    }

    function synthsTotalSupplies()
        external
        view
        returns (
            bytes32[] memory,
            uint256[] memory,
            uint256[] memory
        )
    {
        ISynthetix synthetix = _synthetix();
        IExchangeRates exchangeRates = _exchangeRates();

        uint256 numSynths = synthetix.availableSynthCount();
        bytes32[] memory currencyKeys = new bytes32[](numSynths);
        uint256[] memory balances = new uint256[](numSynths);
        uint256[] memory sUSDBalances = new uint256[](numSynths);
        for (uint256 i = 0; i < numSynths; i++) {
            ISynth synth = synthetix.availableSynths(i);
            currencyKeys[i] = synth.currencyKey();
            balances[i] = IERC20(address(synth)).totalSupply();
            sUSDBalances[i] = exchangeRates.effectiveValue(currencyKeys[i], balances[i], SUSD);
        }
        return (currencyKeys, balances, sUSDBalances);
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"resolver","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":true,"inputs":[],"name":"addressResolverProxy","outputs":[{"internalType":"contract IAddressResolver","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"synthsBalances","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"synthsRates","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"synthsTotalSupplies","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"currencyKey","type":"bytes32"}],"name":"totalSynthsInKey","outputs":[{"internalType":"uint256","name":"total","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50604051620012fa380380620012fa83398101604081905261003191610067565b600080546001600160a01b0319166001600160a01b03929092169190911790556100b5565b80516100618161009e565b92915050565b60006020828403121561007957600080fd5b60006100858484610056565b949350505050565b60006001600160a01b038216610061565b6100a78161008d565b81146100b257600080fd5b50565b61123580620000c56000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80630120be331461005c57806327fe55a614610085578063492dbcdd1461009b578063a827bf48146100b2578063d18ab376146100c5575b600080fd5b61006f61006a366004610e0c565b6100da565b60405161007c919061113b565b60405180910390f35b61008d610377565b60405161007c929190611060565b6100a361048b565b60405161007c93929190611085565b6100a36100c0366004610dc8565b610825565b6100cd610bca565b60405161007c919061112d565b6000806100e5610bd9565b905060006100f1610c6b565b90506000826001600160a01b031663dbf633406040518163ffffffff1660e01b815260040160206040518083038186803b15801561012e57600080fd5b505afa158015610142573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101669190810190610eb0565b905060005b8181101561036c576040516320d7846760e21b81526000906001600160a01b0386169063835e119c906101a290859060040161113b565b60206040518083038186803b1580156101ba57600080fd5b505afa1580156101ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101f29190810190610ece565b9050836001600160a01b031663654a60ac826001600160a01b031663dbd06c856040518163ffffffff1660e01b815260040160206040518083038186803b15801561023c57600080fd5b505afa158015610250573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102749190810190610eb0565b6040516370a0823160e01b81526001600160a01b038516906370a08231906102a0908e9060040161103a565b60206040518083038186803b1580156102b857600080fd5b505afa1580156102cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102f09190810190610eb0565b8a6040518463ffffffff1660e01b815260040161030f93929190611105565b60206040518083038186803b15801561032757600080fd5b505afa15801561033b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061035f9190810190610eb0565b909501945060010161016b565b505050505b92915050565b6060806060610384610bd9565b6001600160a01b03166372cb051f6040518163ffffffff1660e01b815260040160006040518083038186803b1580156103bc57600080fd5b505afa1580156103d0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103f89190810190610e46565b905080610403610c6b565b6001600160a01b031663c2c8a676836040518263ffffffff1660e01b815260040161042e9190611048565b60006040518083038186803b15801561044657600080fd5b505afa15801561045a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104829190810190610e7b565b92509250509091565b6060806060600061049a610bd9565b905060006104a6610c6b565b90506000826001600160a01b031663dbf633406040518163ffffffff1660e01b815260040160206040518083038186803b1580156104e357600080fd5b505afa1580156104f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061051b9190810190610eb0565b9050606081604051908082528060200260200182016040528015610549578160200160208202803883390190505b509050606082604051908082528060200260200182016040528015610578578160200160208202803883390190505b5090506060836040519080825280602002602001820160405280156105a7578160200160208202803883390190505b50905060005b84811015610815576040516320d7846760e21b81526000906001600160a01b0389169063835e119c906105e490859060040161113b565b60206040518083038186803b1580156105fc57600080fd5b505afa158015610610573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106349190810190610ece565b9050806001600160a01b031663dbd06c856040518163ffffffff1660e01b815260040160206040518083038186803b15801561066f57600080fd5b505afa158015610683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106a79190810190610eb0565b8583815181106106b357fe5b602002602001018181525050806001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106f857600080fd5b505afa15801561070c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107309190810190610eb0565b84838151811061073c57fe5b602002602001018181525050866001600160a01b031663654a60ac86848151811061076357fe5b602002602001015186858151811061077757fe5b6020026020010151631cd554d160e21b6040518463ffffffff1660e01b81526004016107a593929190611105565b60206040518083038186803b1580156107bd57600080fd5b505afa1580156107d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107f59190810190610eb0565b83838151811061080157fe5b6020908102919091010152506001016105ad565b5091975095509350505050909192565b60608060606000610834610bd9565b90506000610840610c6b565b90506000826001600160a01b031663dbf633406040518163ffffffff1660e01b815260040160206040518083038186803b15801561087d57600080fd5b505afa158015610891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108b59190810190610eb0565b90506060816040519080825280602002602001820160405280156108e3578160200160208202803883390190505b509050606082604051908082528060200260200182016040528015610912578160200160208202803883390190505b509050606083604051908082528060200260200182016040528015610941578160200160208202803883390190505b50905060005b84811015610bb9576040516320d7846760e21b81526000906001600160a01b0389169063835e119c9061097e90859060040161113b565b60206040518083038186803b15801561099657600080fd5b505afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109ce9190810190610ece565b9050806001600160a01b031663dbd06c856040518163ffffffff1660e01b815260040160206040518083038186803b158015610a0957600080fd5b505afa158015610a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a419190810190610eb0565b858381518110610a4d57fe5b60209081029190910101526040516370a0823160e01b81526001600160a01b038216906370a0823190610a84908f9060040161103a565b60206040518083038186803b158015610a9c57600080fd5b505afa158015610ab0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ad49190810190610eb0565b848381518110610ae057fe5b602002602001018181525050866001600160a01b031663654a60ac868481518110610b0757fe5b6020026020010151868581518110610b1b57fe5b6020026020010151631cd554d160e21b6040518463ffffffff1660e01b8152600401610b4993929190611105565b60206040518083038186803b158015610b6157600080fd5b505afa158015610b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b999190810190610eb0565b838381518110610ba557fe5b602090810291909101015250600101610947565b509199909850909650945050505050565b6000546001600160a01b031681565b6000805460405163dacb2d0160e01b81526001600160a01b039091169063dacb2d0190610c1690680a6f2dce8d0cae8d2f60bb1b906004016110c7565b60206040518083038186803b158015610c2e57600080fd5b505afa158015610c42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c669190810190610dee565b905090565b6000805460405163dacb2d0160e01b81526001600160a01b039091169063dacb2d0190610c16906c45786368616e6765526174657360981b906004016110e6565b8035610371816111c9565b8051610371816111c9565b600082601f830112610cd357600080fd5b8151610ce6610ce182611170565b611149565b91508181835260208401935060208101905083856020840282011115610d0b57600080fd5b60005b8381101561036c5781610d218882610db2565b8452506020928301929190910190600101610d0e565b600082601f830112610d4857600080fd5b8151610d56610ce182611170565b91508181835260208401935060208101905083856020840282011115610d7b57600080fd5b60005b8381101561036c5781610d918882610db2565b8452506020928301929190910190600101610d7e565b8035610371816111e0565b8051610371816111e0565b8051610371816111e9565b600060208284031215610dda57600080fd5b6000610de68484610cac565b949350505050565b600060208284031215610e0057600080fd5b6000610de68484610cb7565b60008060408385031215610e1f57600080fd5b6000610e2b8585610cac565b9250506020610e3c85828601610da7565b9150509250929050565b600060208284031215610e5857600080fd5b815167ffffffffffffffff811115610e6f57600080fd5b610de684828501610cc2565b600060208284031215610e8d57600080fd5b815167ffffffffffffffff811115610ea457600080fd5b610de684828501610d37565b600060208284031215610ec257600080fd5b6000610de68484610db2565b600060208284031215610ee057600080fd5b6000610de68484610dbd565b6000610ef88383610fb6565b505060200190565b610f09816111a4565b82525050565b6000610f1a82611197565b610f24818561119b565b9350610f2f83611191565b8060005b83811015610f5d578151610f478882610eec565b9750610f5283611191565b925050600101610f33565b509495945050505050565b6000610f7382611197565b610f7d818561119b565b9350610f8883611191565b8060005b83811015610f5d578151610fa08882610eec565b9750610fab83611191565b925050600101610f8c565b610f09816111af565b610f09816111b2565b6000610fd560198361119b565b7f4d697373696e672053796e746865746978206164647265737300000000000000815260200192915050565b600061100e601d8361119b565b7f4d697373696e672045786368616e676552617465732061646472657373000000815260200192915050565b602081016103718284610f00565b602080825281016110598184610f0f565b9392505050565b604080825281016110718185610f0f565b90508181036020830152610de68184610f68565b606080825281016110968186610f0f565b905081810360208301526110aa8185610f68565b905081810360408301526110be8184610f68565b95945050505050565b604081016110d58284610fb6565b818103602083015261105981610fc8565b604081016110f48284610fb6565b818103602083015261105981611001565b606081016111138286610fb6565b6111206020830185610fb6565b610de66040830184610fb6565b602081016103718284610fbf565b602081016103718284610fb6565b60405181810167ffffffffffffffff8111828210171561116857600080fd5b604052919050565b600067ffffffffffffffff82111561118757600080fd5b5060209081020190565b60200190565b5190565b90815260200190565b6000610371826111bd565b90565b6000610371826111a4565b6001600160a01b031690565b6111d2816111a4565b81146111dd57600080fd5b50565b6111d2816111af565b6111d2816111b256fea365627a7a723158203da177f68dfbf9ce69642e3857439697629c7fefbaa57f00661a0cedb01d56e56c6578706572696d656e74616cf564736f6c63430005100040000000000000000000000000b61a6af69e992e1bed69b0ae0cba5143ca25d4d1

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100575760003560e01c80630120be331461005c57806327fe55a614610085578063492dbcdd1461009b578063a827bf48146100b2578063d18ab376146100c5575b600080fd5b61006f61006a366004610e0c565b6100da565b60405161007c919061113b565b60405180910390f35b61008d610377565b60405161007c929190611060565b6100a361048b565b60405161007c93929190611085565b6100a36100c0366004610dc8565b610825565b6100cd610bca565b60405161007c919061112d565b6000806100e5610bd9565b905060006100f1610c6b565b90506000826001600160a01b031663dbf633406040518163ffffffff1660e01b815260040160206040518083038186803b15801561012e57600080fd5b505afa158015610142573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101669190810190610eb0565b905060005b8181101561036c576040516320d7846760e21b81526000906001600160a01b0386169063835e119c906101a290859060040161113b565b60206040518083038186803b1580156101ba57600080fd5b505afa1580156101ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101f29190810190610ece565b9050836001600160a01b031663654a60ac826001600160a01b031663dbd06c856040518163ffffffff1660e01b815260040160206040518083038186803b15801561023c57600080fd5b505afa158015610250573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102749190810190610eb0565b6040516370a0823160e01b81526001600160a01b038516906370a08231906102a0908e9060040161103a565b60206040518083038186803b1580156102b857600080fd5b505afa1580156102cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102f09190810190610eb0565b8a6040518463ffffffff1660e01b815260040161030f93929190611105565b60206040518083038186803b15801561032757600080fd5b505afa15801561033b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061035f9190810190610eb0565b909501945060010161016b565b505050505b92915050565b6060806060610384610bd9565b6001600160a01b03166372cb051f6040518163ffffffff1660e01b815260040160006040518083038186803b1580156103bc57600080fd5b505afa1580156103d0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103f89190810190610e46565b905080610403610c6b565b6001600160a01b031663c2c8a676836040518263ffffffff1660e01b815260040161042e9190611048565b60006040518083038186803b15801561044657600080fd5b505afa15801561045a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104829190810190610e7b565b92509250509091565b6060806060600061049a610bd9565b905060006104a6610c6b565b90506000826001600160a01b031663dbf633406040518163ffffffff1660e01b815260040160206040518083038186803b1580156104e357600080fd5b505afa1580156104f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061051b9190810190610eb0565b9050606081604051908082528060200260200182016040528015610549578160200160208202803883390190505b509050606082604051908082528060200260200182016040528015610578578160200160208202803883390190505b5090506060836040519080825280602002602001820160405280156105a7578160200160208202803883390190505b50905060005b84811015610815576040516320d7846760e21b81526000906001600160a01b0389169063835e119c906105e490859060040161113b565b60206040518083038186803b1580156105fc57600080fd5b505afa158015610610573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106349190810190610ece565b9050806001600160a01b031663dbd06c856040518163ffffffff1660e01b815260040160206040518083038186803b15801561066f57600080fd5b505afa158015610683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106a79190810190610eb0565b8583815181106106b357fe5b602002602001018181525050806001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106f857600080fd5b505afa15801561070c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107309190810190610eb0565b84838151811061073c57fe5b602002602001018181525050866001600160a01b031663654a60ac86848151811061076357fe5b602002602001015186858151811061077757fe5b6020026020010151631cd554d160e21b6040518463ffffffff1660e01b81526004016107a593929190611105565b60206040518083038186803b1580156107bd57600080fd5b505afa1580156107d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107f59190810190610eb0565b83838151811061080157fe5b6020908102919091010152506001016105ad565b5091975095509350505050909192565b60608060606000610834610bd9565b90506000610840610c6b565b90506000826001600160a01b031663dbf633406040518163ffffffff1660e01b815260040160206040518083038186803b15801561087d57600080fd5b505afa158015610891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108b59190810190610eb0565b90506060816040519080825280602002602001820160405280156108e3578160200160208202803883390190505b509050606082604051908082528060200260200182016040528015610912578160200160208202803883390190505b509050606083604051908082528060200260200182016040528015610941578160200160208202803883390190505b50905060005b84811015610bb9576040516320d7846760e21b81526000906001600160a01b0389169063835e119c9061097e90859060040161113b565b60206040518083038186803b15801561099657600080fd5b505afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109ce9190810190610ece565b9050806001600160a01b031663dbd06c856040518163ffffffff1660e01b815260040160206040518083038186803b158015610a0957600080fd5b505afa158015610a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a419190810190610eb0565b858381518110610a4d57fe5b60209081029190910101526040516370a0823160e01b81526001600160a01b038216906370a0823190610a84908f9060040161103a565b60206040518083038186803b158015610a9c57600080fd5b505afa158015610ab0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ad49190810190610eb0565b848381518110610ae057fe5b602002602001018181525050866001600160a01b031663654a60ac868481518110610b0757fe5b6020026020010151868581518110610b1b57fe5b6020026020010151631cd554d160e21b6040518463ffffffff1660e01b8152600401610b4993929190611105565b60206040518083038186803b158015610b6157600080fd5b505afa158015610b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b999190810190610eb0565b838381518110610ba557fe5b602090810291909101015250600101610947565b509199909850909650945050505050565b6000546001600160a01b031681565b6000805460405163dacb2d0160e01b81526001600160a01b039091169063dacb2d0190610c1690680a6f2dce8d0cae8d2f60bb1b906004016110c7565b60206040518083038186803b158015610c2e57600080fd5b505afa158015610c42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c669190810190610dee565b905090565b6000805460405163dacb2d0160e01b81526001600160a01b039091169063dacb2d0190610c16906c45786368616e6765526174657360981b906004016110e6565b8035610371816111c9565b8051610371816111c9565b600082601f830112610cd357600080fd5b8151610ce6610ce182611170565b611149565b91508181835260208401935060208101905083856020840282011115610d0b57600080fd5b60005b8381101561036c5781610d218882610db2565b8452506020928301929190910190600101610d0e565b600082601f830112610d4857600080fd5b8151610d56610ce182611170565b91508181835260208401935060208101905083856020840282011115610d7b57600080fd5b60005b8381101561036c5781610d918882610db2565b8452506020928301929190910190600101610d7e565b8035610371816111e0565b8051610371816111e0565b8051610371816111e9565b600060208284031215610dda57600080fd5b6000610de68484610cac565b949350505050565b600060208284031215610e0057600080fd5b6000610de68484610cb7565b60008060408385031215610e1f57600080fd5b6000610e2b8585610cac565b9250506020610e3c85828601610da7565b9150509250929050565b600060208284031215610e5857600080fd5b815167ffffffffffffffff811115610e6f57600080fd5b610de684828501610cc2565b600060208284031215610e8d57600080fd5b815167ffffffffffffffff811115610ea457600080fd5b610de684828501610d37565b600060208284031215610ec257600080fd5b6000610de68484610db2565b600060208284031215610ee057600080fd5b6000610de68484610dbd565b6000610ef88383610fb6565b505060200190565b610f09816111a4565b82525050565b6000610f1a82611197565b610f24818561119b565b9350610f2f83611191565b8060005b83811015610f5d578151610f478882610eec565b9750610f5283611191565b925050600101610f33565b509495945050505050565b6000610f7382611197565b610f7d818561119b565b9350610f8883611191565b8060005b83811015610f5d578151610fa08882610eec565b9750610fab83611191565b925050600101610f8c565b610f09816111af565b610f09816111b2565b6000610fd560198361119b565b7f4d697373696e672053796e746865746978206164647265737300000000000000815260200192915050565b600061100e601d8361119b565b7f4d697373696e672045786368616e676552617465732061646472657373000000815260200192915050565b602081016103718284610f00565b602080825281016110598184610f0f565b9392505050565b604080825281016110718185610f0f565b90508181036020830152610de68184610f68565b606080825281016110968186610f0f565b905081810360208301526110aa8185610f68565b905081810360408301526110be8184610f68565b95945050505050565b604081016110d58284610fb6565b818103602083015261105981610fc8565b604081016110f48284610fb6565b818103602083015261105981611001565b606081016111138286610fb6565b6111206020830185610fb6565b610de66040830184610fb6565b602081016103718284610fbf565b602081016103718284610fb6565b60405181810167ffffffffffffffff8111828210171561116857600080fd5b604052919050565b600067ffffffffffffffff82111561118757600080fd5b5060209081020190565b60200190565b5190565b90815260200190565b6000610371826111bd565b90565b6000610371826111a4565b6001600160a01b031690565b6111d2816111a4565b81146111dd57600080fd5b50565b6111d2816111af565b6111d2816111b256fea365627a7a723158203da177f68dfbf9ce69642e3857439697629c7fefbaa57f00661a0cedb01d56e56c6578706572696d656e74616cf564736f6c63430005100040

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

000000000000000000000000b61a6af69e992e1bed69b0ae0cba5143ca25d4d1

-----Decoded View---------------
Arg [0] : resolver (address): 0xb61a6aF69e992e1bed69b0aE0CBa5143CA25D4D1

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000b61a6af69e992e1bed69b0ae0cba5143ca25d4d1


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]

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.