Fixtype of messages.
This is a tagged union type, introduced by fty::deftagsum.
A proposal message consists of a proposal and a destination address. When a validator creates a proposal, it broadcasts it to other validators, one message per validator, with the same proposal but different destination (i.e. receiver). In a proposal message, the sender is the author of the proposal. The latter assertion does not quite apply to the extra proposal messages to faulty validators not in the committee discussed in transitions-propose: these extra messages are just a device to provide faulty validators with the ability to endorse proposals from the correct validators even when the faulty validators are not in the committee.
An endorsement message consists of a proposal and an endorser address. When a validator receives a valid proposal from another validator, it endorses it by sending an endorsement back to the proposal author. The endorser's address represents a signature of the endorser in our model. The endorser is the sender, while the receiver is the author of the proposal. In AleoBFT, endorsements only include cryptographically unique references to proposals, but in our model we use the whole proposal for modeling simplicity.
A certificate message consists of a certificate and a destination address. When a validator, after creating and broadcasting a proposal, receives enough endorsements, it creates and broadcasts a certificate. Thus a certificate message is similar to a proposal message, but with a certificate instead of a proposal. The sender of a certificate is the author of the proposal/certificate.