July 20, 2022

Декомпиляция транзакции

Всем привет! С вами Тёма!

Сегодня мы попробуем научиться читать дату из транзакции

Начнем

Сразу с примерам. Возьмем ЭТУ транзакция перевода USDT и пролистаем вниз, там мы увидим такую картину

Это и есть та самая дата!

Вроде все очевидно, есть функция Transfer, написана её сигнатура (MethodID) и переменные которые в нее вносятся, но это потому что что эфирскан делает эту работу за нас, тем более что мы можем привести это к еще более человеческому виду и получить такое:

Теперь мы точно понимаем что тут происходит: перевод $1,595.46 на адресс 0x9bD2477ad6e13aa42b19607df620Da026846b040

Я думаю тут все справились и это было не сложно, но давайте теперь посмотрим на эту же транзакцию в традиционном формате, в котором её видит эфирскан

И тут уже все выглядит не так радужно и позитивно, ведь придется думать самим!

Декомпиляция

Лично я провожу этот процесс всегда следующим образом:

  • Копирую себе в текстовик дату и выделяю сигнатуру (первые 10 символов), а остальную строку разбиваю по 64 символа
  • Пытаюсь найти эту сигнатуру дату через https://www.4byte.directory/
  • Начинаю искать референсы на эфирскане и подписывать их рядом с каждой строкой
  • Если остаются неопознанные строки, то просто логически пытаемся понять что они значат

Давайте сейчас пробежимся по этим шагам

После первого пункта все должно выглядеть примерно так

На втором пункте находим функцию по её сигнатуре

А на третьем пункте наш текстовик будет выглядеть так

Четвертый пункт нам не понадобится, ведь транзакция оказалась очень простой

Готово! Теперь мы знаем что происходит в этой транзакции!

Не забывайте что числа в дате находятся в 16 системе счисления!

Зачем нам это!

Данная статья была основана на примере очень простой транзакции с общеизвестной функцией и верефнутым контрактом, но теперь представим что у нас есть транзакция, которую мы хотим понять, а о ней ничего не известно кроме этой самой даты. Тут и вступает в дело наша декомпиляция, которая поможет нам понять логику и суть транзакции, а иногда и логику не верефнутого контракта, что тоже может быть очень полезно!

Для более глубоко погружения советую внимательно прочитать все мои стать про EVM!

Надеюсь статья была интересной и понятной!

Мой телеграмм канал - https://t.me/ortomich_crypto