Encyclopedia Ethereum · Entry 109
Calldata: the bytes sent to an Ethereum contract
In this article
At a glance
Key facts
| Fact | Detail | Source |
|---|---|---|
| Selector | The first four bytes of a conventional ABI function call identify a function signature. | [1] |
| Arguments | Arguments follow the selector using ABI encoding rules. | [1] |
| Value | The transaction’s ETH value and input data are distinct fields. | [2] |
A zero-value transaction can still change assets
Calling approve can authorize a spender without sending ETH as transaction value. Calling a token’s transfer function expresses its recipient and amount in arguments rather than in the transaction’s ETH-value field.
A wallet summary that shows “0 ETH” therefore does not fully describe the requested action. Read the destination contract, function and arguments.
An ABI is a decoding schema, not a safety certificate
Static and dynamic argument types use different encoding rules. Strings and arrays involve lengths and offsets; arbitrary bytes cannot be reliably interpreted by guessing where an address appears.
A four-byte selector can collide across different signatures. A plausible decoded label is stronger when paired with the correct verified implementation and ABI.
Input is different from contract storage
Call input supplies data for execution. A contract may use it to update persistent state, but simply placing bytes in calldata is not the same as writing a named state variable.
Transaction input included in a public chain can be inspected by others. It should not be treated as a private message to the contract.
Direct answers
Questions people ask
Can I understand any transaction just from its selector?
No. You need the arguments, destination code and relevant state, and a selector is not globally unique. Nested calls and proxy execution can add further context.
Inspect the evidence
The answer and key facts have stable claim links. These records retain the scope and qualification when reused.
Calldata is the input data supplied to an Ethereum call. For a conventional ABI-encoded function call, it begins with a four-byte selector followed by encoded arguments. The bytes can request powerful actions even when the transaction transfers zero ETH. Decoding requires the correct interface and execution context.
Scope: Ethereum · data through 2026-10-02. Verification: verified · 2026-10-02T18:12:41.505Z.
Link to this claimSelector: The first four bytes of a conventional ABI function call identify a function signature.
Scope: Ethereum · data through 2026-10-02. Verification: verified · 2026-10-02T18:12:41.505Z.
Link to this claimArguments: Arguments follow the selector using ABI encoding rules.
Scope: Ethereum · data through 2026-10-02. Verification: verified · 2026-10-02T18:12:41.505Z.
Link to this claimValue: The transaction’s ETH value and input data are distinct fields.
Scope: Ethereum · data through 2026-10-02. Verification: verified · 2026-10-02T18:12:41.505Z.
Link to this claimRevision history
- — First publication after primary-source research and independent automated verification.
Source register
Sources and references
Retrieval dates and locators are recorded individually.- Contract ABI SpecificationSolidity contributors
ABI encoding, selectors, event topics and event data.
Locator: Function Selector; Argument Encoding; Events; Errors; JSON · Version / scope: Solidity 0.8.30 documentation · Retrieved: 2026-10-02T17:03:42.824ZOpen source - Ethereum transactionsethereum.org contributors
Signed transaction fields, nonces, propagation, inclusion and transaction types.
Locator: The transaction lifecycle; Typed transaction envelope · Retrieved: 2026-10-02T17:03:41.854ZOpen source - ERC-20 Token StandardEthereum Improvement Proposals
Token supply, displayed units and balance accounting.
Locator: totalSupply; balanceOf; transfer; decimals; approve; allowance; transferFrom; Transfer · Version / scope: ERC-20 · Retrieved: 2026-10-02T17:03:45.826ZOpen source - Layout of State Variables in Storage and Transient StorageSolidity contributors
Persistent storage slots, packing and mappings.
Locator: Layout of State Variables; Mappings and Dynamic Arrays · Version / scope: Solidity 0.8.30 documentation · Retrieved: 2026-10-02T17:03:42.820ZOpen source - Ethereum JSON-RPCethereum.org contributors
RPC response fields, transaction receipts, call simulation and log filtering.
Locator: eth_getTransactionByHash; eth_getTransactionReceipt; eth_call; eth_getLogs; eth_getCode; eth_estimateGas; eth_getBalance; eth_getStorageAt; eth_getTransactionCount; default block parameter · Retrieved: 2026-10-02T17:03:42.060ZOpen source - Proxy contractsOpenZeppelin
Proxy implementation slots, delegated execution and upgrade authority.
Locator: TransparentUpgradeableProxy; UUPSUpgradeable; ERC1967Proxy · Version / scope: OpenZeppelin Contracts 5.x · Retrieved: 2026-10-02T17:03:43.024ZOpen source
Research and drafting use AI assistance. A separate automated review checks claims against primary sources; no external expert or named human review is implied. Publication, substantive editing, source retrieval and verification are recorded separately. This version was independently checked by an automated reviewer on 2 October 2026.
Editorial method and correctionsDegrees of Satoshi editorial project. “Calldata: the bytes sent to an Ethereum contract.” Published 2026-10-02; updated 2026-10-02. https://degreesofsatoshi.com/encyclopedia/ethereum-calldata/