Remove submodules with contract classes (practice showed that this is not convenient for development)
Contracts shouldn't inherit each other. They should be joined with addresses links. It is for better scalability and availability for covering with autotests.
Divide storage and logic contracts to simplify upgrade: ValidatorsStorage, ValidatorsManager, KeysStorage, KeysManager, BallotsStorage, BallotsManager.
ValidatorsStorage is the main contract, which manages validators set in spec.json. Other secondary contracts should be joined to it.
ValidatorsStorage
,ValidatorsManager
,KeysStorage
,KeysManager
,BallotsStorage
,BallotsManager
.ValidatorsStorage
is the main contract, which manages validators set in spec.json. Other secondary contracts should be joined to it.