Returning the preivous global state from smart contract

Hi, thank you for your continuous help! I want to ask some basic questions first to make sure that we are on the same page.

As far as I understand, Algorand is a kind of public ledger where modifications are recorded and visible to everyone. Thus, I am curious about whether it is possible to see modifications for certain round.

We have seen many APIs such as “indexer.account_info” have params of “round_num” which seems to be used to search for certain states/apps given certain round number. As mentioned here, seems this function is only enabled in dev-mode which means theoretically if we have our own indexer node we can enable this option to search for global states given certain round number?

I am just curious whether this is theoretically doable but in practice we must build our own indexer node, or this operation is not supported for some reasons?

Thank you!