pub trait ProtocolParticipant {
type MessageSignature: SignatureEncoding;
type MessageSigner: Signer<Self::MessageSignature>;
type MessageVerifier: Verifier<Self::MessageSignature> + AsRef<[u8]>;
// Required methods
fn total_participants(&self) -> usize;
fn verifier(&self, index: usize) -> &Self::MessageVerifier;
fn signer(&self) -> &Self::MessageSigner;
fn participant_index(&self) -> usize;
fn instance_id(&self) -> &InstanceId;
fn message_ttl(&self) -> Duration;
// Provided methods
fn participant_verifier(&self) -> &Self::MessageVerifier { ... }
fn all_other_parties(&self) -> AllOtherParties ⓘ { ... }
fn msg_id(&self, receiver: Option<usize>, tag: MessageTag) -> MsgId { ... }
fn msg_id_from(
&self,
sender: usize,
receiver: Option<usize>,
tag: MessageTag,
) -> MsgId { ... }
}
Expand description
Type that provides a protocol participant details.
Required Associated Types§
Sourcetype MessageSignature: SignatureEncoding
type MessageSignature: SignatureEncoding
Type of a signature, added at end of all broadcast messages passed between participants.
Sourcetype MessageSigner: Signer<Self::MessageSignature>
type MessageSigner: Signer<Self::MessageSignature>
Type to sign broadcast messages, some kind of SecretKey.
Sourcetype MessageVerifier: Verifier<Self::MessageSignature> + AsRef<[u8]>
type MessageVerifier: Verifier<Self::MessageSignature> + AsRef<[u8]>
Type to verify signed message, a verifying key. AsRef<u8> is used to get external representation of the key to derive message ID.
Required Methods§
Sourcefn total_participants(&self) -> usize
fn total_participants(&self) -> usize
Return total number of participants of a distributed protocol.
Sourcefn verifier(&self, index: usize) -> &Self::MessageVerifier
fn verifier(&self, index: usize) -> &Self::MessageVerifier
Return a verifying key for a messages from a participant with given index.
Sourcefn signer(&self) -> &Self::MessageSigner
fn signer(&self) -> &Self::MessageSigner
A signer to sign messages from the participant.
Sourcefn participant_index(&self) -> usize
fn participant_index(&self) -> usize
Return an index of the participant in a protocol. This is a value in range 0..self.total_participants()
Sourcefn instance_id(&self) -> &InstanceId
fn instance_id(&self) -> &InstanceId
Each execution of a distributed protocol requires a unique instance id to derive all IDs of messages.
Sourcefn message_ttl(&self) -> Duration
fn message_ttl(&self) -> Duration
Return message Time To Live.
Provided Methods§
Sourcefn participant_verifier(&self) -> &Self::MessageVerifier
fn participant_verifier(&self) -> &Self::MessageVerifier
Return reference to participant’s own verifier
Sourcefn all_other_parties(&self) -> AllOtherParties ⓘ
fn all_other_parties(&self) -> AllOtherParties ⓘ
Return iterator of all participant’s indexes except own one.
Sourcefn msg_id(&self, receiver: Option<usize>, tag: MessageTag) -> MsgId
fn msg_id(&self, receiver: Option<usize>, tag: MessageTag) -> MsgId
Generate ID of a message from this party to some other (or broadcast) if passed receiver is None.
Sourcefn msg_id_from(
&self,
sender: usize,
receiver: Option<usize>,
tag: MessageTag,
) -> MsgId
fn msg_id_from( &self, sender: usize, receiver: Option<usize>, tag: MessageTag, ) -> MsgId
Generate ID of a message from given sender to a given receiver. Receiver is designed by its index and is None for a broadcase message.