This nametag was submitted by Kleros Scout.
Latest 25 from a total of 118,565 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| 0x66e0daa0 | 341481759 | 242 days ago | IN | 0.00019187 ETH | 0.00000082 | ||||
| 0x66e0daa0 | 341481759 | 242 days ago | IN | 0.00019187 ETH | 0.00000082 | ||||
| 0x66e0daa0 | 341459021 | 242 days ago | IN | 0.02172727 ETH | 0.00000185 | ||||
| 0x66e0daa0 | 341406098 | 242 days ago | IN | 0.02998277 ETH | 0.00000071 | ||||
| 0x66e0daa0 | 341313662 | 242 days ago | IN | 0.0000047 ETH | 0.00000052 | ||||
| 0x66e0daa0 | 341157872 | 243 days ago | IN | 0.01022441 ETH | 0.00000083 | ||||
| 0x66e0daa0 | 341089960 | 243 days ago | IN | 0.00619478 ETH | 0.00000366 | ||||
| 0x66e0daa0 | 341025276 | 243 days ago | IN | 0.01941148 ETH | 0.00000835 | ||||
| 0x66e0daa0 | 341022985 | 243 days ago | IN | 0.01969012 ETH | 0.00000639 | ||||
| 0x66e0daa0 | 341012795 | 243 days ago | IN | 0.00379169 ETH | 0.00000201 | ||||
| 0x66e0daa0 | 340983559 | 243 days ago | IN | 0.02519252 ETH | 0.00000118 | ||||
| 0x66e0daa0 | 340764555 | 244 days ago | IN | 0.02067096 ETH | 0.00000062 | ||||
| 0x66e0daa0 | 340551939 | 245 days ago | IN | 0.00013927 ETH | 0.00000051 | ||||
| 0x66e0daa0 | 339957650 | 246 days ago | IN | 0.00099674 ETH | 0.00000051 | ||||
| 0x66e0daa0 | 339344332 | 248 days ago | IN | 0.00195461 ETH | 0.00000079 | ||||
| 0x66e0daa0 | 339210749 | 249 days ago | IN | 0.00495803 ETH | 0.00000055 | ||||
| 0x66e0daa0 | 339195754 | 249 days ago | IN | 0.00195767 ETH | 0.00000062 | ||||
| 0x66e0daa0 | 339112675 | 249 days ago | IN | 0.01758155 ETH | 0.0000006 | ||||
| 0x66e0daa0 | 339105925 | 249 days ago | IN | 0.00005871 ETH | 0.00000094 | ||||
| 0x66e0daa0 | 339086162 | 249 days ago | IN | 1.17497318 ETH | 0.00000283 | ||||
| 0x66e0daa0 | 339071449 | 249 days ago | IN | 0.00720094 ETH | 0.00004627 | ||||
| 0x66e0daa0 | 339034622 | 249 days ago | IN | 0.38803539 ETH | 0.00000527 | ||||
| 0x66e0daa0 | 339034256 | 249 days ago | IN | 0.38825195 ETH | 0.00000423 | ||||
| 0x66e0daa0 | 339031988 | 249 days ago | IN | 0.37098582 ETH | 0.00000083 | ||||
| 0x66e0daa0 | 338991478 | 249 days ago | IN | 0.03945693 ETH | 0.00000053 |
Latest 25 internal transactions (View All)
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 341481759 | 242 days ago | 0.00019187 ETH | ||||
| 341481759 | 242 days ago | 0.00019187 ETH | ||||
| 341459021 | 242 days ago | 0.02172727 ETH | ||||
| 341406098 | 242 days ago | 0.02998277 ETH | ||||
| 341313662 | 242 days ago | 0.0000047 ETH | ||||
| 341157872 | 243 days ago | 0.01022441 ETH | ||||
| 341089960 | 243 days ago | 0.00619478 ETH | ||||
| 341025276 | 243 days ago | 0.01941148 ETH | ||||
| 341022985 | 243 days ago | 0.01969012 ETH | ||||
| 341012795 | 243 days ago | 0.00379169 ETH | ||||
| 340983559 | 243 days ago | 0.02519252 ETH | ||||
| 340764555 | 244 days ago | 0.02067096 ETH | ||||
| 340551939 | 245 days ago | 0.00013927 ETH | ||||
| 339957650 | 246 days ago | 0.00099674 ETH | ||||
| 339344332 | 248 days ago | 0.00195461 ETH | ||||
| 339210749 | 249 days ago | 0.00495803 ETH | ||||
| 339195754 | 249 days ago | 0.00195767 ETH | ||||
| 339112675 | 249 days ago | 0.01758155 ETH | ||||
| 339105925 | 249 days ago | 0.00005871 ETH | ||||
| 339086162 | 249 days ago | 1.17497318 ETH | ||||
| 339071449 | 249 days ago | 0.00720094 ETH | ||||
| 339034622 | 249 days ago | 0.38803539 ETH | ||||
| 339034256 | 249 days ago | 0.38825195 ETH | ||||
| 339031988 | 249 days ago | 0.37098582 ETH | ||||
| 338991478 | 249 days ago | 0.03945693 ETH |
Cross-Chain Transactions
Loading...
Loading
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
Contract ABI
API[{"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
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.