Проблема с получением «нормальных» записей транзакций из Etherscan.io API

Я использую метод «Получить список «обычных» транзакций по адресу» из API Etherscan.io. Проблема в том, что результаты API отличаются от результатов «Загрузить экспорт CSV», которые вы получаете на этой странице.

https://etherscan.io/address/0xCeB4d0CA821420Cf2553b9e244F6B52364613F94

Ссылка на API: https://etherscan.io/apis#accounts

Для этого адреса:

0xCeB4d0CA821420Cf2553b9e244F6B52364613F94

Запрос на получение API:

https://api.etherscan.io/api?module=account&action=txlist&address=https://etherscan.io/address/0xCeB4d0CA821420Cf2553b9e244F6B52364613F94&startblock=0&endblock=99999999&sort=asc&apikey=YourApiKeyToken

Проблема в том, что «значение» не соответствует «Value_IN (ETH)» при загрузке данных в виде файла .csv.

В файле .csv результаты выглядят так:

Txhash: 0x1f55419fa826e9d9b5487ce745f22c0d6066cf8da8e02bb84a105f6fcf34f8e2

Значение_IN (ETH): 0,0500459770509325

Файл .csv правильный. Вот что случилось с этим кошельком.

Однако в объекте .json, возвращенном из вызова API, я получаю следующие результаты:

хэш: '0x1f55419fa826e9d9b5487ce745f22c0d6066cf8da8e02bb84a105f6fcf34f8e2'

значение: '50045977050932511'

Я не понимаю, почему эти значения разные. Это что-то в кодировке, что мне не хватает?

Ответы (1)

«значение» возвращается в Wei, базовой единице Ethereum.

В одном Эфире 10^18 Вэй. Итак, чтобы преобразовать вей в эфир, просто разделите его на 10^18.

def convert_wei_to_ether(amount_wei):
    amount_ether = float(amount_wei) / math.pow(10, 18) 
    return amount_ether