Forkchoice Ethereum Mainnet

Address Contract Partially Verified

Address 0x74de5d4FCbf63E00296fd95d33236B9794016631
Balance 0 ETH
Nonce 1
Code Size 1163 bytes
Indexed Transactions 0 (1 on-chain, 0% indexed)
External Etherscan · Sourcify

Contract Bytecode

1163 bytes
0x6080604052600436106100295760003560e01c80634776e4731461002b578063e354733514610069575b005b34801561003757600080fd5b506100406100f6565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100296004803603604081101561007f57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691908101906040810160208201356401000000008111156100b757600080fd5b8201836020820111156100c957600080fd5b803590602001918460018302840111640100000000831117156100eb57600080fd5b50909250905061011a565b7f000000000000000000000000881d40237659c251811cec9c364ef91dc08d300c81565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000881d40237659c251811cec9c364ef91dc08d300c16146101be57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f464f5242494444454e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831661024057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f414441505445525f4e4f545f50524f5649444544000000000000000000000000604482015290519081900360640190fd5b6102b58383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601b81527f414441505445525f44454c454741544543414c4c5f4641494c45440000000000602082015291506102bb9050565b50505050565b6060600060608573ffffffffffffffffffffffffffffffffffffffff16856040518082805190602001908083835b6020831061032657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016102e9565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610386576040519150601f19603f3d011682016040523d82523d6000602084013e61038b565b606091505b5091509150811561039f57915061044e9050565b8051156103af5780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156104135781810151838201526020016103fb565b50505050905090810190601f1680156104405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b939250505056fea2646970667358221220fcb8f4f30203340a84fb3281a8f6f11931d3bba7bfc927a40ff42c9624d5f0ba64736f6c634300060c0033

Verified Source Code Partial Match

Compiler: v0.6.12+commit.27d51765 EVM: istanbul Optimization: Yes (1000000 runs)
Spender.3372a096.sol 54 lines
// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

import "./Constants.84ef19f8.sol";

contract Spender {
    address public immutable metaswap;

    constructor() public {
        metaswap = msg.sender;
    }

    /// @dev Receives ether from swaps
    fallback() external payable {}

    function swap(address adapter, bytes calldata data) external payable {
        require(msg.sender == metaswap, "FORBIDDEN");
        require(adapter != address(0), "ADAPTER_NOT_PROVIDED");
        _delegate(adapter, data, "ADAPTER_DELEGATECALL_FAILED");
    }

    /**
     * @dev Performs a delegatecall and bubbles up the errors, adapted from
     * https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol
     * @param target Address of the contract to delegatecall
     * @param data Data passed in the delegatecall
     * @param errorMessage Fallback revert reason
     */
    function _delegate(
        address target,
        bytes memory data,
        string memory errorMessage
    ) private returns (bytes memory) {
        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
Constants.84ef19f8.sol 7 lines
// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

library Constants {
    address internal constant ETH = 0x0000000000000000000000000000000000000000;
}

Read Contract

metaswap 0x4776e473 → address

Write Contract 1 functions

These functions modify contract state and require a wallet transaction to execute.

swap 0xe3547335
address adapter
bytes data

Recent Transactions

This address has 1 on-chain transactions, but only 0% of the chain is indexed. Transactions will appear as indexing progresses. View on Etherscan →