ETH Price: $1,887.30 (-2.28%)
Gas: 0.48 Gwei
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer210297712024-10-23 17:26:11143 days ago1729704371IN
0x70eb1ef5...8ed8F7FC5
0.04529118 ETH0.0003698516.49686147
Transfer210297192024-10-23 17:15:35143 days ago1729703735IN
0x70eb1ef5...8ed8F7FC5
0.06644263 ETH0.000426319.01462934
Transfer210296792024-10-23 17:07:35143 days ago1729703255IN
0x70eb1ef5...8ed8F7FC5
0.04953319 ETH0.0005998626.75570301
Transfer210294932024-10-23 16:29:59143 days ago1729700999IN
0x70eb1ef5...8ed8F7FC5
0.04636797 ETH0.0004638120.68760991
Transfer210289222024-10-23 14:35:35143 days ago1729694135IN
0x70eb1ef5...8ed8F7FC5
0.04470453 ETH0.0007632234.04218114
Transfer210278842024-10-23 11:07:23144 days ago1729681643IN
0x70eb1ef5...8ed8F7FC5
0.04252426 ETH0.000112315.00943818
Transfer210278752024-10-23 11:05:35144 days ago1729681535IN
0x70eb1ef5...8ed8F7FC5
0.03624571 ETH0.000110224.91629915
Transfer210278552024-10-23 11:01:35144 days ago1729681295IN
0x70eb1ef5...8ed8F7FC5
0.01737113 ETH0.00012885.74528221
Transfer210278542024-10-23 11:01:23144 days ago1729681283IN
0x70eb1ef5...8ed8F7FC5
0.02357038 ETH0.000131575.86883768
Transfer210272652024-10-23 9:02:47144 days ago1729674167IN
0x70eb1ef5...8ed8F7FC5
0.14327748 ETH0.000192288.57652378
Transfer210268072024-10-23 7:31:11144 days ago1729668671IN
0x70eb1ef5...8ed8F7FC5
0.0690772 ETH0.000150426.70943081
Transfer210266782024-10-23 7:05:11144 days ago1729667111IN
0x70eb1ef5...8ed8F7FC5
0.05955381 ETH0.000119995.35234555
Transfer210261262024-10-23 5:14:47144 days ago1729660487IN
0x70eb1ef5...8ed8F7FC5
0.04614169 ETH0.000109014.86222991
Transfer210260472024-10-23 4:58:59144 days ago1729659539IN
0x70eb1ef5...8ed8F7FC5
0.03462912 ETH0.000111244.96187492
Transfer210258842024-10-23 4:26:23144 days ago1729657583IN
0x70eb1ef5...8ed8F7FC5
0.05763261 ETH0.000162977.26936075
Transfer210249232024-10-23 1:13:47144 days ago1729646027IN
0x70eb1ef5...8ed8F7FC5
0.04424695 ETH0.000092754.13698729
Transfer210245962024-10-23 0:07:35144 days ago1729642055IN
0x70eb1ef5...8ed8F7FC5
0.06261091 ETH0.000141236.29936883
Transfer210240582024-10-22 22:19:35144 days ago1729635575IN
0x70eb1ef5...8ed8F7FC5
0.01602235 ETH0.000132055.89013148
Transfer210234922024-10-22 20:25:23144 days ago1729628723IN
0x70eb1ef5...8ed8F7FC5
0.56882149 ETH0.000214499.56723036
Transfer210229672024-10-22 18:39:35144 days ago1729622375IN
0x70eb1ef5...8ed8F7FC5
0.05451101 ETH0.000199028.87729119
Transfer210227392024-10-22 17:53:47144 days ago1729619627IN
0x70eb1ef5...8ed8F7FC5
0.10182078 ETH0.0003477815.51230379
Transfer210227392024-10-22 17:53:47144 days ago1729619627IN
0x70eb1ef5...8ed8F7FC5
1 wei0.033369361,488.375
Transfer210220882024-10-22 15:42:59144 days ago1729611779IN
0x70eb1ef5...8ed8F7FC5
0.05279264 ETH0.0002451110.93281518
Transfer210219132024-10-22 15:07:47144 days ago1729609667IN
0x70eb1ef5...8ed8F7FC5
0.03578195 ETH0.0002709912.08735324
Transfer210215622024-10-22 13:57:23144 days ago1729605443IN
0x70eb1ef5...8ed8F7FC5
0.02807947 ETH0.0009745443.46768898
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer215989802025-01-11 4:53:2364 days ago1736571203
0x70eb1ef5...8ed8F7FC5
4.25005956 ETH
Transfer210040942024-10-20 3:26:59147 days ago1729394819
0x70eb1ef5...8ed8F7FC5
0.0835709 ETH
Transfer209958652024-10-18 23:54:35148 days ago1729295675
0x70eb1ef5...8ed8F7FC5
11.38430686 ETH
Transfer209520462024-10-12 20:56:23154 days ago1728766583
0x70eb1ef5...8ed8F7FC5
0.04842866 ETH
Transfer209519222024-10-12 20:31:11154 days ago1728765071
0x70eb1ef5...8ed8F7FC5
10.49530847 ETH
Transfer209065962024-10-06 12:45:59161 days ago1728218759
0x70eb1ef5...8ed8F7FC5
0.001 ETH
Transfer208957282024-10-05 0:24:59162 days ago1728087899
0x70eb1ef5...8ed8F7FC5
4.00926371 ETH
Transfer208827562024-10-03 4:59:59164 days ago1727931599
0x70eb1ef5...8ed8F7FC5
5.93636491 ETH
Transfer208675062024-10-01 1:57:47166 days ago1727747867
0x70eb1ef5...8ed8F7FC5
0.00159435 ETH
Transfer208446582024-09-27 21:29:47169 days ago1727472587
0x70eb1ef5...8ed8F7FC5
14.12492482 ETH
Transfer208176342024-09-24 3:02:35173 days ago1727146955
0x70eb1ef5...8ed8F7FC5
1.28846913 ETH
Transfer207972892024-09-21 6:53:35176 days ago1726901615
0x70eb1ef5...8ed8F7FC5
9.37098374 ETH
Transfer207842552024-09-19 11:10:47178 days ago1726744247
0x70eb1ef5...8ed8F7FC5
0.00020603 ETH
Transfer207842552024-09-19 11:10:47178 days ago1726744247
0x70eb1ef5...8ed8F7FC5
0.002 ETH
Transfer207842552024-09-19 11:10:47178 days ago1726744247
0x70eb1ef5...8ed8F7FC5
0.001 ETH
Transfer207842552024-09-19 11:10:47178 days ago1726744247
0x70eb1ef5...8ed8F7FC5
0.00105136 ETH
Transfer207842552024-09-19 11:10:47178 days ago1726744247
0x70eb1ef5...8ed8F7FC5
0.00002033 ETH
Transfer207587572024-09-15 21:37:59181 days ago1726436279
0x70eb1ef5...8ed8F7FC5
2.88334081 ETH
Transfer207498182024-09-14 15:43:47182 days ago1726328627
0x70eb1ef5...8ed8F7FC5
6.43349294 ETH
Transfer207379572024-09-12 23:58:23184 days ago1726185503
0x70eb1ef5...8ed8F7FC5
3.47631341 ETH
Transfer207179902024-09-10 5:00:11187 days ago1725944411
0x70eb1ef5...8ed8F7FC5
2.7567094 ETH
Transfer206983652024-09-07 11:16:35190 days ago1725707795
0x70eb1ef5...8ed8F7FC5
2.74650022 ETH
Transfer206980752024-09-07 10:18:35190 days ago1725704315
0x70eb1ef5...8ed8F7FC5
1.06013513 ETH
Transfer206882012024-09-06 1:14:23191 days ago1725585263
0x70eb1ef5...8ed8F7FC5
2.1825972 ETH
Transfer206690652024-09-03 9:10:35194 days ago1725354635
0x70eb1ef5...8ed8F7FC5
4.90266588 ETH
View All Internal Transactions
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

API
[{"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 68 blocks with 1.53 Ether produced)

Block Transaction Difficulty Gas Used Reward
210288602024-10-23 14:23:11143 days ago1729693391830.00 TH6,070,666 (20.24%)
0.013536715405021302 ETH
210172692024-10-21 23:33:35145 days ago1729553615890.00 TH5,565,120 (18.55%)
0.007599612879104068 ETH
210169292024-10-21 22:25:35145 days ago1729549535480.00 TH5,095,239 (16.98%)
0.009880299425542407 ETH
210150662024-10-21 16:11:11145 days ago17295270712610.00 TH16,095,292 (53.65%)
0.014751843742267597 ETH
210142832024-10-21 13:34:23145 days ago1729517663870.00 TH6,513,386 (21.71%)
0.006252208146657329 ETH
210095642024-10-20 21:46:23146 days ago17294607831000.00 TH7,274,047 (24.25%)
0.006484752928594701 ETH
210091322024-10-20 20:19:11146 days ago1729455551680.00 TH5,952,683 (19.84%)
0.004187002225482281 ETH
210019402024-10-19 20:15:11147 days ago1729368911880.00 TH6,086,930 (20.29%)
0.005012325676565355 ETH
209994902024-10-19 12:03:11148 days ago17293393911380.00 TH17,074,017 (56.91%)
0.008383315064012158 ETH
209994102024-10-19 11:47:11148 days ago17293384311010.00 TH7,334,779 (24.45%)
0.012484670310024624 ETH
209918252024-10-18 10:23:11149 days ago1729246991590.00 TH3,067,884 (10.23%)
0.004529266747358795 ETH
209908862024-10-18 7:14:23149 days ago17292356631030.00 TH5,423,261 (18.08%)
0.009626699470576409 ETH
209887562024-10-18 0:06:23149 days ago1729209983840.00 TH4,128,110 (13.76%)
0.008685858757336585 ETH
209863312024-10-17 15:58:23149 days ago1729180703820.00 TH5,270,312 (17.57%)
0.006331993853517397 ETH
209801402024-10-16 19:13:35150 days ago1729106015690.00 TH4,754,336 (15.85%)
0.01611398227767071 ETH
209687632024-10-15 5:05:35152 days ago1728968735930.00 TH5,358,392 (17.86%)
0.006905229073493412 ETH
209658082024-10-14 19:11:11152 days ago17289330711130.00 TH6,951,350 (23.17%)
0.013465658929588593 ETH
209570222024-10-13 13:42:59153 days ago1728826979710.00 TH6,632,143 (22.11%)
0.009538892839775012 ETH
209403942024-10-11 5:48:47156 days ago1728625727520.00 TH3,379,669 (11.27%)
0.005158688416282244 ETH
209355232024-10-10 13:31:11156 days ago1728567071910.00 TH6,472,023 (21.57%)
0.011536173888858643 ETH
209214842024-10-08 14:33:35158 days ago17283980151170.00 TH6,036,567 (20.12%)
0.018166747723442072 ETH
209114872024-10-07 5:07:59160 days ago1728277679570.00 TH10,450,290 (34.83%)
0.011557538377670182 ETH
209065962024-10-06 12:45:59161 days ago17282187591910.00 TH16,814,313 (56.05%)
0.045769328999828259 ETH
209010272024-10-05 18:07:59161 days ago1728151679710.00 TH4,652,487 (15.51%)
0.011335934274498297 ETH
208930432024-10-04 15:25:35162 days ago1728055535910.00 TH4,915,899 (16.39%)
0.008070679144185345 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
Loading...
Loading
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.