1

I need to frequently check a large number of addresses for transactions on them (i.e. whether the address is active) and do it as quickly as possible. I plan to download a dump of addresses with transactions from the blockchair site (https://gz.blockchair.com/ethereum/addresses), and constantly update it with new blocks (adding to and from addresses). Is this a good solution, or is there a better way?

2 Answers 2

0

Alchemy has a very useful endpoint for that and you wont need to store/download data.

2
  • this solution is not exactly fast, the free alchemy key, if I'm not mistaken, has a limit of 330 requests per second. Even if I use multiple keys, I will be limited in waiting for responses (even in multi-threaded mode).
    – Cosmo773
    Commented Feb 9, 2023 at 6:36
  • True, its not very fast but you only have to do it once and then keep listening for new events in real time. Also, you can track the transfers of erc20 tokens and nfts which are not exposed by the external transactions. Commented Feb 9, 2023 at 22:24
0

I'm going to assume that you are interested in scraping directly from the chain. There are various third-party solutions which you could use, but as these services often either come and go, are of varying utility, and often placed behind paid service, it would seem more evergreen and true to the nature of this StackExchange to discuss scraping directly from a node.

This will depend on your definition of a transaction being "on" an address.

If you mean if the address has ever originated a transaction (it's the tx.origin), then you could check the address's nonce. The Ethereum site talks about this field here, and I found a Medium article here after a quick search, but it looks like it's a Premium article, so beware if you're saving your three free monthly for something else. Note that the nonce might not reflect precisely how many transactions the address has originated if it is non-zero, since numbers can be skipped.

You could also mean to include transactions made to the address. This would require scraping transactions and checking the to field in each one. This will need archive node data.

If you are going down this route, I would recommend looking into Trueblocks. Trueblocks is a fully open-source suite that runs on top of a node (preferably one run locally) which is geared to making scraping information like this simpler.

The need for something like Trueblocks becomes much more evident as we progress further along what it can mean for an address to be "in" a transaction. An address can be a part of a transaction without being the from or to of a transaction. One common way this happens is if an EOA (the from) calls a contract (the to), and that contract calls another contract before exiting the function. (This happens anytime a proxy is called - the proxy DELEGATECALLs the implementation before returning.) You'll need not just basic transaction information in order to scrape all instances, but rather the entire trace of the transaction, all of the subcalls that happened in the context of a transaction. The most popular form of this kind of trace is sometimes called a Parity-style trace, as the Parity client (discontinued after being renamed to Open Ethereum) introduced an API/module called trace which supplied this functionality. Traces can get quite large, and having something like Trueblocks becomes incredibly useful. If this is your usecase, you may want to consider renting a server to run your client.

Another case of an address that could be considered to be a part of a transaction, but still would not be the from or to is the recipient of an ERC20/721/1155 transfer, for example. The sender (from) calls the token contract (to), hitting a transfer function and inputting the recipient's address, but the transaction does not interact with the recipient's address at all. I do not have an easy solution for checking for this. (It may be worth pointing out that Etherscan does have this in their API, and I suspect that means others will too.) Scanning events would be one way of attempting this, but know that events can be spoofed, potentially rendering data inaccurate.

Hope this helps!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.