Sepolia Testnet

Contract

0x14611Eee8b9586d4AF1F651682dCA8e2c9DAA234

Overview

ETH Balance

0 ETH

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Accept Ownership59471352024-05-21 9:39:00147 days ago1716284340IN
0x14611Eee...2c9DAA234
0 ETH0.00324322114.86554407
Nominate New Own...59471342024-05-21 9:38:48147 days ago1716284328IN
0x14611Eee...2c9DAA234
0 ETH0.00482333102.27607299
Add Available Br...50396642024-01-07 11:29:48282 days ago1704626988IN
0x14611Eee...2c9DAA234
0 ETH0.000464017.56037569
Rebuild Caches50347822024-01-06 17:47:36283 days ago1704563256IN
0x14611Eee...2c9DAA234
0 ETH0.0546642421.85746994
Import Addresses50347802024-01-06 17:47:12283 days ago1704563232IN
0x14611Eee...2c9DAA234
0 ETH0.0056507922.9635051
Import Addresses50346042024-01-06 17:09:24283 days ago1704560964IN
0x14611Eee...2c9DAA234
0 ETH0.0111800722.71722055
Import Addresses50342892024-01-06 16:01:12283 days ago1704556872IN
0x14611Eee...2c9DAA234
0 ETH0.0067091127.17814048
Add Available Br...50342152024-01-06 15:45:24283 days ago1704555924IN
0x14611Eee...2c9DAA234
0 ETH0.0037880333.05410696
0x6080604050281912024-01-05 17:59:00284 days ago1704477540IN
 Create: AddressResolverLightChain
0 ETH0.0237629226.58532532

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AddressResolverLightChain

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
london EvmVersion, MIT license

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 6 : AddressResolverLightChain.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

// Inheritance
import "./Owned.sol";
import "../interfaces/IAddressResolver.sol";

// Internal references
import "../interfaces/IIssuer.sol";
import "./MixinResolver.sol";

contract AddressResolverLightChain is Owned, IAddressResolver {
    mapping(bytes32 => address) public repository;
    mapping(bytes32 => address) public availableBridge;
    mapping(address => bool) public isBridge;

    bytes32[] public bridgeList;

    constructor(address _owner) Owned(_owner) {}

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

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

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

    function addAvailableBridge(bytes32 bridgeName, address bridgeAddress) external onlyOwner {
        _addAvailableBridge(bridgeName, bridgeAddress);
    }

    function removeAvailableBridge(bytes32 bridgeName) external onlyOwner {
        _removeAvailableBridge(bridgeName);
    }

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

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

    /* ========== PRIVATE FUNCTIONS ========== */
    function _addAvailableBridge(bytes32 bridgeName, address bridgeAddress) private {
        if (availableBridge[bridgeName] != address(0)) {
            _removeAvailableBridge(bridgeName);
        }
        availableBridge[bridgeName] = bridgeAddress;
        isBridge[bridgeAddress] = true;
        bridgeList.push(bridgeName);
        emit AddBridge(bridgeName, bridgeAddress);
    }

    function _removeAvailableBridge(bytes32 bridgeName) private {
        require(availableBridge[bridgeName] != address(0), "The bridge no exist.");
        uint lastBridgeNumber = bridgeList.length - 1;
        for (uint ii = 0; ii <= lastBridgeNumber; ii++) {
            if (bridgeList[ii] == bridgeName) {
                bridgeList[ii] = bridgeList[lastBridgeNumber];
                bridgeList.pop();
                break;
            }
        }
        address bridgeToRemove = availableBridge[bridgeName];
        delete availableBridge[bridgeName];
        delete isBridge[bridgeToRemove];
        emit RemoveBridge(bridgeName, bridgeToRemove);
    }

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

    function areAddressesImported(bytes32[] calldata names, address[] calldata destinations) external view returns (bool) {
        for (uint256 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));
    }

    function getAvailableBridge(bytes32 bridgeName) external view returns (address) {
        return availableBridge[bridgeName];
    }

    function getBridgeList() external view returns (bytes32[] memory) {
        return bridgeList;
    }

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

    event AddressImported(bytes32 name, address destination);
    event AddBridge(bytes32 indexed bridgeName, address bridgeAddress);
    event RemoveBridge(bytes32 indexed bridgeName, address bridgeAddress);
}

File 2 of 6 : IAddressResolver.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface IAddressResolver {
    function getAddress(bytes32 name) external view returns (address);

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

    function getAvailableBridge(bytes32 bridgeName) external view returns (address);

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

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

File 3 of 6 : IIssuer.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "../interfaces/ISynth.sol";

interface IIssuer {
    // Views

    function allNetworksDebtInfo() external view returns (uint256 debt, uint256 sharesSupply);

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

    function availableSynthCount() external view returns (uint256);

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

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

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

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

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

    function debtBalanceOf(address issuer) external view returns (uint256 debtBalance);

    function issuanceRatio() external view returns (uint256);

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

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

    function minimumStakeTime() external view returns (uint256);

    function remainingIssuableSynths(
        address issuer
    ) external view returns (uint256 maxIssuable, uint256 alreadyIssued, uint256 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) external view returns (uint256);

    function checkFreeCollateral(
        address _issuer,
        bytes32 _collateralKey,
        uint16 _chainId
    ) external view returns (uint256 withdrawableSynthr);

    function issueSynths(
        address from,
        uint256 amount,
        uint256 destChainId
    ) external returns (uint256 synthAmount, uint256 debtShare);

    function issueMaxSynths(address from, uint256 destChainId) external returns (uint256 synthAmount, uint256 debtShare);

    function burnSynths(
        address from,
        bytes32 synthKey,
        uint256 amount
    ) external returns (uint256 synthAmount, uint256 debtShare, uint256 reclaimed, uint256 refunded);

    function burnSynthsToTarget(
        address from,
        bytes32 synthKey
    ) external returns (uint256 synthAmount, uint256 debtShare, uint256 reclaimed, uint256 refunded);

    function burnForRedemption(address deprecatedSynthProxy, address account, uint256 balance) external;

    function burnSynthsWithoutDebt(bytes32 currencyKey, address from, uint amount) external returns (uint256 burnAmount);

    function synthIssueFromSynthrSwap(address _account, bytes32 _synthKey, uint256 _synthAmount) external;

    function liquidateAccount(
        address account,
        bytes32 collateralKey,
        uint16 chainId,
        bool isSelfLiquidation
    ) external returns (uint256 totalRedeemed, uint256 amountToLiquidate, uint256 sharesToRemove);

    function destIssue(address _account, bytes32 _synthKey, uint256 _synthAmount) external;

    function destBurn(address _account, bytes32 _synthKey, uint256 _synthAmount) external returns (uint256);

    function transferMargin(address account, uint256 marginDelta) external returns (uint256);

    function destTransferMargin(address _account, uint256 _marginDelta, bytes32 _marketKey) external returns (bool);

    function setCurrentPeriodId(uint128 periodId) external;
}

File 4 of 6 : ISynth.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface ISynth {
    // Views
    function balanceOf(address _account) external view returns (uint256);

    function currencyKey() external view returns (bytes32);

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

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

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

    function burn(address account, uint256 amount) external;

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

File 5 of 6 : MixinResolver.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

// Internal references
import "./AddressResolverLightChain.sol";

contract MixinResolver {
    AddressResolverLightChain public resolver;

    mapping(bytes32 => address) private addressCache;

    constructor(address _resolver) {
        resolver = AddressResolverLightChain(_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 (uint256 i = 0; i < first.length; i++) {
            combination[i] = first[i];
        }

        for (uint256 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 virtual returns (bytes32[] memory addresses) {}

    function rebuildCache() public {
        bytes32[] memory requiredAddresses = resolverAddressesRequired();
        // The resolver must call this function whenver it updates its state
        for (uint256 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 (uint256 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);
}

File 6 of 6 : Owned.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract Owned {
    address public owner;
    address public nominatedOwner;

    constructor(address _owner) {
        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);
}

Settings
{
  "evmVersion": "london",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs",
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "remappings": [],
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"bridgeName","type":"bytes32"},{"indexed":false,"internalType":"address","name":"bridgeAddress","type":"address"}],"name":"AddBridge","type":"event"},{"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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"bridgeName","type":"bytes32"},{"indexed":false,"internalType":"address","name":"bridgeAddress","type":"address"}],"name":"RemoveBridge","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"bridgeName","type":"bytes32"},{"internalType":"address","name":"bridgeAddress","type":"address"}],"name":"addAvailableBridge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"names","type":"bytes32[]"},{"internalType":"address[]","name":"destinations","type":"address[]"}],"name":"areAddressesImported","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"availableBridge","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"bridgeList","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"name","type":"bytes32"}],"name":"getAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"bridgeName","type":"bytes32"}],"name":"getAvailableBridge","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBridgeList","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"getSynth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"names","type":"bytes32[]"},{"internalType":"address[]","name":"destinations","type":"address[]"}],"name":"importAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBridge","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract MixinResolver[]","name":"destinations","type":"address[]"}],"name":"rebuildCaches","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"bridgeName","type":"bytes32"}],"name":"removeAvailableBridge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"repository","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"name","type":"bytes32"},{"internalType":"string","name":"reason","type":"string"}],"name":"requireAndGetAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50604051610fd9380380610fd983398101604081905261002f916100e8565b806001600160a01b03811661008a5760405162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f74206265203000000000000000604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b03831690811782556040805192835260208301919091527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a15050610118565b6000602082840312156100fa57600080fd5b81516001600160a01b038116811461011157600080fd5b9392505050565b610eb2806101276000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063766f7815116100a2578063ab0b8f7711610071578063ab0b8f771461028a578063bcbd5ae71461029d578063dacb2d01146102be578063f388dbd1146102d1578063f64646a5146102fa57600080fd5b8063766f78151461024957806379ba50971461025c5780638da5cb5b146102645780639f42102f1461027757600080fd5b80634490b3b5116100e95780634490b3b5146101c857806351456061146101dd57806353a47bb7146101f05780635f177d1b14610203578063726600ce1461021657600080fd5b80630c8ac9701461011b5780631627540c14610161578063187f79351461017657806321f8a7211461019f575b600080fd5b610144610129366004610b87565b6000908152600360205260409020546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b61017461016f366004610bb5565b61030d565b005b610144610184366004610b87565b6002602052600090815260409020546001600160a01b031681565b6101446101ad366004610b87565b6000908152600260205260409020546001600160a01b031690565b6101d0610369565b6040516101589190610bd2565b6101446101eb366004610b87565b6103c1565b600154610144906001600160a01b031681565b610174610211366004610c16565b6104d1565b610239610224366004610bb5565b60046020526000908152604090205460ff1681565b6040519015158152602001610158565b610174610257366004610c92565b6104e7565b610174610583565b600054610144906001600160a01b031681565b610239610285366004610cd4565b61066d565b610174610298366004610cd4565b610711565b6102b06102ab366004610b87565b61083a565b604051908152602001610158565b6101446102cc366004610d40565b61085b565b6101446102df366004610b87565b6003602052600090815260409020546001600160a01b031681565b610174610308366004610b87565b61089f565b6103156108b3565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b606060058054806020026020016040519081016040528092919081815260200182805480156103b757602002820191906000526020600020905b8154815260200190600101908083116103a3575b5050505050905090565b6524b9b9bab2b960d11b600090815260026020527f0651498423135bdecab48e2d306f14d560a72d49179b71410fd95b5d25ce349a546001600160a01b0316806104525760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f742066696e6420497373756572206164647265737300000000000060448201526064015b60405180910390fd5b604051633260803960e01b8152600481018490526001600160a01b0382169063326080399060240160206040518083038186803b15801561049257600080fd5b505afa1580156104a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ca9190610dbc565b9392505050565b6104d96108b3565b6104e38282610927565b5050565b60005b8181101561057e5782828281811061050457610504610dd9565b90506020020160208101906105199190610bb5565b6001600160a01b031663741853606040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561055357600080fd5b505af1158015610567573d6000803e3d6000fd5b50505050808061057690610e05565b9150506104ea565b505050565b6001546001600160a01b031633146105fb5760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b6064820152608401610449565b600054600154604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000805b848110156107035783838281811061068b5761068b610dd9565b90506020020160208101906106a09190610bb5565b6001600160a01b0316600260008888858181106106bf576106bf610dd9565b60209081029290920135835250810191909152604001600020546001600160a01b0316146106f1576000915050610709565b806106fb81610e05565b915050610671565b50600190505b949350505050565b6107196108b3565b8281146107685760405162461bcd60e51b815260206004820152601860248201527f496e707574206c656e67746873206d757374206d6174636800000000000000006044820152606401610449565b60005b8381101561083357600085858381811061078757610787610dd9565b90506020020135905060008484848181106107a4576107a4610dd9565b90506020020160208101906107b99190610bb5565b60008381526002602090815260409182902080546001600160a01b0319166001600160a01b0385169081179091558251868152918201529192507fefe884cc7f82a6cf3cf68f64221519dcf96b5cae9048e1bb008ee32cd05aaa91910160405180910390a15050808061082b90610e05565b91505061076b565b5050505050565b6005818154811061084a57600080fd5b600091825260209091200154905081565b6000838152600260205260408120546001600160a01b03168383826108945760405162461bcd60e51b8152600401610449929190610e20565b509095945050505050565b6108a76108b3565b6108b0816109fa565b50565b6000546001600160a01b031633146109255760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b6064820152608401610449565b565b6000828152600360205260409020546001600160a01b03161561094d5761094d826109fa565b600082815260036020908152604080832080546001600160a01b0319166001600160a01b03861690811790915580845260048352818420805460ff191660019081179091556005805491820181559094527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db09093018590555191825283917f52935702da593df2adf6e5b8b3db128e34ef0ad1cdfbd6548dfb0cc0e26949e4910160405180910390a25050565b6000818152600360205260409020546001600160a01b0316610a555760405162461bcd60e51b81526020600482015260146024820152732a343290313934b233b29037379032bc34b9ba1760611b6044820152606401610449565b600554600090610a6790600190610e4f565b905060005b818111610b13578260058281548110610a8757610a87610dd9565b90600052602060002001541415610b015760058281548110610aab57610aab610dd9565b906000526020600020015460058281548110610ac957610ac9610dd9565b6000918252602090912001556005805480610ae657610ae6610e66565b60019003818190600052602060002001600090559055610b13565b80610b0b81610e05565b915050610a6c565b50600082815260036020908152604080832080546001600160a01b031981169091556001600160a01b03168084526004835292819020805460ff191690555182815284917f410f7af1c70db61e76fae740edd95a3edd7c4c59b6e0f5d813d04ef6d3983e86910160405180910390a2505050565b600060208284031215610b9957600080fd5b5035919050565b6001600160a01b03811681146108b057600080fd5b600060208284031215610bc757600080fd5b81356104ca81610ba0565b6020808252825182820181905260009190848201906040850190845b81811015610c0a57835183529284019291840191600101610bee565b50909695505050505050565b60008060408385031215610c2957600080fd5b823591506020830135610c3b81610ba0565b809150509250929050565b60008083601f840112610c5857600080fd5b50813567ffffffffffffffff811115610c7057600080fd5b6020830191508360208260051b8501011115610c8b57600080fd5b9250929050565b60008060208385031215610ca557600080fd5b823567ffffffffffffffff811115610cbc57600080fd5b610cc885828601610c46565b90969095509350505050565b60008060008060408587031215610cea57600080fd5b843567ffffffffffffffff80821115610d0257600080fd5b610d0e88838901610c46565b90965094506020870135915080821115610d2757600080fd5b50610d3487828801610c46565b95989497509550505050565b600080600060408486031215610d5557600080fd5b83359250602084013567ffffffffffffffff80821115610d7457600080fd5b818601915086601f830112610d8857600080fd5b813581811115610d9757600080fd5b876020828501011115610da957600080fd5b6020830194508093505050509250925092565b600060208284031215610dce57600080fd5b81516104ca81610ba0565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415610e1957610e19610def565b5060010190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600082821015610e6157610e61610def565b500390565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220f372f41c944acc9a706ed8791c629c6f9658fce76ab2f898c981f09de704acdd64736f6c634300080900330000000000000000000000006f808ae3445a711ecaa4da5c8330b051541a4de0

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063766f7815116100a2578063ab0b8f7711610071578063ab0b8f771461028a578063bcbd5ae71461029d578063dacb2d01146102be578063f388dbd1146102d1578063f64646a5146102fa57600080fd5b8063766f78151461024957806379ba50971461025c5780638da5cb5b146102645780639f42102f1461027757600080fd5b80634490b3b5116100e95780634490b3b5146101c857806351456061146101dd57806353a47bb7146101f05780635f177d1b14610203578063726600ce1461021657600080fd5b80630c8ac9701461011b5780631627540c14610161578063187f79351461017657806321f8a7211461019f575b600080fd5b610144610129366004610b87565b6000908152600360205260409020546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b61017461016f366004610bb5565b61030d565b005b610144610184366004610b87565b6002602052600090815260409020546001600160a01b031681565b6101446101ad366004610b87565b6000908152600260205260409020546001600160a01b031690565b6101d0610369565b6040516101589190610bd2565b6101446101eb366004610b87565b6103c1565b600154610144906001600160a01b031681565b610174610211366004610c16565b6104d1565b610239610224366004610bb5565b60046020526000908152604090205460ff1681565b6040519015158152602001610158565b610174610257366004610c92565b6104e7565b610174610583565b600054610144906001600160a01b031681565b610239610285366004610cd4565b61066d565b610174610298366004610cd4565b610711565b6102b06102ab366004610b87565b61083a565b604051908152602001610158565b6101446102cc366004610d40565b61085b565b6101446102df366004610b87565b6003602052600090815260409020546001600160a01b031681565b610174610308366004610b87565b61089f565b6103156108b3565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b606060058054806020026020016040519081016040528092919081815260200182805480156103b757602002820191906000526020600020905b8154815260200190600101908083116103a3575b5050505050905090565b6524b9b9bab2b960d11b600090815260026020527f0651498423135bdecab48e2d306f14d560a72d49179b71410fd95b5d25ce349a546001600160a01b0316806104525760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f742066696e6420497373756572206164647265737300000000000060448201526064015b60405180910390fd5b604051633260803960e01b8152600481018490526001600160a01b0382169063326080399060240160206040518083038186803b15801561049257600080fd5b505afa1580156104a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ca9190610dbc565b9392505050565b6104d96108b3565b6104e38282610927565b5050565b60005b8181101561057e5782828281811061050457610504610dd9565b90506020020160208101906105199190610bb5565b6001600160a01b031663741853606040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561055357600080fd5b505af1158015610567573d6000803e3d6000fd5b50505050808061057690610e05565b9150506104ea565b505050565b6001546001600160a01b031633146105fb5760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b6064820152608401610449565b600054600154604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000805b848110156107035783838281811061068b5761068b610dd9565b90506020020160208101906106a09190610bb5565b6001600160a01b0316600260008888858181106106bf576106bf610dd9565b60209081029290920135835250810191909152604001600020546001600160a01b0316146106f1576000915050610709565b806106fb81610e05565b915050610671565b50600190505b949350505050565b6107196108b3565b8281146107685760405162461bcd60e51b815260206004820152601860248201527f496e707574206c656e67746873206d757374206d6174636800000000000000006044820152606401610449565b60005b8381101561083357600085858381811061078757610787610dd9565b90506020020135905060008484848181106107a4576107a4610dd9565b90506020020160208101906107b99190610bb5565b60008381526002602090815260409182902080546001600160a01b0319166001600160a01b0385169081179091558251868152918201529192507fefe884cc7f82a6cf3cf68f64221519dcf96b5cae9048e1bb008ee32cd05aaa91910160405180910390a15050808061082b90610e05565b91505061076b565b5050505050565b6005818154811061084a57600080fd5b600091825260209091200154905081565b6000838152600260205260408120546001600160a01b03168383826108945760405162461bcd60e51b8152600401610449929190610e20565b509095945050505050565b6108a76108b3565b6108b0816109fa565b50565b6000546001600160a01b031633146109255760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b6064820152608401610449565b565b6000828152600360205260409020546001600160a01b03161561094d5761094d826109fa565b600082815260036020908152604080832080546001600160a01b0319166001600160a01b03861690811790915580845260048352818420805460ff191660019081179091556005805491820181559094527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db09093018590555191825283917f52935702da593df2adf6e5b8b3db128e34ef0ad1cdfbd6548dfb0cc0e26949e4910160405180910390a25050565b6000818152600360205260409020546001600160a01b0316610a555760405162461bcd60e51b81526020600482015260146024820152732a343290313934b233b29037379032bc34b9ba1760611b6044820152606401610449565b600554600090610a6790600190610e4f565b905060005b818111610b13578260058281548110610a8757610a87610dd9565b90600052602060002001541415610b015760058281548110610aab57610aab610dd9565b906000526020600020015460058281548110610ac957610ac9610dd9565b6000918252602090912001556005805480610ae657610ae6610e66565b60019003818190600052602060002001600090559055610b13565b80610b0b81610e05565b915050610a6c565b50600082815260036020908152604080832080546001600160a01b031981169091556001600160a01b03168084526004835292819020805460ff191690555182815284917f410f7af1c70db61e76fae740edd95a3edd7c4c59b6e0f5d813d04ef6d3983e86910160405180910390a2505050565b600060208284031215610b9957600080fd5b5035919050565b6001600160a01b03811681146108b057600080fd5b600060208284031215610bc757600080fd5b81356104ca81610ba0565b6020808252825182820181905260009190848201906040850190845b81811015610c0a57835183529284019291840191600101610bee565b50909695505050505050565b60008060408385031215610c2957600080fd5b823591506020830135610c3b81610ba0565b809150509250929050565b60008083601f840112610c5857600080fd5b50813567ffffffffffffffff811115610c7057600080fd5b6020830191508360208260051b8501011115610c8b57600080fd5b9250929050565b60008060208385031215610ca557600080fd5b823567ffffffffffffffff811115610cbc57600080fd5b610cc885828601610c46565b90969095509350505050565b60008060008060408587031215610cea57600080fd5b843567ffffffffffffffff80821115610d0257600080fd5b610d0e88838901610c46565b90965094506020870135915080821115610d2757600080fd5b50610d3487828801610c46565b95989497509550505050565b600080600060408486031215610d5557600080fd5b83359250602084013567ffffffffffffffff80821115610d7457600080fd5b818601915086601f830112610d8857600080fd5b813581811115610d9757600080fd5b876020828501011115610da957600080fd5b6020830194508093505050509250925092565b600060208284031215610dce57600080fd5b81516104ca81610ba0565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415610e1957610e19610def565b5060010190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600082821015610e6157610e61610def565b500390565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220f372f41c944acc9a706ed8791c629c6f9658fce76ab2f898c981f09de704acdd64736f6c63430008090033

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

0000000000000000000000006f808ae3445a711ecaa4da5c8330b051541a4de0

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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000006f808ae3445a711ecaa4da5c8330b051541a4de0


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.