SoyFinance / smart-contracts

11 stars 9 forks source link

BugBounty: Ошибка в данных у некоторых транзакций #6

Closed Upaut1 closed 3 years ago

Upaut1 commented 3 years ago

Объясню на примере двух торговых транзакций. первая транзакция использует функцию 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, ) имеют неправильные данные

yuriy77k commented 3 years ago

Параметры кодируются согласно спецификации: https://docs.soliditylang.org/en/v0.6.10/abi-spec.html Там нет ошибки

Upaut1 commented 3 years ago

Да, согласен с Вами. Посмотрел спецификацию, как оказалось это не размерность адреса, а смещение до данных. Тема закрыта.