Just adding to the previous answer to help people understand how to interpret the encoding.
The call data is composed of 2 parts :
- Function selector (4 first bytes)
- Parameters (everything after the 4 first bytes)
The function selector is the 4 first bytes of the keccack-256 of the function signature hash:
The function: withdraw(uint256 _amount)
signature is withdraw(uint256)
:
keccack256 of withdraw(uint256)
is :
2e1a7d4d13322e7b96f9a57413e1525c250fb7a9021cf91d1540d5b69f16a49f
The first 4 bytes are : 2e1a7d4d
matching the first 4 bytes of your calldata.
Next, we know from the signature that this function accepts one parameter of type uint256 (so 32 bytes).
This parameter is encoded in the call data as : 000000000000000000000000000000000000000000000001158e460913d00000
converting this Hex representation to decimals we get :
20000000000000000000
So we can conclude that the calldata targetted the withdraw function with an amount of 20000000000000000000
as parameter.