Encyclopedia Ethereum · Entry 110
Function selectors: the first four bytes of a contract call
In this article
At a glance
Key facts
Types matter, argument values do not
The signature transfer(address,uint256) describes a method name and types. A particular recipient and amount belong in the arguments that follow the selector. Overloaded functions with different parameter types have different canonical signatures, though collisions remain possible.
Canonical type spelling matters: ABI hashing uses the canonical form, such as uint256 rather than an informal shorthand.
The destination decides what the bytes do
A contract may dispatch on the selector, use a fallback path or delegate execution through a proxy. A method-name database provides a possible interpretation, not proof that the destination implements that method honestly.
Pair the selector with the correct code, ABI and proxy implementation. Familiar names can be implemented with unfamiliar behavior.
A short identifier cannot be globally unique
Four bytes provide a finite identifier space. Different function signatures can map to the same selector, so a decoder may have several candidates.
A wallet should not use a human-readable method label as its only authorization check. The actual target, arguments and resulting permissions remain material.
Direct answers
Questions people ask
Do parameter names change a function selector?
No. The canonical signature uses the function name and parameter types. Renaming a parameter without changing its type does not change that signature.
Inspect the evidence
The answer and key facts have stable claim links. These records retain the scope and qualification when reused.
A conventional Ethereum ABI function selector is the first four bytes of the Keccak-256 hash of the canonical function signature, such as its name and parameter types. It helps a contract dispatch a call. It is only 32 bits, so different signatures can collide; a selector lookup alone cannot establish the intended behavior.
Scope: Ethereum · data through 2026-10-02. Verification: verified · 2026-10-02T18:12:41.505Z.
Link to this claimSize: An ABI function selector is four bytes.
Scope: Ethereum · data through 2026-10-02. Verification: verified · 2026-10-02T18:12:41.505Z.
Link to this claimSignature: The canonical signature includes parameter types, not parameter names.
Scope: Ethereum · data through 2026-10-02. Verification: verified · 2026-10-02T18:12:41.505Z.
Link to this claimReturns: Return types are not part of the function selector.
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 - 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. “Function selectors: the first four bytes of a contract call.” Published 2026-10-02; updated 2026-10-02. https://degreesofsatoshi.com/encyclopedia/function-selectors/