ETH Price: $3,105.14 (-6.01%)
Gas: 7 Gwei

Contract

0x9Ca31754ccf5515763C13FC42422223f03ddF29E
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Pay ERC20Benefic...194370232024-03-15 1:16:11111 days ago1710465371IN
0x9Ca31754...f03ddF29E
0 ETH0.0019471638.03569694
Pay ERC20Benefic...192371532024-02-16 1:20:11139 days ago1708046411IN
0x9Ca31754...f03ddF29E
0 ETH0.0013252425.88716448
Pay ETH Benefici...190824232024-01-25 8:25:35161 days ago1706171135IN
0x9Ca31754...f03ddF29E
0 ETH0.0004634112.52991216
Pay ERC20Benefic...190383142024-01-19 3:46:59167 days ago1705636019IN
0x9Ca31754...f03ddF29E
0 ETH0.0015337629.96052091
Pay ERC20Benefic...188387242023-12-22 3:31:11195 days ago1703215871IN
0x9Ca31754...f03ddF29E
0 ETH0.0014454928.2361902
Pay ERC20Benefic...186419572023-11-24 13:47:11223 days ago1700833631IN
0x9Ca31754...f03ddF29E
0 ETH0.0016689732.60164211
Pay ERC20Benefic...184602842023-10-30 3:25:35248 days ago1698636335IN
0x9Ca31754...f03ddF29E
0 ETH0.000562510.9879352
Pay ERC20Benefic...182530072023-10-01 3:29:35277 days ago1696130975IN
0x9Ca31754...f03ddF29E
0 ETH0.000307135.99955259
Pay ETH Benefici...180862402023-09-07 18:09:11301 days ago1694110151IN
0x9Ca31754...f03ddF29E
0 ETH0.0017426747.11842313
Pay ERC20Benefic...180842972023-09-07 11:37:47301 days ago1694086667IN
0x9Ca31754...f03ddF29E
0 ETH0.000472113.84758504
Pay ERC20Benefic...180353662023-08-31 15:10:47308 days ago1693494647IN
0x9Ca31754...f03ddF29E
0 ETH0.0010430.50498933
Pay ERC20Benefic...178934972023-08-11 18:40:59328 days ago1691779259IN
0x9Ca31754...f03ddF29E
0 ETH0.0007614122.8701691
Pay ETH Benefici...178823822023-08-10 5:23:11329 days ago1691644991IN
0x9Ca31754...f03ddF29E
0 ETH0.0004498114.85277987
Pay ETH Benefici...178819782023-08-10 4:02:23329 days ago1691640143IN
0x9Ca31754...f03ddF29E
0 ETH0.0006040916.33352295
Pay ERC20Benefic...178373192023-08-03 22:02:59336 days ago1691100179IN
0x9Ca31754...f03ddF29E
0 ETH0.0007784822.83414303
Pay ERC20Benefic...176347682023-07-06 12:20:23364 days ago1688646023IN
0x9Ca31754...f03ddF29E
0 ETH0.0008002223.47187361
Pay ERC20Benefic...174359522023-06-08 13:42:23392 days ago1686231743IN
0x9Ca31754...f03ddF29E
0 ETH0.0009479327.80452408
Pay ETH Benefici...173194512023-05-23 4:03:59408 days ago1684814639IN
0x9Ca31754...f03ddF29E
0 ETH0.0016032143.34774954
Pay ERC20Benefic...172468232023-05-12 22:08:35419 days ago1683929315IN
0x9Ca31754...f03ddF29E
0 ETH0.001920556.33143979
Pay ERC20Benefic...170403652023-04-13 19:07:59448 days ago1681412879IN
0x9Ca31754...f03ddF29E
0 ETH0.0019135756.12806148
Pay ETH Benefici...169588992023-04-02 3:58:47459 days ago1680407927IN
0x9Ca31754...f03ddF29E
0 ETH0.0006641317.95675414
Pay ERC20Benefic...168442532023-03-17 1:25:11475 days ago1679016311IN
0x9Ca31754...f03ddF29E
0 ETH0.0005805417.02826593
Pay ERC20Benefic...166526612023-02-18 2:49:23502 days ago1676688563IN
0x9Ca31754...f03ddF29E
0 ETH0.0012405124.23205568
Pay ETH Benefici...165304282023-02-01 0:36:11520 days ago1675211771IN
0x9Ca31754...f03ddF29E
0 ETH0.0007406820.02655201
Pay ERC20Benefic...164300362023-01-18 0:14:23534 days ago1674000863IN
0x9Ca31754...f03ddF29E
0 ETH0.0016953625.67292555
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
190824232024-01-25 8:25:35161 days ago1706171135
0x9Ca31754...f03ddF29E
86.416657 ETH
188679162023-12-26 5:55:35191 days ago1703570135
0x9Ca31754...f03ddF29E
0.50425049 ETH
188679152023-12-26 5:55:23191 days ago1703570123
0x9Ca31754...f03ddF29E
0.46085894 ETH
188679142023-12-26 5:55:11191 days ago1703570111
0x9Ca31754...f03ddF29E
0.46501936 ETH
188679132023-12-26 5:54:59191 days ago1703570099
0x9Ca31754...f03ddF29E
0.03989915 ETH
188679122023-12-26 5:54:47191 days ago1703570087
0x9Ca31754...f03ddF29E
0.48378568 ETH
188679112023-12-26 5:54:35191 days ago1703570075
0x9Ca31754...f03ddF29E
0.5584688 ETH
188679102023-12-26 5:54:23191 days ago1703570063
0x9Ca31754...f03ddF29E
0.42025252 ETH
188679092023-12-26 5:54:11191 days ago1703570051
0x9Ca31754...f03ddF29E
0.50814822 ETH
188679082023-12-26 5:53:59191 days ago1703570039
0x9Ca31754...f03ddF29E
0.55901156 ETH
188679072023-12-26 5:53:47191 days ago1703570027
0x9Ca31754...f03ddF29E
0.46370383 ETH
188679062023-12-26 5:53:35191 days ago1703570015
0x9Ca31754...f03ddF29E
0.44100123 ETH
188679052023-12-26 5:53:23191 days ago1703570003
0x9Ca31754...f03ddF29E
0.46173691 ETH
188679042023-12-26 5:53:11191 days ago1703569991
0x9Ca31754...f03ddF29E
0.52101331 ETH
188679032023-12-26 5:52:59191 days ago1703569979
0x9Ca31754...f03ddF29E
0.46615521 ETH
188679022023-12-26 5:52:47191 days ago1703569967
0x9Ca31754...f03ddF29E
0.49966339 ETH
188679002023-12-26 5:52:23191 days ago1703569943
0x9Ca31754...f03ddF29E
0.50243521 ETH
188678992023-12-26 5:52:11191 days ago1703569931
0x9Ca31754...f03ddF29E
0.52929593 ETH
188678982023-12-26 5:51:59191 days ago1703569919
0x9Ca31754...f03ddF29E
0.47965606 ETH
188678972023-12-26 5:51:47191 days ago1703569907
0x9Ca31754...f03ddF29E
0.43950945 ETH
188678962023-12-26 5:51:35191 days ago1703569895
0x9Ca31754...f03ddF29E
0.46292306 ETH
188678952023-12-26 5:51:23191 days ago1703569883
0x9Ca31754...f03ddF29E
0.45878691 ETH
188678942023-12-26 5:51:11191 days ago1703569871
0x9Ca31754...f03ddF29E
0.45985935 ETH
188678932023-12-26 5:50:59191 days ago1703569859
0x9Ca31754...f03ddF29E
0.55128173 ETH
188678922023-12-26 5:50:47191 days ago1703569847
0x9Ca31754...f03ddF29E
0.48639352 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TokenTypeSplitter

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU AGPLv3 license

Contract Source Code (Solidity Multiple files format)

File 1 of 3: TokenTypeSplitter.sol
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.8.13;

import {ERC20} from './ERC20.sol';
import {SafeTransferLib} from "./SafeTransferLib.sol";

contract TokenTypeSplitter {
    /// -------------------------------------------------------------------
    /// libraries
    /// -------------------------------------------------------------------

    using SafeTransferLib for address;
    using SafeTransferLib for ERC20;

    /// -------------------------------------------------------------------
    /// storage
    /// -------------------------------------------------------------------

    /// Address to receive funds eth funds
    address public immutable ethBeneficiary;
    /// Address to receive funds eth funds
    address public immutable erc20Beneficiary;

    /// -------------------------------------------------------------------
    /// constructor
    /// -------------------------------------------------------------------

    constructor(address _ethBeneficiary, address _erc20Beneficiary) {
        ethBeneficiary = _ethBeneficiary;
        erc20Beneficiary = _erc20Beneficiary;
    }

    /// -------------------------------------------------------------------
    /// functions
    /// -------------------------------------------------------------------

    /// -------------------------------------------------------------------
    /// functions - public & external
    /// -------------------------------------------------------------------

    /// @notice receive ETH
    receive() external payable {}

    /// pay eth in contract to `ethBeneficiary`
    function payETHBeneficiary() external {
        ethBeneficiary.safeTransferETH(address(this).balance);
    }

    /// pay erc20 `token` in contract to `ethBeneficiary`
    function payERC20Beneficiary(ERC20 token) external {
        token.safeTransfer(erc20Beneficiary, token.balanceOf(address(this)));
    }
}

File 2 of 3: 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 3 of 3: SafeTransferLib.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

import {ERC20} from "./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
            }
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_ethBeneficiary","type":"address"},{"internalType":"address","name":"_erc20Beneficiary","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"erc20Beneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethBeneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ERC20","name":"token","type":"address"}],"name":"payERC20Beneficiary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"payETHBeneficiary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405234801561001057600080fd5b5060405161074538038061074583398181016040528101906100329190610104565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250505050610144565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100d1826100a6565b9050919050565b6100e1816100c6565b81146100ec57600080fd5b50565b6000815190506100fe816100d8565b92915050565b6000806040838503121561011b5761011a6100a1565b5b6000610129858286016100ef565b925050602061013a858286016100ef565b9150509250929050565b60805160a0516105cf6101766000396000818160ea01526101d20152600081816101ae01526101fa01526105cf6000f3fe6080604052600436106100435760003560e01c8063289af1461461004f5780634cfe72e61461007857806372e5ab02146100a3578063b8b248f9146100ce5761004a565b3661004a57005b600080fd5b34801561005b57600080fd5b50610076600480360381019061007191906103f6565b6100e5565b005b34801561008457600080fd5b5061008d6101ac565b60405161009a9190610432565b60405180910390f35b3480156100af57600080fd5b506100b86101d0565b6040516100c59190610432565b60405180910390f35b3480156100da57600080fd5b506100e36101f4565b005b6101a97f00000000000000000000000000000000000000000000000000000000000000008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016101429190610432565b602060405180830381865afa15801561015f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101839190610483565b8373ffffffffffffffffffffffffffffffffffffffff1661023f9092919063ffffffff16565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b61023d477f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166102e590919063ffffffff16565b565b60006040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201528260248201526000806044836000895af19150506102a081610338565b6102df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d69061050d565b60405180910390fd5b50505050565b600080600080600085875af1905080610333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161032a90610579565b60405180910390fd5b505050565b60003d8261034a57806000803e806000fd5b80602081146103645760008114610375576000925061037a565b816000803e6000511515925061037a565b600192505b5050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006103b182610386565b9050919050565b60006103c3826103a6565b9050919050565b6103d3816103b8565b81146103de57600080fd5b50565b6000813590506103f0816103ca565b92915050565b60006020828403121561040c5761040b610381565b5b600061041a848285016103e1565b91505092915050565b61042c816103a6565b82525050565b60006020820190506104476000830184610423565b92915050565b6000819050919050565b6104608161044d565b811461046b57600080fd5b50565b60008151905061047d81610457565b92915050565b60006020828403121561049957610498610381565b5b60006104a78482850161046e565b91505092915050565b600082825260208201905092915050565b7f5452414e534645525f4641494c45440000000000000000000000000000000000600082015250565b60006104f7600f836104b0565b9150610502826104c1565b602082019050919050565b60006020820190508181036000830152610526816104ea565b9050919050565b7f4554485f5452414e534645525f4641494c454400000000000000000000000000600082015250565b60006105636013836104b0565b915061056e8261052d565b602082019050919050565b6000602082019050818103600083015261059281610556565b905091905056fea2646970667358221220d6f0e66272d746faf666fbaaac7b5aae88a53d607cd2b7b35f9508eb6454d17f64736f6c634300080d0033000000000000000000000000cb915b7e689bcecd5de2c1d863a77fb187f713a70000000000000000000000002e4a502664076da55d3b11e6ef7b9a531d4660cc

Deployed Bytecode

0x6080604052600436106100435760003560e01c8063289af1461461004f5780634cfe72e61461007857806372e5ab02146100a3578063b8b248f9146100ce5761004a565b3661004a57005b600080fd5b34801561005b57600080fd5b50610076600480360381019061007191906103f6565b6100e5565b005b34801561008457600080fd5b5061008d6101ac565b60405161009a9190610432565b60405180910390f35b3480156100af57600080fd5b506100b86101d0565b6040516100c59190610432565b60405180910390f35b3480156100da57600080fd5b506100e36101f4565b005b6101a97f0000000000000000000000002e4a502664076da55d3b11e6ef7b9a531d4660cc8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016101429190610432565b602060405180830381865afa15801561015f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101839190610483565b8373ffffffffffffffffffffffffffffffffffffffff1661023f9092919063ffffffff16565b50565b7f000000000000000000000000cb915b7e689bcecd5de2c1d863a77fb187f713a781565b7f0000000000000000000000002e4a502664076da55d3b11e6ef7b9a531d4660cc81565b61023d477f000000000000000000000000cb915b7e689bcecd5de2c1d863a77fb187f713a773ffffffffffffffffffffffffffffffffffffffff166102e590919063ffffffff16565b565b60006040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201528260248201526000806044836000895af19150506102a081610338565b6102df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d69061050d565b60405180910390fd5b50505050565b600080600080600085875af1905080610333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161032a90610579565b60405180910390fd5b505050565b60003d8261034a57806000803e806000fd5b80602081146103645760008114610375576000925061037a565b816000803e6000511515925061037a565b600192505b5050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006103b182610386565b9050919050565b60006103c3826103a6565b9050919050565b6103d3816103b8565b81146103de57600080fd5b50565b6000813590506103f0816103ca565b92915050565b60006020828403121561040c5761040b610381565b5b600061041a848285016103e1565b91505092915050565b61042c816103a6565b82525050565b60006020820190506104476000830184610423565b92915050565b6000819050919050565b6104608161044d565b811461046b57600080fd5b50565b60008151905061047d81610457565b92915050565b60006020828403121561049957610498610381565b5b60006104a78482850161046e565b91505092915050565b600082825260208201905092915050565b7f5452414e534645525f4641494c45440000000000000000000000000000000000600082015250565b60006104f7600f836104b0565b9150610502826104c1565b602082019050919050565b60006020820190508181036000830152610526816104ea565b9050919050565b7f4554485f5452414e534645525f4641494c454400000000000000000000000000600082015250565b60006105636013836104b0565b915061056e8261052d565b602082019050919050565b6000602082019050818103600083015261059281610556565b905091905056fea2646970667358221220d6f0e66272d746faf666fbaaac7b5aae88a53d607cd2b7b35f9508eb6454d17f64736f6c634300080d0033

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

000000000000000000000000cb915b7e689bcecd5de2c1d863a77fb187f713a70000000000000000000000002e4a502664076da55d3b11e6ef7b9a531d4660cc

-----Decoded View---------------
Arg [0] : _ethBeneficiary (address): 0xcB915b7E689bcEcD5De2C1d863A77fb187f713a7
Arg [1] : _erc20Beneficiary (address): 0x2E4A502664076DA55d3B11E6Ef7B9A531d4660cC

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000cb915b7e689bcecd5de2c1d863a77fb187f713a7
Arg [1] : 0000000000000000000000002e4a502664076da55d3b11e6ef7b9a531d4660cc


Deployed Bytecode Sourcemap

161:1750:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1773:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;654:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;742:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1601:108;;;;;;;;;;;;;:::i;:::-;;1773:136;1834:68;1853:16;1871:5;:15;;;1895:4;1871:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1834:5;:18;;;;:68;;;;;:::i;:::-;1773:136;:::o;654:39::-;;;:::o;742:41::-;;;:::o;1601:108::-;1649:53;1680:21;1649:14;:30;;;;:53;;;;:::i;:::-;1601:108::o;2495:1043:1:-;2607:15;2737:4;2731:11;2854:66;2835:17;2828:93;3013:42;3009:2;3005:51;3001:1;2982:17;2978:25;2971:86;3143:6;3138:2;3119:17;3115:26;3108:42;3437:1;3434;3430:2;3411:17;3408:1;3401:5;3394;3389:50;3375:64;;2642:807;3467:44;3500:10;3467:32;:44::i;:::-;3459:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;2597:941;2495:1043;;;:::o;776:305::-;848:15;1010:1;1007;1004;1001;993:6;989:2;982:5;977:35;963:49;;1040:10;1032:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;838:243;776:305;;:::o;4778:1041::-;4859:12;4981:16;5058:10;5048:238;;5165:14;5162:1;5159;5144:36;5257:14;5254:1;5247:25;5048:238;5307:14;5339:2;5334:242;;;;5594:1;5589:96;;;;5788:1;5777:12;;5300:503;;5334:242;5434:14;5431:1;5428;5413:36;5558:1;5552:8;5545:16;5538:24;5527:35;;5334:242;;5589:96;5670:1;5659:12;;5300:503;;4892:921;4778:1041;;;:::o;88:117:3:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:109::-;618:7;647:24;665:5;647:24;:::i;:::-;636:35;;568:109;;;:::o;683:148::-;769:37;800:5;769:37;:::i;:::-;762:5;759:48;749:76;;821:1;818;811:12;749:76;683:148;:::o;837:165::-;896:5;934:6;921:20;912:29;;950:46;990:5;950:46;:::i;:::-;837:165;;;;:::o;1008:355::-;1080:6;1129:2;1117:9;1108:7;1104:23;1100:32;1097:119;;;1135:79;;:::i;:::-;1097:119;1255:1;1280:66;1338:7;1329:6;1318:9;1314:22;1280:66;:::i;:::-;1270:76;;1226:130;1008:355;;;;:::o;1369:118::-;1456:24;1474:5;1456:24;:::i;:::-;1451:3;1444:37;1369:118;;:::o;1493:222::-;1586:4;1624:2;1613:9;1609:18;1601:26;;1637:71;1705:1;1694:9;1690:17;1681:6;1637:71;:::i;:::-;1493:222;;;;:::o;1721:77::-;1758:7;1787:5;1776:16;;1721:77;;;:::o;1804:122::-;1877:24;1895:5;1877:24;:::i;:::-;1870:5;1867:35;1857:63;;1916:1;1913;1906:12;1857:63;1804:122;:::o;1932:143::-;1989:5;2020:6;2014:13;2005:22;;2036:33;2063:5;2036:33;:::i;:::-;1932:143;;;;:::o;2081:351::-;2151:6;2200:2;2188:9;2179:7;2175:23;2171:32;2168:119;;;2206:79;;:::i;:::-;2168:119;2326:1;2351:64;2407:7;2398:6;2387:9;2383:22;2351:64;:::i;:::-;2341:74;;2297:128;2081:351;;;;:::o;2438:169::-;2522:11;2556:6;2551:3;2544:19;2596:4;2591:3;2587:14;2572:29;;2438:169;;;;:::o;2613:165::-;2753:17;2749:1;2741:6;2737:14;2730:41;2613:165;:::o;2784:366::-;2926:3;2947:67;3011:2;3006:3;2947:67;:::i;:::-;2940:74;;3023:93;3112:3;3023:93;:::i;:::-;3141:2;3136:3;3132:12;3125:19;;2784:366;;;:::o;3156:419::-;3322:4;3360:2;3349:9;3345:18;3337:26;;3409:9;3403:4;3399:20;3395:1;3384:9;3380:17;3373:47;3437:131;3563:4;3437:131;:::i;:::-;3429:139;;3156:419;;;:::o;3581:169::-;3721:21;3717:1;3709:6;3705:14;3698:45;3581:169;:::o;3756:366::-;3898:3;3919:67;3983:2;3978:3;3919:67;:::i;:::-;3912:74;;3995:93;4084:3;3995:93;:::i;:::-;4113:2;4108:3;4104:12;4097:19;;3756:366;;;:::o;4128:419::-;4294:4;4332:2;4321:9;4317:18;4309:26;;4381:9;4375:4;4371:20;4367:1;4356:9;4352:17;4345:47;4409:131;4535:4;4409:131;:::i;:::-;4401:139;;4128:419;;;:::o

Swarm Source

ipfs://d6f0e66272d746faf666fbaaac7b5aae88a53d607cd2b7b35f9508eb6454d17f

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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