ETH Price: $3,384.08 (-1.55%)
Gas: 1 Gwei

Contract

0x27c229FE370C1195c45ff1953e96acd741aA48c0
 

Overview

ETH Balance

71.346398453005334013 ETH

Eth Value

$241,441.92 (@ $3,384.08/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Transfer201964102024-06-29 9:20:4727 mins ago1719652847IN
0x27c229FE...741aA48c0
0.01372239 ETH0.000042491.89560631
Transfer201963032024-06-29 8:59:1149 mins ago1719651551IN
0x27c229FE...741aA48c0
0.02779966 ETH0.000046052.05424415
Transfer201961442024-06-29 8:26:591 hr ago1719649619IN
0x27c229FE...741aA48c0
0.04258957 ETH0.000050392.24799189
Transfer201961192024-06-29 8:21:591 hr ago1719649319IN
0x27c229FE...741aA48c0
0.01406243 ETH0.000049072.1888924
Transfer201957102024-06-29 6:59:352 hrs ago1719644375IN
0x27c229FE...741aA48c0
0.01677753 ETH0.00004331.93159883
Transfer201955962024-06-29 6:36:473 hrs ago1719643007IN
0x27c229FE...741aA48c0
0.0149748 ETH0.00004091.82446453
Transfer201950512024-06-29 4:47:115 hrs ago1719636431IN
0x27c229FE...741aA48c0
0.01212632 ETH0.000031251.39427308
Transfer201946302024-06-29 3:22:356 hrs ago1719631355IN
0x27c229FE...741aA48c0
0.01456946 ETH0.000033611.49915636
Transfer201943092024-06-29 2:18:117 hrs ago1719627491IN
0x27c229FE...741aA48c0
0.02031843 ETH0.000035441.58105721
Transfer201941042024-06-29 1:36:358 hrs ago1719624995IN
0x27c229FE...741aA48c0
0.01640325 ETH0.000037131.65625746
Transfer201940202024-06-29 1:19:478 hrs ago1719623987IN
0x27c229FE...741aA48c0
0.01997248 ETH0.000035121.56661222
Transfer201939952024-06-29 1:14:478 hrs ago1719623687IN
0x27c229FE...741aA48c0
0.03047212 ETH0.000034361.5328088
Transfer201935882024-06-28 23:52:239 hrs ago1719618743IN
0x27c229FE...741aA48c0
0.17377833 ETH0.000037011.65078746
Transfer201932292024-06-28 22:40:1111 hrs ago1719614411IN
0x27c229FE...741aA48c0
0.02347108 ETH0.00004091.82432091
Transfer201929472024-06-28 21:43:3512 hrs ago1719611015IN
0x27c229FE...741aA48c0
0.01803048 ETH0.000042191.88213988
Transfer201918892024-06-28 18:10:5915 hrs ago1719598259IN
0x27c229FE...741aA48c0
0.02106282 ETH0.000112835.03277655
Transfer201917902024-06-28 17:50:5915 hrs ago1719597059IN
0x27c229FE...741aA48c0
0.04274374 ETH0.000084993.79094518
Transfer201912062024-06-28 15:53:1117 hrs ago1719589991IN
0x27c229FE...741aA48c0
0.05118459 ETH0.000166397.42173993
Transfer201909652024-06-28 15:04:4718 hrs ago1719587087IN
0x27c229FE...741aA48c0
0.12574264 ETH0.0002294910.23608095
Transfer201906582024-06-28 14:03:1119 hrs ago1719583391IN
0x27c229FE...741aA48c0
0.03076468 ETH0.000174287.77360675
Transfer201905502024-06-28 13:41:3520 hrs ago1719582095IN
0x27c229FE...741aA48c0
0.11835281 ETH0.000101214.51433704
Transfer201905242024-06-28 13:36:2320 hrs ago1719581783IN
0x27c229FE...741aA48c0
0.02141527 ETH0.000091574.08454207
Transfer201901952024-06-28 12:30:2321 hrs ago1719577823IN
0x27c229FE...741aA48c0
0.05359339 ETH0.00010254.57205838
Transfer201894402024-06-28 9:58:3523 hrs ago1719568715IN
0x27c229FE...741aA48c0
0.03692499 ETH0.000071693.19778979
Transfer201894002024-06-28 9:50:3523 hrs ago1719568235IN
0x27c229FE...741aA48c0
0.01754825 ETH0.000105694.71435994
View all transactions

Latest 10 internal transactions

Advanced mode:
Parent Transaction Hash Block From To Value
197790152024-05-02 0:58:3558 days ago1714611515
0x27c229FE...741aA48c0
46.29015529 ETH
197353552024-04-25 22:25:5964 days ago1714083959
0x27c229FE...741aA48c0
0.01260349 ETH
197278042024-04-24 21:06:3565 days ago1713992795
0x27c229FE...741aA48c0
0.00577062 ETH
197247972024-04-24 10:59:3565 days ago1713956375
0x27c229FE...741aA48c0
0.001 ETH
195457202024-03-30 8:55:1191 days ago1711788911
0x27c229FE...741aA48c0
0.00075712 ETH
195457202024-03-30 8:55:1191 days ago1711788911
0x27c229FE...741aA48c0
0.00283729 ETH
194894172024-03-22 9:56:5998 days ago1711101419
0x27c229FE...741aA48c0
0.01373044 ETH
194894172024-03-22 9:56:5998 days ago1711101419
0x27c229FE...741aA48c0
0.01839695 ETH
194738922024-03-20 5:40:11101 days ago1710913211
0x27c229FE...741aA48c0
0.09582472 ETH
193756972024-03-06 11:01:11114 days ago1709722871  Contract Creation0 ETH
Loading...
Loading

Minimal Proxy Contract for 0xd94c0ce4f8eefa4ebf44bf6665688edeef213b33

Contract Name:
SplitWallet

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 4 : SplitWallet.sol
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.8.4;

import {ISplitMain} from './interfaces/ISplitMain.sol';
import {ERC20} from '@rari-capital/solmate/src/tokens/ERC20.sol';
import {SafeTransferLib} from '@rari-capital/solmate/src/utils/SafeTransferLib.sol';

/**
 * ERRORS
 */

/// @notice Unauthorized sender
error Unauthorized();

/**
 * @title SplitWallet
 * @author 0xSplits <[email protected]>
 * @notice The implementation logic for `SplitProxy`.
 * @dev `SplitProxy` handles `receive()` itself to avoid the gas cost with `DELEGATECALL`.
 */
contract SplitWallet {
  using SafeTransferLib for address;
  using SafeTransferLib for ERC20;

  /**
   * EVENTS
   */

  /** @notice emitted after each successful ETH transfer to proxy
   *  @param split Address of the split that received ETH
   *  @param amount Amount of ETH received
   */
  event ReceiveETH(address indexed split, uint256 amount);

  /**
   * STORAGE
   */

  /**
   * STORAGE - CONSTANTS & IMMUTABLES
   */

  /// @notice address of SplitMain for split distributions & EOA/SC withdrawals
  ISplitMain public immutable splitMain;

  /**
   * MODIFIERS
   */

  /// @notice Reverts if the sender isn't SplitMain
  modifier onlySplitMain() {
    if (msg.sender != address(splitMain)) revert Unauthorized();
    _;
  }

  /**
   * CONSTRUCTOR
   */

  constructor() {
    splitMain = ISplitMain(msg.sender);
  }

  /**
   * FUNCTIONS - PUBLIC & EXTERNAL
   */

  /** @notice Sends amount `amount` of ETH in proxy to SplitMain
   *  @dev payable reduces gas cost; no vulnerability to accidentally lock
   *  ETH introduced since fn call is restricted to SplitMain
   *  @param amount Amount to send
   */
  function sendETHToMain(uint256 amount) external payable onlySplitMain() {
    address(splitMain).safeTransferETH(amount);
  }

  /** @notice Sends amount `amount` of ERC20 `token` in proxy to SplitMain
   *  @dev payable reduces gas cost; no vulnerability to accidentally lock
   *  ETH introduced since fn call is restricted to SplitMain
   *  @param token Token to send
   *  @param amount Amount to send
   */
  function sendERC20ToMain(ERC20 token, uint256 amount)
    external
    payable
    onlySplitMain()
  {
    token.safeTransfer(address(splitMain), amount);
  }
}

File 2 of 4 : ISplitMain.sol
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.8.4;

import {ERC20} from '@rari-capital/solmate/src/tokens/ERC20.sol';

/**
 * @title ISplitMain
 * @author 0xSplits <[email protected]>
 */
interface ISplitMain {
  /**
   * FUNCTIONS
   */

  function walletImplementation() external returns (address);

  function createSplit(
    address[] calldata accounts,
    uint32[] calldata percentAllocations,
    uint32 distributorFee,
    address controller
  ) external returns (address);

  function predictImmutableSplitAddress(
    address[] calldata accounts,
    uint32[] calldata percentAllocations,
    uint32 distributorFee
  ) external view returns (address);

  function updateSplit(
    address split,
    address[] calldata accounts,
    uint32[] calldata percentAllocations,
    uint32 distributorFee
  ) external;

  function transferControl(address split, address newController) external;

  function cancelControlTransfer(address split) external;

  function acceptControl(address split) external;

  function makeSplitImmutable(address split) external;

  function distributeETH(
    address split,
    address[] calldata accounts,
    uint32[] calldata percentAllocations,
    uint32 distributorFee,
    address distributorAddress
  ) external;

  function updateAndDistributeETH(
    address split,
    address[] calldata accounts,
    uint32[] calldata percentAllocations,
    uint32 distributorFee,
    address distributorAddress
  ) external;

  function distributeERC20(
    address split,
    ERC20 token,
    address[] calldata accounts,
    uint32[] calldata percentAllocations,
    uint32 distributorFee,
    address distributorAddress
  ) external;

  function updateAndDistributeERC20(
    address split,
    ERC20 token,
    address[] calldata accounts,
    uint32[] calldata percentAllocations,
    uint32 distributorFee,
    address distributorAddress
  ) external;

  function withdraw(
    address account,
    uint256 withdrawETH,
    ERC20[] calldata tokens
  ) external;

  /**
   * EVENTS
   */

  /** @notice emitted after each successful split creation
   *  @param split Address of the created split
   */
  event CreateSplit(address indexed split);

  /** @notice emitted after each successful split update
   *  @param split Address of the updated split
   */
  event UpdateSplit(address indexed split);

  /** @notice emitted after each initiated split control transfer
   *  @param split Address of the split control transfer was initiated for
   *  @param newPotentialController Address of the split's new potential controller
   */
  event InitiateControlTransfer(
    address indexed split,
    address indexed newPotentialController
  );

  /** @notice emitted after each canceled split control transfer
   *  @param split Address of the split control transfer was canceled for
   */
  event CancelControlTransfer(address indexed split);

  /** @notice emitted after each successful split control transfer
   *  @param split Address of the split control was transferred for
   *  @param previousController Address of the split's previous controller
   *  @param newController Address of the split's new controller
   */
  event ControlTransfer(
    address indexed split,
    address indexed previousController,
    address indexed newController
  );

  /** @notice emitted after each successful ETH balance split
   *  @param split Address of the split that distributed its balance
   *  @param amount Amount of ETH distributed
   *  @param distributorAddress Address to credit distributor fee to
   */
  event DistributeETH(
    address indexed split,
    uint256 amount,
    address indexed distributorAddress
  );

  /** @notice emitted after each successful ERC20 balance split
   *  @param split Address of the split that distributed its balance
   *  @param token Address of ERC20 distributed
   *  @param amount Amount of ERC20 distributed
   *  @param distributorAddress Address to credit distributor fee to
   */
  event DistributeERC20(
    address indexed split,
    ERC20 indexed token,
    uint256 amount,
    address indexed distributorAddress
  );

  /** @notice emitted after each successful withdrawal
   *  @param account Address that funds were withdrawn to
   *  @param ethAmount Amount of ETH withdrawn
   *  @param tokens Addresses of ERC20s withdrawn
   *  @param tokenAmounts Amounts of corresponding ERC20s withdrawn
   */
  event Withdrawal(
    address indexed account,
    uint256 ethAmount,
    ERC20[] tokens,
    uint256[] tokenAmounts
  );
}

File 3 of 4 : ERC20.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Modern and gas efficient ERC20 + EIP-2612 implementation.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC20.sol)
/// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)
/// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it.
abstract contract ERC20 {
    /*///////////////////////////////////////////////////////////////
                                  EVENTS
    //////////////////////////////////////////////////////////////*/

    event Transfer(address indexed from, address indexed to, uint256 amount);

    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /*///////////////////////////////////////////////////////////////
                             METADATA STORAGE
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    uint8 public immutable decimals;

    /*///////////////////////////////////////////////////////////////
                              ERC20 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 public totalSupply;

    mapping(address => uint256) public balanceOf;

    mapping(address => mapping(address => uint256)) public allowance;

    /*///////////////////////////////////////////////////////////////
                             EIP-2612 STORAGE
    //////////////////////////////////////////////////////////////*/

    bytes32 public constant PERMIT_TYPEHASH =
        keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");

    uint256 internal immutable INITIAL_CHAIN_ID;

    bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;

    mapping(address => uint256) public nonces;

    /*///////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(
        string memory _name,
        string memory _symbol,
        uint8 _decimals
    ) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;

        INITIAL_CHAIN_ID = block.chainid;
        INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();
    }

    /*///////////////////////////////////////////////////////////////
                              ERC20 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 amount) public virtual returns (bool) {
        allowance[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);

        return true;
    }

    function transfer(address to, uint256 amount) public virtual returns (bool) {
        balanceOf[msg.sender] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(msg.sender, to, amount);

        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.

        if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount;

        balanceOf[from] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(from, to, amount);

        return true;
    }

    /*///////////////////////////////////////////////////////////////
                              EIP-2612 LOGIC
    //////////////////////////////////////////////////////////////*/

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public virtual {
        require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");

        // Unchecked because the only math done is incrementing
        // the owner's nonce which cannot realistically overflow.
        unchecked {
            bytes32 digest = keccak256(
                abi.encodePacked(
                    "\x19\x01",
                    DOMAIN_SEPARATOR(),
                    keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))
                )
            );

            address recoveredAddress = ecrecover(digest, v, r, s);

            require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER");

            allowance[recoveredAddress][spender] = value;
        }

        emit Approval(owner, spender, value);
    }

    function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
        return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator();
    }

    function computeDomainSeparator() internal view virtual returns (bytes32) {
        return
            keccak256(
                abi.encode(
                    keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                    keccak256(bytes(name)),
                    keccak256("1"),
                    block.chainid,
                    address(this)
                )
            );
    }

    /*///////////////////////////////////////////////////////////////
                       INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(address to, uint256 amount) internal virtual {
        totalSupply += amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(address(0), to, amount);
    }

    function _burn(address from, uint256 amount) internal virtual {
        balanceOf[from] -= amount;

        // Cannot underflow because a user's balance
        // will never be larger than the total supply.
        unchecked {
            totalSupply -= amount;
        }

        emit Transfer(from, address(0), amount);
    }
}

File 4 of 4 : SafeTransferLib.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

import {ERC20} from "../tokens/ERC20.sol";

/// @notice Safe ETH and ERC20 transfer library that gracefully handles missing return values.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/utils/SafeTransferLib.sol)
/// @author Modified from Gnosis (https://github.com/gnosis/gp-v2-contracts/blob/main/src/contracts/libraries/GPv2SafeERC20.sol)
/// @dev Use with caution! Some functions in this library knowingly create dirty bits at the destination of the free memory pointer.
library SafeTransferLib {
    /*///////////////////////////////////////////////////////////////
                            ETH OPERATIONS
    //////////////////////////////////////////////////////////////*/

    function safeTransferETH(address to, uint256 amount) internal {
        bool callStatus;

        assembly {
            // Transfer the ETH and store if it succeeded or not.
            callStatus := call(gas(), to, amount, 0, 0, 0, 0)
        }

        require(callStatus, "ETH_TRANSFER_FAILED");
    }

    /*///////////////////////////////////////////////////////////////
                           ERC20 OPERATIONS
    //////////////////////////////////////////////////////////////*/

    function safeTransferFrom(
        ERC20 token,
        address from,
        address to,
        uint256 amount
    ) internal {
        bool callStatus;

        assembly {
            // Get a pointer to some free memory.
            let freeMemoryPointer := mload(0x40)

            // Write the abi-encoded calldata to memory piece by piece:
            mstore(freeMemoryPointer, 0x23b872dd00000000000000000000000000000000000000000000000000000000) // Begin with the function selector.
            mstore(add(freeMemoryPointer, 4), and(from, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "from" argument.
            mstore(add(freeMemoryPointer, 36), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "to" argument.
            mstore(add(freeMemoryPointer, 68), amount) // Finally append the "amount" argument. No mask as it's a full 32 byte value.

            // Call the token and store if it succeeded or not.
            // We use 100 because the calldata length is 4 + 32 * 3.
            callStatus := call(gas(), token, 0, freeMemoryPointer, 100, 0, 0)
        }

        require(didLastOptionalReturnCallSucceed(callStatus), "TRANSFER_FROM_FAILED");
    }

    function safeTransfer(
        ERC20 token,
        address to,
        uint256 amount
    ) internal {
        bool callStatus;

        assembly {
            // Get a pointer to some free memory.
            let freeMemoryPointer := mload(0x40)

            // Write the abi-encoded calldata to memory piece by piece:
            mstore(freeMemoryPointer, 0xa9059cbb00000000000000000000000000000000000000000000000000000000) // Begin with the function selector.
            mstore(add(freeMemoryPointer, 4), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "to" argument.
            mstore(add(freeMemoryPointer, 36), amount) // Finally append the "amount" argument. No mask as it's a full 32 byte value.

            // Call the token and store if it succeeded or not.
            // We use 68 because the calldata length is 4 + 32 * 2.
            callStatus := call(gas(), token, 0, freeMemoryPointer, 68, 0, 0)
        }

        require(didLastOptionalReturnCallSucceed(callStatus), "TRANSFER_FAILED");
    }

    function safeApprove(
        ERC20 token,
        address to,
        uint256 amount
    ) internal {
        bool callStatus;

        assembly {
            // Get a pointer to some free memory.
            let freeMemoryPointer := mload(0x40)

            // Write the abi-encoded calldata to memory piece by piece:
            mstore(freeMemoryPointer, 0x095ea7b300000000000000000000000000000000000000000000000000000000) // Begin with the function selector.
            mstore(add(freeMemoryPointer, 4), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "to" argument.
            mstore(add(freeMemoryPointer, 36), amount) // Finally append the "amount" argument. No mask as it's a full 32 byte value.

            // Call the token and store if it succeeded or not.
            // We use 68 because the calldata length is 4 + 32 * 2.
            callStatus := call(gas(), token, 0, freeMemoryPointer, 68, 0, 0)
        }

        require(didLastOptionalReturnCallSucceed(callStatus), "APPROVE_FAILED");
    }

    /*///////////////////////////////////////////////////////////////
                         INTERNAL HELPER LOGIC
    //////////////////////////////////////////////////////////////*/

    function didLastOptionalReturnCallSucceed(bool callStatus) private pure returns (bool success) {
        assembly {
            // Get how many bytes the call returned.
            let returnDataSize := returndatasize()

            // If the call reverted:
            if iszero(callStatus) {
                // Copy the revert message into memory.
                returndatacopy(0, 0, returnDataSize)

                // Revert with the same message.
                revert(0, returnDataSize)
            }

            switch returnDataSize
            case 32 {
                // Copy the return data into memory.
                returndatacopy(0, 0, returnDataSize)

                // Set success to whether it returned true.
                success := iszero(iszero(mload(0)))
            }
            case 0 {
                // There was no return data.
                success := 1
            }
            default {
                // It returned some malformed input.
                success := 0
            }
        }
    }
}

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

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"split","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ReceiveETH","type":"event"},{"inputs":[{"internalType":"contract ERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendERC20ToMain","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendETHToMain","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"splitMain","outputs":[{"internalType":"contract ISplitMain","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

 Latest 25 blocks (From a total of 50 blocks with 1.72 Ether produced)

Block Transaction Difficulty Gas Used Reward
200193972024-06-04 15:37:1124 days ago1717515431610.00 TH4,350,832 (14.50%)
0.01401044905015604 ETH
199742212024-05-29 8:07:1131 days ago1716970031340.00 TH18,110,417 (60.37%)
0.229786637082919261 ETH
198864542024-05-17 1:35:4743 days ago17159097471120.00 TH9,412,077 (31.37%)
0.046740180875103635 ETH
198155032024-05-07 3:26:2353 days ago1715052383340.00 TH1,696,567 (5.66%)
0.005737629532990898 ETH
197973172024-05-04 14:23:3555 days ago1714832615350.00 TH1,785,072 (5.95%)
0.003718963063134045 ETH
197662882024-04-30 6:18:3560 days ago1714457915250.00 TH1,211,007 (4.04%)
0.010016278197779947 ETH
197278042024-04-24 21:06:3565 days ago17139927951600.00 TH13,876,740 (46.26%)
0.037629002257674288 ETH
197247972024-04-24 10:59:3565 days ago17139563751750.00 TH17,581,255 (58.60%)
0.088005413825069511 ETH
196727592024-04-17 4:18:4773 days ago1713327527600.00 TH2,555,595 (8.52%)
0.005580061682990488 ETH
196658532024-04-16 5:06:3574 days ago1713243995890.00 TH4,059,118 (13.53%)
0.008951920744942948 ETH
196652242024-04-16 2:59:2374 days ago1713236363330.00 TH1,928,771 (6.43%)
0.003410129988673031 ETH
196620092024-04-15 16:09:3574 days ago1713197375630.00 TH2,822,314 (9.41%)
0.007921779590608313 ETH
196614432024-04-15 14:16:1174 days ago1713190571780.00 TH4,723,555 (15.75%)
0.018250837608949539 ETH
196606872024-04-15 11:43:4774 days ago1713181427550.00 TH2,953,327 (9.84%)
0.008732533061735762 ETH
196556472024-04-14 18:45:5975 days ago1713120359420.00 TH2,726,790 (9.09%)
0.008793453468335309 ETH
196493902024-04-13 21:43:1176 days ago17130445911690.00 TH9,374,579 (31.25%)
0.068772960916298789 ETH
196457832024-04-13 9:32:4777 days ago1713000767370.00 TH1,684,752 (5.62%)
0.004407042633638631 ETH
196414162024-04-12 18:50:2377 days ago1712947823630.00 TH4,419,935 (14.73%)
0.059547948602499831 ETH
196377292024-04-12 6:26:5978 days ago1712903219310.00 TH1,430,618 (4.77%)
0.003855225628965093 ETH
196331092024-04-11 14:55:5978 days ago1712847359450.00 TH1,556,665 (5.19%)
0.005525757860552497 ETH
196325832024-04-11 13:09:3578 days ago1712840975620.00 TH2,852,015 (9.51%)
0.008175874977026752 ETH
196313482024-04-11 9:00:1179 days ago17128260111740.00 TH7,684,278 (25.61%)
0.029103613115571134 ETH
196265492024-04-10 16:54:2379 days ago1712768063610.00 TH5,220,074 (17.40%)
0.013060850765399943 ETH
196242092024-04-10 9:02:3580 days ago1712739755580.00 TH3,034,262 (10.11%)
0.00816385080984708 ETH
196212142024-04-09 22:59:1180 days ago1712703551830.00 TH4,414,468 (14.71%)
0.012850411661164235 ETH
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  ]
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.