ETH Price: $2,939.98 (-0.61%)

Contract

0x3FFc2315A992b01dc4B3f79C8EEa1921091Ee24f

Overview

ETH Balance

0 ETH

ETH Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Ice Cream Swap380750062026-01-19 11:49:255 days ago1768823365IN
0x3FFc2315...1091Ee24f
0.004 ETH0.000000030.00010029
Ice Cream Swap379810312026-01-18 9:43:107 days ago1768729390IN
0x3FFc2315...1091Ee24f
0 ETH00.00000025
Ice Cream Swap379810172026-01-18 9:42:567 days ago1768729376IN
0x3FFc2315...1091Ee24f
0 ETH00.00000025
Ice Cream Swap379810032026-01-18 9:42:427 days ago1768729362IN
0x3FFc2315...1091Ee24f
0 ETH00.00000025
Ice Cream Swap379456772026-01-17 23:53:567 days ago1768694036IN
0x3FFc2315...1091Ee24f
0 ETH00.00000025
Ice Cream Swap379456562026-01-17 23:53:357 days ago1768694015IN
0x3FFc2315...1091Ee24f
0 ETH00.00000025
Ice Cream Swap378794042026-01-17 5:29:238 days ago1768627763IN
0x3FFc2315...1091Ee24f
0 ETH00.00000025
Ice Cream Swap378732252026-01-17 3:46:248 days ago1768621584IN
0x3FFc2315...1091Ee24f
0 ETH00.00000035
Ice Cream Swap378662642026-01-17 1:50:238 days ago1768614623IN
0x3FFc2315...1091Ee24f
0 ETH00.00000039
Ice Cream Swap376432452026-01-14 11:53:2410 days ago1768391604IN
0x3FFc2315...1091Ee24f
0 ETH00.00000046
Ice Cream Swap370612952026-01-07 18:14:1417 days ago1767809654IN
0x3FFc2315...1091Ee24f
0 ETH0.000000540.0012
Ice Cream Swap370605172026-01-07 18:01:1617 days ago1767808876IN
0x3FFc2315...1091Ee24f
0 ETH0.000000550.0012
Ice Cream Swap370604982026-01-07 18:00:5717 days ago1767808857IN
0x3FFc2315...1091Ee24f
0 ETH0.000000540.0012
Ice Cream Swap370594422026-01-07 17:43:2117 days ago1767807801IN
0x3FFc2315...1091Ee24f
0 ETH0.000000530.0012
Ice Cream Swap370594052026-01-07 17:42:4417 days ago1767807764IN
0x3FFc2315...1091Ee24f
0 ETH0.000000690.0012
Ice Cream Swap370593392026-01-07 17:41:3817 days ago1767807698IN
0x3FFc2315...1091Ee24f
0 ETH0.000000490.0012
Ice Cream Swap370590832026-01-07 17:37:2217 days ago1767807442IN
0x3FFc2315...1091Ee24f
0 ETH0.000000530.0012
Ice Cream Swap370586102026-01-07 17:29:2917 days ago1767806969IN
0x3FFc2315...1091Ee24f
0 ETH0.000000550.0012
Ice Cream Swap370570182026-01-07 17:02:5717 days ago1767805377IN
0x3FFc2315...1091Ee24f
0 ETH0.000000530.0012
Ice Cream Swap370569352026-01-07 17:01:3417 days ago1767805294IN
0x3FFc2315...1091Ee24f
0 ETH0.000000520.0012
Ice Cream Swap370553622026-01-07 16:35:2117 days ago1767803721IN
0x3FFc2315...1091Ee24f
0 ETH0.000000530.0012
Ice Cream Swap370549582026-01-07 16:28:3717 days ago1767803317IN
0x3FFc2315...1091Ee24f
0 ETH0.000000590.0012
Ice Cream Swap370548062026-01-07 16:26:0517 days ago1767803165IN
0x3FFc2315...1091Ee24f
0 ETH0.000000540.0012
Ice Cream Swap370525332026-01-07 15:48:1217 days ago1767800892IN
0x3FFc2315...1091Ee24f
0 ETH0.000000530.0012
Ice Cream Swap370525052026-01-07 15:47:4417 days ago1767800864IN
0x3FFc2315...1091Ee24f
0 ETH0.000000540.0012
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
385891472026-01-25 10:38:267 mins ago1769337506
0x3FFc2315...1091Ee24f
0.000003 ETH
385891472026-01-25 10:38:267 mins ago1769337506
0x3FFc2315...1091Ee24f
0.000003 ETH
385866242026-01-25 9:56:2349 mins ago1769334983
0x3FFc2315...1091Ee24f
0.00140681 ETH
385866242026-01-25 9:56:2349 mins ago1769334983
0x3FFc2315...1091Ee24f
0.00140681 ETH
385863522026-01-25 9:51:5154 mins ago1769334711
0x3FFc2315...1091Ee24f
0.000001 ETH
385863522026-01-25 9:51:5154 mins ago1769334711
0x3FFc2315...1091Ee24f
0.000001 ETH
385862552026-01-25 9:50:1455 mins ago1769334614
0x3FFc2315...1091Ee24f
0.000001 ETH
385862552026-01-25 9:50:1455 mins ago1769334614
0x3FFc2315...1091Ee24f
0.000001 ETH
385801852026-01-25 8:09:042 hrs ago1769328544
0x3FFc2315...1091Ee24f
0.00133338 ETH
385801852026-01-25 8:09:042 hrs ago1769328544
0x3FFc2315...1091Ee24f
0.00133338 ETH
385782302026-01-25 7:36:293 hrs ago1769326589
0x3FFc2315...1091Ee24f
0.000001 ETH
385782302026-01-25 7:36:293 hrs ago1769326589
0x3FFc2315...1091Ee24f
0.000001 ETH
385778002026-01-25 7:29:193 hrs ago1769326159
0x3FFc2315...1091Ee24f
0.0287 ETH
385778002026-01-25 7:29:193 hrs ago1769326159
0x3FFc2315...1091Ee24f
0.0287 ETH
385770302026-01-25 7:16:293 hrs ago1769325389
0x3FFc2315...1091Ee24f
0.000001 ETH
385770302026-01-25 7:16:293 hrs ago1769325389
0x3FFc2315...1091Ee24f
0.000001 ETH
385754922026-01-25 6:50:513 hrs ago1769323851
0x3FFc2315...1091Ee24f
0.0000049 ETH
385754922026-01-25 6:50:513 hrs ago1769323851
0x3FFc2315...1091Ee24f
0.0000049 ETH
385754592026-01-25 6:50:183 hrs ago1769323818
0x3FFc2315...1091Ee24f
0.0000048 ETH
385754592026-01-25 6:50:183 hrs ago1769323818
0x3FFc2315...1091Ee24f
0.0000048 ETH
385754342026-01-25 6:49:533 hrs ago1769323793
0x3FFc2315...1091Ee24f
0.0000045 ETH
385754342026-01-25 6:49:533 hrs ago1769323793
0x3FFc2315...1091Ee24f
0.0000045 ETH
385742272026-01-25 6:29:464 hrs ago1769322586
0x3FFc2315...1091Ee24f
0.011 ETH
385742272026-01-25 6:29:464 hrs ago1769322586
0x3FFc2315...1091Ee24f
0.011 ETH
385719382026-01-25 5:51:374 hrs ago1769320297
0x3FFc2315...1091Ee24f
0.00036 ETH
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AggregatorGuard

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
paris EvmVersion
File 1 of 3 : AggregatorGuard.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";

import "./interfaces/IAggregatorExecutor.sol";

contract AggregatorGuard {

    address constant ETH = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;

    event AggregatedTrade(
        uint16 indexed id,
        address indexed user,
        address tokenIn,
        address tokenOut,
        address executor,
        uint256 amountIn,
        uint256 amountOut,
        uint256 minAmountOut
    );

    receive() external payable { }
    fallback() external payable { } // optional, add for remix to allow low level interactions

    function IceCreamSwap() external payable returns (uint256) {
        uint16 id;
        IAggregatorExecutor executor;
        uint128 amountIn;
        uint128 minAmountOut;

        address firstTokenReceiver;
        address recipient;
        IERC20 tokenIn;
        IERC20 tokenOut;

        assembly {
            id := shr(240, calldataload(4))
            executor := shr(96, calldataload(6))
            amountIn := shr(128, calldataload(26))
            minAmountOut := shr(128, calldataload(42))
            firstTokenReceiver := shr(96, calldataload(59))
            recipient := shr(96, calldataload(79))
            tokenIn := shr(96, calldataload(99))
            tokenOut := shr(96, calldataload(119))
        }

        if (address(tokenIn) != ETH) {
            // no need to check this token transfer, as a non sucessfull transfer would just cause a failed swap
            if (amountIn != 0) {
                tokenIn.transferFrom(msg.sender, firstTokenReceiver, amountIn);
            }
        } else {
            require(amountIn == msg.value, "incorrect value");
            require(firstTokenReceiver == address(executor), "Native receiver must bee executor");
        }

        uint256 balanceBefore = (address(tokenOut) == ETH) ? recipient.balance : tokenOut.balanceOf(recipient);

        executor.executeSwap{value: msg.value}(msg.data[26:]);

        uint256 amountOut;
        if (address(tokenOut) != ETH) {
            amountOut = tokenOut.balanceOf(recipient) - balanceBefore;
        } else {
            amountOut = recipient.balance - balanceBefore;
        }
        require(amountOut >= minAmountOut, "Insufficient output");

        emit AggregatedTrade(
            id,
            recipient,
            address(tokenIn),
            address(tokenOut),
            address(executor),
            amountIn,
            amountOut,
            minAmountOut
        );

        return amountOut;
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.20;

/**
 * @dev Interface of the ERC-20 standard as defined in the ERC.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the value of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the value of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves a `value` amount of tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 value) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the
     * caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 value) external returns (bool);

    /**
     * @dev Moves a `value` amount of tokens from `from` to `to` using the
     * allowance mechanism. `value` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 value) external returns (bool);
}

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

interface IAggregatorExecutor {
    function executeSwap(bytes calldata swapData) external payable;
}

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

Contract Security Audit

Contract ABI

API
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint16","name":"id","type":"uint16"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"tokenIn","type":"address"},{"indexed":false,"internalType":"address","name":"tokenOut","type":"address"},{"indexed":false,"internalType":"address","name":"executor","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"AggregatedTrade","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"IceCreamSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052348015600f57600080fd5b5061073c8061001f6000396000f3fe60806040526004361061001f5760003560e01c80633f0bde251461002857005b3661002657005b005b610030610042565b60405190815260200160405180910390f35b600060043560f01c600635606090811c90601a35608090811c91602a3590911c90603b35811c90604f35811c90606335811c90607735901c73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8214610164576fffffffffffffffffffffffffffffffff86161561015f576040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff85811660248301526fffffffffffffffffffffffffffffffff881660448301528316906323b872dd906064016020604051808303816000875af1158015610139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015d919061060d565b505b61029f565b34866fffffffffffffffffffffffffffffffff16146101e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e636f72726563742076616c7565000000000000000000000000000000000060448201526064015b60405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461029f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4e6174697665207265636569766572206d75737420626565206578656375746f60448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016101db565b600073ffffffffffffffffffffffffffffffffffffffff821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14610367576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301528316906370a0823190602401602060405180830381865afa15801561033e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103629190610636565b610380565b8373ffffffffffffffffffffffffffffffffffffffff16315b905073ffffffffffffffffffffffffffffffffffffffff881663985f61a1346103ad36601a81600061064f565b6040518463ffffffff1660e01b81526004016103ca929190610679565b6000604051808303818588803b1580156103e357600080fd5b505af11580156103f7573d6000803e3d6000fd5b506000935050505073ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146104d4576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301528391908516906370a0823190602401602060405180830381865afa15801561049f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c39190610636565b6104cd91906106c6565b90506104f8565b6104f58273ffffffffffffffffffffffffffffffffffffffff8716316106c6565b90505b866fffffffffffffffffffffffffffffffff16811015610574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496e73756666696369656e74206f75747075740000000000000000000000000060448201526064016101db565b6040805173ffffffffffffffffffffffffffffffffffffffff868116825285811660208301528b8116828401526fffffffffffffffffffffffffffffffff8b81166060840152608083018590528a1660a083015291519187169161ffff8d16917f97d8fe5395a5423bef64e2004851e9b3f60f7848835afa581b4a0a8e84bc662d919081900360c00190a39a9950505050505050505050565b60006020828403121561061f57600080fd5b8151801515811461062f57600080fd5b9392505050565b60006020828403121561064857600080fd5b5051919050565b6000808585111561065f57600080fd5b8386111561066c57600080fd5b5050820193919092039150565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b81810381811115610700577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea2646970667358221220a1386a0c862a65e8643b01e497fb068b838ffb9753954316c523d7771ded15b364736f6c634300081a0033

Deployed Bytecode

0x60806040526004361061001f5760003560e01c80633f0bde251461002857005b3661002657005b005b610030610042565b60405190815260200160405180910390f35b600060043560f01c600635606090811c90601a35608090811c91602a3590911c90603b35811c90604f35811c90606335811c90607735901c73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8214610164576fffffffffffffffffffffffffffffffff86161561015f576040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff85811660248301526fffffffffffffffffffffffffffffffff881660448301528316906323b872dd906064016020604051808303816000875af1158015610139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015d919061060d565b505b61029f565b34866fffffffffffffffffffffffffffffffff16146101e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e636f72726563742076616c7565000000000000000000000000000000000060448201526064015b60405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461029f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4e6174697665207265636569766572206d75737420626565206578656375746f60448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016101db565b600073ffffffffffffffffffffffffffffffffffffffff821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14610367576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301528316906370a0823190602401602060405180830381865afa15801561033e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103629190610636565b610380565b8373ffffffffffffffffffffffffffffffffffffffff16315b905073ffffffffffffffffffffffffffffffffffffffff881663985f61a1346103ad36601a81600061064f565b6040518463ffffffff1660e01b81526004016103ca929190610679565b6000604051808303818588803b1580156103e357600080fd5b505af11580156103f7573d6000803e3d6000fd5b506000935050505073ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146104d4576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301528391908516906370a0823190602401602060405180830381865afa15801561049f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c39190610636565b6104cd91906106c6565b90506104f8565b6104f58273ffffffffffffffffffffffffffffffffffffffff8716316106c6565b90505b866fffffffffffffffffffffffffffffffff16811015610574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496e73756666696369656e74206f75747075740000000000000000000000000060448201526064016101db565b6040805173ffffffffffffffffffffffffffffffffffffffff868116825285811660208301528b8116828401526fffffffffffffffffffffffffffffffff8b81166060840152608083018590528a1660a083015291519187169161ffff8d16917f97d8fe5395a5423bef64e2004851e9b3f60f7848835afa581b4a0a8e84bc662d919081900360c00190a39a9950505050505050505050565b60006020828403121561061f57600080fd5b8151801515811461062f57600080fd5b9392505050565b60006020828403121561064857600080fd5b5051919050565b6000808585111561065f57600080fd5b8386111561066c57600080fd5b5050820193919092039150565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b81810381811115610700577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea2646970667358221220a1386a0c862a65e8643b01e497fb068b838ffb9753954316c523d7771ded15b364736f6c634300081a0033

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.