Ordinary result data begins with the output tuple encoding.
LET’S PICTURE IT
A response form does not need to repeat the short action label that already selected the request.
SEE IT FOR YOURSELF
Build a transfer call from typed fieldsStep 1 / 4
The standard transfer interface takes an address and a raw integer amount. This diagram uses address one and amount one hundred.
The standard transfer interface takes an address and a raw integer amount. This diagram uses address one and amount one hundred.Keccak-256 of the canonical signature supplies the first four bytes. The transfer selector is a9059cbb.An address is twenty bytes. Standard ABI encoding adds twelve zero bytes on the left to fill one thirty-two-byte word.The integer one hundred is hex 64, left-padded in word one. Selector plus two words produces sixty-eight bytes of standard calldata.
Animated local teaching model. No wallet, RPC or live blockchain data. Some labels and hashes are abbreviated for readability.
Know the output schema
A function returning uint256 provides a standard encoded output word. Return data is decoded using known outputs, not by guessing a function name from the first four bytes.
Do not strip a nonexistent selector
Removing four bytes from a normal return value shifts its alignment and loses data. Function calldata, ordinary results, events and errors use related encoding rules with different framing.
Dynamic outputs still use offsets
A string return is an output tuple with dynamic head and tail behavior. The absence of a selector does not eliminate dynamic layout.
Keep call outcome separate
A failed low-level call can return revert bytes rather than successful output data. Check the call’s success context before choosing which schema to decode.
Follow the bytes
types: uint256
values: ["42"]
no function selector prefix
word 0 · argument offset 0 bytes
0x000000000000000000000000000000000000000000000000000000000000002a