Skip to article
Degrees of SatoshiFollow the connections.
Degrees of Satoshi/ Encyclopedia

Encyclopedia Ethereum · Entry 109

Calldata: the bytes sent to an Ethereum contract

Theme
Ethereum
Sources
6 cited records
Reading time
About 3 minutes
Automated verification
Substantive update
In this article

At a glance

Key facts

Key facts for Calldata: the bytes sent to an Ethereum contract
FactDetailSource
SelectorThe first four bytes of a conventional ABI function call identify a function signature.[1]
ArgumentsArguments follow the selector using ABI encoding rules.[1]
ValueThe transaction’s ETH value and input data are distinct fields.[2]
01

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.

02

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.

03

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 claim
Selector: 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 claim
Arguments: 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 claim
Value: 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 claim
Revision history
  1. — First publication after primary-source research and independent automated verification.

Source register

Sources and references

Retrieval dates and locators are recorded individually.
  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
How this article was made

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 corrections

Degrees 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/