ETH Price: $3,592.67 (+4.40%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Address213869122024-12-12 14:06:2322 days ago1734012383IN
0x9613E12A...c76d6B26D
0 ETH0.0009934626.66159592
Set Address209364832024-10-10 16:43:3585 days ago1728578615IN
0x9613E12A...c76d6B26D
0 ETH0.001311124.11799665
Set Address209364832024-10-10 16:43:3585 days ago1728578615IN
0x9613E12A...c76d6B26D
0 ETH0.0013139924.11799665
Set Address209364822024-10-10 16:43:2385 days ago1728578603IN
0x9613E12A...c76d6B26D
0 ETH0.0013431424.6964622

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AddressProviderV3

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 100 runs

Other Settings:
paris EvmVersion
File 1 of 5 : AddressProviderV3.sol
// SPDX-License-Identifier: BUSL-1.1
// Gearbox Protocol. Generalized leverage for DeFi protocols
// (c) Gearbox Foundation, 2023.
pragma solidity ^0.8.17;

import {IACL} from "@gearbox-protocol/core-v2/contracts/interfaces/IACL.sol";

import "../interfaces/IAddressProviderV3.sol";
import {AddressNotFoundException, CallerNotConfiguratorException} from "../interfaces/IExceptions.sol";

/// @title Address provider V3
/// @notice Stores addresses of important contracts
contract AddressProviderV3 is IAddressProviderV3 {
    /// @notice Contract version
    uint256 public constant override version = 3_00;

    /// @notice Mapping from (contract key, version) to contract addresses
    mapping(bytes32 => mapping(uint256 => address)) public override addresses;

    /// @dev Ensures that function caller is configurator
    modifier configuratorOnly() {
        _revertIfNotConfigurator();
        _;
    }

    /// @dev Reverts if `msg.sender` is not configurator
    function _revertIfNotConfigurator() internal view {
        if (!IACL(getAddressOrRevert(AP_ACL, NO_VERSION_CONTROL)).isConfigurator(msg.sender)) {
            revert CallerNotConfiguratorException();
        }
    }

    constructor(address _acl) {
        // The first event is emitted for the address provider itself to aid in contract discovery
        emit SetAddress("ADDRESS_PROVIDER", address(this), version);

        _setAddress(AP_ACL, _acl, NO_VERSION_CONTROL);
    }

    /// @notice Returns the address of a contract with a given key and version
    function getAddressOrRevert(bytes32 key, uint256 _version) public view virtual override returns (address result) {
        result = addresses[key][_version];
        if (result == address(0)) revert AddressNotFoundException();
    }

    /// @notice Sets the address for the passed contract key
    /// @param key Contract key
    /// @param value Contract address
    /// @param saveVersion Whether to save contract's version
    function setAddress(bytes32 key, address value, bool saveVersion) external override configuratorOnly {
        _setAddress(key, value, saveVersion ? IVersion(value).version() : NO_VERSION_CONTROL);
    }

    /// @dev Implementation of `setAddress`
    function _setAddress(bytes32 key, address value, uint256 _version) internal virtual {
        addresses[key][_version] = value;
        emit SetAddress(key, value, _version);
    }

    // ---------------------- //
    // BACKWARD COMPATIBILITY //
    // ---------------------- //

    /// @notice ACL contract address
    function getACL() external view returns (address) {
        return getAddressOrRevert(AP_ACL, NO_VERSION_CONTROL);
    }

    /// @notice Contracts register contract address
    function getContractsRegister() external view returns (address) {
        return getAddressOrRevert(AP_CONTRACTS_REGISTER, NO_VERSION_CONTROL);
    }

    /// @notice Price oracle contract address
    function getPriceOracle() external view returns (address) {
        return getAddressOrRevert(AP_PRICE_ORACLE, 2);
    }

    /// @notice Account factory contract address
    function getAccountFactory() external view returns (address) {
        return getAddressOrRevert(AP_ACCOUNT_FACTORY, NO_VERSION_CONTROL);
    }

    /// @notice Data compressor contract address
    function getDataCompressor() external view returns (address) {
        return getAddressOrRevert(AP_DATA_COMPRESSOR, 2);
    }

    /// @notice Treasury contract address
    function getTreasuryContract() external view returns (address) {
        return getAddressOrRevert(AP_TREASURY, NO_VERSION_CONTROL);
    }

    /// @notice GEAR token address
    function getGearToken() external view returns (address) {
        return getAddressOrRevert(AP_GEAR_TOKEN, NO_VERSION_CONTROL);
    }

    /// @notice WETH token address
    function getWethToken() external view returns (address) {
        return getAddressOrRevert(AP_WETH_TOKEN, NO_VERSION_CONTROL);
    }

    /// @notice WETH gateway contract address
    function getWETHGateway() external view returns (address) {
        return getAddressOrRevert(AP_WETH_GATEWAY, 1);
    }

    /// @notice Router contract address
    function getLeveragedActions() external view returns (address) {
        return getAddressOrRevert(AP_ROUTER, 1);
    }
}

File 2 of 5 : IACL.sol
// SPDX-License-Identifier: MIT
// Gearbox Protocol. Generalized leverage for DeFi protocols
// (c) Gearbox Holdings, 2022
pragma solidity ^0.8.10;
import { IVersion } from "./IVersion.sol";

interface IACLExceptions {
    /// @dev Thrown when attempting to delete an address from a set that is not a pausable admin
    error AddressNotPausableAdminException(address addr);

    /// @dev Thrown when attempting to delete an address from a set that is not a unpausable admin
    error AddressNotUnpausableAdminException(address addr);
}

interface IACLEvents {
    /// @dev Emits when a new admin is added that can pause contracts
    event PausableAdminAdded(address indexed newAdmin);

    /// @dev Emits when a Pausable admin is removed
    event PausableAdminRemoved(address indexed admin);

    /// @dev Emits when a new admin is added that can unpause contracts
    event UnpausableAdminAdded(address indexed newAdmin);

    /// @dev Emits when an Unpausable admin is removed
    event UnpausableAdminRemoved(address indexed admin);
}

/// @title ACL interface
interface IACL is IACLEvents, IACLExceptions, IVersion {
    /// @dev Returns true if the address is a pausable admin and false if not
    /// @param addr Address to check
    function isPausableAdmin(address addr) external view returns (bool);

    /// @dev Returns true if the address is unpausable admin and false if not
    /// @param addr Address to check
    function isUnpausableAdmin(address addr) external view returns (bool);

    /// @dev Returns true if an address has configurator rights
    /// @param account Address to check
    function isConfigurator(address account) external view returns (bool);

    /// @dev Returns address of configurator
    function owner() external view returns (address);
}

File 3 of 5 : IAddressProviderV3.sol
// SPDX-License-Identifier: MIT
// Gearbox Protocol. Generalized leverage for DeFi protocols
// (c) Gearbox Foundation, 2023.
pragma solidity ^0.8.17;

import {IVersion} from "@gearbox-protocol/core-v2/contracts/interfaces/IVersion.sol";

uint256 constant NO_VERSION_CONTROL = 0;

bytes32 constant AP_CONTRACTS_REGISTER = "CONTRACTS_REGISTER";
bytes32 constant AP_ACL = "ACL";
bytes32 constant AP_PRICE_ORACLE = "PRICE_ORACLE";
bytes32 constant AP_ACCOUNT_FACTORY = "ACCOUNT_FACTORY";
bytes32 constant AP_DATA_COMPRESSOR = "DATA_COMPRESSOR";
bytes32 constant AP_TREASURY = "TREASURY";
bytes32 constant AP_GEAR_TOKEN = "GEAR_TOKEN";
bytes32 constant AP_WETH_TOKEN = "WETH_TOKEN";
bytes32 constant AP_WETH_GATEWAY = "WETH_GATEWAY";
bytes32 constant AP_ROUTER = "ROUTER";
bytes32 constant AP_BOT_LIST = "BOT_LIST";
bytes32 constant AP_GEAR_STAKING = "GEAR_STAKING";
bytes32 constant AP_ZAPPER_REGISTER = "ZAPPER_REGISTER";

interface IAddressProviderV3Events {
    /// @notice Emitted when an address is set for a contract key
    event SetAddress(bytes32 indexed key, address indexed value, uint256 indexed version);
}

/// @title Address provider V3 interface
interface IAddressProviderV3 is IAddressProviderV3Events, IVersion {
    function addresses(bytes32 key, uint256 _version) external view returns (address);

    function getAddressOrRevert(bytes32 key, uint256 _version) external view returns (address result);

    function setAddress(bytes32 key, address value, bool saveVersion) external;
}

File 4 of 5 : IExceptions.sol
// SPDX-License-Identifier: MIT
// Gearbox Protocol. Generalized leverage for DeFi protocols
// (c) Gearbox Foundation, 2023.
pragma solidity ^0.8.17;

// ------- //
// GENERAL //
// ------- //

/// @notice Thrown on attempting to set an important address to zero address
error ZeroAddressException();

/// @notice Thrown when attempting to pass a zero amount to a funding-related operation
error AmountCantBeZeroException();

/// @notice Thrown on incorrect input parameter
error IncorrectParameterException();

/// @notice Thrown when balance is insufficient to perform an operation
error InsufficientBalanceException();

/// @notice Thrown if parameter is out of range
error ValueOutOfRangeException();

/// @notice Thrown when trying to send ETH to a contract that is not allowed to receive ETH directly
error ReceiveIsNotAllowedException();

/// @notice Thrown on attempting to set an EOA as an important contract in the system
error AddressIsNotContractException(address);

/// @notice Thrown on attempting to receive a token that is not a collateral token or was forbidden
error TokenNotAllowedException();

/// @notice Thrown on attempting to add a token that is already in a collateral list
error TokenAlreadyAddedException();

/// @notice Thrown when attempting to use quota-related logic for a token that is not quoted in quota keeper
error TokenIsNotQuotedException();

/// @notice Thrown on attempting to interact with an address that is not a valid target contract
error TargetContractNotAllowedException();

/// @notice Thrown if function is not implemented
error NotImplementedException();

// ------------------ //
// CONTRACTS REGISTER //
// ------------------ //

/// @notice Thrown when an address is expected to be a registered credit manager, but is not
error RegisteredCreditManagerOnlyException();

/// @notice Thrown when an address is expected to be a registered pool, but is not
error RegisteredPoolOnlyException();

// ---------------- //
// ADDRESS PROVIDER //
// ---------------- //

/// @notice Reverts if address key isn't found in address provider
error AddressNotFoundException();

// ----------------- //
// POOL, PQK, GAUGES //
// ----------------- //

/// @notice Thrown by pool-adjacent contracts when a credit manager being connected has a wrong pool address
error IncompatibleCreditManagerException();

/// @notice Thrown when attempting to set an incompatible successor staking contract
error IncompatibleSuccessorException();

/// @notice Thrown when attempting to vote in a non-approved contract
error VotingContractNotAllowedException();

/// @notice Thrown when attempting to unvote more votes than there are
error InsufficientVotesException();

/// @notice Thrown when attempting to borrow more than the second point on a two-point curve
error BorrowingMoreThanU2ForbiddenException();

/// @notice Thrown when a credit manager attempts to borrow more than its limit in the current block, or in general
error CreditManagerCantBorrowException();

/// @notice Thrown when attempting to connect a quota keeper to an incompatible pool
error IncompatiblePoolQuotaKeeperException();

/// @notice Thrown when the quota is outside of min/max bounds
error QuotaIsOutOfBoundsException();

// -------------- //
// CREDIT MANAGER //
// -------------- //

/// @notice Thrown on failing a full collateral check after multicall
error NotEnoughCollateralException();

/// @notice Thrown if an attempt to approve a collateral token to adapter's target contract fails
error AllowanceFailedException();

/// @notice Thrown on attempting to perform an action for a credit account that does not exist
error CreditAccountDoesNotExistException();

/// @notice Thrown on configurator attempting to add more than 255 collateral tokens
error TooManyTokensException();

/// @notice Thrown if more than the maximum number of tokens were enabled on a credit account
error TooManyEnabledTokensException();

/// @notice Thrown when attempting to execute a protocol interaction without active credit account set
error ActiveCreditAccountNotSetException();

/// @notice Thrown when trying to update credit account's debt more than once in the same block
error DebtUpdatedTwiceInOneBlockException();

/// @notice Thrown when trying to repay all debt while having active quotas
error DebtToZeroWithActiveQuotasException();

/// @notice Thrown when a zero-debt account attempts to update quota
error UpdateQuotaOnZeroDebtAccountException();

/// @notice Thrown when attempting to close an account with non-zero debt
error CloseAccountWithNonZeroDebtException();

/// @notice Thrown when value of funds remaining on the account after liquidation is insufficient
error InsufficientRemainingFundsException();

/// @notice Thrown when Credit Facade tries to write over a non-zero active Credit Account
error ActiveCreditAccountOverridenException();

// ------------------- //
// CREDIT CONFIGURATOR //
// ------------------- //

/// @notice Thrown on attempting to use a non-ERC20 contract or an EOA as a token
error IncorrectTokenContractException();

/// @notice Thrown if the newly set LT if zero or greater than the underlying's LT
error IncorrectLiquidationThresholdException();

/// @notice Thrown if borrowing limits are incorrect: minLimit > maxLimit or maxLimit > blockLimit
error IncorrectLimitsException();

/// @notice Thrown if the new expiration date is less than the current expiration date or current timestamp
error IncorrectExpirationDateException();

/// @notice Thrown if a contract returns a wrong credit manager or reverts when trying to retrieve it
error IncompatibleContractException();

/// @notice Thrown if attempting to forbid an adapter that is not registered in the credit manager
error AdapterIsNotRegisteredException();

// ------------- //
// CREDIT FACADE //
// ------------- //

/// @notice Thrown when attempting to perform an action that is forbidden in whitelisted mode
error ForbiddenInWhitelistedModeException();

/// @notice Thrown if credit facade is not expirable, and attempted aciton requires expirability
error NotAllowedWhenNotExpirableException();

/// @notice Thrown if a selector that doesn't match any allowed function is passed to the credit facade in a multicall
error UnknownMethodException();

/// @notice Thrown when trying to close an account with enabled tokens
error CloseAccountWithEnabledTokensException();

/// @notice Thrown if a liquidator tries to liquidate an account with a health factor above 1
error CreditAccountNotLiquidatableException();

/// @notice Thrown if too much new debt was taken within a single block
error BorrowedBlockLimitException();

/// @notice Thrown if the new debt principal for a credit account falls outside of borrowing limits
error BorrowAmountOutOfLimitsException();

/// @notice Thrown if a user attempts to open an account via an expired credit facade
error NotAllowedAfterExpirationException();

/// @notice Thrown if expected balances are attempted to be set twice without performing a slippage check
error ExpectedBalancesAlreadySetException();

/// @notice Thrown if attempting to perform a slippage check when excepted balances are not set
error ExpectedBalancesNotSetException();

/// @notice Thrown if balance of at least one token is less than expected during a slippage check
error BalanceLessThanExpectedException();

/// @notice Thrown when trying to perform an action that is forbidden when credit account has enabled forbidden tokens
error ForbiddenTokensException();

/// @notice Thrown when new forbidden tokens are enabled during the multicall
error ForbiddenTokenEnabledException();

/// @notice Thrown when enabled forbidden token balance is increased during the multicall
error ForbiddenTokenBalanceIncreasedException();

/// @notice Thrown when the remaining token balance is increased during the liquidation
error RemainingTokenBalanceIncreasedException();

/// @notice Thrown if `botMulticall` is called by an address that is not approved by account owner or is forbidden
error NotApprovedBotException();

/// @notice Thrown when attempting to perform a multicall action with no permission for it
error NoPermissionException(uint256 permission);

/// @notice Thrown when attempting to give a bot unexpected permissions
error UnexpectedPermissionsException();

/// @notice Thrown when a custom HF parameter lower than 10000 is passed into the full collateral check
error CustomHealthFactorTooLowException();

/// @notice Thrown when submitted collateral hint is not a valid token mask
error InvalidCollateralHintException();

// ------ //
// ACCESS //
// ------ //

/// @notice Thrown on attempting to call an access restricted function not as credit account owner
error CallerNotCreditAccountOwnerException();

/// @notice Thrown on attempting to call an access restricted function not as configurator
error CallerNotConfiguratorException();

/// @notice Thrown on attempting to call an access-restructed function not as account factory
error CallerNotAccountFactoryException();

/// @notice Thrown on attempting to call an access restricted function not as credit manager
error CallerNotCreditManagerException();

/// @notice Thrown on attempting to call an access restricted function not as credit facade
error CallerNotCreditFacadeException();

/// @notice Thrown on attempting to call an access restricted function not as controller or configurator
error CallerNotControllerException();

/// @notice Thrown on attempting to pause a contract without pausable admin rights
error CallerNotPausableAdminException();

/// @notice Thrown on attempting to unpause a contract without unpausable admin rights
error CallerNotUnpausableAdminException();

/// @notice Thrown on attempting to call an access restricted function not as gauge
error CallerNotGaugeException();

/// @notice Thrown on attempting to call an access restricted function not as quota keeper
error CallerNotPoolQuotaKeeperException();

/// @notice Thrown on attempting to call an access restricted function not as voter
error CallerNotVoterException();

/// @notice Thrown on attempting to call an access restricted function not as allowed adapter
error CallerNotAdapterException();

/// @notice Thrown on attempting to call an access restricted function not as migrator
error CallerNotMigratorException();

/// @notice Thrown when an address that is not the designated executor attempts to execute a transaction
error CallerNotExecutorException();

/// @notice Thrown on attempting to call an access restricted function not as veto admin
error CallerNotVetoAdminException();

// ------------------- //
// CONTROLLER TIMELOCK //
// ------------------- //

/// @notice Thrown when the new parameter values do not satisfy required conditions
error ParameterChecksFailedException();

/// @notice Thrown when attempting to execute a non-queued transaction
error TxNotQueuedException();

/// @notice Thrown when attempting to execute a transaction that is either immature or stale
error TxExecutedOutsideTimeWindowException();

/// @notice Thrown when execution of a transaction fails
error TxExecutionRevertedException();

/// @notice Thrown when the value of a parameter on execution is different from the value on queue
error ParameterChangedAfterQueuedTxException();

// -------- //
// BOT LIST //
// -------- //

/// @notice Thrown when attempting to set non-zero permissions for a forbidden or special bot
error InvalidBotException();

// --------------- //
// ACCOUNT FACTORY //
// --------------- //

/// @notice Thrown when trying to deploy second master credit account for a credit manager
error MasterCreditAccountAlreadyDeployedException();

/// @notice Thrown when trying to rescue funds from a credit account that is currently in use
error CreditAccountIsInUseException();

// ------------ //
// PRICE ORACLE //
// ------------ //

/// @notice Thrown on attempting to set a token price feed to an address that is not a correct price feed
error IncorrectPriceFeedException();

/// @notice Thrown on attempting to interact with a price feed for a token not added to the price oracle
error PriceFeedDoesNotExistException();

/// @notice Thrown when price feed returns incorrect price for a token
error IncorrectPriceException();

/// @notice Thrown when token's price feed becomes stale
error StalePriceException();

File 5 of 5 : IVersion.sol
// SPDX-License-Identifier: MIT
// Gearbox Protocol. Generalized leverage for DeFi protocols
// (c) Gearbox Holdings, 2022
pragma solidity ^0.8.10;

/// @title IVersion
/// @dev Declares a version function which returns the contract's version
interface IVersion {
    /// @dev Returns contract version
    function version() external view returns (uint256);
}

Settings
{
  "remappings": [
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "permit2/=lib/permit2/src/",
    "forge-std/=lib/forge-std/src/",
    "prb-proxy/=lib/prb-proxy/src/",
    "layerzerolabs/=lib/layerzerolabs/contracts/",
    "aave-address-book/=lib/aave-address-book/src/",
    "@gearbox-protocol/core-v3/contracts/=lib/core-v3/contracts/",
    "@gearbox-protocol/core-v2/contracts/=lib/core-v2/contracts/",
    "pendle/=lib/pendle/contracts/",
    "@1inch/=lib/core-v3/node_modules/@1inch/",
    "@aave/core-v3/=lib/aave-address-book/lib/aave-v3-core/",
    "@aave/periphery-v3/=lib/aave-address-book/lib/aave-v3-periphery/",
    "@chainlink/=lib/core-v3/node_modules/@chainlink/",
    "@prb/test/=lib/prb-proxy/lib/prb-test/src/",
    "aave-v3-core/=lib/aave-address-book/lib/aave-v3-core/",
    "aave-v3-periphery/=lib/aave-address-book/lib/aave-v3-periphery/",
    "core-v2/=lib/core-v2/contracts/",
    "core-v3/=lib/core-v3/contracts/",
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
    "forge-gas-snapshot/=lib/permit2/lib/forge-gas-snapshot/src/",
    "hardhat-deploy/=node_modules/hardhat-deploy/",
    "hardhat/=node_modules/hardhat/",
    "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "prb-test/=lib/prb-proxy/lib/prb-test/src/",
    "solmate/=lib/permit2/lib/solmate/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 100
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "paris",
  "viaIR": false,
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_acl","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AddressNotFoundException","type":"error"},{"inputs":[],"name":"CallerNotConfiguratorException","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"key","type":"bytes32"},{"indexed":true,"internalType":"address","name":"value","type":"address"},{"indexed":true,"internalType":"uint256","name":"version","type":"uint256"}],"name":"SetAddress","type":"event"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"addresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getACL","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAccountFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"uint256","name":"_version","type":"uint256"}],"name":"getAddressOrRevert","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getContractsRegister","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDataCompressor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGearToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLeveragedActions","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPriceOracle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTreasuryContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWETHGateway","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWethToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"address","name":"value","type":"address"},{"internalType":"bool","name":"saveVersion","type":"bool"}],"name":"setAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b5060405161069e38038061069e83398101604081905261002f916100ca565b60405161012c9030906f20a2222922a9a9afa82927ab24a222a960811b9060008051602061067e83398151915290600090a4610073621050d360ea1b826000610079565b506100fa565b60008381526020818152604080832084845290915280822080546001600160a01b0319166001600160a01b03861690811790915590518392869160008051602061067e8339815191529190a4505050565b6000602082840312156100dc57600080fd5b81516001600160a01b03811681146100f357600080fd5b9392505050565b610575806101096000396000f3fe608060405234801561001057600080fd5b50600436106100ca5760003560e01c806377532ed91161007c57806377532ed91461013e5780639068a86814610146578063affd92431461014e578063b76b70d514610156578063be99a98014610187578063c513c9bb1461019c578063fca513a8146101a457600080fd5b8063060678c2146100cf57806308737695146100f457806326c74fc3146100fc57806344b88563146101045780634c252f911461010c57806354fd4d501461011457806357b5a1c61461012b575b600080fd5b6100d76101ac565b6040516001600160a01b0390911681526020015b60405180910390f35b6100d76101d0565b6100d76101e3565b6100d76101fb565b6100d7610211565b61011d61012c81565b6040519081526020016100eb565b6100d7610139366004610481565b610227565b6100d761026c565b6100d7610288565b6100d76102a7565b6100d7610164366004610481565b60006020818152928152604080822090935290815220546001600160a01b031681565b61019a6101953660046104b4565b6102c1565b005b6100d7610346565b6100d7610368565b60006101cb6e2220aa20afa1a7a6a82922a9a9a7a960891b6002610227565b905090565b60006101cb621050d360ea1b6000610227565b60006101cb67545245415355525960c01b6000610227565b60006101cb652927aaaa22a960d11b6001610227565b60006101cb692ba2aa242faa27a5a2a760b11b60005b6000828152602081815260408083208484529091529020546001600160a01b03168061026657604051632bd6388f60e21b815260040160405180910390fd5b92915050565b60006101cb6b574554485f4741544557415960a01b6001610227565b60006101cb6e4143434f554e545f464143544f525960881b6000610227565b60006101cb6923a2a0a92faa27a5a2a760b11b6000610227565b6102c9610384565b6103418383836102da57600061041e565b846001600160a01b03166354fd4d506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190610502565b61041e565b505050565b60006101cb7121a7a72a2920a1aa29afa922a3a4a9aa22a960711b6000610227565b60006101cb6b50524943455f4f5241434c4560a01b6002610227565b610395621050d360ea1b6000610227565b604051632f92cd5d60e11b81523360048201526001600160a01b039190911690635f259aba90602401602060405180830381865afa1580156103db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ff919061051b565b61041c576040516361081c1560e01b815260040160405180910390fd5b565b60008381526020818152604080832084845290915280822080546001600160a01b0319166001600160a01b0386169081179091559051839286917fb0c728d7569a96de0c070aa765819f6e665acbc3d4fa293440dd65c8c3e8b5ff9190a4505050565b6000806040838503121561049457600080fd5b50508035926020909101359150565b80151581146104b157600080fd5b50565b6000806000606084860312156104c957600080fd5b8335925060208401356001600160a01b03811681146104e757600080fd5b915060408401356104f7816104a3565b809150509250925092565b60006020828403121561051457600080fd5b5051919050565b60006020828403121561052d57600080fd5b8151610538816104a3565b939250505056fea2646970667358221220c85f01da1bac09e4e05b63b79eb760d40562068a78e94bbbb8ff502d91f98c3c64736f6c63430008130033b0c728d7569a96de0c070aa765819f6e665acbc3d4fa293440dd65c8c3e8b5ff000000000000000000000000e67f77af54eda6b92f2dbab272b8c0817ae0bca3

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100ca5760003560e01c806377532ed91161007c57806377532ed91461013e5780639068a86814610146578063affd92431461014e578063b76b70d514610156578063be99a98014610187578063c513c9bb1461019c578063fca513a8146101a457600080fd5b8063060678c2146100cf57806308737695146100f457806326c74fc3146100fc57806344b88563146101045780634c252f911461010c57806354fd4d501461011457806357b5a1c61461012b575b600080fd5b6100d76101ac565b6040516001600160a01b0390911681526020015b60405180910390f35b6100d76101d0565b6100d76101e3565b6100d76101fb565b6100d7610211565b61011d61012c81565b6040519081526020016100eb565b6100d7610139366004610481565b610227565b6100d761026c565b6100d7610288565b6100d76102a7565b6100d7610164366004610481565b60006020818152928152604080822090935290815220546001600160a01b031681565b61019a6101953660046104b4565b6102c1565b005b6100d7610346565b6100d7610368565b60006101cb6e2220aa20afa1a7a6a82922a9a9a7a960891b6002610227565b905090565b60006101cb621050d360ea1b6000610227565b60006101cb67545245415355525960c01b6000610227565b60006101cb652927aaaa22a960d11b6001610227565b60006101cb692ba2aa242faa27a5a2a760b11b60005b6000828152602081815260408083208484529091529020546001600160a01b03168061026657604051632bd6388f60e21b815260040160405180910390fd5b92915050565b60006101cb6b574554485f4741544557415960a01b6001610227565b60006101cb6e4143434f554e545f464143544f525960881b6000610227565b60006101cb6923a2a0a92faa27a5a2a760b11b6000610227565b6102c9610384565b6103418383836102da57600061041e565b846001600160a01b03166354fd4d506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190610502565b61041e565b505050565b60006101cb7121a7a72a2920a1aa29afa922a3a4a9aa22a960711b6000610227565b60006101cb6b50524943455f4f5241434c4560a01b6002610227565b610395621050d360ea1b6000610227565b604051632f92cd5d60e11b81523360048201526001600160a01b039190911690635f259aba90602401602060405180830381865afa1580156103db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ff919061051b565b61041c576040516361081c1560e01b815260040160405180910390fd5b565b60008381526020818152604080832084845290915280822080546001600160a01b0319166001600160a01b0386169081179091559051839286917fb0c728d7569a96de0c070aa765819f6e665acbc3d4fa293440dd65c8c3e8b5ff9190a4505050565b6000806040838503121561049457600080fd5b50508035926020909101359150565b80151581146104b157600080fd5b50565b6000806000606084860312156104c957600080fd5b8335925060208401356001600160a01b03811681146104e757600080fd5b915060408401356104f7816104a3565b809150509250925092565b60006020828403121561051457600080fd5b5051919050565b60006020828403121561052d57600080fd5b8151610538816104a3565b939250505056fea2646970667358221220c85f01da1bac09e4e05b63b79eb760d40562068a78e94bbbb8ff502d91f98c3c64736f6c63430008130033

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

000000000000000000000000e67f77af54eda6b92f2dbab272b8c0817ae0bca3

-----Decoded View---------------
Arg [0] : _acl (address): 0xE67f77af54EdA6B92f2dBaB272b8C0817ae0bCa3

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


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ 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.