S Price: $0.58486 (-1.71%)
    /

    Contract

    0xaf3D60f6deEDC615EC5E5E84ead2ed2d68790bFf

    Overview

    S Balance

    Sonic LogoSonic LogoSonic Logo0 S

    S Value

    $0.00

    Multichain Info

    No addresses found
    Age:7D
    Amount:Between 1-10k
    Reset Filter

    Transaction Hash
    Method
    Block
    Age
    From
    To
    Amount

    There are no matching entries

    Update your filters to view other transactions

    Parent Transaction Hash Block Age From To Amount
    View All Internal Transactions
    Loading...
    Loading

    Similar Match Source Code
    This contract matches the deployed Bytecode of the Source Code for Contract 0x39648775...b0CA2cBa1
    The constructor portion of the code might be different and could alter the actual behaviour of the contract

    Contract Name:
    DelegationAwareAToken

    Compiler Version
    v0.8.10+commit.fc410830

    Optimization Enabled:
    Yes with 100000 runs

    Other Settings:
    berlin EvmVersion, BSL 1.1 license
    File 1 of 23 : DelegationAwareAToken.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: BUSL-1.1
    pragma solidity ^0.8.10;
    import {IPool} from '../../interfaces/IPool.sol';
    import {IDelegationToken} from '../../interfaces/IDelegationToken.sol';
    import {AToken} from './AToken.sol';
    /**
    * @title DelegationAwareAToken
    * @author Aave
    * @notice AToken enabled to delegate voting power of the underlying asset to a different address
    * @dev The underlying asset needs to be compatible with the COMP delegation interface
    */
    contract DelegationAwareAToken is AToken {
    /**
    * @dev Emitted when underlying voting power is delegated
    * @param delegatee The address of the delegatee
    */
    event DelegateUnderlyingTo(address indexed delegatee);
    /**
    * @dev Constructor.
    * @param pool The address of the Pool contract
    */
    constructor(IPool pool) AToken(pool) {
    // Intentionally left blank
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 2 of 23 : GPv2SafeERC20.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: LGPL-3.0-or-later
    pragma solidity ^0.8.0;
    import {IERC20} from '../../openzeppelin/contracts/IERC20.sol';
    /// @title Gnosis Protocol v2 Safe ERC20 Transfer Library
    /// @author Gnosis Developers
    /// @dev Gas-efficient version of Openzeppelin's SafeERC20 contract.
    library GPv2SafeERC20 {
    /// @dev Wrapper around a call to the ERC20 function `transfer` that reverts
    /// also when the token returns `false`.
    function safeTransfer(IERC20 token, address to, uint256 value) internal {
    bytes4 selector_ = token.transfer.selector;
    // solhint-disable-next-line no-inline-assembly
    assembly {
    let freeMemoryPointer := mload(0x40)
    mstore(freeMemoryPointer, selector_)
    mstore(add(freeMemoryPointer, 4), and(to, 0xffffffffffffffffffffffffffffffffffffffff))
    mstore(add(freeMemoryPointer, 36), value)
    if iszero(call(gas(), token, 0, freeMemoryPointer, 68, 0, 0)) {
    returndatacopy(0, 0, returndatasize())
    revert(0, returndatasize())
    }
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 3 of 23 : Context.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.0;
    /*
    * @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 GSN 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 payable) {
    return payable(msg.sender);
    }
    function _msgData() internal view virtual returns (bytes memory) {
    this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
    return msg.data;
    }
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 4 of 23 : IERC20.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: AGPL-3.0
    pragma solidity ^0.8.0;
    /**
    * @dev Interface of the ERC20 standard as defined in the EIP.
    */
    interface IERC20 {
    /**
    * @dev Returns the amount of tokens in existence.
    */
    function totalSupply() external view returns (uint256);
    /**
    * @dev Returns the amount of tokens owned by `account`.
    */
    function balanceOf(address account) external view returns (uint256);
    /**
    * @dev Moves `amount` tokens from the caller's account to `recipient`.
    *
    * Returns a boolean value indicating whether the operation succeeded.
    *
    * Emits a {Transfer} event.
    */
    function transfer(address recipient, uint256 amount) external returns (bool);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 5 of 23 : IERC20Detailed.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // SPDX-License-Identifier: AGPL-3.0
    pragma solidity ^0.8.0;
    import {IERC20} from './IERC20.sol';
    interface IERC20Detailed is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 6 of 23 : SafeCast.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts v4.4.1 (utils/math/SafeCast.sol)
    pragma solidity ^0.8.0;
    /**
    * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow
    * checks.
    *
    * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can
    * easily result in undesired exploitation or bugs, since developers usually
    * assume that overflows raise errors. `SafeCast` restores this intuition by
    * reverting the transaction when such an operation overflows.
    *
    * Using this library instead of the unchecked operations eliminates an entire
    * class of bugs, so it's recommended to use it always.
    *
    * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing
    * all math on `uint256` and `int256` and then downcasting.
    */
    library SafeCast {
    /**
    * @dev Returns the downcasted uint224 from uint256, reverting on
    * overflow (when the input is greater than largest uint224).
    *
    * Counterpart to Solidity's `uint224` operator.
    *
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 7 of 23 : IACLManager.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: AGPL-3.0
    pragma solidity ^0.8.0;
    import {IPoolAddressesProvider} from './IPoolAddressesProvider.sol';
    /**
    * @title IACLManager
    * @author Aave
    * @notice Defines the basic interface for the ACL Manager
    */
    interface IACLManager {
    /**
    * @notice Returns the contract address of the PoolAddressesProvider
    * @return The address of the PoolAddressesProvider
    */
    function ADDRESSES_PROVIDER() external view returns (IPoolAddressesProvider);
    /**
    * @notice Returns the identifier of the PoolAdmin role
    * @return The id of the PoolAdmin role
    */
    function POOL_ADMIN_ROLE() external view returns (bytes32);
    /**
    * @notice Returns the identifier of the EmergencyAdmin role
    * @return The id of the EmergencyAdmin role
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 8 of 23 : IAToken.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: AGPL-3.0
    pragma solidity ^0.8.0;
    import {IERC20} from '../dependencies/openzeppelin/contracts/IERC20.sol';
    import {IScaledBalanceToken} from './IScaledBalanceToken.sol';
    import {IInitializableAToken} from './IInitializableAToken.sol';
    /**
    * @title IAToken
    * @author Aave
    * @notice Defines the basic interface for an AToken.
    */
    interface IAToken is IERC20, IScaledBalanceToken, IInitializableAToken {
    /**
    * @dev Emitted during the transfer action
    * @param from The user whose tokens are being transferred
    * @param to The recipient
    * @param value The scaled amount being transferred
    * @param index The next liquidity index of the reserve
    */
    event BalanceTransfer(address indexed from, address indexed to, uint256 value, uint256 index);
    /**
    * @notice Mints `amount` aTokens to `user`
    * @param caller The address performing the mint
    * @param onBehalfOf The address of the user that will receive the minted aTokens
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 9 of 23 : IAaveIncentivesController.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    // SPDX-License-Identifier: AGPL-3.0
    pragma solidity ^0.8.0;
    /**
    * @title IAaveIncentivesController
    * @author Aave
    * @notice Defines the basic interface for an Aave Incentives Controller.
    * @dev It only contains one single function, needed as a hook on aToken and debtToken transfers.
    */
    interface IAaveIncentivesController {
    /**
    * @dev Called by the corresponding asset on transfer hook in order to update the rewards distribution.
    * @dev The units of `totalSupply` and `userBalance` should be the same.
    * @param user The address of the user whose asset balance has changed
    * @param totalSupply The total supply of the asset prior to user balance change
    * @param userBalance The previous user balance prior to balance change
    */
    function handleAction(address user, uint256 totalSupply, uint256 userBalance) external;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 10 of 23 : IDelegationToken.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    // SPDX-License-Identifier: AGPL-3.0
    pragma solidity ^0.8.0;
    /**
    * @title IDelegationToken
    * @author Aave
    * @notice Implements an interface for tokens with delegation COMP/UNI compatible
    */
    interface IDelegationToken {
    /**
    * @notice Delegate voting power to a delegatee
    * @param delegatee The address of the delegatee
    */
    function delegate(address delegatee) external;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 11 of 23 : IInitializableAToken.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: AGPL-3.0
    pragma solidity ^0.8.0;
    import {IAaveIncentivesController} from './IAaveIncentivesController.sol';
    import {IPool} from './IPool.sol';
    /**
    * @title IInitializableAToken
    * @author Aave
    * @notice Interface for the initialize function on AToken
    */
    interface IInitializableAToken {
    /**
    * @dev Emitted when an aToken is initialized
    * @param underlyingAsset The address of the underlying asset
    * @param pool The address of the associated pool
    * @param treasury The address of the treasury
    * @param incentivesController The address of the incentives controller for this aToken
    * @param aTokenDecimals The decimals of the underlying
    * @param aTokenName The name of the aToken
    * @param aTokenSymbol The symbol of the aToken
    * @param params A set of encoded parameters for additional initialization
    */
    event Initialized(
    address indexed underlyingAsset,
    address indexed pool,
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 12 of 23 : IPool.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: AGPL-3.0
    pragma solidity ^0.8.0;
    import {IPoolAddressesProvider} from './IPoolAddressesProvider.sol';
    import {DataTypes} from '../protocol/libraries/types/DataTypes.sol';
    /**
    * @title IPool
    * @author Aave
    * @notice Defines the basic interface for an Aave Pool.
    */
    interface IPool {
    /**
    * @dev Emitted on mintUnbacked()
    * @param reserve The address of the underlying asset of the reserve
    * @param user The address initiating the supply
    * @param onBehalfOf The beneficiary of the supplied assets, receiving the aTokens
    * @param amount The amount of supplied assets
    * @param referralCode The referral code used
    */
    event MintUnbacked(
    address indexed reserve,
    address user,
    address indexed onBehalfOf,
    uint256 amount,
    uint16 indexed referralCode
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 13 of 23 : IPoolAddressesProvider.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: AGPL-3.0
    pragma solidity ^0.8.0;
    /**
    * @title IPoolAddressesProvider
    * @author Aave
    * @notice Defines the basic interface for a Pool Addresses Provider.
    */
    interface IPoolAddressesProvider {
    /**
    * @dev Emitted when the market identifier is updated.
    * @param oldMarketId The old id of the market
    * @param newMarketId The new id of the market
    */
    event MarketIdSet(string indexed oldMarketId, string indexed newMarketId);
    /**
    * @dev Emitted when the pool is updated.
    * @param oldAddress The old address of the Pool
    * @param newAddress The new address of the Pool
    */
    event PoolUpdated(address indexed oldAddress, address indexed newAddress);
    /**
    * @dev Emitted when the pool configurator is updated.
    * @param oldAddress The old address of the PoolConfigurator
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 14 of 23 : IScaledBalanceToken.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: AGPL-3.0
    pragma solidity ^0.8.0;
    /**
    * @title IScaledBalanceToken
    * @author Aave
    * @notice Defines the basic interface for a scaled-balance token.
    */
    interface IScaledBalanceToken {
    /**
    * @dev Emitted after the mint action
    * @param caller The address performing the mint
    * @param onBehalfOf The address of the user that will receive the minted tokens
    * @param value The scaled-up amount being minted (based on user entered amount and balance increase from interest)
    * @param balanceIncrease The increase in scaled-up balance since the last action of 'onBehalfOf'
    * @param index The next liquidity index of the reserve
    */
    event Mint(
    address indexed caller,
    address indexed onBehalfOf,
    uint256 value,
    uint256 balanceIncrease,
    uint256 index
    );
    /**
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 15 of 23 : VersionedInitializable.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: AGPL-3.0
    pragma solidity ^0.8.0;
    /**
    * @title VersionedInitializable
    * @author Aave, inspired by the OpenZeppelin Initializable contract
    * @notice Helper contract to implement initializer functions. To use it, replace
    * the constructor with a function that has the `initializer` modifier.
    * @dev WARNING: Unlike constructors, initializer functions must be manually
    * invoked. This applies both to deploying an Initializable contract, as well
    * as extending an Initializable contract via inheritance.
    * WARNING: When used with inheritance, manual care must be taken to not invoke
    * a parent initializer twice, or ensure that all initializers are idempotent,
    * because this is not dealt with automatically as with constructors.
    */
    abstract contract VersionedInitializable {
    /**
    * @dev Indicates that the contract has been initialized.
    */
    uint256 private lastInitializedRevision = 0;
    /**
    * @dev Indicates that the contract is in the process of being initialized.
    */
    bool private initializing;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 16 of 23 : Errors.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: BUSL-1.1
    pragma solidity ^0.8.0;
    /**
    * @title Errors library
    * @author Aave
    * @notice Defines the error messages emitted by the different contracts of the Aave protocol
    */
    library Errors {
    string public constant CALLER_NOT_POOL_ADMIN = '1'; // 'The caller of the function is not a pool admin'
    string public constant CALLER_NOT_EMERGENCY_ADMIN = '2'; // 'The caller of the function is not an emergency admin'
    string public constant CALLER_NOT_POOL_OR_EMERGENCY_ADMIN = '3'; // 'The caller of the function is not a pool or emergency admin'
    string public constant CALLER_NOT_RISK_OR_POOL_ADMIN = '4'; // 'The caller of the function is not a risk or pool admin'
    string public constant CALLER_NOT_ASSET_LISTING_OR_POOL_ADMIN = '5'; // 'The caller of the function is not an asset listing or pool admin'
    string public constant CALLER_NOT_BRIDGE = '6'; // 'The caller of the function is not a bridge'
    string public constant ADDRESSES_PROVIDER_NOT_REGISTERED = '7'; // 'Pool addresses provider is not registered'
    string public constant INVALID_ADDRESSES_PROVIDER_ID = '8'; // 'Invalid id for the pool addresses provider'
    string public constant NOT_CONTRACT = '9'; // 'Address is not a contract'
    string public constant CALLER_NOT_POOL_CONFIGURATOR = '10'; // 'The caller of the function is not the pool configurator'
    string public constant CALLER_NOT_ATOKEN = '11'; // 'The caller of the function is not an AToken'
    string public constant INVALID_ADDRESSES_PROVIDER = '12'; // 'The address of the pool addresses provider is invalid'
    string public constant INVALID_FLASHLOAN_EXECUTOR_RETURN = '13'; // 'Invalid return value of the flashloan executor function'
    string public constant RESERVE_ALREADY_ADDED = '14'; // 'Reserve has already been added to reserve list'
    string public constant NO_MORE_RESERVES_ALLOWED = '15'; // 'Maximum amount of reserves in the pool reached'
    string public constant EMODE_CATEGORY_RESERVED = '16'; // 'Zero eMode category is reserved for volatile heterogeneous assets'
    string public constant INVALID_EMODE_CATEGORY_ASSIGNMENT = '17'; // 'Invalid eMode category assignment to asset'
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 17 of 23 : WadRayMath.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: BUSL-1.1
    pragma solidity ^0.8.0;
    /**
    * @title WadRayMath library
    * @author Aave
    * @notice Provides functions to perform calculations with Wad and Ray units
    * @dev Provides mul and div function for wads (decimal numbers with 18 digits of precision) and rays (decimal numbers
    * with 27 digits of precision)
    * @dev Operations are rounded. If a value is >=.5, will be rounded up, otherwise rounded down.
    */
    library WadRayMath {
    // HALF_WAD and HALF_RAY expressed with extended notation as constant with operations are not supported in Yul assembly
    uint256 internal constant WAD = 1e18;
    uint256 internal constant HALF_WAD = 0.5e18;
    uint256 internal constant RAY = 1e27;
    uint256 internal constant HALF_RAY = 0.5e27;
    uint256 internal constant WAD_RAY_RATIO = 1e9;
    /**
    * @dev Multiplies two wad, rounding half up to the nearest wad
    * @dev assembly optimized for improved gas savings, see https://twitter.com/transmissions11/status/1451131036377571328
    * @param a Wad
    * @param b Wad
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 18 of 23 : DataTypes.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: BUSL-1.1
    pragma solidity ^0.8.0;
    library DataTypes {
    struct ReserveData {
    //stores the reserve configuration
    ReserveConfigurationMap configuration;
    //the liquidity index. Expressed in ray
    uint128 liquidityIndex;
    //the current supply rate. Expressed in ray
    uint128 currentLiquidityRate;
    //variable borrow index. Expressed in ray
    uint128 variableBorrowIndex;
    //the current variable borrow rate. Expressed in ray
    uint128 currentVariableBorrowRate;
    //the current stable borrow rate. Expressed in ray
    uint128 currentStableBorrowRate;
    //timestamp of last update
    uint40 lastUpdateTimestamp;
    //the id of the reserve. Represents the position in the list of the active reserves
    uint16 id;
    //aToken address
    address aTokenAddress;
    //stableDebtToken address
    address stableDebtTokenAddress;
    //variableDebtToken address
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 19 of 23 : AToken.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: BUSL-1.1
    pragma solidity ^0.8.10;
    import {IERC20} from '../../dependencies/openzeppelin/contracts/IERC20.sol';
    import {GPv2SafeERC20} from '../../dependencies/gnosis/contracts/GPv2SafeERC20.sol';
    import {SafeCast} from '../../dependencies/openzeppelin/contracts/SafeCast.sol';
    import {VersionedInitializable} from '../libraries/aave-upgradeability/VersionedInitializable.sol';
    import {Errors} from '../libraries/helpers/Errors.sol';
    import {WadRayMath} from '../libraries/math/WadRayMath.sol';
    import {IPool} from '../../interfaces/IPool.sol';
    import {IAToken} from '../../interfaces/IAToken.sol';
    import {IAaveIncentivesController} from '../../interfaces/IAaveIncentivesController.sol';
    import {IInitializableAToken} from '../../interfaces/IInitializableAToken.sol';
    import {ScaledBalanceTokenBase} from './base/ScaledBalanceTokenBase.sol';
    import {IncentivizedERC20} from './base/IncentivizedERC20.sol';
    import {EIP712Base} from './base/EIP712Base.sol';
    /**
    * @title Aave ERC20 AToken
    * @author Aave
    * @notice Implementation of the interest bearing token for the Aave protocol
    */
    contract AToken is VersionedInitializable, ScaledBalanceTokenBase, EIP712Base, IAToken {
    using WadRayMath for uint256;
    using SafeCast for uint256;
    using GPv2SafeERC20 for IERC20;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 20 of 23 : EIP712Base.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: BUSL-1.1
    pragma solidity ^0.8.10;
    /**
    * @title EIP712Base
    * @author Aave
    * @notice Base contract implementation of EIP712.
    */
    abstract contract EIP712Base {
    bytes public constant EIP712_REVISION = bytes('1');
    bytes32 internal constant EIP712_DOMAIN =
    keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)');
    // Map of address nonces (address => nonce)
    mapping(address => uint256) internal _nonces;
    bytes32 internal _domainSeparator;
    uint256 internal immutable _chainId;
    /**
    * @dev Constructor.
    */
    constructor() {
    _chainId = block.chainid;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 21 of 23 : IncentivizedERC20.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: BUSL-1.1
    pragma solidity ^0.8.10;
    import {Context} from '../../../dependencies/openzeppelin/contracts/Context.sol';
    import {IERC20} from '../../../dependencies/openzeppelin/contracts/IERC20.sol';
    import {IERC20Detailed} from '../../../dependencies/openzeppelin/contracts/IERC20Detailed.sol';
    import {SafeCast} from '../../../dependencies/openzeppelin/contracts/SafeCast.sol';
    import {WadRayMath} from '../../libraries/math/WadRayMath.sol';
    import {Errors} from '../../libraries/helpers/Errors.sol';
    import {IAaveIncentivesController} from '../../../interfaces/IAaveIncentivesController.sol';
    import {IPoolAddressesProvider} from '../../../interfaces/IPoolAddressesProvider.sol';
    import {IPool} from '../../../interfaces/IPool.sol';
    import {IACLManager} from '../../../interfaces/IACLManager.sol';
    /**
    * @title IncentivizedERC20
    * @author Aave, inspired by the Openzeppelin ERC20 implementation
    * @notice Basic ERC20 implementation
    */
    abstract contract IncentivizedERC20 is Context, IERC20Detailed {
    using WadRayMath for uint256;
    using SafeCast for uint256;
    /**
    * @dev Only pool admin can call functions marked by this modifier.
    */
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 22 of 23 : MintableIncentivizedERC20.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: BUSL-1.1
    pragma solidity ^0.8.10;
    import {IAaveIncentivesController} from '../../../interfaces/IAaveIncentivesController.sol';
    import {IPool} from '../../../interfaces/IPool.sol';
    import {IncentivizedERC20} from './IncentivizedERC20.sol';
    /**
    * @title MintableIncentivizedERC20
    * @author Aave
    * @notice Implements mint and burn functions for IncentivizedERC20
    */
    abstract contract MintableIncentivizedERC20 is IncentivizedERC20 {
    /**
    * @dev Constructor.
    * @param pool The reference to the main Pool contract
    * @param name The name of the token
    * @param symbol The symbol of the token
    * @param decimals The number of decimals of the token
    */
    constructor(
    IPool pool,
    string memory name,
    string memory symbol,
    uint8 decimals
    ) IncentivizedERC20(pool, name, symbol, decimals) {
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 23 of 23 : ScaledBalanceTokenBase.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: BUSL-1.1
    pragma solidity ^0.8.10;
    import {SafeCast} from '../../../dependencies/openzeppelin/contracts/SafeCast.sol';
    import {Errors} from '../../libraries/helpers/Errors.sol';
    import {WadRayMath} from '../../libraries/math/WadRayMath.sol';
    import {IPool} from '../../../interfaces/IPool.sol';
    import {IScaledBalanceToken} from '../../../interfaces/IScaledBalanceToken.sol';
    import {MintableIncentivizedERC20} from './MintableIncentivizedERC20.sol';
    /**
    * @title ScaledBalanceTokenBase
    * @author Aave
    * @notice Basic ERC20 implementation of scaled balance token
    */
    abstract contract ScaledBalanceTokenBase is MintableIncentivizedERC20, IScaledBalanceToken {
    using WadRayMath for uint256;
    using SafeCast for uint256;
    /**
    * @dev Constructor.
    * @param pool The reference to the main Pool contract
    * @param name The name of the token
    * @param symbol The symbol of the token
    * @param decimals The number of decimals of the token
    */
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Settings
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    {
    "evmVersion": "berlin",
    "libraries": {},
    "metadata": {
    "bytecodeHash": "ipfs",
    "useLiteralContent": true
    },
    "optimizer": {
    "enabled": true,
    "runs": 100000
    },
    "remappings": [],
    "outputSelection": {
    "*": {
    "*": [
    "evm.bytecode",
    "evm.deployedBytecode",
    "devdoc",
    "userdoc",
    "metadata",
    "abi"
    ]
    }
    }
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Contract Security Audit

    Contract ABI

    API
    [{"inputs":[{"internalType":"contract IPool","name":"pool","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"}],"name":"BalanceTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"balanceIncrease","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegatee","type":"address"}],"name":"DelegateUnderlyingTo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlyingAsset","type":"address"},{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"address","name":"treasury","type":"address"},{"indexed":false,"internalType":"address","name":"incentivesController","type":"address"},{"indexed":false,"internalType":"uint8","name":"aTokenDecimals","type":"uint8"},{"indexed":false,"internalType":"string","name":"aTokenName","type":"string"},{"indexed":false,"internalType":"string","name":"aTokenSymbol","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"onBehalfOf","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"balanceIncrease","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ATOKEN_REVISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EIP712_REVISION","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"POOL","outputs":[{"internalType":"contract IPool","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESERVE_TREASURY_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_ASSET_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"receiverOfUnderlying","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegateUnderlyingTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getIncentivesController","outputs":[{"internalType":"contract IAaveIncentivesController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getPreviousIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getScaledUserBalanceAndSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"handleRepayment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IPool","name":"initializingPool","type":"address"},{"internalType":"address","name":"treasury","type":"address"},{"internalType":"address","name":"underlyingAsset","type":"address"},{"internalType":"contract IAaveIncentivesController","name":"incentivesController","type":"address"},{"internalType":"uint8","name":"aTokenDecimals","type":"uint8"},{"internalType":"string","name":"aTokenName","type":"string"},{"internalType":"string","name":"aTokenSymbol","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"mintToTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"scaledBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"scaledTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IAaveIncentivesController","name":"controller","type":"address"}],"name":"setIncentivesController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferOnLiquidation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferUnderlyingTo","outputs":[],"stateMutability":"nonpayable","type":"function"}]

    Deployed Bytecode

    0x608060405234801561001057600080fd5b50600436106102415760003560e01c806375d2641311610145578063b1bf962d116100bd578063d7020d0a1161008c578063e075398611610071578063e0753986146105ba578063e655dbd814610616578063f866c3191461062957600080fd5b8063d7020d0a14610561578063dd62ed3e1461057457600080fd5b8063b1bf962d14610520578063b3f1c93d14610528578063cea9d26f1461053b578063d505accf1461054e57600080fd5b806395d89b4111610114578063a9059cbb116100f9578063a9059cbb146104d1578063ae167335146104e4578063b16a19de1461050257600080fd5b806395d89b41146104b6578063a457c2d7146104be57600080fd5b806375d264131461043157806378160376146104545780637df5bd3b146104905780637ecebe00146104a357600080fd5b80632f114618116101d857806339509351116101a75780636fd976761161018c5780636fd97676146103bf57806370a08231146103d25780637535d246146103e557600080fd5b806339509351146103995780634efecaa5146103ac57600080fd5b80632f1146181461034257806330adf81f14610355578063313ce5671461037c5780633644e5151461039157600080fd5b806318160ddd1161021457806318160ddd146102ff578063183fb413146103075780631da24f3e1461031c57806323b872dd1461032f57600080fd5b806306fdde0314610246578063095ea7b3146102645780630afbcdc9146102875780630bd7ad3b146102e9575b600080fd5b61024e61063c565b60405161025b91906132c7565b60405180910390f35b610277610272366004613316565b6106ce565b604051901515815260200161025b565b6102d4610295366004613342565b73ffffffffffffffffffffffffffffffffffffffff166000908152603460205260409020546036546fffffffffffffffffffffffffffffffff90911691565b6040805192835260208301919091520161025b565b6102f1600181565b60405190815260200161025b565b6102f16106e4565b61031a6103153660046133b9565b6107c3565b005b6102f161032a366004613342565b610b80565b61027761033d3660046134ad565b610bbf565b61031a610350366004613342565b610c3f565b6102f17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460405160ff909116815260200161025b565b6102f1610e9a565b6102776103a7366004613316565b610ea9565b61031a6103ba366004613316565b610eed565b61031a6103cd3660046134ad565b610fba565b6102f16103e0366004613342565b611064565b61040c7f0000000000000000000000007b1b7481bdd5e298b6edcc8de268b10198bcda1d81565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161025b565b603954610100900473ffffffffffffffffffffffffffffffffffffffff1661040c565b61024e6040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b61031a61049e3660046134ee565b61115f565b6102f16104b1366004613342565b611258565b61024e611283565b6102776104cc366004613316565b611292565b6102776104df366004613316565b6112d6565b603c5473ffffffffffffffffffffffffffffffffffffffff1661040c565b603d5473ffffffffffffffffffffffffffffffffffffffff1661040c565b6102f16112f9565b610277610536366004613510565b611304565b61031a6105493660046134ad565b6113c1565b61031a61055c366004613556565b6115ff565b61031a61056f366004613510565b611959565b6102f16105823660046135c4565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b6102f16105c8366004613342565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690565b61031a610624366004613342565b611a4b565b61031a6106373660046134ad565b611c29565b60606037805461064b906135fd565b80601f0160208091040260200160405190810160405280929190818152602001828054610677906135fd565b80156106c45780601f10610699576101008083540402835291602001916106c4565b820191906000526020600020905b8154815290600101906020018083116106a757829003601f168201915b5050505050905090565b60006106db338484611cdb565b50600192915050565b6000806106f060365490565b9050806106ff57600091505090565b603d546040517fd15e005300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526107bd917f0000000000000000000000007b1b7481bdd5e298b6edcc8de268b10198bcda1d169063d15e005390602401602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b6919061364b565b8290611d49565b91505090565b6001805460ff16806107d45750303b155b806107e0575060005481115b610871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201527f656e20696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b60015460ff161580156108ae57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168117905560008290555b7f0000000000000000000000007b1b7481bdd5e298b6edcc8de268b10198bcda1d73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600281526020017f38370000000000000000000000000000000000000000000000000000000000008152509061096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086891906132c7565b506109ab88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611da092505050565b6109ea86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611db392505050565b603980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8b16179055603c805473ffffffffffffffffffffffffffffffffffffffff808f167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255603d80548e8416921691909117905560398054918c16610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055610aa7611dc6565b603b819055507f0000000000000000000000007b1b7481bdd5e298b6edcc8de268b10198bcda1d73ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b8e8d8d8d8d8d8d8d8d604051610b3a999897969594939291906136ad565b60405180910390a38015610b7157600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b50505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152603460205260408120546fffffffffffffffffffffffffffffffff165b92915050565b600080610bcb83611e8b565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260356020908152604080832033808552925290912054919250610c2991879190610c24906fffffffffffffffffffffffffffffffff861690613757565b611cdb565b610c34858583611f31565b506001949350505050565b60007f0000000000000000000000001190bd0b5ed2a58b39adead5d3e92463e6e09d0873ffffffffffffffffffffffffffffffffffffffff1663707cd7166040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd0919061376e565b6040517f7be53ca100000000000000000000000000000000000000000000000000000000815233600482015290915073ffffffffffffffffffffffffffffffffffffffff821690637be53ca190602401602060405180830381865afa158015610d3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d61919061378b565b6040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090610dcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086891906132c7565b50603d546040517f5c19a95c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015290911690635c19a95c90602401600060405180830381600087803b158015610e3d57600080fd5b505af1158015610e51573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff851692507fc7a5523bfd09724fd56950e708e523ad6a61ab165b8e997a31d42357a77f0e0f9150600090a25050565b6000610ea4611f50565b905090565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106db918590610c249086906137ad565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f0000000000000000000000007b1b7481bdd5e298b6edcc8de268b10198bcda1d73ffffffffffffffffffffffffffffffffffffffff1614610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086891906132c7565b50603d54610fb69073ffffffffffffffffffffffffffffffffffffffff168383611f89565b5050565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f0000000000000000000000007b1b7481bdd5e298b6edcc8de268b10198bcda1d73ffffffffffffffffffffffffffffffffffffffff161461105e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086891906132c7565b50505050565b603d546040517fd15e005300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600091610bb9917f0000000000000000000000007b1b7481bdd5e298b6edcc8de268b10198bcda1d9091169063d15e005390602401602060405180830381865afa1580156110fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611120919061364b565b73ffffffffffffffffffffffffffffffffffffffff84166000908152603460205260409020546fffffffffffffffffffffffffffffffff165b90611d49565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f0000000000000000000000007b1b7481bdd5e298b6edcc8de268b10198bcda1d73ffffffffffffffffffffffffffffffffffffffff1614611203576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086891906132c7565b508161120d575050565b603c54611253907f0000000000000000000000007b1b7481bdd5e298b6edcc8de268b10198bcda1d9073ffffffffffffffffffffffffffffffffffffffff16848461205c565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152603a6020526040812054610bb9565b60606038805461064b906135fd565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106db918590610c24908690613757565b6000806112e283611e8b565b90506112ef338583611f31565b5060019392505050565b6000610ea460365490565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152600090337f0000000000000000000000007b1b7481bdd5e298b6edcc8de268b10198bcda1d73ffffffffffffffffffffffffffffffffffffffff16146113ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086891906132c7565b506113b88585858561205c565b95945050505050565b60007f0000000000000000000000001190bd0b5ed2a58b39adead5d3e92463e6e09d0873ffffffffffffffffffffffffffffffffffffffff1663707cd7166040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611452919061376e565b6040517f7be53ca100000000000000000000000000000000000000000000000000000000815233600482015290915073ffffffffffffffffffffffffffffffffffffffff821690637be53ca190602401602060405180830381865afa1580156114bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e3919061378b565b6040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090611551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086891906132c7565b50603d5460408051808201909152600281527f383500000000000000000000000000000000000000000000000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff868116911614156115dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086891906132c7565b5061105e73ffffffffffffffffffffffffffffffffffffffff85168484611f89565b60408051808201909152600281527f3737000000000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8816611681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086891906132c7565b50834211156040518060400160405280600281526020017f3738000000000000000000000000000000000000000000000000000000000000815250906116f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086891906132c7565b5073ffffffffffffffffffffffffffffffffffffffff87166000908152603a602052604081205490611724610e9a565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9602082015273ffffffffffffffffffffffffffffffffffffffff808d1692820192909252908a1660608201526080810189905260a0810184905260c0810188905260e001604051602081830303815290604052805190602001206040516020016117e59291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201206000845290830180835281905260ff8816918301919091526060820186905260808201859052915060019060a0016020604051602081039080840390855afa15801561186b573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600281526020017f373900000000000000000000000000000000000000000000000000000000000081525090611911576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086891906132c7565b5061191d8260016137ad565b73ffffffffffffffffffffffffffffffffffffffff8a166000908152603a602052604090205561194e898989611cdb565b505050505050505050565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f0000000000000000000000007b1b7481bdd5e298b6edcc8de268b10198bcda1d73ffffffffffffffffffffffffffffffffffffffff16146119fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086891906132c7565b50611a0a8484848461229d565b73ffffffffffffffffffffffffffffffffffffffff8316301461105e57603d5461105e9073ffffffffffffffffffffffffffffffffffffffff168484611f89565b60007f0000000000000000000000001190bd0b5ed2a58b39adead5d3e92463e6e09d0873ffffffffffffffffffffffffffffffffffffffff1663707cd7166040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adc919061376e565b6040517f7be53ca100000000000000000000000000000000000000000000000000000000815233600482015290915073ffffffffffffffffffffffffffffffffffffffff821690637be53ca190602401602060405180830381865afa158015611b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6d919061378b565b6040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090611bdb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086891906132c7565b50506039805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152337f0000000000000000000000007b1b7481bdd5e298b6edcc8de268b10198bcda1d73ffffffffffffffffffffffffffffffffffffffff1614611ccd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086891906132c7565b5061125383838360006125bb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081157ffffffffffffffffffffffffffffffffffffffffffe6268e1b017bfe18bffffff83900484111517611d7e57600080fd5b506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b8051610fb69060379060208401906131cc565b8051610fb69060389060208401906131cc565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611df1612837565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60006fffffffffffffffffffffffffffffffff821115611f2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f32382062697473000000000000000000000000000000000000000000000000006064820152608401610868565b5090565b6112538383836fffffffffffffffffffffffffffffffff1660016125bb565b60007f0000000000000000000000000000000000000000000000000000000000000092461415611f815750603b5490565b610ea4611dc6565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af1611fec573d6000803e3d6000fd5b50611ff684612841565b61105e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f475076323a206661696c6564207472616e7366657200000000000000000000006044820152606401610868565b600080612069848461290d565b60408051808201909152600281527f32340000000000000000000000000000000000000000000000000000000000006020820152909150816120d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086891906132c7565b5073ffffffffffffffffffffffffffffffffffffffff85166000908152603460205260408120546fffffffffffffffffffffffffffffffff8082169291612135918491700100000000000000000000000000000000900416611d49565b61213f8387611d49565b6121499190613757565b905061215485611e8b565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260346020526040902080546fffffffffffffffffffffffffffffffff9283167001000000000000000000000000000000000292169190911790556121bc876121b785611e8b565b61294c565b60006121c882886137ad565b90508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161222a91815260200190565b60405180910390a3604080518281526020810184905290810187905273ffffffffffffffffffffffffffffffffffffffff808a1691908b16907f458f5fa412d0f69b08dd84872b0215675cc67bc1d5b6fd93300a1c3878b861969060600160405180910390a35050159695505050505050565b60006122a9838361290d565b60408051808201909152600281527f3235000000000000000000000000000000000000000000000000000000000000602082015290915081612318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086891906132c7565b5073ffffffffffffffffffffffffffffffffffffffff85166000908152603460205260408120546fffffffffffffffffffffffffffffffff8082169291612375918491700100000000000000000000000000000000900416611d49565b61237f8386611d49565b6123899190613757565b905061239484611e8b565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260346020526040902080546fffffffffffffffffffffffffffffffff9283167001000000000000000000000000000000000292169190911790556123fc876123f785611e8b565b612ac8565b848111156124db5760006124108683613757565b90508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161247291815260200190565b60405180910390a3604080518281526020810184905290810186905273ffffffffffffffffffffffffffffffffffffffff89169081907f458f5fa412d0f69b08dd84872b0215675cc67bc1d5b6fd93300a1c3878b861969060600160405180910390a3506125b2565b60006124e78287613757565b9050600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161254991815260200190565b60405180910390a3604080518281526020810184905290810186905273ffffffffffffffffffffffffffffffffffffffff80891691908a16907f4cf25bc1d991c17529c25213d3cc0cda295eeaad5f13f361969b12ea48015f90906060015b60405180910390a3505b50505050505050565b603d546040517fd15e005300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201819052916000917f0000000000000000000000007b1b7481bdd5e298b6edcc8de268b10198bcda1d9091169063d15e005390602401602060405180830381865afa158015612652573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612676919061364b565b905060006126bc826111598973ffffffffffffffffffffffffffffffffffffffff166000908152603460205260409020546fffffffffffffffffffffffffffffffff1690565b90506000612702836111598973ffffffffffffffffffffffffffffffffffffffff166000908152603460205260409020546fffffffffffffffffffffffffffffffff1690565b905061271088888886612b2c565b84156127dd576040517fd5ed393300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015289811660248301528881166044830152606482018890526084820184905260a482018390527f0000000000000000000000007b1b7481bdd5e298b6edcc8de268b10198bcda1d169063d5ed39339060c401600060405180830381600087803b1580156127c457600080fd5b505af11580156127d8573d6000803e3d6000fd5b505050505b73ffffffffffffffffffffffffffffffffffffffff8088169089167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda8666612823898761290d565b6040805191825260208201889052016125a8565b6060610ea461063c565b6000612881565b7f08c379a00000000000000000000000000000000000000000000000000000000060005260206004528060245250806044525060646000fd5b3d80156128c057602081146128fa576128bb7f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f612848565b612907565b823b6128f1576128f17f475076323a206e6f74206120636f6e74726163740000000000000000000000006014612848565b60019150612907565b3d6000803e600051151591505b50919050565b600081156b033b2e3c9fd0803ce80000006002840419048411171561293157600080fd5b506b033b2e3c9fd0803ce80000009190910260028204010490565b60365461296b6fffffffffffffffffffffffffffffffff8316826137ad565b60365573ffffffffffffffffffffffffffffffffffffffff83166000908152603460205260409020546fffffffffffffffffffffffffffffffff166129b083826137c5565b73ffffffffffffffffffffffffffffffffffffffff858116600090815260346020526040902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff93909316929092179091556039546101009004168015612ac1576040517f31873e2e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018590526fffffffffffffffffffffffffffffffff841660448301528216906331873e2e90606401600060405180830381600087803b158015612aad57600080fd5b505af115801561194e573d6000803e3d6000fd5b5050505050565b603654612ae76fffffffffffffffffffffffffffffffff831682613757565b60365573ffffffffffffffffffffffffffffffffffffffff83166000908152603460205260409020546fffffffffffffffffffffffffffffffff166129b083826137f9565b73ffffffffffffffffffffffffffffffffffffffff84166000908152603460205260408120546fffffffffffffffffffffffffffffffff8082169291612b88918491700100000000000000000000000000000000900416611d49565b612b928385611d49565b612b9c9190613757565b90506000612bde8673ffffffffffffffffffffffffffffffffffffffff166000908152603460205260409020546fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff871660009081526034602052604081205491925090612c3990839070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16611d49565b612c438387611d49565b612c4d9190613757565b9050612c5885611e8b565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260346020526040902080546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055612cb785611e8b565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260346020526040902080546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055612d298888612d24612d1f8a8a61290d565b611e8b565b612f21565b8215612dd85760405183815273ffffffffffffffffffffffffffffffffffffffff8916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36040805184815260208101859052808201879052905173ffffffffffffffffffffffffffffffffffffffff8a169133917f458f5fa412d0f69b08dd84872b0215675cc67bc1d5b6fd93300a1c3878b861969181900360600190a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614158015612e145750600081115b15612ec25760405181815273ffffffffffffffffffffffffffffffffffffffff8816906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36040805182815260208101839052808201879052905173ffffffffffffffffffffffffffffffffffffffff89169133917f458f5fa412d0f69b08dd84872b0215675cc67bc1d5b6fd93300a1c3878b861969181900360600190a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040516125a891815260200190565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603460205260409020546fffffffffffffffffffffffffffffffff16612f6382826137f9565b73ffffffffffffffffffffffffffffffffffffffff85811660009081526034602052604080822080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9586161790559186168152205416612fd783826137c5565b73ffffffffffffffffffffffffffffffffffffffff858116600090815260346020526040902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff939093169290921790915560395461010090041680156131c4576036546040517f31873e2e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152602482018390526fffffffffffffffffffffffffffffffff861660448301528316906331873e2e90606401600060405180830381600087803b1580156130d757600080fd5b505af11580156130eb573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146125b2576040517f31873e2e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018390526fffffffffffffffffffffffffffffffff851660448301528316906331873e2e90606401600060405180830381600087803b1580156131aa57600080fd5b505af11580156131be573d6000803e3d6000fd5b50505050505b505050505050565b8280546131d8906135fd565b90600052602060002090601f0160209004810192826131fa5760008555613240565b82601f1061321357805160ff1916838001178555613240565b82800160010185558215613240579182015b82811115613240578251825591602001919060010190613225565b50611f2d9291505b80821115611f2d5760008155600101613248565b6000815180845260005b8181101561328257602081850181015186830182015201613266565b81811115613294576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006132da602083018461325c565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461330357600080fd5b50565b8035613311816132e1565b919050565b6000806040838503121561332957600080fd5b8235613334816132e1565b946020939093013593505050565b60006020828403121561335457600080fd5b81356132da816132e1565b803560ff8116811461331157600080fd5b60008083601f84011261338257600080fd5b50813567ffffffffffffffff81111561339a57600080fd5b6020830191508360208285010111156133b257600080fd5b9250929050565b60008060008060008060008060008060006101008c8e0312156133db57600080fd5b6133e48c613306565b9a506133f260208d01613306565b995061340060408d01613306565b985061340e60608d01613306565b975061341c60808d0161335f565b965067ffffffffffffffff8060a08e0135111561343857600080fd5b6134488e60a08f01358f01613370565b909750955060c08d013581101561345e57600080fd5b61346e8e60c08f01358f01613370565b909550935060e08d013581101561348457600080fd5b506134958d60e08e01358e01613370565b81935080925050509295989b509295989b9093969950565b6000806000606084860312156134c257600080fd5b83356134cd816132e1565b925060208401356134dd816132e1565b929592945050506040919091013590565b6000806040838503121561350157600080fd5b50508035926020909101359150565b6000806000806080858703121561352657600080fd5b8435613531816132e1565b93506020850135613541816132e1565b93969395505050506040820135916060013590565b600080600080600080600060e0888a03121561357157600080fd5b873561357c816132e1565b9650602088013561358c816132e1565b955060408801359450606088013593506135a86080890161335f565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156135d757600080fd5b82356135e2816132e1565b915060208301356135f2816132e1565b809150509250929050565b600181811c9082168061361157607f821691505b60208210811415612907577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020828403121561365d57600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808c168352808b1660208401525060ff8916604083015260c060608301526136f060c08301888a613664565b8281036080840152613703818789613664565b905082810360a0840152613718818587613664565b9c9b505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561376957613769613728565b500390565b60006020828403121561378057600080fd5b81516132da816132e1565b60006020828403121561379d57600080fd5b815180151581146132da57600080fd5b600082198211156137c0576137c0613728565b500190565b60006fffffffffffffffffffffffffffffffff8083168185168083038211156137f0576137f0613728565b01949350505050565b60006fffffffffffffffffffffffffffffffff8381169083168181101561382257613822613728565b03939250505056fea26469706673582212206e1f28535238add8c8ff3d72d77e8af4795f99809ec2a4412e0bebdc08c398da64736f6c634300080a0033

    Block Age Transaction Gas Used Reward
    view all blocks ##produced##

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

    Validator Index Block Age Amount
    View All Withdrawals

    Transaction Hash Block Age Value Eth2 PubKey Valid
    View All Deposits
    Loading...
    Loading
    Loading...
    Loading

    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.