Skip to content

Latest commit

 

History

History
35 lines (28 loc) · 2.3 KB

File metadata and controls

35 lines (28 loc) · 2.3 KB

Data Structure in UserOperation.calldata

Offset Field Block Size Note
0 execFromEntryPoint() fs* 4
4 destination address 32 1st param
36 msg.value to send 32 2nd param
68 location of data of func 32 3rd param
100 number of element of bytes func 32 3rd param
132 fs* of target contract to call 4 target call func
136 target func parameter N/A

* fs: function selector

execFromEntryPoint() requires three parameters:

  • address dest: the target contract/ account address.
  • uint256 value: value to be included in this call.
  • bytes func: the data to be handled by target contract. Check how dynamic type is used in parameter.

Note: The parameters are padded to 32 bytes.

Example Case For ERC20 approve()

Offset Field Block Size Note
0 execFromEntryPoint() fs* 4
4 destination address 32 1st param
36 msg.value to send 32 2nd param
68 location of data of func 32 3rd param
100 number of element of bytes func 32 3rd param
132 approve() function selector 4 target call func
136 spender address 32 1st param of approve
168 approve amount 32 2nd param of approve
200 padding 28 padding the last data section to 32 bytes