# ABI ## 4byte Search for the function signature corresponding to the 4byte selector at https://openchain.xyz/signatures. ``` peth > 4byte 0xa9059cbb transfer(address,uint256) peth > 4byte transfer(address,uint256) 0x0e0c3f58 super_transfer(address,uint256) 0x0f822b78 admin_transfer(address,uint256) 0x1c6a866c Collect_accrued_interest_and_transfer(address,uint256) 0x429393ba beforetransfer(address,uint256) 0x4847a79c _transfer(address,uint256) 0x494e4bc3 fundtransfer(address,uint256) 0x52ec8a58 mint_and_transfer(address,uint256) 0x7f0cd33c ApproveAndtransfer(address,uint256) 0x82d04bd4 _complianttransfer(address,uint256) 0xa9059cbb transfer(address,uint256) 0xbb36a233 customtransfer(address,uint256) 0xef0f2365 approve_transfer(address,uint256) 0xfd1e582d ownertransfer(address,uint256) 13 item(s) found in 4byte.json. Full match: 0xa9059cbb transfer(address,uint256) ``` ## abi_encode Input the method signature and parameters, and output the bytes after `abi.encode` encoding. ``` peth > abi_encode test(uint256,string,address,string) 0x1000 "AAAA" 0x418e63cab75812661b055e111336dfc32951135d "BBBB" 0xeb7f0ebe00000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000418e63cab75812661b055e111336dfc32951135d00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000004414141410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044242424200000000000000000000000000000000000000000000000000000000 ``` ## abi_decode After identifying the function signature based on the selector, print the decoded result. ``` peth > abi_decode 0xa9059cbb000000000000000000000000418e63cab75812661b055e111336dfc32951135d000000000000000000000000000000000000000000000000000000000c28cb00 Method: function transfer(address arg0, uint256 arg1) returns () Arguments: arg0 : 0x418e63cab75812661b055e111336dfc32951135d arg1 : 204000000 ``` If the corresponding signature cannot be found, the parameter types are automatically inferred. ``` peth > abi_decode 0xeb7f0ebe00000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000418e63cab75812661b055e111336dfc32951135d00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000004414141410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044242424200000000000000000000000000000000000000000000000000000000 No signature found for selector 0xeb7f0ebe. Guessing types ... [0] +0x0 uint256 4096 (0x1000) [1] +0x20 string AAAA // offset 0x80 length 4 [2] +0x40 address 0x418e63cab75812661b055e111336dfc32951135d [3] +0x60 string BBBB // offset 0xc0 length 4 [4] +0x80 uint256 4 (0x4) [5] +0xa0 unknown 0x4141414100000000000000000000000000000000000000000000000000000000 [6] +0xc0 uint256 4 (0x4) [7] +0xe0 unknown 0x4242424200000000000000000000000000000000000000000000000000000000 ``` 也可直接指定签名进行解码。 ``` peth > abi_decode 0xeb7f0ebe00000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000418e63cab75812661b055e111336dfc32951135d00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000004414141410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044242424200000000000000000000000000000000000000000000000000000000 test(uint256,string,address,string) Method: function test(uint256 arg0, string arg1, address arg2, string arg3) returns () Arguments: arg0 : 4096 arg1 : AAAA arg2 : 0x418e63cab75812661b055e111336dfc32951135d arg3 : BBBB ```