Closed Upaut1 closed 3 years ago
Параметры кодируются согласно спецификации: https://docs.soliditylang.org/en/v0.6.10/abi-spec.html Там нет ошибки
Да, согласен с Вами. Посмотрел спецификацию, как оказалось это не размерность адреса, а смещение до данных. Тема закрыта.
Объясню на примере двух торговых транзакций. первая транзакция использует функцию swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline), рассмотрим входные HEX-данные у этой транзакции:
0x38ed1739000000000000000000000000000000000000000000000000002386f26fc10000000000000000000000000000000000000000000000000000008233e9f4177c9100000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000fc8f3324b6d71d14bfd625ecdbd18f3bc29a9935000000000000000000000000000000000000000000000000000000006134ebc200000000000000000000000000000000000000000000000000000000000000030000000000000000000000006182d2cd59227c20b486a53976dceeaf38e76eed000000000000000000000000c63c95d1d4f945141fe86ef978d6b99b8e3905d50000000000000000000000001eaa43544daa399b87eecfcc6fa579d5ea4a6187
В этих данных указано что адреса 20-байтовые (значение a0, что выделено жирным в данных) Если я все правильно понимаю, то здесь все правильно и корректно.
А теперь рассмотрим вторую транзакцию которая использует функцию swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline), теперь рассмотрим входные HEX-данные у этой транзакции:
0x7ff36ab500000000000000000000000000000000000000000000004aab2b57ba67e730cf0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000847ff0613ea669314dd5e295ebd48cc3bfc9035800000000000000000000000000000000000000000000000000000000613595c40000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c63c95d1d4f945141fe86ef978d6b99b8e3905d50000000000000000000000001eaa43544daa399b87eecfcc6fa579d5ea4a6187
В этих данных указано что адреса 16-байтовые (значение 80, что выделено жирным в данных).
Если я все правильно понимаю, то торговые функции где используется CLO в качестве входа (swapETHForExactTokens, swapExactETHForTokens, ) имеют неправильные данные