APE Price: $1.14 (+1.31%)

Contract

0x498f7E9b35C4EC91Ba90737647D411C4ADe31e0d

Overview

APE Balance

Apechain LogoApechain LogoApechain Logo0 APE

APE Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x6080604046033012024-11-18 19:15:3210 hrs ago1731957332IN
 Create: GNSMulticall
0 APE0.00604925.42069

Parent Transaction Hash Block From To
View All Internal Transactions

Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GNSMulticall

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 800 runs

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

import "../../interfaces/IMulticall.sol";
import "../../interfaces/IGeneralErrors.sol";

/**
 * @dev Facet #12: Multicall
 */
contract GNSMulticall is IMulticall {
    /// @inheritdoc IMulticall
    /// @dev NEVER make this function `payable`! delegatecall forwards msg.value to all calls regardless of it being spent or not
    function multicall(bytes[] calldata data) external returns (bytes[] memory results) {
        if (data.length > 20) {
            revert IGeneralErrors.AboveMax();
        }

        results = new bytes[](data.length);

        for (uint256 i; i < data.length; ++i) {
            (bool success, bytes memory result) = address(this).delegatecall(data[i]);

            if (!success) {
                assembly {
                    returndatacopy(0x00, 0x00, returndatasize())
                    revert(0x00, returndatasize())
                }
            }

            results[i] = result;
        }
    }
}

File 2 of 3 : IGeneralErrors.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.23;

/**
 * @dev Interface for errors potentially used in all libraries (general names)
 */
interface IGeneralErrors {
    error InitError();
    error InvalidAddresses();
    error InvalidAddress();
    error InvalidInputLength();
    error InvalidCollateralIndex();
    error WrongParams();
    error WrongLength();
    error WrongOrder();
    error WrongIndex();
    error BlockOrder();
    error Overflow();
    error ZeroAddress();
    error ZeroValue();
    error AlreadyExists();
    error DoesntExist();
    error Paused();
    error BelowMin();
    error AboveMax();
    error NotAuthorized();
    error WrongTradeType();
    error WrongOrderType();
    error InsufficientBalance();
    error UnsupportedChain();
}

File 3 of 3 : IMulticall.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.23;

interface IMulticall {
    /**
     * @dev Call multiple functions in a single call.
     * @param data The data for the calls.
     * @return results The results of the calls.
     */
    function multicall(bytes[] calldata data) external returns (bytes[] memory results);
}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"name":"AboveMax","type":"error"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50610357806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063ac9650d814610030575b600080fd5b61004361003e366004610190565b610059565b6040516100509190610205565b60405180910390f35b6060601482111561007d57604051630ad1e31b60e01b815260040160405180910390fd5b8167ffffffffffffffff81111561009657610096610297565b6040519080825280602002602001820160405280156100c957816020015b60608152602001906001900390816100b45790505b50905060005b8281101561018957600080308686858181106100ed576100ed6102ad565b90506020028101906100ff91906102c3565b60405161010d929190610311565b600060405180830381855af49150503d8060008114610148576040519150601f19603f3d011682016040523d82523d6000602084013e61014d565b606091505b509150915081610161573d6000803e3d6000fd5b80848481518110610174576101746102ad565b602090810291909101015250506001016100cf565b5092915050565b600080602083850312156101a357600080fd5b823567ffffffffffffffff808211156101bb57600080fd5b818501915085601f8301126101cf57600080fd5b8135818111156101de57600080fd5b8660208260051b85010111156101f357600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b87010192508387016000805b8381101561028957888603603f1901855282518051808852835b81811015610262578281018a01518982018b01528901610247565b508781018901849052601f01601f191690960187019550938601939186019160010161022d565b509398975050505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126102da57600080fd5b83018035915067ffffffffffffffff8211156102f557600080fd5b60200191503681900382131561030a57600080fd5b9250929050565b818382376000910190815291905056fea2646970667358221220984da77919bbed1eef5b6e868dae43bfb24de4a047bf64b2b8ddd860ce838ba764736f6c63430008170033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063ac9650d814610030575b600080fd5b61004361003e366004610190565b610059565b6040516100509190610205565b60405180910390f35b6060601482111561007d57604051630ad1e31b60e01b815260040160405180910390fd5b8167ffffffffffffffff81111561009657610096610297565b6040519080825280602002602001820160405280156100c957816020015b60608152602001906001900390816100b45790505b50905060005b8281101561018957600080308686858181106100ed576100ed6102ad565b90506020028101906100ff91906102c3565b60405161010d929190610311565b600060405180830381855af49150503d8060008114610148576040519150601f19603f3d011682016040523d82523d6000602084013e61014d565b606091505b509150915081610161573d6000803e3d6000fd5b80848481518110610174576101746102ad565b602090810291909101015250506001016100cf565b5092915050565b600080602083850312156101a357600080fd5b823567ffffffffffffffff808211156101bb57600080fd5b818501915085601f8301126101cf57600080fd5b8135818111156101de57600080fd5b8660208260051b85010111156101f357600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b87010192508387016000805b8381101561028957888603603f1901855282518051808852835b81811015610262578281018a01518982018b01528901610247565b508781018901849052601f01601f191690960187019550938601939186019160010161022d565b509398975050505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126102da57600080fd5b83018035915067ffffffffffffffff8211156102f557600080fd5b60200191503681900382131561030a57600080fd5b9250929050565b818382376000910190815291905056fea2646970667358221220984da77919bbed1eef5b6e868dae43bfb24de4a047bf64b2b8ddd860ce838ba764736f6c63430008170033

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
[ 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.