Learn
Glossary
Short definitions, with a C-Chain example where one helps. See How it works for context and Versions for version details.
Account abstraction (AA). Letting an account's validation rules (signature scheme, limits, who pays gas) be arbitrary contract code instead of the protocol's fixed "one secp256k1 key" rule.
actualGasCost. The amount, in wei, the EntryPoint charged one UserOperation: actualGasUsed × min(maxFeePerGas, maxPriorityFeePerGas + basefee). It comes out of the paymaster's or account's deposit and goes to the beneficiary. It is reported in UserOperationEvent. It is not the outer receipt fee, and you should not add it to the receipt fee.
actualGasUsed. Gas attributed to one op, including its preVerificationGas allowance and any unused-gas penalty. It can exceed the outer receipt's gas_used share.
AccountDeployed. EntryPoint event (userOpHash, sender, factory, paymaster) emitted when initCode created the account. This is the reliable deployment signal.
Aggregator. An optional contract that validates many ops' signatures together, called via handleAggregatedOps. No direct use was seen on C-Chain from 2025-01-01 to 2026-10-18.
AAxx codes. EntryPoint revert reasons. AA1x = account creation, AA2x = account validation, AA3x = paymaster validation, AA9x = bundle-level problems. A validation-time AA error reverts the whole bundle.
Alt mempool / UserOperation mempool. The off-chain P2P pool where bundlers share UserOperations. It is not visible on chain.
BeforeExecution. EntryPoint event marking the end of the validation loop. Logs before it are validation (deployments, sponsorship). Logs after it are execution.
Beneficiary. The last argument of handleOps: the address the EntryPoint pays Σ actualGasCost to at the end of the bundle, with no event. It is usually the bundler itself (1,391 of 1,396 outers on Oct 18).
Bundle. One outer transaction calling handleOps with one or more UserOperations.
Bundler. The EOA that sends the outer transaction and pays native gas up front (tx.from). Example: 0x4337005db25dbad41da5692ba1188751ee5d98b6 evidence level: hint. A 0x4337… vanity prefix suggests bundler software but does not identify the operator.
callData (of an op). The bytes the EntryPoint passes to the account, e.g. execute(target,value,data), executeBatch(...), or ERC-7579 execute(bytes32 mode, bytes). Decoding it is how you find the target apps.
Deposit (EntryPoint). AVAX that an account or paymaster holds inside the EntryPoint to pay future ops. It is topped up with depositTo (selector 0xb760faf9) and debited per op without an event.
EIP-712 userOpHash. The v0.8/v0.9 way of hashing an op, as typed data with domain ERC4337, version 1, chainId and the EntryPoint address. v0.6/v0.7 use a plain abi.encode + EntryPoint + chainId hash.
EIP-7702. Lets an EOA delegate its code to a contract (type-4 transaction). From v0.8 the EntryPoint accepts such EOAs as senders (initCode marker 0x7702). That is a capability; it was not observed on Oct 18.
EntryPoint. The singleton contract that validates, executes and settles UserOperations. On C-Chain: v0.6 0x5ff137d4…2789 evidence level: primary source, v0.7 0x00000000…a032 evidence level: primary source, v0.8 0x4337084d…f108 evidence level: primary source, v0.9 0x43370900…d009 evidence level: primary source.
ERC-4337. The standard defining UserOperations, the EntryPoint, bundlers, paymasters and factories, all without consensus changes. https://eips.ethereum.org/EIPS/eip-4337
ERC-7579. A modular smart-account standard. Its execute(bytes32 mode, bytes executionCalldata) (selector 0xe9ae5c53) encodes single vs batch calls in the first mode byte (0x00 single, 0x01 batch). Used by ZeroDev Kernel v3.
Execution window. The logs between BeforeExecution (or the previous op's UserOperationEvent) and this op's UserOperationEvent: what the op's execution emitted.
Factory. The contract that deploys a smart account at a precomputed (CREATE2) address. Example: ZeroDev meta factory 0xd703aae79538628d27099b8c4f621be4ccd142d5 evidence level: primary source.
handleOps. The EntryPoint function a bundler calls. Selector 0x1fad948c (v0.6) or 0x765e827f (v0.7/v0.8/v0.9).
initCode. factory address (20 bytes) ‖ factory calldata. Empty if the account already exists. In v0.9 a non-empty initCode for an existing account is ignored, so count deployments by AccountDeployed.
Inner vs outer success. Outer = the transaction receipt status. Inner = UserOperationEvent.success for each op. An outer can succeed with a failed op (e.g. 0x77b4647e…1777 explained →). An op can succeed while its account swallowed a failed sub-call.
Nonce (UserOperation). 256 bits = 192-bit key + 64-bit sequence. The key lets one account run parallel ordered streams. Some wallets also encode data in it (e.g. Kernel's validator selection). The Oct 18 probe accounts used a fresh key with sequence 0 for every op.
PackedUserOperation. The 9-field on-chain op struct of v0.7+. Four gas values are packed into accountGasLimits and gasFees (two uint128s each).
Paymaster. A contract that agrees, in validatePaymasterUserOp, to pay an op's gas from its EntryPoint deposit. It may charge the user later in postOp. Example: Pimlico v0.7 0x777777777777aec03fd955926dbf81597e66834c evidence level: primary source.
paymasterAndData. The paymaster address followed by data. v0.6: [0:20] address. v0.7+: [0:20] address, [20:36] validation gas limit, [36:52] postOp gas limit, [52:] paymaster-defined data. v0.9 adds an optional signature suffix ending in 0x22e325a297439656.
Paymaster mode (Pimlico). Verifying (0): an off-chain signer approves sponsorship and nothing is charged on chain. ERC-20 (1): tokens are pulled from the account in postOp and sent to a settlement recipient.
postOp. Paymaster hook run after execution, if validatePaymasterUserOp returned a context. Used, for example, for token charging.
preVerificationGas. Gas the op pays the bundler for overhead the EntryPoint can't meter (calldata, bundle base cost).
Prefund. The maximum possible cost (all gas limits × maxFeePerGas) locked from a deposit during validation. The unused part is refunded after execution.
Receipt fee. gas_used × effective_gas_price of the outer transaction, paid by the bundler to the chain. Count it once per outer.
Sender. The smart account an op acts for; topic2 of UserOperationEvent. It is an address, not a person.
Signer. The key whose signature the account accepts. You recover it from op.signature plus the correct version's userOpHash and the account's signing scheme. It proves key control, not identity.
Sponsorship. A paymaster paying an op's AVAX gas. It does not mean the user paid nothing.
Target / leg. One call the account makes on the op's behalf. A batch has several legs. Fees cannot be split per leg and summed.
UserOperation. A signed request from a smart account: "do this callData, within these gas limits, paid this way". v0.6 uses an 11-field struct, v0.7+ a 9-field packed one.
UserOperationEvent. EntryPoint event (userOpHash, sender, paymaster, nonce, success, actualGasCost, actualGasUsed), one per op. This is the primary record of an op.
userOpHash. The op's identity: hash of all fields except the signature, plus EntryPoint and chainId (EIP-712 in v0.8+). It is topic1 of UserOperationEvent and AccountDeployed. Join ops to events by this hash, not by position.
validationData. Return value of validateUserOp/validatePaymasterUserOp, packing signature-failure/aggregator, validUntil and validAfter.