msc { hscale="2.2"; VoteSigner, Validator, Cluster, StakerX, StakerY; |||; Validator box Validator [label="boot.."]; VoteSigner <:> Validator [label="register\n\n(optional)"]; Validator => Cluster [label="VoteState::Initialize(VoteSigner)"]; StakerX => Cluster [label="StakeStateWithFlags::Delegate(Validator)"]; StakerY => Cluster [label="StakeStateWithFlags::Delegate(Validator)"]; |||; Validator box Cluster [label="\nvalidate\n"]; Validator => VoteSigner [label="sign(vote)"]; VoteSigner >> Validator [label="signed vote"]; Validator => Cluster [label="gossip(vote)"]; ...; ... ; Validator abox Validator [label="\nmax\nlockout\n"]; |||; Cluster box Cluster [label="credits redeemed (at epoch)"]; }