У меня есть паритетный узел. Поверх него я разработал интерфейс web3.js.
У меня есть API, чья работа заключается в получении балансов адресов и транзакций.
Пример ответа API транзакции:
{ tx_hash: '0xc4a2db4211686f740885ad72ef5d424f5ba6d953d583ef39382e7c1c594ecab7',
nonce: 0,
block_hash: '0xf2b173625cf874387302295f408ef0876c04e5778e6ccacec63fe28ff268f9a3',
block_number: 5955478,
transaction_index: 184,
from: '0xAcc7662daDfCE9dA2C0d8ef7867C15A262c762D7',
to: '0x3495Ffcee09012AB7D827abF3E3b3ae428a38443',
value: '0',
time: '1531467099 Fri, 13 Jul 2018 07:31:39 GMT',
gas_price: '5000000000',
gas: 37351,
input: '0xa9059cbb000000000000000000000000c5c813994f9142d11d73b47e1437c81e27b4dae3000000000000000000000000000000000000000000000000b469471f80140000' }
Ключ значения предназначен только для передачи ether/wei.
Для токенов ERC20:
to
адрес и сравниваю его со списком поддерживаемых адресов контрактов erc20.contract.send()
)Спасибо, что прочитали мой запрос. Любая помощь будет действительно здорово. Вы можете свободно использовать связанный проект git.
ОБНОВЛЯТЬ
Если мы используем getPastEvents
функцию web3.js и извлекаем все события, то можно выполнить сопоставление со всеми транзакциями, и я смогу каким-то образом выяснить, сколько токенов было доставлено и когда.
Но это будет сложный поток, и он будет осуществляться на основе контракта. Что-нибудь, что может избежать вызова событий и выяснить детали транзакций erc20? что, если контракт не вызывает никакого события?
с помощью ethersjs. Это вернет все журналы передачи для всех токенов в сети.
Под капотом он берет подпись события из ABI, который является первым элементом, необходимым в массиве тем (остальные необязательные аргументы — это индексированные аргументы события).
Затем он выполняет вызов RPC для этих событий на узел, который вы указали при создании поставщика.
При успешном ответе он анализирует полученные данные в шестнадцатеричном кодировании обратно в удобочитаемые данные путем чтения типов из ABI.
const provider = new providers.JsonRpcProvider('http...')
const event = (new Interface(StandardToken.abi)).events.Transfer
const topics = [event.topics[0]]
let logs = await provider.getLogs({
fromBlock: 1,
toBlock: 'latest',
topics: topics
})
logs = logs.map(log => event.parse(log.topics, log.data))
natewelch_