Documentation ¶
Overview ¶
Package host is an implementation of the host module, and is responsible for participating in the storage ecosystem, turning available disk space an internet bandwidth into profit for the user.
Index ¶
- Constants
- Variables
- type ErrorCommunication
- type ErrorConnection
- type ErrorConsensus
- type ErrorInternal
- type Host
- func New(cs modules.ConsensusSet, g modules.Gateway, tpool modules.TransactionPool, ...) (*Host, error)
- func NewCustomHost(deps modules.Dependencies, cs modules.ConsensusSet, g modules.Gateway, ...) (*Host, error)
- func NewCustomTestHost(deps modules.Dependencies, smDeps modules.Dependencies, ...) (*Host, error)
- func (h *Host) Alerts() (crit, err, warn []modules.Alert)
- func (h *Host) Announce() error
- func (h *Host) AnnounceAddress(addr modules.NetAddress) error
- func (h *Host) BandwidthCounters() (uint64, uint64, time.Time, error)
- func (h *Host) BlockHeight() types.BlockHeight
- func (h *Host) Close() error
- func (h *Host) ConnectabilityStatus() modules.HostConnectabilityStatus
- func (h *Host) ExternalSettings() modules.HostExternalSettings
- func (h *Host) FinancialMetrics() modules.HostFinancialMetrics
- func (h *Host) InternalSettings() modules.HostInternalSettings
- func (h *Host) NetAddress() modules.NetAddress
- func (h *Host) NetworkMetrics() modules.HostNetworkMetrics
- func (h *Host) ProcessConsensusChange(cc modules.ConsensusChange)
- func (h *Host) PruneStaleStorageObligations() error
- func (h *Host) PublicKey() types.SiaPublicKey
- func (h *Host) SetInternalSettings(settings modules.HostInternalSettings) error
- func (h *Host) StorageObligations() (sos []modules.StorageObligation)
- func (h *Host) TryUnregisterInsufficientCollateralBudgetAlert()
- func (h *Host) WorkingStatus() modules.HostWorkingStatus
- type StorageObligationSnapshot
Constants ¶
const ( // AlertMSGHostInsufficientCollateral indicates that a host has insufficient // collateral budget remaining AlertMSGHostInsufficientCollateral = "host has insufficient collateral budget" )
Constants related to the host's alerts.
Variables ¶
var ( // ErrAccountPersist occurs when an ephemeral account could not be persisted // to disk. ErrAccountPersist = errors.New("ephemeral account could not be persisted to disk") // ErrAccountExpired occurs when a blocked action can not complete because // the account has expired in the meantime. ErrAccountExpired = errors.New("ephemeral account expired") // ErrBalanceInsufficient occurs when a withdrawal could not be successfully // completed because the account balance was insufficient. ErrBalanceInsufficient = errors.New("ephemeral account balance was insufficient") // ErrBalanceMaxExceeded occurs when a deposit would push the account's // balance over the maximum allowed ephemeral account balance. ErrBalanceMaxExceeded = errors.New("ephemeral account maximam balance exceeded") // ErrDepositCancelled occurs when the host was willingly or unwillingly // stopped in the midst of a deposit process. ErrDepositCancelled = errors.New("ephemeral account deposit cancelled due to a shutdown") // ErrWithdrawalCancelled occurs when the host was willingly or unwillingly // stopped in the midst of a withdrawal process. ErrWithdrawalCancelled = errors.New("ephemeral account withdrawal cancelled due to a shutdown") // ErrWithdrawalSpent occurs when a withdrawal is requested using a // withdrawal message that has been spent already. ErrWithdrawalSpent = errors.New("withdrawal message was already spent") )
Functions ¶
This section is empty.
Types ¶
type ErrorCommunication ¶ added in v1.0.3
type ErrorCommunication string
ErrorCommunication errors are meant to be returned if the host and the renter seem to be miscommunicating. For example, if the renter attempts to pay an insufficient price, there has been a communication error.
func (ErrorCommunication) Error ¶ added in v1.0.3
func (ec ErrorCommunication) Error() string
Error satisfies the Error interface for the ErrorCommunication type.
type ErrorConnection ¶ added in v1.0.3
type ErrorConnection string
ErrorConnection is meant to be used on errors where the network is returning unexpected errors. For example, sudden disconnects or connection write failures.
func (ErrorConnection) Error ¶ added in v1.0.3
func (ec ErrorConnection) Error() string
Error satisfies the Error interface for the ErrorConnection type.
type ErrorConsensus ¶ added in v1.0.3
type ErrorConsensus string
ErrorConsensus errors are meant to be used when there are problems related to consensus, such as an inability to submit a storage proof to the blockchain, or an inability to get a file contract revision on to the blockchain.
func (ErrorConsensus) Error ¶ added in v1.0.3
func (ec ErrorConsensus) Error() string
Error satisfies the Error interface for the ErrorConsensus type.
type ErrorInternal ¶ added in v1.0.3
type ErrorInternal string
ErrorInternal errors are meant to be used if an internal process in the host is malfunctioning, for example if the disk is failing.
func (ErrorInternal) Error ¶ added in v1.0.3
func (ec ErrorInternal) Error() string
Error satisfies the Error interface for the ErrorInternal type.
type Host ¶
type Host struct { modules.StorageManager // contains filtered or unexported fields }
A Host contains all the fields necessary for storing files for clients and performing the storage proofs on the received files.
func New ¶
func New(cs modules.ConsensusSet, g modules.Gateway, tpool modules.TransactionPool, wallet modules.Wallet, mux *siamux.SiaMux, address string, persistDir string) (*Host, error)
New returns an initialized Host.
func NewCustomHost ¶ added in v1.4.2
func NewCustomHost(deps modules.Dependencies, cs modules.ConsensusSet, g modules.Gateway, tpool modules.TransactionPool, wallet modules.Wallet, mux *siamux.SiaMux, address string, persistDir string) (*Host, error)
NewCustomHost returns an initialized Host using the provided dependencies.
func NewCustomTestHost ¶ added in v1.4.2
func NewCustomTestHost(deps modules.Dependencies, smDeps modules.Dependencies, cs modules.ConsensusSet, g modules.Gateway, tpool modules.TransactionPool, wallet modules.Wallet, mux *siamux.SiaMux, address string, persistDir string) (*Host, error)
NewCustomTestHost allows passing in both host dependencies and storage manager dependencies. Used solely for testing purposes, to allow dependency injection into the host's submodules.
func (*Host) AnnounceAddress ¶ added in v1.0.0
func (h *Host) AnnounceAddress(addr modules.NetAddress) error
AnnounceAddress submits a host announcement to the blockchain to announce a specific address. If there is no error, the host's address will be updated to the supplied address.
func (*Host) BandwidthCounters ¶ added in v1.4.3
BandwidthCounters returns the Hosts's upload and download bandwidth
func (*Host) BlockHeight ¶ added in v1.4.2
func (h *Host) BlockHeight() types.BlockHeight
BlockHeight returns the host's current blockheight.
func (*Host) ConnectabilityStatus ¶ added in v1.2.0
func (h *Host) ConnectabilityStatus() modules.HostConnectabilityStatus
ConnectabilityStatus returns the connectability state of the host, whether the host can connect to itself on its configured netaddress.
func (*Host) ExternalSettings ¶ added in v1.0.0
func (h *Host) ExternalSettings() modules.HostExternalSettings
ExternalSettings returns the hosts external settings. These values cannot be set by the user (host is configured through InternalSettings), and are the values that get displayed to other hosts on the network.
func (*Host) FinancialMetrics ¶ added in v1.0.0
func (h *Host) FinancialMetrics() modules.HostFinancialMetrics
FinancialMetrics returns information about the financial commitments, rewards, and activities of the host.
func (*Host) InternalSettings ¶ added in v1.0.0
func (h *Host) InternalSettings() modules.HostInternalSettings
InternalSettings returns the settings of a host.
func (*Host) NetAddress ¶ added in v1.0.0
func (h *Host) NetAddress() modules.NetAddress
NetAddress returns the address at which the host can be reached.
func (*Host) NetworkMetrics ¶ added in v1.0.0
func (h *Host) NetworkMetrics() modules.HostNetworkMetrics
NetworkMetrics returns information about the types of rpc calls that have been made to the host.
func (*Host) ProcessConsensusChange ¶ added in v1.0.0
func (h *Host) ProcessConsensusChange(cc modules.ConsensusChange)
ProcessConsensusChange will be called by the consensus set every time there is a change to the blockchain.
func (*Host) PruneStaleStorageObligations ¶ added in v1.4.0
PruneStaleStorageObligations will delete storage obligations from the host that, for whatever reason, did not make it on the block chain. As these stale storage obligations have an impact on the host financial metrics, this method updates the host financial metrics to show the correct values.
func (*Host) PublicKey ¶ added in v1.1.1
func (h *Host) PublicKey() types.SiaPublicKey
PublicKey returns the public key of the host that is used to facilitate relationships between the host and renter.
func (*Host) SetInternalSettings ¶ added in v1.0.0
func (h *Host) SetInternalSettings(settings modules.HostInternalSettings) error
SetInternalSettings updates the host's internal HostInternalSettings object.
func (*Host) StorageObligations ¶ added in v1.1.2
func (h *Host) StorageObligations() (sos []modules.StorageObligation)
StorageObligations fetches the set of storage obligations in the host and returns metadata on them.
func (*Host) TryUnregisterInsufficientCollateralBudgetAlert ¶ added in v1.4.2
func (h *Host) TryUnregisterInsufficientCollateralBudgetAlert()
TryUnregisterInsufficientCollateralBudgetAlert will be called when the host updates his collateral budget setting or when the locked storage collateral gets updated (in a way the updated storage collateral is lower).
func (*Host) WorkingStatus ¶ added in v1.2.0
func (h *Host) WorkingStatus() modules.HostWorkingStatus
WorkingStatus returns the working state of the host, where working is defined as having received more than workingStatusThreshold settings calls over the period of workingStatusFrequency.
type StorageObligationSnapshot ¶ added in v1.4.5
type StorageObligationSnapshot struct {
// contains filtered or unexported fields
}
StorageObligationSnapshot is a snapshot of a StorageObligation. A snapshot is a deep-copy and can be accessed without locking at the cost of being a frozen readonly representation of an SO which only exists in memory. Note that this snapshot only contains the properties required by the MDM to execute a program. This can be extended in the future to support other use cases.
func (StorageObligationSnapshot) ContractSize ¶ added in v1.4.5
func (sos StorageObligationSnapshot) ContractSize() uint64
ContractSize returns the size of the underlying contract, which is static and is the value of the contract size at the time the snapshot was taken.
func (StorageObligationSnapshot) MerkleRoot ¶ added in v1.4.5
func (sos StorageObligationSnapshot) MerkleRoot() crypto.Hash
MerkleRoot returns the merkle root, which is static and is the value of the merkle root at the time the snapshot was taken.
func (StorageObligationSnapshot) SectorRoots ¶ added in v1.4.5
func (sos StorageObligationSnapshot) SectorRoots() []crypto.Hash
SectorRoots returns a static list of the sector roots present at the time the snapshot was taken.
Source Files ¶
- accountmanager.go
- accountspersister.go
- alert.go
- announce.go
- consts.go
- dependencies.go
- errors.go
- host.go
- negotiate.go
- negotiatedownload.go
- negotiateformcontract.go
- negotiaterecentrevision.go
- negotiaterenewcontract.go
- negotiaterevisecontract.go
- negotiatesettings.go
- network.go
- newrpc.go
- persist.go
- persist_compat_1.2.0.go
- persist_compat_1.4.3.go
- rpcloop.go
- rpcupdatepricetable.go
- storageobligations.go
- storageobligationslock.go
- update.go
- upnp.go