func (h *Host) Info() modules.HostInfo { h.mu.RLock() defer h.mu.RUnlock() h.HostSettings.IPAddress = h.myAddr // needs to be updated manually info := modules.HostInfo{ HostSettings: h.HostSettings, StorageRemaining: h.spaceRemaining, NumContracts: len(h.obligationsByID), Profit: h.profit, } // sum up the current obligations to calculate PotentialProfit for _, obligation := range h.obligationsByID { fc := obligation.FileContract info.PotentialProfit = info.PotentialProfit.Add(types.PostTax(h.blockHeight, fc.Payout)) } return info }
func (h *Host) Info() modules.HostInfo { lockID := h.mu.RLock() defer h.mu.RUnlock(lockID) info := modules.HostInfo{ HostSettings: h.HostSettings, StorageRemaining: h.spaceRemaining, NumContracts: len(h.obligationsByID), Profit: h.profit, } // sum up the current obligations to calculate PotentialProfit for _, obligation := range h.obligationsByID { fc := obligation.FileContract info.PotentialProfit = info.PotentialProfit.Add(types.PostTax(h.blockHeight, fc.Payout)) } // Calculate estimated competition (reported in per GB per month). Price // calculated by taking the average of hosts 8-15. var averagePrice types.Currency hosts := h.hostdb.RandomHosts(15) for i, host := range hosts { if i < 8 { continue } averagePrice = averagePrice.Add(host.Price) } if len(hosts) == 0 { return info } averagePrice = averagePrice.Div(types.NewCurrency64(uint64(len(hosts)))) // HACK: 4320 is one month, and 1024^3 is a GB. Price is reported as per GB // per month. estimatedCost := averagePrice.Mul(types.NewCurrency64(4320)).Mul(types.NewCurrency64(1024 * 1024 * 1024)) info.Competition = estimatedCost return info }