Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x68b8763b02531f27d6d40081f57729d3179c6883657c8d431b6f83d6f5009d5b | Multicall | (pending) | 20 hrs ago | IN | 0 ETH | (Pending) | |||
0x5b854434374abf79a62f487a1414571f22765292d92e5e268a9591b0222c9515 | Multicall | (pending) | 7 days ago | IN | 0 ETH | (Pending) | |||
Multicall | 21665062 | 1 hr ago | IN | 0 ETH | 0.00320193 | ||||
Multicall | 21659415 | 20 hrs ago | IN | 0 ETH | 0.02082385 | ||||
Multicall | 21650660 | 2 days ago | IN | 0 ETH | 0.00359108 | ||||
Multicall | 21648230 | 2 days ago | IN | 0 ETH | 0.00021002 | ||||
Multicall | 21642629 | 3 days ago | IN | 0 ETH | 0.00096499 | ||||
Multicall | 21639224 | 3 days ago | IN | 0 ETH | 0.00218555 | ||||
Multicall | 21636789 | 4 days ago | IN | 0 ETH | 0.00125978 | ||||
Multicall | 21636591 | 4 days ago | IN | 0 ETH | 0.00080596 | ||||
Multicall | 21636505 | 4 days ago | IN | 0 ETH | 0.00073159 | ||||
Multicall | 21636467 | 4 days ago | IN | 0 ETH | 0.00072711 | ||||
Multicall | 21635611 | 4 days ago | IN | 0 ETH | 0.00050578 | ||||
Multicall | 21635202 | 4 days ago | IN | 0 ETH | 0.0006804 | ||||
Multicall | 21634697 | 4 days ago | IN | 0 ETH | 0.00100337 | ||||
Multicall | 21633989 | 4 days ago | IN | 0 ETH | 0.00066446 | ||||
Multicall | 21633759 | 4 days ago | IN | 0 ETH | 0.00057675 | ||||
Multicall | 21632802 | 4 days ago | IN | 0 ETH | 0.00362012 | ||||
Multicall | 21630497 | 4 days ago | IN | 0 ETH | 0.00289401 | ||||
Multicall | 21630383 | 4 days ago | IN | 0 ETH | 0.00361198 | ||||
Multicall | 21629869 | 4 days ago | IN | 0 ETH | 0.00087711 | ||||
Multicall | 21629579 | 5 days ago | IN | 0 ETH | 0.000567 | ||||
Multicall | 21629350 | 5 days ago | IN | 0 ETH | 0.00037648 | ||||
Multicall | 21628651 | 5 days ago | IN | 0 ETH | 0.0006256 | ||||
Multicall | 21628070 | 5 days ago | IN | 0 ETH | 0.00053265 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
MulticallHelper
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import "@openzeppelin/contracts/utils/Address.sol"; /** * @title Multicall Helper * * @notice Simplified version of the OZ Multicall contract * * @dev Deployed as a standalone helper contract to be used to call multiple contacts in a single batch. * This could be especially useful when combined with the EIP712 meta-transaction * calls on the target contracts. * * @dev Executes the targets via `call` in their own contexts (storages) * * @author OpenZeppelin * @author Lizard Labs Core Contributors */ contract MulticallHelper { /** * @dev Multicall support: a function to batch together multiple calls in a single external call. * @dev Receives and executes a batch of function calls on the target contracts. * * @param targets an array of the target contract addresses to execute the calls on * @param data an array of ABI-encoded function calls * @return results an array of ABI-encoded results of the function calls */ function multicall(address[] calldata targets, bytes[] calldata data) external virtual returns (bytes[] memory results) { // verify the arrays' lengths are the same require(targets.length == data.length, "array lengths mismatch"); // the implementation is based on OZ Multicall contract; // Context-related stuff is dropped as it's not supported by this contract results = new bytes[](data.length); for (uint256 i = 0; i < data.length; i++) { results[i] = Address.functionCall(targets[i], data[i]); } return results; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol) pragma solidity ^0.8.20; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev The ETH balance of the account is not enough to perform the operation. */ error AddressInsufficientBalance(address account); /** * @dev There's no code at `target` (it is not a contract). */ error AddressEmptyCode(address target); /** * @dev A call to an address target failed. The target may have reverted. */ error FailedInnerCall(); /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { if (address(this).balance < amount) { revert AddressInsufficientBalance(address(this)); } (bool success, ) = recipient.call{value: amount}(""); if (!success) { revert FailedInnerCall(); } } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason or custom error, it is bubbled * up by this function (like regular Solidity function calls). However, if * the call reverted with no returned reason, this function reverts with a * {FailedInnerCall} error. * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { if (address(this).balance < value) { revert AddressInsufficientBalance(address(this)); } (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an * unsuccessful call. */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata ) internal view returns (bytes memory) { if (!success) { _revert(returndata); } else { // only check if target is a contract if the call was successful and the return data is empty // otherwise we already know that it was a contract if (returndata.length == 0 && target.code.length == 0) { revert AddressEmptyCode(target); } return returndata; } } /** * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the * revert reason or with a default {FailedInnerCall} error. */ function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) { if (!success) { _revert(returndata); } else { return returndata; } } /** * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}. */ function _revert(bytes memory returndata) private pure { // 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 /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert FailedInnerCall(); } } }
{ "evmVersion": "paris", "libraries": {}, "metadata": { "bytecodeHash": "ipfs", "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 200 }, "remappings": [], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50610565806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806363fb0b9614610030575b600080fd5b61004361003e366004610346565b610059565b60405161005091906103d6565b60405180910390f35b60608382146100a85760405162461bcd60e51b81526020600482015260166024820152750c2e4e4c2f240d8cadccee8d0e640dad2e6dac2e8c6d60531b60448201526064015b60405180910390fd5b8167ffffffffffffffff8111156100c1576100c1610450565b6040519080825280602002602001820160405280156100f457816020015b60608152602001906001900390816100df5790505b50905060005b828110156101ba5761018a86868381811061011757610117610466565b905060200201602081019061012c919061047c565b85858481811061013e5761013e610466565b905060200281019061015091906104a5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506101c392505050565b82828151811061019c5761019c610466565b602002602001018190525080806101b2906104ec565b9150506100fa565b50949350505050565b60606101d1838360006101d8565b9392505050565b6060814710156101fd5760405163cd78605960e01b815230600482015260240161009f565b600080856001600160a01b031684866040516102199190610513565b60006040518083038185875af1925050503d8060008114610256576040519150601f19603f3d011682016040523d82523d6000602084013e61025b565b606091505b509150915061026b868383610275565b9695505050505050565b60608261028a57610285826102d1565b6101d1565b81511580156102a157506001600160a01b0384163b155b156102ca57604051639996b31560e01b81526001600160a01b038516600482015260240161009f565b50806101d1565b8051156102e15780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008083601f84011261030c57600080fd5b50813567ffffffffffffffff81111561032457600080fd5b6020830191508360208260051b850101111561033f57600080fd5b9250929050565b6000806000806040858703121561035c57600080fd5b843567ffffffffffffffff8082111561037457600080fd5b610380888389016102fa565b9096509450602087013591508082111561039957600080fd5b506103a6878288016102fa565b95989497509550505050565b60005b838110156103cd5781810151838201526020016103b5565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561044357878503603f1901845281518051808752610424818989018a85016103b2565b601f01601f1916959095018601945092850192908501906001016103fd565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561048e57600080fd5b81356001600160a01b03811681146101d157600080fd5b6000808335601e198436030181126104bc57600080fd5b83018035915067ffffffffffffffff8211156104d757600080fd5b60200191503681900382131561033f57600080fd5b60006001820161050c57634e487b7160e01b600052601160045260246000fd5b5060010190565b600082516105258184602087016103b2565b919091019291505056fea2646970667358221220d7333e91233de449e8d658d9bb18602b2f4028254386709570d3a1da40ce9c1864736f6c63430008140033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061002b5760003560e01c806363fb0b9614610030575b600080fd5b61004361003e366004610346565b610059565b60405161005091906103d6565b60405180910390f35b60608382146100a85760405162461bcd60e51b81526020600482015260166024820152750c2e4e4c2f240d8cadccee8d0e640dad2e6dac2e8c6d60531b60448201526064015b60405180910390fd5b8167ffffffffffffffff8111156100c1576100c1610450565b6040519080825280602002602001820160405280156100f457816020015b60608152602001906001900390816100df5790505b50905060005b828110156101ba5761018a86868381811061011757610117610466565b905060200201602081019061012c919061047c565b85858481811061013e5761013e610466565b905060200281019061015091906104a5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506101c392505050565b82828151811061019c5761019c610466565b602002602001018190525080806101b2906104ec565b9150506100fa565b50949350505050565b60606101d1838360006101d8565b9392505050565b6060814710156101fd5760405163cd78605960e01b815230600482015260240161009f565b600080856001600160a01b031684866040516102199190610513565b60006040518083038185875af1925050503d8060008114610256576040519150601f19603f3d011682016040523d82523d6000602084013e61025b565b606091505b509150915061026b868383610275565b9695505050505050565b60608261028a57610285826102d1565b6101d1565b81511580156102a157506001600160a01b0384163b155b156102ca57604051639996b31560e01b81526001600160a01b038516600482015260240161009f565b50806101d1565b8051156102e15780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008083601f84011261030c57600080fd5b50813567ffffffffffffffff81111561032457600080fd5b6020830191508360208260051b850101111561033f57600080fd5b9250929050565b6000806000806040858703121561035c57600080fd5b843567ffffffffffffffff8082111561037457600080fd5b610380888389016102fa565b9096509450602087013591508082111561039957600080fd5b506103a6878288016102fa565b95989497509550505050565b60005b838110156103cd5781810151838201526020016103b5565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561044357878503603f1901845281518051808752610424818989018a85016103b2565b601f01601f1916959095018601945092850192908501906001016103fd565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561048e57600080fd5b81356001600160a01b03811681146101d157600080fd5b6000808335601e198436030181126104bc57600080fd5b83018035915067ffffffffffffffff8211156104d757600080fd5b60200191503681900382131561033f57600080fd5b60006001820161050c57634e487b7160e01b600052601160045260246000fd5b5060010190565b600082516105258184602087016103b2565b919091019291505056fea2646970667358221220d7333e91233de449e8d658d9bb18602b2f4028254386709570d3a1da40ce9c1864736f6c63430008140033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.