I am trying to implement a security feature on a ERC20 Token for the event of a vulnerability on it's code or the solidity core. This feature consists basically in two steps :
First, the owner of the Token contract can freeze the token functions ( transfer, transferFrom, approve...)
Second, a new token with the same features but with its vulnerabilities fixed will be distributed to the vulnerable token holders at a time prior to the vulnerability exposure.
My questions are :
First: Is it a good idea?
Second: How can i fetch all token holder adressess and their balances at any past block ? I have event listeners for critical functions of my token and crowdsale but i don't know how to proceed to get the info i want.