Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| 0x2e9ab0bbcf9b7dd3bbb582dbbf6f82f173e4a92807a30054fe59263ead7b5dc0 | Multicall | (pending) | 5 days ago | IN | 0 ETH | (Pending) | |||
| Multicall | 23936065 | 93 days ago | IN | 0 ETH | 0.00002721 | ||||
| Multicall | 23935894 | 93 days ago | IN | 0 ETH | 0.00038578 | ||||
| Multicall | 23928364 | 94 days ago | IN | 0 ETH | 0.00038743 | ||||
| Multicall | 23928330 | 94 days ago | IN | 0 ETH | 0.00021566 | ||||
| Multicall | 23921282 | 95 days ago | IN | 0 ETH | 0.00022112 | ||||
| Multicall | 23898657 | 98 days ago | IN | 0 ETH | 0.00008757 | ||||
| Multicall | 23878678 | 101 days ago | IN | 0 ETH | 0.00002092 | ||||
| Multicall | 23877821 | 101 days ago | IN | 0 ETH | 0.00091874 | ||||
| Multicall | 23821320 | 109 days ago | IN | 0 ETH | 0.00185532 | ||||
| Multicall | 23812799 | 110 days ago | IN | 0 ETH | 0.00038849 | ||||
| Multicall | 23804537 | 111 days ago | IN | 0 ETH | 0.00003265 | ||||
| Multicall | 23778942 | 115 days ago | IN | 0 ETH | 0.00085285 | ||||
| Multicall | 23772466 | 115 days ago | IN | 0 ETH | 0.00003875 | ||||
| Multicall | 23763609 | 117 days ago | IN | 0 ETH | 0.00044652 | ||||
| Multicall | 23663755 | 131 days ago | IN | 0 ETH | 0.00090065 | ||||
| Multicall | 23655921 | 132 days ago | IN | 0 ETH | 0.00001601 | ||||
| Multicall | 23651498 | 132 days ago | IN | 0 ETH | 0.00001402 | ||||
| Multicall | 23641651 | 134 days ago | IN | 0 ETH | 0.00059635 | ||||
| Multicall | 23631847 | 135 days ago | IN | 0 ETH | 0.0000226 | ||||
| Multicall | 23620900 | 137 days ago | IN | 0 ETH | 0.00067705 | ||||
| Multicall | 23618846 | 137 days ago | IN | 0 ETH | 0.00033841 | ||||
| Multicall | 23608654 | 138 days ago | IN | 0 ETH | 0.00061793 | ||||
| Multicall | 23605193 | 139 days ago | IN | 0 ETH | 0.00026113 | ||||
| Multicall | 23602661 | 139 days ago | IN | 0 ETH | 0.00036822 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
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
Contract ABI
API[{"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
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.