elixir-omg
elixir-omg copied to clipboard
Watcher (and ch-ch) should refuse to work if out-of-date wrt to an upgraded contract
From discussions with @boolafish @Pongch.
When a contract upgrade (e.g. a new ExitGame
contract) happens, users need to upgrade their watchers before new type txs keep flowing through the system, otherwise they'll get invalid_block (or worse, they'll miss some important ethereum events to watch).
Watcher should keep track of some version info delivered in the blocks from the child chain, and maybe some version put in the root chain contract (one that get's bump every time a quarantine period ends). This way it will "know" whenever it's out-of-date.
For Operator's convenience, a similar feature (using a subset of code needed to handle the Watcher case) can be present in the Child chain - Child chain loudly refuses to work if out-of-date comparing to the contract.
To clarify: this is not about about coordination/protocol/auditing contract upgrade. It is about protecting the apps from unexpected, undebuggable errors, stemming from being out-of-date wrt. the contract.