Я с такой задачей еще не сталкивался, но вижу, что пока вообще никто не ответил.
Постараюсь помочь.
С уверенностью можно сказать то, что "копать" нужно в сторону анализа транзакций.
Транзакция в результате которой был создан смарт-контракт выглядит вот так
https://ropsten.etherscan.io/tx/0x5aa752d86932b36e...
Обратите внимание на поле "To"
Не исключаю, что если правильно декодировать поле "Input Data" - также можно получить информацию о том, что в этой транзакции должен создаться смарт-контракт.
Т.е. определить, что в результате этой транзакции создаётся смарт-контракт и после этого взять его адрес из поля To.
Знаю три варианта, которые можно рассмотреть для поиска решения:
1)
https://docs.etherscan.io/, это бесплатное API от Ethereum (то, что на скриншотах).
2)
https://infura.io, там, при помощи библиотек от эфира
github.com/ethereum/go-ethereum я вычитывал транзакции и декодировал input data. Также там можно делать подписки.
3) можно попробовать поставить ноду эфира к себе на сервер и библиотеками эфира подключаться уже к ней, вместо infura.io и анализировать логи. Этот вариант имеет смысл только если вам не подходит ни etherscan.io, ни infura.io
Надеюсь это вам поможет.