forked from TrueCloudLab/frostfs-node
2c8c9f69c8
Delete reading `alpha` from env var. Cover retrieving `alpha` behind interface in intermediate calculator. Add TODO to decide if it is necessary to receive that param from global config or not. Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
41 lines
1.1 KiB
Go
41 lines
1.1 KiB
Go
package eigentrustctrl
|
|
|
|
import (
|
|
"context"
|
|
)
|
|
|
|
// IterationContext is a context of the i-th
|
|
// stage of iterative EigenTrust algorithm.
|
|
type IterationContext interface {
|
|
context.Context
|
|
|
|
// Must return epoch number to select the values
|
|
// for global trust calculation.
|
|
Epoch() uint64
|
|
|
|
// Must return the sequence number of the iteration.
|
|
I() uint32
|
|
|
|
// Must return true if I() is the last iteration.
|
|
Last() bool
|
|
}
|
|
|
|
// DaughtersTrustCalculator is an interface of entity
|
|
// responsible for calculating the global trust of
|
|
// daughter nodes in terms of EigenTrust algorithm.
|
|
type DaughtersTrustCalculator interface {
|
|
// Must perform the iteration step of the loop
|
|
// for computing the global trust of all daughter
|
|
// nodes and sending intermediate values
|
|
// according to EigenTrust description
|
|
// http://ilpubs.stanford.edu:8090/562/1/2002-56.pdf Ch.5.1.
|
|
//
|
|
// Execution should be interrupted if ctx.Last().
|
|
Calculate(ctx IterationContext)
|
|
}
|
|
|
|
// IterationsProvider must provide information about numbers
|
|
// of iterations for algorithm.
|
|
type IterationsProvider interface {
|
|
EigenTrustIterations() (uint64, error)
|
|
}
|