Я использую Etherscan API для получения транзакций и других сведений об адресах.
Мне нужно узнать нет. токенов, переданных между двумя адресами. Для примера - для ниже TxHash я вижу, что передано 1564+ токена. Когда я использую этот вызов API, я вижу from
и to
адресую, но не значение токена.
Вот результат json от вашего вызова API:
{
jsonrpc: "2.0",
id: 1,
result: {
blockHash: "0x8fe66b0c15a1c1155338bb5628db55f05cfe72d1194931134b4721cd07e9eda7",
blockNumber: "0x416850",
from: "0x167a9333bf582556f35bd4d16a7e80e191aa6476",
gas: "0x13880",
gasPrice: "0x4e3b29200",
hash: "0x03430ecdf52d37a8d3645fa9b19c072ec367edbd0d4eba3cc1c7f7c5e7dcc7d2",
input: "0xa9059cbb0000000000000000000000007a2641bb2fb31ccd33ba5488c886c3bc4714ec6b000000000000000000000000000000000000000000000054ca7578dcf8bb7aa0",
nonce: "0x15a82",
to: "0x9a642d6b3368ddc662ca244badf32cda716005bc",
transactionIndex: "0x2a",
value: "0x0",
v: "0x25",
r: "0x790a06d5773006ecbc719354d966d100470e6267a68d3446ca0ebfd8df4452b5",
s: "0x4e58eb2997a3c8add1386a47a71ac5bb915a2a53343883ea1ea4d8e69a6be486"
}
}
Пожалуйста, обратите внимание на поле ввода:
Первые 4 байта — это хэш метода:
a9059cbb
Следующие 32 байта — целевой адрес:
0000000000000000000000007a2641bb2fb31ccd33ba5488c886c3bc4714ec6b
Последние 32 байта — это значение переданных токенов ERC20:
000000000000000000000000000000000000000000000054ca7578dcf8bb7aa0
0x54ca7578dcf8bb7aa0 = 1,5641152016500001e+21
Учитывая, что txtid
можно получить журналы транзакций через web3, используя getTransactionReceipt()
функцию .
В качестве альтернативы вы можете использовать этот API, предоставляемый etherscan.io: https://etherscan.io/apis#logs .
Не забудьте установить правильную тему, как указано в этом другом ответе: Что такое темы [0] в журналах событий?
@jun.wu,
x54ca7578dcf8bb7aa0 = 1,5641152016500001e+21
Как вы пришли к такому выводу? Есть какая-то формула или что?
Дмитрий Зеленянский
Мангеш