Module Mavryk_raw_protocol_alpha.Frozen_staker_repr

type t = private
  1. | Baker of Mavryk_protocol_environment_alpha.Signature.public_key_hash
    (*

    The baker itself.

    *)
  2. | Single_staker of {
    1. staker : Contract_repr.t;
    2. delegate : Mavryk_protocol_environment_alpha.Signature.public_key_hash;
    }
    (*

    A single staker, cannot be the delegate.

    *)
  3. | Shared_between_stakers of {
    1. delegate : Mavryk_protocol_environment_alpha.Signature.public_key_hash;
    }
    (*

    The delegate's stakers simultaneously (delegate excluded).

    *)
  4. | Baker_edge of Mavryk_protocol_environment_alpha.Signature.public_key_hash
    (*

    The baker edge over its stakers rewards.

    *)

Adding and removing stake can be done from/toward the funds

  • a delegate directly stakes,
  • one of its stakers stakes,
  • all its stakers stakes at once,
  • or from the edge a delegate may have on its stakers rewards. We need to distinguish these cases to enforce the staking over baking limit.
val shared_between_stakers : delegate:Mavryk_protocol_environment_alpha.Signature.public_key_hash -> t
val compare : t -> t -> int