-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Description
Let's say that every 1000 Ethereum blocks (1 epoch) an application wants to use the state of a smart contract to update the validator set. During the first epoch the validator set is A B C. Due to changes in the smart contract on Ethereum the validator set for the second epoch is D E F. Any user can submit the latest state of Ethereum to the Cosmos application to cause the change in validator set with a special transaction. The application now returns a validator set which is completely different (i.e. 100% change). According to #1004 Tendermint Core now rejects that block.
The options are that either the app receives that change transaction and then bisects it until it hopefully finds a way to do it in less than 1/3 or that the submitter has to split the transactions. The problem though is that in case there is no <1/3 an app has to reset it's entire state. The ideal solution would be to make #1004 a config option to enable apps that have delegation done outside of their chain.
Of course, light clients would have to reconfirm the validator hash.