Sepolia Testnet

Contract

0x21D4211d6125B40bA6049308204B091A8efE3452

Overview

ETH Balance

0 ETH

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Value
Deploy With Crea...53173972024-02-19 0:54:2499 days ago1708304064IN
0x21D4211d...A8efE3452
0 ETH0.000625490.71621043
Deploy With Crea...53173902024-02-19 0:53:0099 days ago1708303980IN
0x21D4211d...A8efE3452
0 ETH0.00005930.77175317
Deploy With Crea...53173412024-02-19 0:42:0099 days ago1708303320IN
0x21D4211d...A8efE3452
0 ETH0.000104621.36149919
Deploy With Crea...53173412024-02-19 0:42:0099 days ago1708303320IN
0x21D4211d...A8efE3452
0 ETH0.000844791.33866324
Deploy With Crea...53173102024-02-19 0:35:0099 days ago1708302900IN
0x21D4211d...A8efE3452
0 ETH0.001996951.58075992
Deploy With Crea...53173032024-02-19 0:33:3699 days ago1708302816IN
0x21D4211d...A8efE3452
0 ETH0.000307271.91882414
Deploy With Crea...53173032024-02-19 0:33:3699 days ago1708302816IN
0x21D4211d...A8efE3452
0 ETH0.000358942.24143756
Deploy With Crea...53173012024-02-19 0:33:1299 days ago1708302792IN
0x21D4211d...A8efE3452
0 ETH0.0017215310.75024014
Deploy With Crea...53173002024-02-19 0:33:0099 days ago1708302780IN
0x21D4211d...A8efE3452
0 ETH0.0016400410.24141029
Deploy With Crea...53173002024-02-19 0:33:0099 days ago1708302780IN
0x21D4211d...A8efE3452
0 ETH0.001535699.58976842
Deploy With Crea...53173002024-02-19 0:33:0099 days ago1708302780IN
0x21D4211d...A8efE3452
0 ETH0.004606512.69317963
Deploy With Crea...53173002024-02-19 0:33:0099 days ago1708302780IN
0x21D4211d...A8efE3452
0 ETH0.000203371.82589898
Deploy With Crea...53164512024-02-18 21:22:1299 days ago1708291332IN
0x21D4211d...A8efE3452
0 ETH0.000407443.65798873
Deploy With Crea...53164512024-02-18 21:22:1299 days ago1708291332IN
0x21D4211d...A8efE3452
0 ETH0.00072466.50537527
Deploy With Crea...53164512024-02-18 21:22:1299 days ago1708291332IN
0x21D4211d...A8efE3452
0 ETH0.002291742.24953421
Deploy With Crea...53161282024-02-18 20:09:2499 days ago1708286964IN
0x21D4211d...A8efE3452
0 ETH0.00425551.59514543
Deploy With Crea...53161172024-02-18 20:07:1299 days ago1708286832IN
0x21D4211d...A8efE3452
0 ETH0.001425361.81184869
Deploy With Crea...53160852024-02-18 19:59:3699 days ago1708286376IN
0x21D4211d...A8efE3452
0 ETH0.004691232.62671724
Deploy With Crea...53160632024-02-18 19:54:4899 days ago1708286088IN
0x21D4211d...A8efE3452
0 ETH0.000868412.85885422
Deploy With Crea...53160532024-02-18 19:52:1299 days ago1708285932IN
0x21D4211d...A8efE3452
0 ETH0.001003933.3050061
Deploy With Crea...53160532024-02-18 19:52:1299 days ago1708285932IN
0x21D4211d...A8efE3452
0 ETH0.000952343.13516117
Deploy With Crea...53160352024-02-18 19:47:2499 days ago1708285644IN
0x21D4211d...A8efE3452
0 ETH0.000812342.67426981
Deploy With Crea...53159732024-02-18 19:33:3699 days ago1708284816IN
0x21D4211d...A8efE3452
0 ETH0.002377447.82665296
Deploy With Crea...53159652024-02-18 19:31:4899 days ago1708284708IN
0x21D4211d...A8efE3452
0 ETH0.009959197.8943061
Deploy With Crea...53159572024-02-18 19:30:1299 days ago1708284612IN
0x21D4211d...A8efE3452
0 ETH0.038582998.30034624
View all transactions

Latest 18 internal transactions

Advanced mode:
Parent Transaction Hash Block From To Value
53173972024-02-19 0:54:2499 days ago1708304064
0x21D4211d...A8efE3452
 Contract Creation0 ETH
53173412024-02-19 0:42:0099 days ago1708303320
0x21D4211d...A8efE3452
 Contract Creation0 ETH
53173102024-02-19 0:35:0099 days ago1708302900
0x21D4211d...A8efE3452
 Contract Creation0 ETH
53173002024-02-19 0:33:0099 days ago1708302780
0x21D4211d...A8efE3452
 Contract Creation0 ETH
53164512024-02-18 21:22:1299 days ago1708291332
0x21D4211d...A8efE3452
 Contract Creation0 ETH
53161282024-02-18 20:09:2499 days ago1708286964
0x21D4211d...A8efE3452
 Contract Creation0 ETH
53161172024-02-18 20:07:1299 days ago1708286832
0x21D4211d...A8efE3452
 Contract Creation0 ETH
53160852024-02-18 19:59:3699 days ago1708286376
0x21D4211d...A8efE3452
 Contract Creation0 ETH
53160632024-02-18 19:54:4899 days ago1708286088
0x21D4211d...A8efE3452
 Contract Creation0 ETH
53160532024-02-18 19:52:1299 days ago1708285932
0x21D4211d...A8efE3452
 Contract Creation0 ETH
53160532024-02-18 19:52:1299 days ago1708285932
0x21D4211d...A8efE3452
 Contract Creation0 ETH
53160352024-02-18 19:47:2499 days ago1708285644
0x21D4211d...A8efE3452
 Contract Creation0 ETH
53159732024-02-18 19:33:3699 days ago1708284816
0x21D4211d...A8efE3452
 Contract Creation0 ETH
53159652024-02-18 19:31:4899 days ago1708284708
0x21D4211d...A8efE3452
 Contract Creation0 ETH
53159572024-02-18 19:30:1299 days ago1708284612
0x21D4211d...A8efE3452
 Contract Creation0 ETH
53159512024-02-18 19:28:3699 days ago1708284516
0x21D4211d...A8efE3452
 Contract Creation0 ETH
53159442024-02-18 19:27:0099 days ago1708284420
0x21D4211d...A8efE3452
 Contract Creation0 ETH
53159372024-02-18 19:25:1299 days ago1708284312
0x21D4211d...A8efE3452
 Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EBTCDeployer

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 4 : EBTCDeployer.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

import "./Dependencies/Create3.sol";
import "./Dependencies/Ownable.sol";

contract EBTCDeployer is Ownable {
    string public constant name = "eBTC Deployer";

    string public constant AUTHORITY = "ebtc.v1.authority";
    string public constant LIQUIDATION_LIBRARY = "ebtc.v1.liquidationLibrary";
    string public constant CDP_MANAGER = "ebtc.v1.cdpManager";
    string public constant BORROWER_OPERATIONS = "ebtc.v1.borrowerOperations";

    string public constant PRICE_FEED = "ebtc.v1.priceFeed";
    string public constant EBTC_FEED = "ebtc.v1.ebtcFeed";
    string public constant SORTED_CDPS = "ebtc.v1.sortedCdps";

    string public constant ACTIVE_POOL = "ebtc.v1.activePool";
    string public constant COLL_SURPLUS_POOL = "ebtc.v1.collSurplusPool";

    string public constant HINT_HELPERS = "ebtc.v1.hintHelpers";
    string public constant EBTC_TOKEN = "ebtc.v1.eBTCToken";
    string public constant FEE_RECIPIENT = "ebtc.v1.feeRecipient";
    string public constant MULTI_CDP_GETTER = "ebtc.v1.multiCdpGetter";

    event ContractDeployed(address indexed contractAddress, string contractName, bytes32 salt);

    struct EbtcAddresses {
        address authorityAddress;
        address liquidationLibraryAddress;
        address cdpManagerAddress;
        address borrowerOperationsAddress;
        address priceFeedAddress;
        address sortedCdpsAddress;
        address activePoolAddress;
        address collSurplusPoolAddress;
        address hintHelpersAddress;
        address ebtcTokenAddress;
        address feeRecipientAddress;
        address multiCdpGetterAddress;
        address ebtcFeedAddress;
    }

    /**
    @notice Helper method to return a set of future addresses for eBTC. Intended to be used in the order specified.
    
    @dev The order is as follows:
    0: authority
    1: liquidationLibrary
    2: cdpManager
    3: borrowerOperations
    4: priceFeed
    5; sortedCdps
    6: activePool
    7: collSurplusPool
    8: hintHelpers
    9: eBTCToken
    10: feeRecipient
    11: multiCdpGetter
    12: ebtcFeed


     */
    function getFutureEbtcAddresses() public view returns (EbtcAddresses memory) {
        EbtcAddresses memory addresses = EbtcAddresses(
            Create3.addressOf(keccak256(abi.encodePacked(AUTHORITY))),
            Create3.addressOf(keccak256(abi.encodePacked(LIQUIDATION_LIBRARY))),
            Create3.addressOf(keccak256(abi.encodePacked(CDP_MANAGER))),
            Create3.addressOf(keccak256(abi.encodePacked(BORROWER_OPERATIONS))),
            Create3.addressOf(keccak256(abi.encodePacked(PRICE_FEED))),
            Create3.addressOf(keccak256(abi.encodePacked(SORTED_CDPS))),
            Create3.addressOf(keccak256(abi.encodePacked(ACTIVE_POOL))),
            Create3.addressOf(keccak256(abi.encodePacked(COLL_SURPLUS_POOL))),
            Create3.addressOf(keccak256(abi.encodePacked(HINT_HELPERS))),
            Create3.addressOf(keccak256(abi.encodePacked(EBTC_TOKEN))),
            Create3.addressOf(keccak256(abi.encodePacked(FEE_RECIPIENT))),
            Create3.addressOf(keccak256(abi.encodePacked(MULTI_CDP_GETTER))),
            Create3.addressOf(keccak256(abi.encodePacked(EBTC_FEED)))
        );

        return addresses;
    }

    /**
        @notice Deploy a contract using salt in string format and arbitrary runtime code.
        @dev Intended use is: get the future eBTC addresses, then deploy the appropriate contract to each address via this method, building the constructor using the mapped addresses
        @dev no enforcment of bytecode at address as we can't know the runtime code in this contract due to space constraints
        @dev gated to given deployer EOA to ensure no interference with process, given proper actions by deployer
     */
    function deploy(
        string memory _saltString,
        bytes memory _creationCode
    ) public returns (address deployedAddress) {
        require(msg.sender == 0xa3cFf8338fafd297c7B15D365563De1A7Fe7e7cf, "Only owner can deploy contracts");
        bytes32 _salt = keccak256(abi.encodePacked(_saltString));
        deployedAddress = Create3.create3(_salt, _creationCode);
        emit ContractDeployed(deployedAddress, _saltString, _salt);
    }

    function deployWithCreationCodeAndConstructorArgs(
        string memory _saltString,
        bytes memory creationCode,
        bytes memory constructionArgs
    ) external returns (address) {
        bytes memory _data = abi.encodePacked(creationCode, constructionArgs);
        return deploy(_saltString, _data);
    }

    function deployWithCreationCode(
        string memory _saltString,
        bytes memory creationCode
    ) external returns (address) {
        return deploy(_saltString, creationCode);
    }

    function addressOf(string memory _saltString) external view returns (address) {
        bytes32 _salt = keccak256(abi.encodePacked(_saltString));
        return Create3.addressOf(_salt);
    }

    function addressOfSalt(bytes32 _salt) external view returns (address) {
        return Create3.addressOf(_salt);
    }

    /**
        @notice Create the creation code for a contract with the given runtime code.
        @dev credit: https://github.com/0xsequence/create3/blob/master/contracts/test_utils/Create3Imp.sol
     */
    function creationCodeFor(bytes memory _code) internal pure returns (bytes memory) {
        /*
      0x00    0x63         0x63XXXXXX  PUSH4 _code.length  size
      0x01    0x80         0x80        DUP1                size size
      0x02    0x60         0x600e      PUSH1 14            14 size size
      0x03    0x60         0x6000      PUSH1 00            0 14 size size
      0x04    0x39         0x39        CODECOPY            size
      0x05    0x60         0x6000      PUSH1 00            0 size
      0x06    0xf3         0xf3        RETURN
      <CODE>
    */

        return
            abi.encodePacked(hex"63", uint32(_code.length), hex"80_60_0E_60_00_39_60_00_F3", _code);
    }
}

File 2 of 4 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity 0.8.17;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 3 of 4 : Create3.sol
//SPDX-License-Identifier: Unlicense
pragma solidity 0.8.17;

/**
  @title A library for deploying contracts EIP-3171 style.
  @author Agustin Aguilar <[email protected]>
*/
library Create3 {
    error ErrorCreatingProxy();
    error ErrorCreatingContract();
    error TargetAlreadyExists();

    /**
    @notice The bytecode for a contract that proxies the creation of another contract
    @dev If this code is deployed using CREATE2 it can be used to decouple `creationCode` from the child contract address

  0x67363d3d37363d34f03d5260086018f3:
      0x00  0x67  0x67XXXXXXXXXXXXXXXX  PUSH8 bytecode  0x363d3d37363d34f0
      0x01  0x3d  0x3d                  RETURNDATASIZE  0 0x363d3d37363d34f0
      0x02  0x52  0x52                  MSTORE
      0x03  0x60  0x6008                PUSH1 08        8
      0x04  0x60  0x6018                PUSH1 18        24 8
      0x05  0xf3  0xf3                  RETURN

  0x363d3d37363d34f0:
      0x00  0x36  0x36                  CALLDATASIZE    cds
      0x01  0x3d  0x3d                  RETURNDATASIZE  0 cds
      0x02  0x3d  0x3d                  RETURNDATASIZE  0 0 cds
      0x03  0x37  0x37                  CALLDATACOPY
      0x04  0x36  0x36                  CALLDATASIZE    cds
      0x05  0x3d  0x3d                  RETURNDATASIZE  0 cds
      0x06  0x34  0x34                  CALLVALUE       val 0 cds
      0x07  0xf0  0xf0                  CREATE          addr
  */

    bytes internal constant PROXY_CHILD_BYTECODE =
        hex"67_36_3d_3d_37_36_3d_34_f0_3d_52_60_08_60_18_f3";

    //                        KECCAK256_PROXY_CHILD_BYTECODE = keccak256(PROXY_CHILD_BYTECODE);
    bytes32 internal constant KECCAK256_PROXY_CHILD_BYTECODE =
        0x21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f;

    /**
    @notice Returns the size of the code on a given address
    @param _addr Address that may or may not contain code
    @return size of the code on the given `_addr`
  */
    function codeSize(address _addr) internal view returns (uint256 size) {
        assembly {
            size := extcodesize(_addr)
        }
    }

    /**
    @notice Creates a new contract with given `_creationCode` and `_salt`
    @param _salt Salt of the contract creation, resulting address will be derivated from this value only
    @param _creationCode Creation code (constructor) of the contract to be deployed, this value doesn't affect the resulting address
    @return addr of the deployed contract, reverts on error
  */
    function create3(bytes32 _salt, bytes memory _creationCode) internal returns (address addr) {
        return create3(_salt, _creationCode, 0);
    }

    /**
    @notice Creates a new contract with given `_creationCode` and `_salt`
    @param _salt Salt of the contract creation, resulting address will be derivated from this value only
    @param _creationCode Creation code (constructor) of the contract to be deployed, this value doesn't affect the resulting address
    @param _value In WEI of ETH to be forwarded to child contract
    @return addr of the deployed contract, reverts on error
  */
    function create3(
        bytes32 _salt,
        bytes memory _creationCode,
        uint256 _value
    ) internal returns (address addr) {
        // Creation code
        bytes memory creationCode = PROXY_CHILD_BYTECODE;

        // Get target final address
        addr = addressOf(_salt);
        if (codeSize(addr) != 0) revert TargetAlreadyExists();

        // Create CREATE2 proxy
        address proxy;
        assembly {
            proxy := create2(0, add(creationCode, 32), mload(creationCode), _salt)
        }
        if (proxy == address(0)) revert ErrorCreatingProxy();

        // Call proxy with final init code
        (bool success, ) = proxy.call{value: _value}(_creationCode);
        if (!success || codeSize(addr) == 0) revert ErrorCreatingContract();
    }

    /**
    @notice Computes the resulting address of a contract deployed using address(this) and the given `_salt`
    @param _salt Salt of the contract creation, resulting address will be derivated from this value only
    @return addr of the deployed contract, reverts on error

    @dev The address creation formula is: keccak256(rlp([keccak256(0xff ++ address(this) ++ _salt ++ keccak256(childBytecode))[12:], 0x01]))
  */
    function addressOf(bytes32 _salt) internal view returns (address) {
        address proxy = address(
            uint160(
                uint256(
                    keccak256(
                        abi.encodePacked(
                            hex"ff",
                            address(this),
                            _salt,
                            KECCAK256_PROXY_CHILD_BYTECODE
                        )
                    )
                )
            )
        );

        return address(uint160(uint256(keccak256(abi.encodePacked(hex"d6_94", proxy, hex"01")))));
    }
}

File 4 of 4 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity 0.8.17;

import "./Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

Contract ABI

[{"inputs":[],"name":"ErrorCreatingContract","type":"error"},{"inputs":[],"name":"ErrorCreatingProxy","type":"error"},{"inputs":[],"name":"TargetAlreadyExists","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":false,"internalType":"string","name":"contractName","type":"string"},{"indexed":false,"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"ContractDeployed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"ACTIVE_POOL","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AUTHORITY","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BORROWER_OPERATIONS","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CDP_MANAGER","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COLL_SURPLUS_POOL","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EBTC_FEED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EBTC_TOKEN","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FEE_RECIPIENT","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HINT_HELPERS","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LIQUIDATION_LIBRARY","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MULTI_CDP_GETTER","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE_FEED","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SORTED_CDPS","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_saltString","type":"string"}],"name":"addressOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_salt","type":"bytes32"}],"name":"addressOfSalt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_saltString","type":"string"},{"internalType":"bytes","name":"_creationCode","type":"bytes"}],"name":"deploy","outputs":[{"internalType":"address","name":"deployedAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_saltString","type":"string"},{"internalType":"bytes","name":"creationCode","type":"bytes"}],"name":"deployWithCreationCode","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_saltString","type":"string"},{"internalType":"bytes","name":"creationCode","type":"bytes"},{"internalType":"bytes","name":"constructionArgs","type":"bytes"}],"name":"deployWithCreationCodeAndConstructorArgs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getFutureEbtcAddresses","outputs":[{"components":[{"internalType":"address","name":"authorityAddress","type":"address"},{"internalType":"address","name":"liquidationLibraryAddress","type":"address"},{"internalType":"address","name":"cdpManagerAddress","type":"address"},{"internalType":"address","name":"borrowerOperationsAddress","type":"address"},{"internalType":"address","name":"priceFeedAddress","type":"address"},{"internalType":"address","name":"sortedCdpsAddress","type":"address"},{"internalType":"address","name":"activePoolAddress","type":"address"},{"internalType":"address","name":"collSurplusPoolAddress","type":"address"},{"internalType":"address","name":"hintHelpersAddress","type":"address"},{"internalType":"address","name":"ebtcTokenAddress","type":"address"},{"internalType":"address","name":"feeRecipientAddress","type":"address"},{"internalType":"address","name":"multiCdpGetterAddress","type":"address"},{"internalType":"address","name":"ebtcFeedAddress","type":"address"}],"internalType":"struct EBTCDeployer.EbtcAddresses","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6112388061007e6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806389fcd796116100c3578063c145208f1161007c578063c145208f146103f0578063ccf1454a14610422578063d0d4407514610435578063ebd0905414610466578063f2fde38b14610499578063fe36a95b146104ac57600080fd5b806389fcd796146103155780638da5cb5b1461034557806396c7137714610356578063a47618b81461038c578063a616236a146103a1578063be3397e9146103dd57600080fd5b80634be8e5a6116101155780634be8e5a6146102375780635ad63cab1461026857806369a120791461027b578063715018a6146102aa5780637f761668146102b4578063826f02d3146102e557600080fd5b806306fdde031461015257806317355ca4146101945780631ab4a721146101bf57806331eb318a146101f45780633ce9858214610224575b600080fd5b61017e6040518060400160405280600d81526020016c32a12a21902232b83637bcb2b960991b81525081565b60405161018b9190610e52565b60405180910390f35b6101a76101a2366004610e65565b6104e8565b6040516001600160a01b03909116815260200161018b565b61017e6040518060400160405280601681526020017532b13a31973b189736bab63a34a1b23823b2ba3a32b960511b81525081565b61017e6040518060400160405280601181526020017019589d18cb9d8c4b9c1c9a58d951995959607a1b81525081565b6101a7610232366004610f21565b6104f9565b61017e6040518060400160405280601281526020017132b13a31973b189731b23826b0b730b3b2b960711b81525081565b6101a7610276366004610fa9565b610533565b61017e6040518060400160405280601081526020016f19589d18cb9d8c4b99589d18d199595960821b81525081565b6102b2610546565b005b61017e60405180604001604052806012815260200171656274632e76312e736f727465644364707360701b81525081565b61017e6040518060400160405280601181526020017032b13a31973b189732a12a21aa37b5b2b760791b81525081565b61017e60405180604001604052806011815260200170656274632e76312e617574686f7269747960781b81525081565b6000546001600160a01b03166101a7565b61017e6040518060400160405280601781526020017619589d18cb9d8c4b98dbdb1b14dd5c9c1b1d5cd41bdbdb604a1b81525081565b61039461055a565b60405161018b919061100d565b61017e6040518060400160405280601a81526020017f656274632e76312e626f72726f7765724f7065726174696f6e7300000000000081525081565b6101a76103eb366004610fa9565b6109e4565b61017e60405180604001604052806013815260200172656274632e76312e68696e7448656c7065727360681b81525081565b6101a761043036600461112f565b610acf565b61017e6040518060400160405280601281526020017119589d18cb9d8c4b9858dd1a5d99541bdbdb60721b81525081565b61017e6040518060400160405280601481526020017319589d18cb9d8c4b999959549958da5c1a595b9d60621b81525081565b6102b26104a736600461116c565b610b04565b61017e6040518060400160405280601a81526020017f656274632e76312e6c69717569646174696f6e4c69627261727900000000000081525081565b60006104f382610b7d565b92915050565b600080838360405160200161050f929190611195565b604051602081830303815290604052905061052a85826109e4565b95945050505050565b600061053f83836109e4565b9392505050565b61054e610c30565b6105586000610c8a565b565b604080516101a081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052610180810191909152604080516101e08101825260116101a0820190815270656274632e76312e617574686f7269747960781b6101c0830152915160009282916106259161060a916020016111c4565b60405160208183030381529060405280519060200120610b7d565b6001600160a01b0316815260200161067c6040518060400160405280601a81526020017f656274632e76312e6c69717569646174696f6e4c69627261727900000000000081525060405160200161060a91906111c4565b6001600160a01b031681526020016106c86040518060400160405280601281526020017132b13a31973b189731b23826b0b730b3b2b960711b81525060405160200161060a91906111c4565b6001600160a01b0316815260200161071f6040518060400160405280601a81526020017f656274632e76312e626f72726f7765724f7065726174696f6e7300000000000081525060405160200161060a91906111c4565b6001600160a01b0316815260200161076a6040518060400160405280601181526020017019589d18cb9d8c4b9c1c9a58d951995959607a1b81525060405160200161060a91906111c4565b6001600160a01b031681526020016107b660405180604001604052806012815260200171656274632e76312e736f727465644364707360701b81525060405160200161060a91906111c4565b6001600160a01b031681526020016108026040518060400160405280601281526020017119589d18cb9d8c4b9858dd1a5d99541bdbdb60721b81525060405160200161060a91906111c4565b6001600160a01b031681526020016108536040518060400160405280601781526020017619589d18cb9d8c4b98dbdb1b14dd5c9c1b1d5cd41bdbdb604a1b81525060405160200161060a91906111c4565b6001600160a01b031681526020016108a060405180604001604052806013815260200172656274632e76312e68696e7448656c7065727360681b81525060405160200161060a91906111c4565b6001600160a01b031681526020016108eb6040518060400160405280601181526020017032b13a31973b189732a12a21aa37b5b2b760791b81525060405160200161060a91906111c4565b6001600160a01b031681526020016109396040518060400160405280601481526020017319589d18cb9d8c4b999959549958da5c1a595b9d60621b81525060405160200161060a91906111c4565b6001600160a01b031681526020016109896040518060400160405280601681526020017532b13a31973b189736bab63a34a1b23823b2ba3a32b960511b81525060405160200161060a91906111c4565b6001600160a01b031681526020016109d36040518060400160405280601081526020016f19589d18cb9d8c4b99589d18d199595960821b81525060405160200161060a91906111c4565b6001600160a01b0316905292915050565b600073a3cff8338fafd297c7b15d365563de1a7fe7e7cf3314610a4e5760405162461bcd60e51b815260206004820152601f60248201527f4f6e6c79206f776e65722063616e206465706c6f7920636f6e7472616374730060448201526064015b60405180910390fd5b600083604051602001610a6191906111c4565b604051602081830303815290604052805190602001209050610a838184610cda565b9150816001600160a01b03167ff69d55da19b60d2a59ccf297aa416a80611050db35f7e5dfb9319a99d7c594ab8583604051610ac09291906111e0565b60405180910390a25092915050565b60008082604051602001610ae391906111c4565b60405160208183030381529060405280519060200120905061053f81610b7d565b610b0c610c30565b6001600160a01b038116610b715760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a45565b610b7a81610c8a565b50565b604080516001600160f81b031960208083019190915230606090811b6bffffffffffffffffffffffff19908116602185015260358401959095527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f605580850191909152845180850390910181526075840185528051908301206135a560f21b6095850152901b9093166097820152600160f81b60ab8201528151608c81830301815260ac909101909152805191012090565b6000546001600160a01b031633146105585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a45565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061053f8383600060408051808201909152601081526f67363d3d37363d34f03d5260086018f360801b6020820152600090610d1685610b7d565b9150813b15610d385760405163cd43efa160e01b815260040160405180910390fd5b6000858251602084016000f590506001600160a01b038116610d6d5760405163bbd2fe8760e01b815260040160405180910390fd5b6000816001600160a01b03168587604051610d8891906111c4565b60006040518083038185875af1925050503d8060008114610dc5576040519150601f19603f3d011682016040523d82523d6000602084013e610dca565b606091505b50509050801580610dda5750833b155b15610df8576040516353de54b960e01b815260040160405180910390fd5b5050509392505050565b60005b83811015610e1d578181015183820152602001610e05565b50506000910152565b60008151808452610e3e816020860160208601610e02565b601f01601f19169290920160200192915050565b60208152600061053f6020830184610e26565b600060208284031215610e7757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610ea557600080fd5b813567ffffffffffffffff80821115610ec057610ec0610e7e565b604051601f8301601f19908116603f01168101908282118183101715610ee857610ee8610e7e565b81604052838152866020858801011115610f0157600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215610f3657600080fd5b833567ffffffffffffffff80821115610f4e57600080fd5b610f5a87838801610e94565b94506020860135915080821115610f7057600080fd5b610f7c87838801610e94565b93506040860135915080821115610f9257600080fd5b50610f9f86828701610e94565b9150509250925092565b60008060408385031215610fbc57600080fd5b823567ffffffffffffffff80821115610fd457600080fd5b610fe086838701610e94565b93506020850135915080821115610ff657600080fd5b5061100385828601610e94565b9150509250929050565b81516001600160a01b031681526101a08101602083015161103960208401826001600160a01b03169052565b50604083015161105460408401826001600160a01b03169052565b50606083015161106f60608401826001600160a01b03169052565b50608083015161108a60808401826001600160a01b03169052565b5060a08301516110a560a08401826001600160a01b03169052565b5060c08301516110c060c08401826001600160a01b03169052565b5060e08301516110db60e08401826001600160a01b03169052565b50610100838101516001600160a01b03908116918401919091526101208085015182169084015261014080850151821690840152610160808501518216908401526101809384015116929091019190915290565b60006020828403121561114157600080fd5b813567ffffffffffffffff81111561115857600080fd5b61116484828501610e94565b949350505050565b60006020828403121561117e57600080fd5b81356001600160a01b038116811461053f57600080fd5b600083516111a7818460208801610e02565b8351908301906111bb818360208801610e02565b01949350505050565b600082516111d6818460208701610e02565b9190910192915050565b6040815260006111f36040830185610e26565b9050826020830152939250505056fea26469706673582212203f505a2512af6a26f1c9b68a828edd3adc87fc549395e6e6c91ec51ec4d6ed0064736f6c63430008110033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014d5760003560e01c806389fcd796116100c3578063c145208f1161007c578063c145208f146103f0578063ccf1454a14610422578063d0d4407514610435578063ebd0905414610466578063f2fde38b14610499578063fe36a95b146104ac57600080fd5b806389fcd796146103155780638da5cb5b1461034557806396c7137714610356578063a47618b81461038c578063a616236a146103a1578063be3397e9146103dd57600080fd5b80634be8e5a6116101155780634be8e5a6146102375780635ad63cab1461026857806369a120791461027b578063715018a6146102aa5780637f761668146102b4578063826f02d3146102e557600080fd5b806306fdde031461015257806317355ca4146101945780631ab4a721146101bf57806331eb318a146101f45780633ce9858214610224575b600080fd5b61017e6040518060400160405280600d81526020016c32a12a21902232b83637bcb2b960991b81525081565b60405161018b9190610e52565b60405180910390f35b6101a76101a2366004610e65565b6104e8565b6040516001600160a01b03909116815260200161018b565b61017e6040518060400160405280601681526020017532b13a31973b189736bab63a34a1b23823b2ba3a32b960511b81525081565b61017e6040518060400160405280601181526020017019589d18cb9d8c4b9c1c9a58d951995959607a1b81525081565b6101a7610232366004610f21565b6104f9565b61017e6040518060400160405280601281526020017132b13a31973b189731b23826b0b730b3b2b960711b81525081565b6101a7610276366004610fa9565b610533565b61017e6040518060400160405280601081526020016f19589d18cb9d8c4b99589d18d199595960821b81525081565b6102b2610546565b005b61017e60405180604001604052806012815260200171656274632e76312e736f727465644364707360701b81525081565b61017e6040518060400160405280601181526020017032b13a31973b189732a12a21aa37b5b2b760791b81525081565b61017e60405180604001604052806011815260200170656274632e76312e617574686f7269747960781b81525081565b6000546001600160a01b03166101a7565b61017e6040518060400160405280601781526020017619589d18cb9d8c4b98dbdb1b14dd5c9c1b1d5cd41bdbdb604a1b81525081565b61039461055a565b60405161018b919061100d565b61017e6040518060400160405280601a81526020017f656274632e76312e626f72726f7765724f7065726174696f6e7300000000000081525081565b6101a76103eb366004610fa9565b6109e4565b61017e60405180604001604052806013815260200172656274632e76312e68696e7448656c7065727360681b81525081565b6101a761043036600461112f565b610acf565b61017e6040518060400160405280601281526020017119589d18cb9d8c4b9858dd1a5d99541bdbdb60721b81525081565b61017e6040518060400160405280601481526020017319589d18cb9d8c4b999959549958da5c1a595b9d60621b81525081565b6102b26104a736600461116c565b610b04565b61017e6040518060400160405280601a81526020017f656274632e76312e6c69717569646174696f6e4c69627261727900000000000081525081565b60006104f382610b7d565b92915050565b600080838360405160200161050f929190611195565b604051602081830303815290604052905061052a85826109e4565b95945050505050565b600061053f83836109e4565b9392505050565b61054e610c30565b6105586000610c8a565b565b604080516101a081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052610180810191909152604080516101e08101825260116101a0820190815270656274632e76312e617574686f7269747960781b6101c0830152915160009282916106259161060a916020016111c4565b60405160208183030381529060405280519060200120610b7d565b6001600160a01b0316815260200161067c6040518060400160405280601a81526020017f656274632e76312e6c69717569646174696f6e4c69627261727900000000000081525060405160200161060a91906111c4565b6001600160a01b031681526020016106c86040518060400160405280601281526020017132b13a31973b189731b23826b0b730b3b2b960711b81525060405160200161060a91906111c4565b6001600160a01b0316815260200161071f6040518060400160405280601a81526020017f656274632e76312e626f72726f7765724f7065726174696f6e7300000000000081525060405160200161060a91906111c4565b6001600160a01b0316815260200161076a6040518060400160405280601181526020017019589d18cb9d8c4b9c1c9a58d951995959607a1b81525060405160200161060a91906111c4565b6001600160a01b031681526020016107b660405180604001604052806012815260200171656274632e76312e736f727465644364707360701b81525060405160200161060a91906111c4565b6001600160a01b031681526020016108026040518060400160405280601281526020017119589d18cb9d8c4b9858dd1a5d99541bdbdb60721b81525060405160200161060a91906111c4565b6001600160a01b031681526020016108536040518060400160405280601781526020017619589d18cb9d8c4b98dbdb1b14dd5c9c1b1d5cd41bdbdb604a1b81525060405160200161060a91906111c4565b6001600160a01b031681526020016108a060405180604001604052806013815260200172656274632e76312e68696e7448656c7065727360681b81525060405160200161060a91906111c4565b6001600160a01b031681526020016108eb6040518060400160405280601181526020017032b13a31973b189732a12a21aa37b5b2b760791b81525060405160200161060a91906111c4565b6001600160a01b031681526020016109396040518060400160405280601481526020017319589d18cb9d8c4b999959549958da5c1a595b9d60621b81525060405160200161060a91906111c4565b6001600160a01b031681526020016109896040518060400160405280601681526020017532b13a31973b189736bab63a34a1b23823b2ba3a32b960511b81525060405160200161060a91906111c4565b6001600160a01b031681526020016109d36040518060400160405280601081526020016f19589d18cb9d8c4b99589d18d199595960821b81525060405160200161060a91906111c4565b6001600160a01b0316905292915050565b600073a3cff8338fafd297c7b15d365563de1a7fe7e7cf3314610a4e5760405162461bcd60e51b815260206004820152601f60248201527f4f6e6c79206f776e65722063616e206465706c6f7920636f6e7472616374730060448201526064015b60405180910390fd5b600083604051602001610a6191906111c4565b604051602081830303815290604052805190602001209050610a838184610cda565b9150816001600160a01b03167ff69d55da19b60d2a59ccf297aa416a80611050db35f7e5dfb9319a99d7c594ab8583604051610ac09291906111e0565b60405180910390a25092915050565b60008082604051602001610ae391906111c4565b60405160208183030381529060405280519060200120905061053f81610b7d565b610b0c610c30565b6001600160a01b038116610b715760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a45565b610b7a81610c8a565b50565b604080516001600160f81b031960208083019190915230606090811b6bffffffffffffffffffffffff19908116602185015260358401959095527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f605580850191909152845180850390910181526075840185528051908301206135a560f21b6095850152901b9093166097820152600160f81b60ab8201528151608c81830301815260ac909101909152805191012090565b6000546001600160a01b031633146105585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a45565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061053f8383600060408051808201909152601081526f67363d3d37363d34f03d5260086018f360801b6020820152600090610d1685610b7d565b9150813b15610d385760405163cd43efa160e01b815260040160405180910390fd5b6000858251602084016000f590506001600160a01b038116610d6d5760405163bbd2fe8760e01b815260040160405180910390fd5b6000816001600160a01b03168587604051610d8891906111c4565b60006040518083038185875af1925050503d8060008114610dc5576040519150601f19603f3d011682016040523d82523d6000602084013e610dca565b606091505b50509050801580610dda5750833b155b15610df8576040516353de54b960e01b815260040160405180910390fd5b5050509392505050565b60005b83811015610e1d578181015183820152602001610e05565b50506000910152565b60008151808452610e3e816020860160208601610e02565b601f01601f19169290920160200192915050565b60208152600061053f6020830184610e26565b600060208284031215610e7757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610ea557600080fd5b813567ffffffffffffffff80821115610ec057610ec0610e7e565b604051601f8301601f19908116603f01168101908282118183101715610ee857610ee8610e7e565b81604052838152866020858801011115610f0157600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215610f3657600080fd5b833567ffffffffffffffff80821115610f4e57600080fd5b610f5a87838801610e94565b94506020860135915080821115610f7057600080fd5b610f7c87838801610e94565b93506040860135915080821115610f9257600080fd5b50610f9f86828701610e94565b9150509250925092565b60008060408385031215610fbc57600080fd5b823567ffffffffffffffff80821115610fd457600080fd5b610fe086838701610e94565b93506020850135915080821115610ff657600080fd5b5061100385828601610e94565b9150509250929050565b81516001600160a01b031681526101a08101602083015161103960208401826001600160a01b03169052565b50604083015161105460408401826001600160a01b03169052565b50606083015161106f60608401826001600160a01b03169052565b50608083015161108a60808401826001600160a01b03169052565b5060a08301516110a560a08401826001600160a01b03169052565b5060c08301516110c060c08401826001600160a01b03169052565b5060e08301516110db60e08401826001600160a01b03169052565b50610100838101516001600160a01b03908116918401919091526101208085015182169084015261014080850151821690840152610160808501518216908401526101809384015116929091019190915290565b60006020828403121561114157600080fd5b813567ffffffffffffffff81111561115857600080fd5b61116484828501610e94565b949350505050565b60006020828403121561117e57600080fd5b81356001600160a01b038116811461053f57600080fd5b600083516111a7818460208801610e02565b8351908301906111bb818360208801610e02565b01949350505050565b600082516111d6818460208701610e02565b9190910192915050565b6040815260006111f36040830185610e26565b9050826020830152939250505056fea26469706673582212203f505a2512af6a26f1c9b68a828edd3adc87fc549395e6e6c91ec51ec4d6ed0064736f6c63430008110033

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  ]
[ 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.