mirror of
https://github.com/ipfs/kubo.git
synced 2026-02-28 13:57:52 +08:00
32 lines
515 B
Go
32 lines
515 B
Go
package strategy
|
|
|
|
import (
|
|
"math"
|
|
"math/rand"
|
|
)
|
|
|
|
type strategyFunc func(*ledger) bool
|
|
|
|
func standardStrategy(l *ledger) bool {
|
|
return rand.Float64() <= probabilitySend(l.Accounting.Value())
|
|
}
|
|
|
|
func yesManStrategy(l *ledger) bool {
|
|
return true
|
|
}
|
|
|
|
func probabilitySend(ratio float64) float64 {
|
|
x := 1 + math.Exp(6-3*ratio)
|
|
y := 1 / x
|
|
return 1 - y
|
|
}
|
|
|
|
type debtRatio struct {
|
|
BytesSent uint64
|
|
BytesRecv uint64
|
|
}
|
|
|
|
func (dr *debtRatio) Value() float64 {
|
|
return float64(dr.BytesSent) / float64(dr.BytesRecv+1)
|
|
}
|