Update StateMachine and states

Description

1. Rename the states:eer module to states::elder.

2. Create a new state/module states::non_elder.

3. Support the following transitions:

  • joining_node → non_elder

  • joining_node → elder

  • elder → non_elder

  • non_elder → elder

  • elder → terminate

  • non_elder → terminate

Note that allowing a transition from elder → non_elder would only be usable in cases where we don’t change the PublicInfo, i.e. during section merges. For a normal demotion due to an elder being relocated into our section, we’d be restarting from bootstrapping again. If crust can handle changing PublicInfo without restart, then demotion can also be treated as elder → non_elder instead of elder → terminate.

4. Create a new trait struct states::common::node where Node implements Bootstrapped containing all the common functionality of the NonElder and Elder states (most of which is currently in states:eer).
-Create a new composition states::common::node::Node where Node containing all the common functionality of the NonElder and Elder states (most of which is currently in states:eer). Convert traits into composition - so Node will compose Bootstrapped etc.-

Environment

None

Assignee

Unassigned

Reporter

Nikita Baksalyar

Labels

Start date

2018/01/31

End date

2018/02/19

Task progress

None

Baseline start date

None

Baseline end date

None

Story Points

16

Components

Priority

Major
Configure