Я подключен к узлу Ethereum (под управлением Geth), которым я управляю, и я могу подключиться к нему с помощью RPC. Я могу получить доступ к web3 в терминале после выдачи geth console
. Я могу получить доступ и запустить вызовы функций RPC, как указано в документации здесь . Мне приходится переключаться между разными библиотеками, такими как webpy и web3.js, поэтому реализация в любой из них должна быть в порядке.
Имея хэш транзакции, я могу получить детали транзакции, скажем, с помощью web3.eth.getTransaction(transaction_hash)
. Но все детали, которые я получаю, включают только: hash
, input
, nonce
, from
, to
, transaction_index
, value
, v
, r
, s
.
Что мне интересно, так это то, как этот веб-сайт получает доступ к остальным подробным сведениям о том, сколько токенов было передано. В частности, как мы можем прочитать (учитывая адрес отправителя и контракта, участвующего в транзакции) значение переданных токенов, т.е. параметр value вызова функции ?
Снимок таких деталей с вышеуказанного сайта. ( Как разобраться с передачей токена , показано на рисунке ниже)
Это из поля ввода? Если да, то как интерпретировать шестнадцатеричный код для фактических значений и вызываемой функции?
Скорее всего, они прослушивают события , генерируемые каждым смарт-контрактом, и индексируют их в своей локальной базе данных.
Стандартные смарт-контракты, совместимые с ERC20, генерируют Transfer()
событие при каждой транзакции. Если вы хотите отслеживать все события, генерируемые смарт-контрактом, вы можете подписаться на свой клиент на allEvents.
Чтобы получить доступ к имени вызванной функции, имени параметров функции, типам параметров (uint256, адрес и т. д.) и значению этих параметров, необходимо расшифровать поле «Входные данные». .
Простой способ декодировать входные данные — использовать уже встроенный декодер, такой как ethereum-input-data-decoder .
События не являются надежным способом доступа к этим данным, потому что многие функции контрактов не запускают события, и вы никогда не можете быть уверены, что событие дает вам истинное значение параметров.