Source Code
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 11474437 | 449 days ago | 0 ETH | ||||
| 11474437 | 449 days ago | 0 ETH | ||||
| 8086623 | 529 days ago | 0 ETH | ||||
| 8086622 | 529 days ago | 0.00875865 ETH | ||||
| 8086622 | 529 days ago | 0.00875865 ETH | ||||
| 8086622 | 529 days ago | 0 ETH | ||||
| 8086622 | 529 days ago | 0 ETH | ||||
| 1998485 | 722 days ago | 0 ETH | ||||
| 1998485 | 722 days ago | 0 ETH | ||||
| 1998485 | 722 days ago | 0 ETH | ||||
| 1998348 | 722 days ago | 0 ETH | ||||
| 1998348 | 722 days ago | 0 ETH | ||||
| 1998348 | 722 days ago | 0 ETH | ||||
| 1998348 | 722 days ago | 0 ETH | ||||
| 1998348 | 722 days ago | 0.029 ETH | ||||
| 1998348 | 722 days ago | 0.029 ETH | ||||
| 1998300 | 722 days ago | 0.07996524 ETH | ||||
| 1998300 | 722 days ago | 0.07996524 ETH | ||||
| 1998300 | 722 days ago | 0 ETH | ||||
| 1998300 | 722 days ago | 0 ETH | ||||
| 1998300 | 722 days ago | 0 ETH | ||||
| 1998300 | 722 days ago | 0 ETH | ||||
| 1998300 | 722 days ago | 0 ETH | ||||
| 1998300 | 722 days ago | 0 ETH | ||||
| 1998300 | 722 days ago | 0 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
SquidMulticall
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 99999 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;
import {ISquidMulticall} from "./interfaces/ISquidMulticall.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
import {IERC1155Receiver} from "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol";
contract SquidMulticall is ISquidMulticall, IERC721Receiver, IERC1155Receiver {
bytes4 constant public ERC165_INTERFACE_ID = 0x01ffc9a7;
bytes4 constant public ERC721_TOKENRECEIVER_INTERFACE_ID = 0x150b7a02;
bytes4 constant public ERC1155_TOKENRECEIVER_INTERFACE_ID = 0x4e2312e0;
bool private isRunning;
error TransferFailed();
function run(Call[] calldata calls) external payable {
// Prevents reentrancy
if (isRunning) revert AlreadyRunning();
isRunning = true;
for (uint256 i = 0; i < calls.length; i++) {
Call memory call = calls[i];
if (call.callType == CallType.FullTokenBalance) {
(address token, uint256 amountParameterPosition) = abi.decode(call.payload, (address, uint256));
uint256 amount = IERC20(token).balanceOf(address(this));
_setCallDataParameter(call.callData, amountParameterPosition, amount);
} else if (call.callType == CallType.FullNativeBalance) {
call.value = address(this).balance;
} else if (call.callType == CallType.CollectTokenBalance) {
address token = abi.decode(call.payload, (address));
_safeTransferFrom(token, msg.sender, IERC20(token).balanceOf(msg.sender));
continue;
}
(bool success, bytes memory data) = call.target.call{value: call.value}(call.callData);
if (!success) revert CallFailed(i, data);
}
isRunning = false;
}
function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
return interfaceId == ERC1155_TOKENRECEIVER_INTERFACE_ID ||
interfaceId == ERC721_TOKENRECEIVER_INTERFACE_ID ||
interfaceId == ERC165_INTERFACE_ID;
}
function _safeTransferFrom(address token, address from, uint256 amount) private {
(bool success, bytes memory returnData) = token.call(
abi.encodeWithSelector(IERC20.transferFrom.selector, from, address(this), amount)
);
bool transferred = success && (returnData.length == uint256(0) || abi.decode(returnData, (bool)));
if (!transferred || token.code.length == 0) revert TransferFailed();
}
function _setCallDataParameter(bytes memory callData, uint256 parameterPosition, uint256 value) private pure {
assembly {
// 36 bytes shift because 32 for prefix + 4 for selector
mstore(add(callData, add(36, mul(parameterPosition, 32))), value)
}
}
function onERC721Received(
address,
address,
uint256,
bytes calldata
) external pure returns (bytes4) {
return IERC721Receiver.onERC721Received.selector;
}
function onERC1155Received(address, address, uint256, uint256, bytes calldata) external pure returns (bytes4) {
return IERC1155Receiver.onERC1155Received.selector;
}
function onERC1155BatchReceived(address, address, uint256[] calldata, uint256[] calldata, bytes calldata) external pure returns (bytes4) {
return IERC1155Receiver.onERC1155BatchReceived.selector;
}
// Required to enable ETH reception with .transfer or .send
receive() external payable {}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)
pragma solidity ^0.8.0;
import "../../utils/introspection/IERC165.sol";
/**
* @dev _Available since v3.1._
*/
interface IERC1155Receiver is IERC165 {
/**
* @dev Handles the receipt of a single ERC1155 token type. This function is
* called at the end of a `safeTransferFrom` after the balance has been updated.
*
* NOTE: To accept the transfer, this must return
* `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
* (i.e. 0xf23a6e61, or its own function selector).
*
* @param operator The address which initiated the transfer (i.e. msg.sender)
* @param from The address which previously owned the token
* @param id The ID of the token being transferred
* @param value The amount of tokens being transferred
* @param data Additional data with no specified format
* @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
*/
function onERC1155Received(
address operator,
address from,
uint256 id,
uint256 value,
bytes calldata data
) external returns (bytes4);
/**
* @dev Handles the receipt of a multiple ERC1155 token types. This function
* is called at the end of a `safeBatchTransferFrom` after the balances have
* been updated.
*
* NOTE: To accept the transfer(s), this must return
* `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
* (i.e. 0xbc197c81, or its own function selector).
*
* @param operator The address which initiated the batch transfer (i.e. msg.sender)
* @param from The address which previously owned the token
* @param ids An array containing ids of each token being transferred (order and length must match values array)
* @param values An array containing amounts of each token being transferred (order and length must match ids array)
* @param data Additional data with no specified format
* @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed
*/
function onERC1155BatchReceived(
address operator,
address from,
uint256[] calldata ids,
uint256[] calldata values,
bytes calldata data
) external returns (bytes4);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 amount
) external returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)
pragma solidity ^0.8.0;
/**
* @title ERC721 token receiver interface
* @dev Interface for any contract that wants to support safeTransfers
* from ERC721 asset contracts.
*/
interface IERC721Receiver {
/**
* @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
* by `operator` from `from`, this function is called.
*
* It must return its Solidity selector to confirm the token transfer.
* If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
*
* The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.
*/
function onERC721Received(
address operator,
address from,
uint256 tokenId,
bytes calldata data
) external returns (bytes4);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;
interface ISquidMulticall {
enum CallType {
Default,
FullTokenBalance,
FullNativeBalance,
CollectTokenBalance
}
struct Call {
CallType callType;
address target;
uint256 value;
bytes callData;
bytes payload;
}
error AlreadyRunning();
error CallFailed(uint256 callPosition, bytes reason);
function run(Call[] calldata calls) external payable;
}{
"optimizer": {
"enabled": true,
"runs": 99999
},
"viaIR": true,
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"metadata": {
"useLiteralContent": true
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"name":"AlreadyRunning","type":"error"},{"inputs":[{"internalType":"uint256","name":"callPosition","type":"uint256"},{"internalType":"bytes","name":"reason","type":"bytes"}],"name":"CallFailed","type":"error"},{"inputs":[],"name":"TransferFailed","type":"error"},{"inputs":[],"name":"ERC1155_TOKENRECEIVER_INTERFACE_ID","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ERC165_INTERFACE_ID","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ERC721_TOKENRECEIVER_INTERFACE_ID","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"enum ISquidMulticall.CallType","name":"callType","type":"uint8"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes","name":"payload","type":"bytes"}],"internalType":"struct ISquidMulticall.Call[]","name":"calls","type":"tuple[]"}],"name":"run","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
6080806040523461001657610ddd908161001c8239f35b600080fdfe6080604052600436101561001b575b361561001957600080fd5b005b6000803560e01c90816301ffc9a7146100be57508063150b7a02146100b5578063950d7f6f146100ac578063bc197c81146100a3578063e3c1338d1461009a578063ed1ba63b14610091578063f23a6e61146100885763f87ef8000361000e57610083610561565b61000e565b506100836104cf565b50610083610475565b5061008361041b565b50610083610353565b506100836102c8565b50610083610236565b346101d55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d557600435907fffffffff0000000000000000000000000000000000000000000000000000000082168092036101d5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8061017c7f4e2312e00000000000000000000000000000000000000000000000000000000084148481156101ab575b8115610181575b50151560805260a090565b016080f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483610171565b7f150b7a02000000000000000000000000000000000000000000000000000000008114915061016a565b80fd5b73ffffffffffffffffffffffffffffffffffffffff8116036101f657565b600080fd5b3590610206826101d8565b565b9181601f840112156101f65782359167ffffffffffffffff83116101f657602083818601950101116101f657565b50346101f65760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f6576102716004356101d8565b61027c6024356101d8565b60643567ffffffffffffffff81116101f65761029c903690600401610208565b505060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b50346101f65760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f65760206040517f01ffc9a7000000000000000000000000000000000000000000000000000000008152f35b9181601f840112156101f65782359167ffffffffffffffff83116101f6576020808501948460051b0101116101f657565b50346101f65760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f65761038e6004356101d8565b6103996024356101d8565b67ffffffffffffffff6044358181116101f6576103ba903690600401610322565b50506064358181116101f6576103d4903690600401610322565b50506084359081116101f6576103ee903690600401610208565b50506040517fbc197c81000000000000000000000000000000000000000000000000000000008152602090f35b50346101f65760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f65760206040517f4e2312e0000000000000000000000000000000000000000000000000000000008152f35b50346101f65760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f65760206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b50346101f65760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f65761050a6004356101d8565b6105156024356101d8565b60843567ffffffffffffffff81116101f657610535903690600401610208565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b506020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f657600490813567ffffffffffffffff81116101f6576105ae9036908401610322565b9290916000936105bf855460ff1690565b6108d2576105f360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006000541617600055565b845b81811061062d578561062a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0060005416600055565b80f35b61064061063b828488610957565b610af0565b6001815161064d81610b78565b61065681610b78565b036107bc576106f273ffffffffffffffffffffffffffffffffffffffff6106cd8661068d6080860151828082518301019101610be5565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230818d019081529095919486939284929091839160200190565b0392165afa9182156107af575b8a92610780575b50606084015160249160051b010152565b86806107148684015173ffffffffffffffffffffffffffffffffffffffff1690565b92604093606085830151920151918883519301915af190610733610c04565b9115610749575050610744906108fb565b6105f5565b517f5c0dee5d00000000000000000000000000000000000000000000000000000000815291829161077c91838801610c34565b0390fd5b6107a1919250873d89116107a8575b6107998183610a1f565b810190610bc9565b90386106e1565b503d61078f565b6107b7610bd8565b6106da565b600281516107c981610b78565b6107d281610b78565b036107e2574760408201526106f2565b600381516107ef81610b78565b6107f881610b78565b036106f257906108a161083661081d6080610744950151878082518301019101610bb1565b73ffffffffffffffffffffffffffffffffffffffff1690565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815233888201908152909190879083908190602001038173ffffffffffffffffffffffffffffffffffffffff85165afa9182156108c5575b8a926108a6575b503390610cba565b6108fb565b6108be919250873d89116107a8576107998183610a1f565b9038610899565b6108cd610bd8565b610892565b826040517fe4455ead000000000000000000000000000000000000000000000000000000008152fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109285760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b91908110156109975760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61813603018212156101f6570190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b507f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810190811067ffffffffffffffff821117610a1257604052565b610a1a6109c6565b604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610a1257604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209267ffffffffffffffff8111610a9c575b01160190565b610aa46109c6565b610a96565b81601f820112156101f657803590610ac082610a60565b92610ace6040519485610a1f565b828452602083830101116101f657816000926020809301838601378301015290565b60a0813603126101f65760405190610b07826109f6565b803560048110156101f6578252610b20602082016101fb565b60208301526040810135604083015260608101359067ffffffffffffffff918281116101f657610b539036908301610aa9565b606084015260808101359182116101f657610b7091369101610aa9565b608082015290565b60041115610b8257565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b908160209103126101f65751610bc6816101d8565b90565b908160209103126101f6575190565b506040513d6000823e3d90fd5b91908260409103126101f65760208251610bfe816101d8565b92015190565b3d15610c2f573d90610c1582610a60565b91610c236040519384610a1f565b82523d6000602084013e565b606090565b909291928152602060408183015283519384604084015260005b858110610c8e575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006060809697860101520116010190565b818101830151848201606001528201610c4e565b908160209103126101f6575180151581036101f65790565b9160009182916040519073ffffffffffffffffffffffffffffffffffffffff60208301937f23b872dd000000000000000000000000000000000000000000000000000000008552166024830152306044830152606482015260648152610d1f816109f6565b519082855af1610d2d610c04565b81610d78575b5015908115610d6e575b50610d4457565b60046040517f90b8ec18000000000000000000000000000000000000000000000000000000008152fd5b90503b1538610d3d565b8051801592508215610d8d575b505038610d33565b610da09250602080918301019101610ca2565b3880610d8556fea2646970667358221220e21b99be51924d9de5084936876dafc21b986a3062a140155797d1f740947f6164736f6c63430008110033
Deployed Bytecode
0x6080604052600436101561001b575b361561001957600080fd5b005b6000803560e01c90816301ffc9a7146100be57508063150b7a02146100b5578063950d7f6f146100ac578063bc197c81146100a3578063e3c1338d1461009a578063ed1ba63b14610091578063f23a6e61146100885763f87ef8000361000e57610083610561565b61000e565b506100836104cf565b50610083610475565b5061008361041b565b50610083610353565b506100836102c8565b50610083610236565b346101d55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d557600435907fffffffff0000000000000000000000000000000000000000000000000000000082168092036101d5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8061017c7f4e2312e00000000000000000000000000000000000000000000000000000000084148481156101ab575b8115610181575b50151560805260a090565b016080f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483610171565b7f150b7a02000000000000000000000000000000000000000000000000000000008114915061016a565b80fd5b73ffffffffffffffffffffffffffffffffffffffff8116036101f657565b600080fd5b3590610206826101d8565b565b9181601f840112156101f65782359167ffffffffffffffff83116101f657602083818601950101116101f657565b50346101f65760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f6576102716004356101d8565b61027c6024356101d8565b60643567ffffffffffffffff81116101f65761029c903690600401610208565b505060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b50346101f65760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f65760206040517f01ffc9a7000000000000000000000000000000000000000000000000000000008152f35b9181601f840112156101f65782359167ffffffffffffffff83116101f6576020808501948460051b0101116101f657565b50346101f65760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f65761038e6004356101d8565b6103996024356101d8565b67ffffffffffffffff6044358181116101f6576103ba903690600401610322565b50506064358181116101f6576103d4903690600401610322565b50506084359081116101f6576103ee903690600401610208565b50506040517fbc197c81000000000000000000000000000000000000000000000000000000008152602090f35b50346101f65760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f65760206040517f4e2312e0000000000000000000000000000000000000000000000000000000008152f35b50346101f65760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f65760206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b50346101f65760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f65761050a6004356101d8565b6105156024356101d8565b60843567ffffffffffffffff81116101f657610535903690600401610208565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b506020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f657600490813567ffffffffffffffff81116101f6576105ae9036908401610322565b9290916000936105bf855460ff1690565b6108d2576105f360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006000541617600055565b845b81811061062d578561062a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0060005416600055565b80f35b61064061063b828488610957565b610af0565b6001815161064d81610b78565b61065681610b78565b036107bc576106f273ffffffffffffffffffffffffffffffffffffffff6106cd8661068d6080860151828082518301019101610be5565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230818d019081529095919486939284929091839160200190565b0392165afa9182156107af575b8a92610780575b50606084015160249160051b010152565b86806107148684015173ffffffffffffffffffffffffffffffffffffffff1690565b92604093606085830151920151918883519301915af190610733610c04565b9115610749575050610744906108fb565b6105f5565b517f5c0dee5d00000000000000000000000000000000000000000000000000000000815291829161077c91838801610c34565b0390fd5b6107a1919250873d89116107a8575b6107998183610a1f565b810190610bc9565b90386106e1565b503d61078f565b6107b7610bd8565b6106da565b600281516107c981610b78565b6107d281610b78565b036107e2574760408201526106f2565b600381516107ef81610b78565b6107f881610b78565b036106f257906108a161083661081d6080610744950151878082518301019101610bb1565b73ffffffffffffffffffffffffffffffffffffffff1690565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815233888201908152909190879083908190602001038173ffffffffffffffffffffffffffffffffffffffff85165afa9182156108c5575b8a926108a6575b503390610cba565b6108fb565b6108be919250873d89116107a8576107998183610a1f565b9038610899565b6108cd610bd8565b610892565b826040517fe4455ead000000000000000000000000000000000000000000000000000000008152fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109285760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b91908110156109975760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61813603018212156101f6570190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b507f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810190811067ffffffffffffffff821117610a1257604052565b610a1a6109c6565b604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610a1257604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209267ffffffffffffffff8111610a9c575b01160190565b610aa46109c6565b610a96565b81601f820112156101f657803590610ac082610a60565b92610ace6040519485610a1f565b828452602083830101116101f657816000926020809301838601378301015290565b60a0813603126101f65760405190610b07826109f6565b803560048110156101f6578252610b20602082016101fb565b60208301526040810135604083015260608101359067ffffffffffffffff918281116101f657610b539036908301610aa9565b606084015260808101359182116101f657610b7091369101610aa9565b608082015290565b60041115610b8257565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b908160209103126101f65751610bc6816101d8565b90565b908160209103126101f6575190565b506040513d6000823e3d90fd5b91908260409103126101f65760208251610bfe816101d8565b92015190565b3d15610c2f573d90610c1582610a60565b91610c236040519384610a1f565b82523d6000602084013e565b606090565b909291928152602060408183015283519384604084015260005b858110610c8e575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006060809697860101520116010190565b818101830151848201606001528201610c4e565b908160209103126101f6575180151581036101f65790565b9160009182916040519073ffffffffffffffffffffffffffffffffffffffff60208301937f23b872dd000000000000000000000000000000000000000000000000000000008552166024830152306044830152606482015260648152610d1f816109f6565b519082855af1610d2d610c04565b81610d78575b5015908115610d6e575b50610d4457565b60046040517f90b8ec18000000000000000000000000000000000000000000000000000000008152fd5b90503b1538610d3d565b8051801592508215610d8d575b505038610d33565b610da09250602080918301019101610ca2565b3880610d8556fea2646970667358221220e21b99be51924d9de5084936876dafc21b986a3062a140155797d1f740947f6164736f6c63430008110033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
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.