May 7, 2022

Как стать он-чейн детективом


Перевод подготовлен каналом "С нуля до нуля на крипте"
Автор: TheDEFIac
Оригинал: https://twitter.com/TheDEFIac/status/1512983745988419588

Хотите стать он-чейн детективом? Тогда прочтите эту статью.

Я учился всему нижесказанному год и решил поделиться некоторыми знаниями с вами. Они должны научить вас с нуля анализу Ethereum адресов.

Начнем с Etherscan

Он предоставляет огромное количество инструментов. Узнать о том, как пользоваться https://etherscan.io/ можно в этом треде.

После того как вы немного этому научитесь, приступайте к анализу. Проанализировать можно любой кошелек, просто просматривая его он-чейн активность.

Если кошелек не особо активный, то Etherscan будет достаточно.

На что бы я обратил внимание:

Является ли адрес смарт-контрактом, мультисигом или обычным кошельком?

Какие токены он холдит?

С какими адресами взаимодействует?

Есть ли активность на DEX?

Использует ли флеш-ботов/приватные транзакции?

Чтобы еще сильнее изучить кошелек, можно использовать Breadcrumbs. Этот инструмент визуализирует связи.

Если нужно узнать, что происходит в определенной транзакции, воспользуйтесь Tenderly. Также при помощи него можно смоделировать будущую транзакцию в определенном блоке.

Часто бывает такое, что на Etherscan слишком много информации, которую надо проверять вручную. Из-за этого можно не увидеть полной картины.

Поэтому после того как вы получите представление о том, что это за кошелек и чем он занимается, начните копать глубже.

Переходим к использованию Python/ API Etherscan и Infura

  1. Cоздайте учетную запись на Etherscan.
  2. Перейдите в раздел API ключи и сгенерируйте свой.
  3. Бесплатный тариф в Etherscan дает вам до 3 API-ключей со скоростью до 5 вызовов/сек.

Для Python вы можете использовать https://github.com/pcko1. Установите его и импортируйте библиотеку:

from etherscan import Etherscan

Для того, чтобы проанализировать активность конкретного кошелька мы можем отсортировать транзакции и токен-трансферы. Для этого используем:

eth.get_normal_txs_by_address(address, startblock, endblock, sort)
eth.get_erc20_token_transfer_events_by_address(address, startblock, endblock, sort)

Первая строка показывает до 10000 последних транзакций, а вторая до 10000 последних переводов ERC-20. В чем разница?

"Обычные" транзакции — это все транзакции, которые выбранный адрес либо отправил, либо получил.

А трансферы ERC-20 покажут все переводы токенов ERC-20 в/из. Здесь же будут показаны все ERC-20, переведенные как часть обычной транзакции.

При этом не каждый перевод ERC-20, который приходит или выходит в адрес, является частью "обычной" транзакции.

Например:

Ваш адрес: A

Адрес B отправляет транзакцию смарт-контракту C, который переводит A несколько токенов ERC-20.

Отправитель - B, получатель - C.

Эта транзакция не будет отображаться в обычных транзакциях А. Но будет отображаться в переводах токенов ERC-20.

Вы не сможете получить более 10k записей за один вызов. Можно перебрать блоки, сортировать их на начальные и конечные. И только потом, когда закончите, группировать записи вместе используйте:

tx_df=pd.DataFrame(transactions)

При помощи этого мы создадим фрейм данных, который будет состоять из отсортированной информации.

Далее вы увидите вот такие столбцы обычных транзакций:

['blockHash', 'blockNumber', 'confirmations', 'contractAddress', 'cumulative
GasUsed', 'from', 'gas', 'gasPrice', 'gasUsed', 'hash', 'input', 'isError',
 'nonce', 'timeStamp', 'to', 'transactionIndex', 'txreceipt_status', 'value'] 

То же самое нужно сделать и с переводами токенов ERC-20. И после этого можно приступить к анализу.

Общий объем

Чтобы оценить общий объем используйте бесплатный API Coingecko. Для этого необходимо создать учетную запись и получить API ключ. Coingecko предоставляет бесплатные почасовые сводки по ценам за последние 90 дней.

Этого достаточно, для того чтобы проанализировать общий объем ввода/вывода.

При анализе общего объема или чего-то еще я не рекомендую уходить дальше 1-2 месяцев. Ведь в крипте все меняется очень быстро и более старые данные обычно бесполезны.

Кстати, большую часть работы можно выполнить в Exel.

Переходим к проверке активности на DEX

Etherscan показывает свапы на DEX в браузере, но вы не сможете увидеть их в их API.

Чтобы их достать, нам нужны логи транзакций. В этом нам поможет Infura.

Можно использовать бесплатный уровень, который предоставляет до 100k запросов в день.

Для того, чтобы воспользоваться infura в Python нужно:

from web3 import Web3

w3 = Web3(Web3.HTTPProvider(projectID))

receipt=w3.eth.get_transaction_receipt(trHash)

Из этого вы получаете все необходимые данные, просто нужно понять, что это за информация и как ее хранить.

Можно написать функцию, которая будет по-разному проверять каждый DEX. Затем вы обрабатываете транзакции и получаете все сделки.

В одной транзакции может быть сразу несколько сделок на DEX.

После того, как вы проверили активность на DEX. Единственное, что остается это флешботы.

Проверка активности флешботов

Для этого можно использовать их API, все активности флешботов и объединить их с вашим датафреймом.

Прим. переводчик Тут можно прочитать всё о флэшботах: https://github.com/flashbots/pm

Конечно, в он-чейн аналитике есть и более быстрые способы, но я считаю, что этот тред должен сделать из вас настоящих детективов.

К тому же, крипто-пространству они просто необходимы из-за того, что в здесь не существует никаких правил.

Над переводом работала: @op_posi