ETH Price: $2,870.99 (-2.71%)

Contract

0x7e94C944f9839fE1622eCAd61a36027Bce06DB69
 

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Transfer3017412024-03-02 21:01:37694 days ago1709413297IN
0x7e94C944...Bce06DB69
1 wei0.000081721.50003368

Latest 5 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
28287182024-04-30 8:54:11635 days ago1714467251
0x7e94C944...Bce06DB69
1.64 ETH
4643712024-03-06 15:22:37690 days ago1709738557
0x7e94C944...Bce06DB69
0.7 ETH
3314762024-03-03 13:32:47693 days ago1709472767
0x7e94C944...Bce06DB69
1.56 ETH
3227712024-03-03 8:42:37693 days ago1709455357
0x7e94C944...Bce06DB69
2.5 ETH
3017392024-03-02 21:01:33694 days ago1709413293  Contract Creation0 ETH

Cross-Chain Transactions
Loading...
Loading

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

Contract Name:
MerkleFunderDepository

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

import "./interfaces/IMerkleFunderDepository.sol";

/// @title Contract that is deployed through MerkleFunder and keeps the funds
/// that can be transferred within the limitations specified by the respective
/// Merkle tree
/// @notice As noted above, this contract should only be deployed by a
/// MerkleFunder contract. Since the owner address and the Merkle tree root are
/// immutable, the only way to update these is to deploy a new
/// MerkleFunderDepository with the desired parameters and have the owner of
/// the previous MerkleFunderDepository withdraw the funds to the new one.
contract MerkleFunderDepository is IMerkleFunderDepository {
    /// @notice Address of the MerkleFunder that deployed this contract
    address public immutable override merkleFunder;

    /// @notice Owner address
    address public immutable override owner;

    /// @notice Merkle tree root
    bytes32 public immutable override root;

    /// @dev Argument validation is done in MerkleFunder to reduce the
    /// bytecode of this contract
    /// @param _owner Owner address
    /// @param _root Merkle tree root
    constructor(address _owner, bytes32 _root) {
        merkleFunder = msg.sender;
        owner = _owner;
        root = _root;
    }

    /// @dev Funds transferred to this contract can be transferred by anyone
    /// within the limitations of the respective Merkle tree
    receive() external payable {}

    /// @notice Called by the MerkleFunder that has deployed this contract to
    /// transfer its funds within the limitations of the respective Merkle tree
    /// or to allow the owner to withdraw funds
    /// @dev Argument validation is done in MerkleFunder to reduce the bytecode
    /// of this contract.
    /// This function is omitted in the interface because it is intended to
    /// only be called by MerkleFunder.
    /// @param recipient Recipient address
    /// @param amount Amount
    function transfer(address recipient, uint256 amount) external {
        if (msg.sender != merkleFunder) revert SenderNotMerkleFunder();
        // MerkleFunder checks for balance so MerkleFunderDepository does not
        // need to
        (bool success, ) = recipient.call{value: amount}("");
        if (!success) revert TransferUnsuccessful();
        // MerkleFunder emits the event so MerkleFunderDepository does not need
        // to
    }
}

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

interface IMerkleFunderDepository {
    error SenderNotMerkleFunder();

    error TransferUnsuccessful();

    function merkleFunder() external view returns (address);

    function owner() external view returns (address);

    function root() external view returns (bytes32);
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"bytes32","name":"_root","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"SenderNotMerkleFunder","type":"error"},{"inputs":[],"name":"TransferUnsuccessful","type":"error"},{"inputs":[],"name":"merkleFunder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"root","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

0x60e060405234801561001057600080fd5b5060405161038638038061038683398101604081905261002f9161004a565b336080526001600160a01b039190911660a05260c052610084565b6000806040838503121561005d57600080fd5b82516001600160a01b038116811461007457600080fd5b6020939093015192949293505050565b60805160a05160c0516102ce6100b8600039600061011501526000606101526000818160bf015261015d01526102ce6000f3fe6080604052600436106100435760003560e01c80638da5cb5b1461004f578063a8c54545146100ad578063a9059cbb146100e1578063ebf0c7171461010357600080fd5b3661004a57005b600080fd5b34801561005b57600080fd5b506100837f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100b957600080fd5b506100837f000000000000000000000000000000000000000000000000000000000000000081565b3480156100ed57600080fd5b506101016100fc366004610253565b610145565b005b34801561010f57600080fd5b506101377f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100a4565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101b4576040517f7d5820a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461020e576040519150601f19603f3d011682016040523d82523d6000602084013e610213565b606091505b505090508061024e576040517f28dc5c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000806040838503121561026657600080fd5b823573ffffffffffffffffffffffffffffffffffffffff8116811461028a57600080fd5b94602093909301359350505056fea264697066735822122064ed49ef8d4b4d3f9725a7395b4ebf0f32e867e2dcc558528a1c1a023050fb1864736f6c6343000811003300000000000000000000000081bc85f329cdb28936fbb239f734ae495121f9a67dd55c55fef2ff799bfedbe34f46fd3678bd2c57bc2d84d59a625cf6a253ece4

Deployed Bytecode

0x6080604052600436106100435760003560e01c80638da5cb5b1461004f578063a8c54545146100ad578063a9059cbb146100e1578063ebf0c7171461010357600080fd5b3661004a57005b600080fd5b34801561005b57600080fd5b506100837f00000000000000000000000081bc85f329cdb28936fbb239f734ae495121f9a681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100b957600080fd5b506100837f00000000000000000000000004d2b3ddcdb2790571ca01f4768e3cc98fcb0d2b81565b3480156100ed57600080fd5b506101016100fc366004610253565b610145565b005b34801561010f57600080fd5b506101377f7dd55c55fef2ff799bfedbe34f46fd3678bd2c57bc2d84d59a625cf6a253ece481565b6040519081526020016100a4565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000004d2b3ddcdb2790571ca01f4768e3cc98fcb0d2b16146101b4576040517f7d5820a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461020e576040519150601f19603f3d011682016040523d82523d6000602084013e610213565b606091505b505090508061024e576040517f28dc5c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000806040838503121561026657600080fd5b823573ffffffffffffffffffffffffffffffffffffffff8116811461028a57600080fd5b94602093909301359350505056fea264697066735822122064ed49ef8d4b4d3f9725a7395b4ebf0f32e867e2dcc558528a1c1a023050fb1864736f6c63430008110033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
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.