forked from TrueCloudLab/frostfs-node
[#473] Implement EigenTrust calculations
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
0ec8bcf6b4
commit
a97e08cfd7
14 changed files with 1112 additions and 3 deletions
35
pkg/services/reputation/eigentrust/controller/deps.go
Normal file
35
pkg/services/reputation/eigentrust/controller/deps.go
Normal file
|
@ -0,0 +1,35 @@
|
|||
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)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue