When contracts are paused put node in migration mode
Summary
When smart contracts have their value set as Paused, all operations other than serving data should be stopped on nodes. Nodes need to operate in that state as time stopped. Not evicting any data, not playing any rounds, not creating any stamps etc Just waiting for the event that contracts are not paused any more and serve data
Motivation
After a recent event with nodes losing data, we agreed that some things need to be improved so this doesn't happen again. Part of it can be solved on node architecture.
Implementation
All contracts have Pausable library integrated in them. Which means that all of them can have their state read as e.g. PostageStamp.paused() giving boolean value as result.
With that comes event on each contract that called Paused/Unpaused https://goerli.etherscan.io/tx/0x89e7ad482d84c7fa31c171349c755100211299419655840372eb36d6677b6b5f#eventlog https://goerli.etherscan.io/tx/0xef18a0747892b36a2198ef4886149ac0756f18b630844e61ef26336241e7d4e4#eventlog
Which can be monitored and by which node can go into this mode and out of it.
All 4 contracts can go into paused mode, we could skip putting node into this mode when Oracle contract is paused
but when staking or stamp contract is paused STATE is being migrated and acting in those situation will lead to problems.
Redistribution contracts doesn't save state but its probably also good that node is paused when redis is paused as thing means swarm game is paused so again nothing should be changing in that situation.
Only thing that should be happening then is serving data.