Overview
ETH Balance
0.001572307083999565 ETH
Eth Value
$2.93 (@ $1,864.54/ETH)More Info
Private Name Tags
ContractCreator
Multichain Info
No addresses found
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 21981416 | 7 days ago | IN | 0.00456699 ETH | 0.0000258 |
Latest 12 internal transactions
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
Transfer | 21998598 | 5 days ago | 0.00132304 ETH | ||||
Transfer | 21997354 | 5 days ago | 0.00136358 ETH | ||||
Transfer | 21981498 | 7 days ago | 0.00136428 ETH | ||||
Transfer | 21981433 | 7 days ago | 0.00284977 ETH | ||||
0x00000195 | 21940754 | 13 days ago | 0.00132022 ETH | ||||
Transfer | 21940754 | 13 days ago | 0.00091505 ETH | ||||
Transfer | 21940189 | 13 days ago | 0.00218591 ETH | ||||
Swap | 21938665 | 13 days ago | 0.00430604 ETH | ||||
Transfer | 21938665 | 13 days ago | 0.00249138 ETH | ||||
0x603d3d81 | 21938657 | 13 days ago | Contract Creation | 0 ETH | |||
Transfer | 21931969 | 14 days ago | 0.00772038 ETH | ||||
Transfer | 21910519 | 17 days ago | 0.00030525 ETH |
Loading...
Loading
Minimal Proxy Contract for 0x000100abaad02f1cfc8bbe32bd5a564817339e72
Contract Name:
CoinbaseSmartWallet
Compiler Version
v0.8.23+commit.f704f362
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity 0.8.23;import {IAccount} from "account-abstraction/interfaces/IAccount.sol";import {UserOperation, UserOperationLib} from "account-abstraction/interfaces/UserOperation.sol";import {Receiver} from "solady/accounts/Receiver.sol";import {SignatureCheckerLib} from "solady/utils/SignatureCheckerLib.sol";import {UUPSUpgradeable} from "solady/utils/UUPSUpgradeable.sol";import {WebAuthn} from "webauthn-sol/WebAuthn.sol";import {ERC1271} from "./ERC1271.sol";import {MultiOwnable} from "./MultiOwnable.sol";/// @title Coinbase Smart Wallet////// @notice ERC-4337-compatible smart account, based on Solady's ERC4337 account implementation/// with inspiration from Alchemy's LightAccount and Daimo's DaimoAccount. Verified by z0r0z.eth from (⌘) NANI.eth////// @author Coinbase (https://github.com/coinbase/smart-wallet)/// @author Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC4337.sol)contract CoinbaseSmartWallet is ERC1271, IAccount, MultiOwnable, UUPSUpgradeable, Receiver {/// @notice A wrapper struct used for signature validation so that callers/// can identify the owner that signed.struct SignatureWrapper {/// @dev The index of the owner that signed, see `MultiOwnable.ownerAtIndex`
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0pragma solidity ^0.8.12;import "./UserOperation.sol";interface IAccount {/*** Validate user's signature and nonce* the entryPoint will make the call to the recipient only if this validation call returns successfully.* signature failure should be reported by returning SIG_VALIDATION_FAILED (1).* This allows making a "simulation call" without a valid signature* Other failures (e.g. nonce mismatch, or invalid signature format) should still revert to signal failure.** @dev Must validate caller is the entryPoint.* Must validate the signature and nonce* @param userOp the operation that is about to be executed.* @param userOpHash hash of the user's request data. can be used as the basis for signature.* @param missingAccountFunds missing funds on the account's deposit in the entrypoint.* This is the minimum amount to transfer to the sender(entryPoint) to be able to make the call.* The excess is left as a deposit in the entrypoint, for future calls.* can be withdrawn anytime using "entryPoint.withdrawTo()"* In case there is a paymaster in the request (or the current deposit is high enough), this value will be zero.* @return validationData packaged ValidationData structure. use `_packValidationData` and `_unpackValidationData` to encode and decode* <20-byte> sigAuthorizer - 0 for valid signature, 1 to mark signature failure,* otherwise, an address of an "authorizer" contract.
12345678910111213141516171819202122232425// SPDX-License-Identifier: GPL-3.0pragma solidity ^0.8.12;/* solhint-disable no-inline-assembly */import {calldataKeccak} from "../core/Helpers.sol";/*** User Operation struct* @param sender the sender account of this request.* @param nonce unique value the sender uses to verify it is not a replay.* @param initCode if set, the account contract will be created by this constructor/* @param callData the method call to execute on this account.* @param callGasLimit the gas limit passed to the callData method call.* @param verificationGasLimit gas used for validateUserOp and validatePaymasterUserOp.* @param preVerificationGas gas not calculated by the handleOps method, but added to the gas paid. Covers batch overhead.* @param maxFeePerGas same as EIP-1559 gas parameter.* @param maxPriorityFeePerGas same as EIP-1559 gas parameter.* @param paymasterAndData if set, this field holds the paymaster address and paymaster-specific data. the paymaster will pay for the transactioninstead of the sender.* @param signature sender-verified signature over the entire request, the EntryPoint address and the chain ID.*/struct UserOperation {address sender;uint256 nonce;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;/// @notice Receiver mixin for ETH and safe-transferred ERC721 and ERC1155 tokens./// @author Solady (https://github.com/Vectorized/solady/blob/main/src/accounts/Receiver.sol)////// @dev Note:/// - Handles all ERC721 and ERC1155 token safety callbacks./// - Collapses function table gas overhead and code size./// - Utilizes fallback so unknown calldata will pass on.abstract contract Receiver {/// @dev For receiving ETH.receive() external payable virtual {}/// @dev Fallback function with the `receiverFallback` modifier.fallback() external payable virtual receiverFallback {}/// @dev Modifier for the fallback function to handle token callbacks.modifier receiverFallback() virtual {/// @solidity memory-safe-assemblyassembly {let s := shr(224, calldataload(0))// 0x150b7a02: `onERC721Received(address,address,uint256,bytes)`.// 0xf23a6e61: `onERC1155Received(address,address,uint256,uint256,bytes)`.// 0xbc197c81: `onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)`.if or(eq(s, 0x150b7a02), or(eq(s, 0xf23a6e61), eq(s, 0xbc197c81))) {
12345678910111213141516171819202122232425// SPDX-License-Identifier: MITpragma solidity ^0.8.4;/// @notice Signature verification helper that supports both ECDSA signatures from EOAs/// and ERC1271 signatures from smart contract wallets like Argent and Gnosis safe./// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/SignatureCheckerLib.sol)/// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/SignatureChecker.sol)////// @dev Note:/// - The signature checking functions use the ecrecover precompile (0x1)./// - The `bytes memory signature` variants use the identity precompile (0x4)/// to copy memory internally./// - Unlike ECDSA signatures, contract signatures are revocable./// - As of Solady version 0.0.134, all `bytes signature` variants accept both/// regular 65-byte `(r, s, v)` and EIP-2098 `(r, vs)` short form signatures./// See: https://eips.ethereum.org/EIPS/eip-2098/// This is for calldata efficiency on smart accounts prevalent on L2s.////// WARNING! Do NOT use signatures as unique identifiers:/// - Use a nonce in the digest to prevent replay attacks on the same contract./// - Use EIP-712 for the digest to prevent replay attacks across different chains and contracts./// EIP-712 also enables readable signing of typed data for better user safety./// This implementation does NOT check if a signature is non-malleable.library SignatureCheckerLib {/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;/// @notice UUPS proxy mixin./// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/UUPSUpgradeable.sol)/// @author Modified from OpenZeppelin/// (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/proxy/utils/UUPSUpgradeable.sol)////// Note:/// - This implementation is intended to be used with ERC1967 proxies./// See: `LibClone.deployERC1967` and related functions./// - This implementation is NOT compatible with legacy OpenZeppelin proxies/// which do not store the implementation at `_ERC1967_IMPLEMENTATION_SLOT`.abstract contract UUPSUpgradeable {/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*//* CUSTOM ERRORS *//*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*//// @dev The upgrade failed.error UpgradeFailed();/// @dev The call is from an unauthorized call context.error UnauthorizedCallContext();/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*//* IMMUTABLES */
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.0;import {FCL_ecdsa} from "FreshCryptoLib/FCL_ecdsa.sol";import {FCL_Elliptic_ZZ} from "FreshCryptoLib/FCL_elliptic.sol";import {Base64} from "openzeppelin-contracts/contracts/utils/Base64.sol";import {LibString} from "solady/utils/LibString.sol";/// @title WebAuthn////// @notice A library for verifying WebAuthn Authentication Assertions, built off the work/// of Daimo.////// @dev Attempts to use the RIP-7212 precompile for signature verification./// If precompile verification fails, it falls back to FreshCryptoLib.////// @author Coinbase (https://github.com/base-org/webauthn-sol)/// @author Daimo (https://github.com/daimo-eth/p256-verifier/blob/master/src/WebAuthn.sol)library WebAuthn {using LibString for string;struct WebAuthnAuth {/// @dev The WebAuthn authenticator data./// See https://www.w3.org/TR/webauthn-2/#dom-authenticatorassertionresponse-authenticatordata.bytes authenticatorData;/// @dev The WebAuthn client data JSON.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;/// @title ERC-1271////// @notice Abstract ERC-1271 implementation (based on Solady's) with guards to handle the same/// signer being used on multiple accounts.////// @dev To prevent the same signature from being validated on different accounts owned by the samer signer,/// we introduce an anti cross-account-replay layer: the original hash is input into a new EIP-712 compliant/// hash. The domain separator of this outer hash contains the chain id and address of this contract, so that/// it cannot be used on two accounts (see `replaySafeHash()` for the implementation details).////// @author Coinbase (https://github.com/coinbase/smart-wallet)/// @author Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC1271.sol)abstract contract ERC1271 {/// @dev Precomputed `typeHash` used to produce EIP-712 compliant hash when applying the anti/// cross-account-replay layer.////// The original hash must either be:/// - An EIP-191 hash: keccak256("\x19Ethereum Signed Message:\n" || len(someMessage) || someMessage)/// - An EIP-712 hash: keccak256("\x19\x01" || someDomainSeparator || hashStruct(someStruct))bytes32 private constant _MESSAGE_TYPEHASH = keccak256("CoinbaseSmartWalletMessage(bytes32 hash)");/// @notice Returns information about the `EIP712Domain` used to create EIP-712 compliant hashes.///
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.18;/// @notice Storage layout used by this contract.////// @custom:storage-location erc7201:coinbase.storage.MultiOwnablestruct MultiOwnableStorage {/// @dev Tracks the index of the next owner to add.uint256 nextOwnerIndex;/// @dev Tracks number of owners that have been removed.uint256 removedOwnersCount;/// @dev Maps index to owner bytes, used to idenfitied owners via a uint256 index.////// Some uses—-such as signature validation for secp256r1 public key owners—-/// requires the caller to assert the public key of the caller. To economize calldata,/// we allow an index to identify an owner, so that the full owner bytes do/// not need to be passed.////// The `owner` bytes should either be/// - An ABI encoded Ethereum address/// - An ABI encoded public keymapping(uint256 index => bytes owner) ownerAtIndex;/// @dev Mapping of bytes to booleans indicating whether or not/// bytes_ is an owner of this contract.mapping(bytes bytes_ => bool isOwner_) isOwner;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0pragma solidity ^0.8.12;/* solhint-disable no-inline-assembly *//*** returned data from validateUserOp.* validateUserOp returns a uint256, with is created by `_packedValidationData` and parsed by `_parseValidationData`* @param aggregator - address(0) - the account validated the signature by itself.* address(1) - the account failed to validate the signature.* otherwise - this is an address of a signature aggregator that must be used to validate the signature.* @param validAfter - this UserOp is valid only after this timestamp.* @param validaUntil - this UserOp is valid only up to this timestamp.*/struct ValidationData {address aggregator;uint48 validAfter;uint48 validUntil;}//extract sigFailed, validAfter, validUntil.// also convert zero validUntil to type(uint48).maxfunction _parseValidationData(uint validationData) pure returns (ValidationData memory data) {address aggregator = address(uint160(validationData));uint48 validUntil = uint48(validationData >> 160);if (validUntil == 0) {
1234567891011121314151617181920212223242526//********************************************************************************************/// ___ _ ___ _ _ _ _// | __| _ ___ __| |_ / __|_ _ _ _ _ __| |_ ___ | | (_) |__// | _| '_/ -_|_-< ' \ | (__| '_| || | '_ \ _/ _ \ | |__| | '_ \// |_||_| \___/__/_||_| \___|_| \_, | .__/\__\___/ |____|_|_.__/// |__/|_|///* Copyright (C) 2022 - Renaud Dubois - This file is part of FCL (Fresh CryptoLib) project///* License: This software is licensed under MIT License///* This Code may be reused including license and copyright notice.///* See LICENSE file at the root folder of the project.///* FILE: FCL_ecdsa.sol///*///*///* DESCRIPTION: ecdsa verification implementation///*//**************************************************************************************///* WARNING: this code SHALL not be used for non prime order curves for security reasons.// Code is optimized for a=-3 only curves with prime order, constant like -1, -2 shall be replaced// if ever used for other curve than sec256R1// SPDX-License-Identifier: MITpragma solidity >=0.8.19 <0.9.0;import {FCL_Elliptic_ZZ} from "./FCL_elliptic.sol";
1234567891011121314151617181920212223242526//********************************************************************************************/// ___ _ ___ _ _ _ _// | __| _ ___ __| |_ / __|_ _ _ _ _ __| |_ ___ | | (_) |__// | _| '_/ -_|_-< ' \ | (__| '_| || | '_ \ _/ _ \ | |__| | '_ \// |_||_| \___/__/_||_| \___|_| \_, | .__/\__\___/ |____|_|_.__/// |__/|_|///* Copyright (C) 2022 - Renaud Dubois - This file is part of FCL (Fresh CryptoLib) project///* License: This software is licensed under MIT License///* This Code may be reused including license and copyright notice.///* See LICENSE file at the root folder of the project.///* FILE: FCL_elliptic.sol///*///*///* DESCRIPTION: modified XYZZ system coordinates for EVM elliptic point multiplication///* optimization///*//**************************************************************************************///* WARNING: this code SHALL not be used for non prime order curves for security reasons.// Code is optimized for a=-3 only curves with prime order, constant like -1, -2 shall be replaced// if ever used for other curve than sec256R1// SPDX-License-Identifier: MITpragma solidity >=0.8.19 <0.9.0;library FCL_Elliptic_ZZ {// Set parameters for curve sec256r1.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.2) (utils/Base64.sol)pragma solidity ^0.8.20;/*** @dev Provides a set of functions to operate with Base64 strings.*/library Base64 {/*** @dev Base64 Encoding/Decoding Table* See sections 4 and 5 of https://datatracker.ietf.org/doc/html/rfc4648*/string internal constant _TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";string internal constant _TABLE_URL = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";/*** @dev Converts a `bytes` to its Bytes64 `string` representation.*/function encode(bytes memory data) internal pure returns (string memory) {return _encode(data, _TABLE, true);}/*** @dev Converts a `bytes` to its Bytes64Url `string` representation.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;/// @notice Library for converting numbers into strings and other string operations./// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibString.sol)/// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/LibString.sol)////// @dev Note:/// For performance and bytecode compactness, most of the string operations are restricted to/// byte strings (7-bit ASCII), except where otherwise specified./// Usage of byte string operations on charsets with runes spanning two or more bytes/// can lead to undefined behavior.library LibString {/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*//* CUSTOM ERRORS *//*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*//// @dev The length of the output is too small to contain all the hex digits.error HexLengthInsufficient();/// @dev The length of the string is more than 32 bytes.error TooBigForSmallString();/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*//* CONSTANTS *//*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/
1234567891011121314151617181920212223242526{"remappings": ["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","FreshCryptoLib/=lib/webauthn-sol/lib/FreshCryptoLib/solidity/src/","account-abstraction/=lib/account-abstraction/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","p256-verifier/=lib/p256-verifier/","safe-singleton-deployer-sol/=lib/safe-singleton-deployer-sol/","solady/=lib/solady/src/","webauthn-sol/=lib/webauthn-sol/src/"],"optimizer": {"enabled": true,"runs": 9999999},"metadata": {"useLiteralContent": false,"bytecodeHash": "ipfs","appendCBOR": true},"outputSelection": {"*": {"*": [
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes","name":"owner","type":"bytes"}],"name":"AlreadyOwner","type":"error"},{"inputs":[],"name":"Initialized","type":"error"},{"inputs":[{"internalType":"bytes","name":"owner","type":"bytes"}],"name":"InvalidEthereumAddressOwner","type":"error"},{"inputs":[{"internalType":"uint256","name":"key","type":"uint256"}],"name":"InvalidNonceKey","type":"error"},{"inputs":[{"internalType":"bytes","name":"owner","type":"bytes"}],"name":"InvalidOwnerBytesLength","type":"error"},{"inputs":[],"name":"LastOwner","type":"error"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"NoOwnerAtIndex","type":"error"},{"inputs":[{"internalType":"uint256","name":"ownersRemaining","type":"uint256"}],"name":"NotLastOwner","type":"error"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"SelectorNotAllowed","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"UnauthorizedCallContext","type":"error"},{"inputs":[],"name":"UpgradeFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"bytes","name":"expectedOwner","type":"bytes"},{"internalType":"bytes","name":"actualOwner","type":"bytes"}],"name":"WrongOwnerAtIndex","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"owner","type":"bytes"}],"name":"AddOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"owner","type":"bytes"}],"name":"RemoveOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"REPLAYABLE_NONCE_KEY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"addOwnerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}],"name":"addOwnerPublicKey","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"functionSelector","type":"bytes4"}],"name":"canSkipChainIdValidation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"domainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"entryPoint","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct CoinbaseSmartWallet.Call[]","name":"calls","type":"tuple[]"}],"name":"executeBatch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"calls","type":"bytes[]"}],"name":"executeWithoutChainIdValidation","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"uint256","name":"callGasLimit","type":"uint256"},{"internalType":"uint256","name":"verificationGasLimit","type":"uint256"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"maxPriorityFeePerGas","type":"uint256"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct UserOperation","name":"userOp","type":"tuple"}],"name":"getUserOpHashWithoutChainId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"$","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"owners","type":"bytes[]"}],"name":"initialize","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwnerAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"account","type":"bytes"}],"name":"isOwnerBytes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}],"name":"isOwnerPublicKey","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"result","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextOwnerIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"ownerAtIndex","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"bytes","name":"owner","type":"bytes"}],"name":"removeLastOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"bytes","name":"owner","type":"bytes"}],"name":"removeOwnerAtIndex","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removedOwnersCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"name":"replaySafeHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"uint256","name":"callGasLimit","type":"uint256"},{"internalType":"uint256","name":"verificationGasLimit","type":"uint256"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"maxPriorityFeePerGas","type":"uint256"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct UserOperation","name":"userOp","type":"tuple"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"uint256","name":"missingAccountFunds","type":"uint256"}],"name":"validateUserOp","outputs":[{"internalType":"uint256","name":"validationData","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Loading...
Loading
Loading...
Loading
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.