@@ -64,15 +64,16 @@ type Replicas interface {
6464 DKG (view uint64 ) (DKG , error )
6565
6666 // IdentitiesByEpoch returns a list of the legitimate HotStuff participants for the epoch
67- // given by the input view. The list of participants is filtered by the provided selector.
67+ // given by the input view.
6868 // The returned list of HotStuff participants:
6969 // * contains nodes that are allowed to submit votes or timeouts within the given epoch
7070 // (un-ejected, non-zero weight at the beginning of the epoch)
7171 // * is ordered in the canonical order
7272 // * contains no duplicates.
73- // The list of all legitimate HotStuff participants for the given epoch can be obtained by using `filter.Any`
7473 //
7574 // CAUTION: DO NOT use this method for validating block proposals.
75+ // CAUTION: This method considers epochs outside of Previous, Current, Next, w.r.t. the
76+ // finalized block, to be unknown. https://github.com/onflow/flow-go/issues/4085
7677 //
7778 // Returns the following expected errors for invalid inputs:
7879 // * model.ErrViewForUnknownEpoch if no epoch containing the given view is known
@@ -82,6 +83,9 @@ type Replicas interface {
8283
8384 // IdentityByEpoch returns the full Identity for specified HotStuff participant.
8485 // The node must be a legitimate HotStuff participant with NON-ZERO WEIGHT at the specified block.
86+ // CAUTION: This method considers epochs outside of Previous, Current, Next, w.r.t. the
87+ // finalized block, to be unknown. https://github.com/onflow/flow-go/issues/4085
88+ //
8589 // ERROR conditions:
8690 // * model.InvalidSignerError if participantID does NOT correspond to an authorized HotStuff participant at the specified block.
8791 //
@@ -104,15 +108,13 @@ type DynamicCommittee interface {
104108 Replicas
105109
106110 // IdentitiesByBlock returns a list of the legitimate HotStuff participants for the given block.
107- // The list of participants is filtered by the provided selector.
108111 // The returned list of HotStuff participants:
109112 // * contains nodes that are allowed to submit proposals, votes, and timeouts
110113 // (un-ejected, non-zero weight at current block)
111114 // * is ordered in the canonical order
112115 // * contains no duplicates.
113- // The list of all legitimate HotStuff participants for the given epoch can be obtained by using `filter.Any`
114116 //
115- // TODO - do we need this, if we are only checking a single proposer ID?
117+ // No errors are expected during normal operation.
116118 IdentitiesByBlock (blockID flow.Identifier ) (flow.IdentityList , error )
117119
118120 // IdentityByBlock returns the full Identity for specified HotStuff participant.
@@ -130,7 +132,6 @@ type BlockSignerDecoder interface {
130132 // consensus committee has reached agreement on validity of parent block. Consequently, the
131133 // returned IdentifierList contains the consensus participants that signed the parent block.
132134 // Expected Error returns during normal operations:
133- // - model.ErrViewForUnknownEpoch if the given block's parent is within an unknown epoch
134135 // - signature.InvalidSignerIndicesError if signer indices included in the header do
135136 // not encode a valid subset of the consensus committee
136137 DecodeSignerIDs (header * flow.Header ) (flow.IdentifierList , error )
0 commit comments