Documentation
¶
Overview ¶
Package hostdb provides a HostDB object that implements the Manager.HostDB interface. The blockchain is scanned for host announcements and hosts that are found get added to the host database. The database continually scans the set of hosts it has found and updates who is online.
Index ¶
- Variables
- type HostDB
- func (hdb *HostDB) ActiveHosts() (activeHosts []modules.HostDBEntry, err error)
- func (hdb *HostDB) AllHosts() (allHosts []modules.HostDBEntry, err error)
- func (hdb *HostDB) CheckForIPViolations(hosts []types.PublicKey) ([]types.PublicKey, error)
- func (hdb *HostDB) Close() error
- func (hdb *HostDB) EstimateHostScore(allowance modules.Allowance, entry modules.HostDBEntry) (modules.HostScoreBreakdown, error)
- func (hdb *HostDB) Filter() (modules.FilterMode, map[string]types.PublicKey, []string, error)
- func (hdb *HostDB) Host(pk types.PublicKey) (modules.HostDBEntry, bool, error)
- func (hdb *HostDB) IPViolationsCheck() (bool, error)
- func (hdb *HostDB) IncrementFailedInteractions(key types.PublicKey) error
- func (hdb *HostDB) IncrementSuccessfulInteractions(key types.PublicKey) error
- func (hdb *HostDB) InitialScanComplete() (complete bool, height uint64, err error)
- func (hdb *HostDB) LoadingComplete() bool
- func (hdb *HostDB) RandomHosts(n int, blacklist, addressBlacklist []types.PublicKey) ([]modules.HostDBEntry, error)
- func (hdb *HostDB) RandomHostsWithAllowance(n int, blacklist, addressBlacklist []types.PublicKey, ...) ([]modules.HostDBEntry, error)
- func (hdb *HostDB) ScoreBreakdown(entry modules.HostDBEntry) (modules.HostScoreBreakdown, error)
- func (hdb *HostDB) SetAllowance(allowance modules.Allowance) error
- func (hdb *HostDB) SetFilterMode(fm modules.FilterMode, hosts []types.PublicKey, netAddresses []string) error
- func (hdb *HostDB) SetIPViolationCheck(enabled bool) error
- func (hdb *HostDB) UpdateChainState(_ []chain.RevertUpdate, applied []chain.ApplyUpdate) error
- func (hdb *HostDB) UpdateContracts(contracts []modules.RenterContract) error
Constants ¶
This section is empty.
Variables ¶
var ( // ErrInitialScanIncomplete is returned whenever an operation is not // allowed to be executed before the initial host scan has finished. ErrInitialScanIncomplete = errors.New("initial hostdb scan is not yet completed") )
Functions ¶
This section is empty.
Types ¶
type HostDB ¶
type HostDB struct {
// contains filtered or unexported fields
}
The HostDB is a database of potential hosts. It assigns a score to each host based on their hosting parameters, and then can select hosts at random for uploading files.
func (*HostDB) ActiveHosts ¶
func (hdb *HostDB) ActiveHosts() (activeHosts []modules.HostDBEntry, err error)
ActiveHosts returns a list of hosts that are currently online, sorted by score. If hostdb is in black or white list mode, then only active hosts from the filteredTree will be returned.
func (*HostDB) AllHosts ¶
func (hdb *HostDB) AllHosts() (allHosts []modules.HostDBEntry, err error)
AllHosts returns all of the hosts known to the hostdb, including the inactive ones. AllHosts is not filtered by blacklist or whitelist mode.
func (*HostDB) CheckForIPViolations ¶
CheckForIPViolations accepts a number of host public keys and returns the ones that violate the rules of the addressFilter.
func (*HostDB) EstimateHostScore ¶
func (hdb *HostDB) EstimateHostScore(allowance modules.Allowance, entry modules.HostDBEntry) (modules.HostScoreBreakdown, error)
EstimateHostScore takes the host's settings and returns the estimated score of that host in the hostdb.
func (*HostDB) Host ¶
Host returns the HostSettings associated with the specified pubkey. If no matching host is found, Host returns false. For black and white list modes, the Filtered field for the HostDBEntry is set to indicate it the host is being filtered from the filtered hosttree.
func (*HostDB) IPViolationsCheck ¶
IPViolationsCheck returns a boolean indicating if the IP violation check is enabled or not.
func (*HostDB) IncrementFailedInteractions ¶
IncrementFailedInteractions increments the number of failed interactions with a host for a given key.
func (*HostDB) IncrementSuccessfulInteractions ¶
IncrementSuccessfulInteractions increments the number of successful interactions with a host for a given key.
func (*HostDB) InitialScanComplete ¶
InitialScanComplete returns a boolean indicating if the initial scan of the hostdb is completed.
func (*HostDB) LoadingComplete ¶
LoadingComplete indicates if the HostDB has finished loading the hosts from the database.
func (*HostDB) RandomHosts ¶
func (hdb *HostDB) RandomHosts(n int, blacklist, addressBlacklist []types.PublicKey) ([]modules.HostDBEntry, error)
RandomHosts implements the HostDB interface's RandomHosts() method. It takes a number of hosts to return, and a slice of netaddresses to ignore, and returns a slice of entries. If the IP violation check was disabled, the addressBlacklist is ignored.
func (*HostDB) RandomHostsWithAllowance ¶
func (hdb *HostDB) RandomHostsWithAllowance(n int, blacklist, addressBlacklist []types.PublicKey, allowance modules.Allowance) ([]modules.HostDBEntry, error)
RandomHostsWithAllowance works as RandomHosts but uses a temporary hosttree created from the specified allowance. This is a very expensive call and should be used with caution.
func (*HostDB) ScoreBreakdown ¶
func (hdb *HostDB) ScoreBreakdown(entry modules.HostDBEntry) (modules.HostScoreBreakdown, error)
ScoreBreakdown provides a detailed set of elements of the host's overall score.
func (*HostDB) SetAllowance ¶
SetAllowance updates the allowance used by the hostdb for scoring hosts by updating the host score function. It will completely rebuild the hosttree so it should be used with care.
func (*HostDB) SetFilterMode ¶
func (hdb *HostDB) SetFilterMode(fm modules.FilterMode, hosts []types.PublicKey, netAddresses []string) error
SetFilterMode sets the hostdb filter mode.
func (*HostDB) SetIPViolationCheck ¶
SetIPViolationCheck enables or disables the IP violation check. If disabled, CheckForIPViolations won't return bad hosts and RandomHosts will return the address blacklist.
func (*HostDB) UpdateChainState ¶ added in v0.11.0
func (hdb *HostDB) UpdateChainState(_ []chain.RevertUpdate, applied []chain.ApplyUpdate) error
UpdateChainState applies the ChainManager updates.
func (*HostDB) UpdateContracts ¶
func (hdb *HostDB) UpdateContracts(contracts []modules.RenterContract) error
UpdateContracts rebuilds the knownContracts of the HostBD using the provided contracts.