More Info
Private Name Tags
ContractCreator
Latest 5 from a total of 5 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)
// 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); } }
// 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 ); }
// 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); } }
// 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 } } } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
[{"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"}]
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 6.96% | $1.41 | 248.4309 | $350.29 | |
ETH | 3.92% | $0.000015 | 12,807,242.7812 | $196.98 | |
ETH | 3.23% | $2.35 | 69.1068 | $162.4 | |
ETH | 2.86% | $1.29 | 111.7027 | $144.1 | |
ETH | 2.85% | $0.872804 | 164.4392 | $143.52 | |
ETH | 2.68% | $1 | 134.7614 | $134.76 | |
ETH | 2.54% | $103,799 | 0.00122994 | $127.67 | |
ETH | 2.25% | $0.602484 | 187.513 | $112.97 | |
ETH | 2.09% | $0.000002 | 60,520,487.4292 | $105.13 | |
ETH | 2.09% | $1,252.42 | 0.0838 | $104.9 | |
ETH | 1.86% | $0.343224 | 271.9379 | $93.34 | |
ETH | 1.80% | <$0.000001 | 519,941,760.066 | $90.6 | |
ETH | 1.77% | $2.67 | 33.3768 | $89.12 | |
ETH | 1.64% | $113.83 | 0.7269 | $82.74 | |
ETH | 1.63% | $0.999465 | 82.236 | $82.19 | |
ETH | 1.59% | $0.187491 | 426.0209 | $79.88 | |
ETH | 1.55% | $0.163548 | 476.1279 | $77.87 | |
ETH | 1.52% | $0.998228 | 76.3752 | $76.24 | |
ETH | 1.50% | $7.09 | 10.6441 | $75.47 | |
ETH | 1.47% | $3.63 | 20.3449 | $73.85 | |
ETH | 1.47% | $13 | 5.6767 | $73.8 | |
ETH | 1.44% | $1.45 | 49.975 | $72.43 | |
ETH | 1.42% | $0.278019 | 256.6252 | $71.35 | |
ETH | 1.36% | $0.999959 | 68.4421 | $68.44 | |
ETH | 1.36% | $0.00048 | 142,220.2926 | $68.3 | |
ETH | 1.35% | $1.23 | 55.0675 | $67.73 | |
ETH | 1.33% | $0.033202 | 2,021.4436 | $67.12 | |
ETH | 1.28% | $0.292012 | 220.8712 | $64.5 | |
ETH | 1.24% | $1.65 | 37.9304 | $62.59 | |
ETH | 1.20% | $0.445645 | 135.2692 | $60.28 | |
ETH | 1.19% | $4.02 | 14.9081 | $59.93 | |
ETH | 1.11% | $34.3 | 1.6215 | $55.62 | |
ETH | 1.10% | $0.047404 | 1,165.543 | $55.25 | |
ETH | 1.09% | $103,975 | 0.0005295 | $55.05 | |
ETH | 1.09% | $1 | 54.6838 | $54.68 | |
ETH | 1.05% | $9.26 | 5.7244 | $53.01 | |
ETH | 1.04% | $349.95 | 0.1499 | $52.47 | |
ETH | 1.00% | $0.691208 | 73.0582 | $50.5 | |
ETH | 0.98% | $0.480822 | 102.8026 | $49.43 | |
ETH | 0.96% | $403.86 | 0.119 | $48.08 | |
ETH | 0.94% | $0.00647 | 7,285.5121 | $47.13 | |
ETH | 0.93% | $0.00002 | 2,308,330.0635 | $46.88 | |
ETH | 0.93% | $0.001353 | 34,612.8624 | $46.82 | |
ETH | 0.91% | $0.445132 | 103.2936 | $45.98 | |
ETH | 0.91% | $5.3 | 8.6454 | $45.82 | |
ETH | 0.91% | $0.151975 | 301 | $45.74 | |
ETH | 0.90% | $0.66428 | 68.0706 | $45.22 | |
ETH | 0.89% | $7,611.97 | 0.00588914 | $44.83 | |
ETH | 0.87% | $1.03 | 42.5468 | $43.82 | |
ETH | 0.84% | $41.74 | 1.018 | $42.49 | |
ETH | 0.80% | $0.00059 | 68,248.3673 | $40.29 | |
ETH | 0.79% | $2.61 | 15.2992 | $39.93 | |
ETH | 0.75% | $2.16 | 17.592 | $37.94 | |
ETH | 0.75% | $0.565054 | 66.4684 | $37.56 | |
ETH | 0.75% | $0.439454 | 85.3409 | $37.5 | |
ETH | 0.71% | $0.000144 | 249,730.5124 | $35.94 | |
ETH | 0.71% | $0.120151 | 295.9789 | $35.56 | |
ETH | 0.68% | $0.376405 | 91.2792 | $34.36 | |
ETH | 0.66% | $3,251.82 | 0.0103 | $33.35 | |
ETH | 0.65% | $3.4 | 9.6889 | $32.94 | |
ETH | 0.63% | $1 | 31.857 | $31.86 | |
ETH | 0.61% | $0.217439 | 141.7927 | $30.83 | |
ETH | 0.61% | $1.36 | 22.4297 | $30.5 | |
ETH | 0.59% | $20.74 | 1.4298 | $29.65 | |
ETH | 0.52% | $0.202357 | 129.3612 | $26.18 | |
ETH | 0.50% | $0.209069 | 120.4211 | $25.18 | |
ETH | 0.50% | $0.992844 | 25.1 | $24.92 | |
ETH | 0.49% | $1.9 | 13.0904 | $24.87 | |
ETH | 0.46% | <$0.000001 | 408,072,996.004 | $23.31 | |
ETH | 0.46% | $1.3 | 17.7742 | $23.11 | |
ETH | 0.44% | $1.24 | 17.6927 | $21.91 | |
ETH | 0.41% | $0.008629 | 2,400.4689 | $20.71 | |
ETH | 0.40% | $0.063321 | 318.3775 | $20.16 | |
ETH | 0.37% | $0.374849 | 50.1016 | $18.78 | |
ETH | 0.36% | $0.011154 | 1,636.0702 | $18.25 | |
ETH | 0.34% | $0.052327 | 328.9472 | $17.21 | |
ETH | 0.32% | $3,247.99 | 0.00492348 | $15.99 | |
ETH | 0.30% | $1.12 | 13.3054 | $14.89 | |
ETH | 0.28% | $76.61 | 0.1842 | $14.11 | |
ETH | 0.27% | $0.19627 | 67.9499 | $13.34 | |
ETH | 0.22% | $25.46 | 0.4383 | $11.16 | |
ETH | 0.18% | $2.43 | 3.7612 | $9.14 | |
ETH | 0.18% | $0.998918 | 8.8596 | $8.85 | |
ETH | 0.17% | $0.021012 | 415.8516 | $8.74 | |
ETH | 0.17% | $2,748.62 | 0.003106 | $8.54 | |
ETH | 0.15% | $0.663761 | 11.5731 | $7.68 | |
ETH | 0.15% | $0.289306 | 26.46 | $7.66 | |
ETH | 0.15% | $1.19 | 6.3337 | $7.54 | |
ETH | 0.14% | $0.999638 | 7 | $7 | |
ETH | 0.12% | $0.33043 | 18.8625 | $6.23 | |
ETH | 0.12% | $5.07 | 1.1866 | $6.02 | |
ETH | 0.12% | $0.796379 | 7.4849 | $5.96 | |
ETH | 0.11% | $0.000002 | 2,930,200 | $5.77 | |
ETH | 0.07% | $0.99967 | 3.5383 | $3.54 | |
ETH | 0.07% | $4.77 | 0.7 | $3.34 | |
ETH | 0.06% | $0.998852 | 3.27 | $3.27 | |
ETH | 0.06% | $0.996635 | 2.8769 | $2.87 | |
ETH | 0.06% | $0.300775 | 9.3293 | $2.81 | |
ETH | 0.05% | $0.005275 | 490 | $2.58 | |
ETH | 0.05% | $0.000068 | 36,181.9909 | $2.47 | |
ETH | 0.04% | $0.116951 | 19.3422 | $2.26 | |
ETH | 0.04% | $0.232228 | 8.9454 | $2.08 | |
ETH | Ether (ETH) | 0.04% | $3,247.99 | 0.000601 | $1.95 |
ETH | 0.04% | $0.99564 | 1.8212 | $1.81 | |
ETH | 0.03% | $3,540.16 | 0.00049044 | $1.74 | |
ETH | 0.03% | $3,864.77 | 0.00042284 | $1.63 | |
ETH | 0.03% | $0.102963 | 14.5 | $1.49 | |
ETH | 0.03% | $0.08726 | 16.5184 | $1.44 | |
ETH | 0.03% | $3.93 | 0.3431 | $1.35 | |
ETH | 0.02% | $0.983068 | 1.0111 | $0.9939 | |
ETH | 0.01% | $0.031563 | 19.6858 | $0.6213 | |
ETH | <0.01% | $0.199394 | 1.3812 | $0.2753 | |
ETH | <0.01% | $0.981165 | 0.2332 | $0.2288 | |
ETH | <0.01% | $0.030496 | 6.8503 | $0.2089 | |
ETH | <0.01% | <$0.000001 | 2,798,235.5731 | $0.1504 | |
ETH | <0.01% | $20.05 | 0.005 | $0.1002 | |
BSC | 0.20% | $0.000008 | 1,191,080.5864 | $9.99 | |
BASE | 0.03% | $0.010056 | 130 | $1.31 | |
BASE | <0.01% | $3,247.86 | 0.000012 | $0.038974 | |
LINEA | <0.01% | $3,244.62 | 0.0000005 | $0.001622 | |
POL | <0.01% | $0.444961 | 0.0022 | $0.000979 |
Loading...
Loading
[ 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.