More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 12,202 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x66e0daa0 | 21247826 | 9 hrs ago | IN | 0.01455409 ETH | 0.00058742 | ||||
0x66e0daa0 | 21233520 | 2 days ago | IN | 1 ETH | 0.00082375 | ||||
0x66e0daa0 | 21227332 | 3 days ago | IN | 0.01069107 ETH | 0.00043319 | ||||
0x66e0daa0 | 21219825 | 4 days ago | IN | 0.10505716 ETH | 0.0014083 | ||||
0x66e0daa0 | 21210345 | 5 days ago | IN | 0.01582939 ETH | 0.00049178 | ||||
0x66e0daa0 | 21200527 | 6 days ago | IN | 50 ETH | 0.00109495 | ||||
0x66e0daa0 | 21200497 | 6 days ago | IN | 2 ETH | 0.00090199 | ||||
0x66e0daa0 | 21198288 | 7 days ago | IN | 0.0163232 ETH | 0.00056095 | ||||
0x66e0daa0 | 21131982 | 16 days ago | IN | 1 ETH | 0.00121886 | ||||
0x66e0daa0 | 21131982 | 16 days ago | IN | 3 ETH | 0.00129025 | ||||
Aggregate | 21119101 | 18 days ago | IN | 0 ETH | 0.00048555 | ||||
0x66e0daa0 | 21110459 | 19 days ago | IN | 0.0005 ETH | 0.00067549 | ||||
0x66e0daa0 | 21109341 | 19 days ago | IN | 0.00568982 ETH | 0.00024631 | ||||
0x66e0daa0 | 21107228 | 20 days ago | IN | 0.04549029 ETH | 0.00027914 | ||||
Aggregate | 21103533 | 20 days ago | IN | 0 ETH | 0.00049693 | ||||
Aggregate | 21103532 | 20 days ago | IN | 0 ETH | 0.00041949 | ||||
0x66e0daa0 | 21096923 | 21 days ago | IN | 0.00566375 ETH | 0.00021371 | ||||
Aggregate | 21096364 | 21 days ago | IN | 0 ETH | 0.00041473 | ||||
0x66e0daa0 | 21082056 | 23 days ago | IN | 0.001 ETH | 0.00077762 | ||||
0x66e0daa0 | 21079542 | 23 days ago | IN | 0.01957659 ETH | 0.00153923 | ||||
0x66e0daa0 | 21079542 | 23 days ago | IN | 0.019 ETH | 0.00165688 | ||||
0x66e0daa0 | 21077662 | 24 days ago | IN | 0.02099896 ETH | 0.00123272 | ||||
0x66e0daa0 | 21071838 | 24 days ago | IN | 0.022 ETH | 0.00122824 | ||||
0x66e0daa0 | 21070873 | 25 days ago | IN | 0.01575332 ETH | 0.0005836 | ||||
0x66e0daa0 | 21070637 | 25 days ago | IN | 0.02447533 ETH | 0.00059952 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
21247826 | 9 hrs ago | 0.01455409 ETH | ||||
21233520 | 2 days ago | 1 ETH | ||||
21227332 | 3 days ago | 0.01069107 ETH | ||||
21219825 | 4 days ago | 0.10505716 ETH | ||||
21210345 | 5 days ago | 0.01582939 ETH | ||||
21200527 | 6 days ago | 50 ETH | ||||
21200497 | 6 days ago | 2 ETH | ||||
21198288 | 7 days ago | 0.0163232 ETH | ||||
21131982 | 16 days ago | 1 ETH | ||||
21131982 | 16 days ago | 3 ETH | ||||
21110459 | 19 days ago | 0.0005 ETH | ||||
21109341 | 19 days ago | 0.00568982 ETH | ||||
21107228 | 20 days ago | 0.04549029 ETH | ||||
21096923 | 21 days ago | 0.00566375 ETH | ||||
21082056 | 23 days ago | 0.001 ETH | ||||
21079542 | 23 days ago | 0.01957659 ETH | ||||
21079542 | 23 days ago | 0.019 ETH | ||||
21077662 | 24 days ago | 0.02099896 ETH | ||||
21071838 | 24 days ago | 0.022 ETH | ||||
21070873 | 25 days ago | 0.01575332 ETH | ||||
21070637 | 25 days ago | 0.02447533 ETH | ||||
21070478 | 25 days ago | 0.02 ETH | ||||
21064786 | 25 days ago | 0.1 ETH | ||||
21063685 | 26 days ago | 0.02095405 ETH | ||||
21058921 | 26 days ago | 0.069 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
Multicaller
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; /** * @title Multicaller * @author vectorized.eth * @notice Contract that allows for efficient aggregation * of multiple calls in a single transaction. */ contract Multicaller { // ============================================================= // ERRORS // ============================================================= /** * @dev The lengths of the input arrays are not the same. */ error ArrayLengthsMismatch(); // ============================================================= // AGGREGATION OPERATIONS // ============================================================= /** * @dev Aggregates multiple calls in a single transaction. * @param targets An array of addresses to call. * @param data An array of calldata to forward to the targets. * @param values How much ETH to forward to each target. * @param refundTo The address to transfer any remaining ETH in the contract after the calls. * If `address(0)`, remaining ETH will NOT be refunded. * If `address(1)`, remaining ETH will be refunded to `msg.sender`. * If anything else, remaining ETH will be refunded to `refundTo`. * @return An array of the returndata from each call. */ function aggregate( address[] calldata targets, bytes[] calldata data, uint256[] calldata values, address refundTo ) external payable returns (bytes[] memory) { assembly { if iszero(and(eq(targets.length, data.length), eq(data.length, values.length))) { // Store the function selector of `ArrayLengthsMismatch()`. mstore(returndatasize(), 0x3b800a46) // Revert with (offset, size). revert(0x1c, 0x04) } let resultsSize := 0x40 if data.length { let results := 0x40 // Left shift by 5 is equivalent to multiplying by 0x20. data.length := shl(5, data.length) // Copy the offsets from calldata into memory. calldatacopy(results, data.offset, data.length) // Offset into `results`. let resultsOffset := data.length // Pointer to the end of `results`. let end := add(results, data.length) // For deriving the calldata offsets from the `results` pointer. let valuesOffsetDiff := sub(values.offset, results) let targetsOffsetDiff := sub(targets.offset, results) for {} 1 {} { // The offset of the current bytes in the calldata. let o := add(data.offset, mload(results)) let memPtr := add(resultsOffset, 0x40) // Copy the current bytes from calldata to the memory. calldatacopy( memPtr, add(o, 0x20), // The offset of the current bytes' bytes. calldataload(o) // The length of the current bytes. ) if iszero( call( gas(), // Remaining gas. calldataload(add(targetsOffsetDiff, results)), // Address to call. calldataload(add(valuesOffsetDiff, results)), // ETH to send. memPtr, // Start of input calldata in memory. calldataload(o), // Size of input calldata. 0x00, // We will use returndatacopy instead. 0x00 // We will use returndatacopy instead. ) ) { // Bubble up the revert if the call reverts. returndatacopy(0x00, 0x00, returndatasize()) revert(0x00, returndatasize()) } // Append the current `resultsOffset` into `results`. mstore(results, resultsOffset) // Append the returndatasize, and the returndata. mstore(memPtr, returndatasize()) returndatacopy(add(memPtr, 0x20), 0x00, returndatasize()) // Advance the `resultsOffset` by `returndatasize() + 0x20`, // rounded up to the next multiple of 0x20. resultsOffset := and(add(add(resultsOffset, returndatasize()), 0x3f), not(0x1f)) // Advance the `results` pointer. results := add(results, 0x20) if eq(results, end) { break } } resultsSize := add(resultsOffset, 0x40) } if refundTo { // Force transfers all the remaining ETH in the contract to `refundTo`, // with a gas stipend of 100000, which should be enough for most use cases. // If sending via a regular call fails, force sends the ETH by // creating a temporary contract which uses `SELFDESTRUCT` to force send the ETH. if selfbalance() { // If `refundTo` is `address(1)`, replace it with the `msg.sender`. refundTo := xor(refundTo, mul(eq(refundTo, 1), xor(refundTo, caller()))) // Transfer the ETH and check if it succeeded or not. if iszero( call(100000, refundTo, selfbalance(), codesize(), 0x00, codesize(), 0x00) ) { mstore(0x00, refundTo) // Store the address in scratch space. mstore8(0x0b, 0x73) // Opcode `PUSH20`. mstore8(0x20, 0xff) // Opcode `SELFDESTRUCT`. // We can directly use `SELFDESTRUCT` in the contract creation. // Compatible with `SENDALL`: https://eips.ethereum.org/EIPS/eip-4758 if iszero(create(selfbalance(), 0x0b, 0x16)) { // Coerce gas estimation to provide enough gas for the `create` above. revert(codesize(), codesize()) } } } } mstore(0x00, 0x20) // Store the memory offset of the `results`. mstore(0x20, targets.length) // Store `targets.length` into `results`. // Direct return. return(0x00, resultsSize) } } /** * @dev For receiving ETH. * Does nothing and returns nothing. * Called instead of `fallback()` if the calldatasize is zero. */ receive() external payable {} /** * @dev Decompresses the calldata and performs a delegatecall * with the decompressed calldata to itself. * * Accompanying JavaScript library to compress the calldata: * https://github.com/vectorized/solady/blob/main/js/solady.js * (See: `LibZip.cdCompress`) */ fallback() external payable { assembly { // If the calldata starts with the bitwise negation of // `bytes4(keccak256("aggregate(address[],bytes[],uint256[],address)"))`. let s := calldataload(returndatasize()) if eq(shr(224, s), 0x66e0daa0) { mstore(returndatasize(), not(s)) let o := 4 for { let i := o } lt(i, calldatasize()) {} { let c := byte(returndatasize(), calldataload(i)) i := add(i, 1) if iszero(c) { let d := byte(returndatasize(), calldataload(i)) i := add(i, 1) // Fill with either 0xff or 0x00. mstore(o, not(returndatasize())) if iszero(gt(d, 0x7f)) { codecopy(o, codesize(), add(d, 1)) } o := add(o, add(and(d, 0x7f), 1)) continue } mstore8(o, c) o := add(o, 1) } let success := delegatecall(gas(), address(), 0x00, o, 0x00, 0x00) returndatacopy(0x00, 0x00, returndatasize()) if iszero(success) { revert(0x00, returndatasize()) } return(0x00, returndatasize()) } revert(returndatasize(), returndatasize()) } } }
{ "optimizer": { "enabled": true, "runs": 200 }, "viaIR": true, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"name":"ArrayLengthsMismatch","type":"error"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"bytes[]","name":"data","type":"bytes[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"address","name":"refundTo","type":"address"}],"name":"aggregate","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60808060405234610016576102b9908161001c8239f35b600080fdfe60806040526004361015610015575b366101fd57005b6000803560e01c63991f255f1461002c575061000e565b60803660031901126100aa5767ffffffffffffffff6004358181116100b5576100599036906004016100b9565b916024358181116100b1576100729036906004016100b9565b916044359081116100ad5761008b9036906004016100b9565b6064359690959194906001600160a01b03881688036100aa57506100ef565b80fd5b8580fd5b8480fd5b8280fd5b9181601f840112156100ea5782359167ffffffffffffffff83116100ea576020808501948460051b0101116100ea57565b600080fd5b959390949295606093871487871416156101f0578693604097610166575b505050505080610125575b5060206000526020526000f35b47156101185733811860018214021860003881804785620186a0f1610118576000526073600b5360ff6020536016600b47f0156101625738610118565b3838fd5b8794919395979160051b9384878737848601945b835188019087810182359081602080950182376000808093838a8c603f19918291010135908c8b0101355af1156101e7578287523d90523d908583013e603f601f19913d010116930196898689146101d45750969261017a565b975050505091505001923880808061010d565b503d81803e3d90fd5b633b800a463d526004601cfd5b3d356366e0daa08160e01c14610211573d3dfd5b193d5260043d815b36811061023a57600080808581305af43d82803e15610236573d90f35b3d90fd5b8035821a92600180920193801561025757815301905b9091610219565b503d19815283820193607f90353d1a81811115610278575b16010190610250565b83810138843961026f56fea26469706673582212200dfa3a85cbd068a99fd4d5051615c4bde5995f9e1dd4a095bb55fc5af681c44064736f6c63430008120033
Deployed Bytecode
0x60806040526004361015610015575b366101fd57005b6000803560e01c63991f255f1461002c575061000e565b60803660031901126100aa5767ffffffffffffffff6004358181116100b5576100599036906004016100b9565b916024358181116100b1576100729036906004016100b9565b916044359081116100ad5761008b9036906004016100b9565b6064359690959194906001600160a01b03881688036100aa57506100ef565b80fd5b8580fd5b8480fd5b8280fd5b9181601f840112156100ea5782359167ffffffffffffffff83116100ea576020808501948460051b0101116100ea57565b600080fd5b959390949295606093871487871416156101f0578693604097610166575b505050505080610125575b5060206000526020526000f35b47156101185733811860018214021860003881804785620186a0f1610118576000526073600b5360ff6020536016600b47f0156101625738610118565b3838fd5b8794919395979160051b9384878737848601945b835188019087810182359081602080950182376000808093838a8c603f19918291010135908c8b0101355af1156101e7578287523d90523d908583013e603f601f19913d010116930196898689146101d45750969261017a565b975050505091505001923880808061010d565b503d81803e3d90fd5b633b800a463d526004601cfd5b3d356366e0daa08160e01c14610211573d3dfd5b193d5260043d815b36811061023a57600080808581305af43d82803e15610236573d90f35b3d90fd5b8035821a92600180920193801561025757815301905b9091610219565b503d19815283820193607f90353d1a81811115610278575b16010190610250565b83810138843961026f56fea26469706673582212200dfa3a85cbd068a99fd4d5051615c4bde5995f9e1dd4a095bb55fc5af681c44064736f6c63430008120033
Deployed Bytecode Sourcemap
225:8446:0:-:0;;;;;;;;;-1:-1:-1;225:8446:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;225:8446:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;225:8446:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;1407:5298;;;;;;;225:8446;1586:14;1612:5087;;;;;;;;;;;;;;;1407:5298;1612:5087;;;;;;;;1407:5298;1612:5087;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1612:5087:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7235:1434;7273:1390;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7273:1390:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Swarm Source
ipfs://0dfa3a85cbd068a99fd4d5051615c4bde5995f9e1dd4a095bb55fc5af681c440
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.