本文整理匯總了Golang中github.com/NebulousLabs/Sia/modules.HostDBEntry.MaxCollateral方法的典型用法代碼示例。如果您正苦於以下問題:Golang HostDBEntry.MaxCollateral方法的具體用法?Golang HostDBEntry.MaxCollateral怎麽用?Golang HostDBEntry.MaxCollateral使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/NebulousLabs/Sia/modules.HostDBEntry
的用法示例。
在下文中一共展示了HostDBEntry.MaxCollateral方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: managedNewContract
// managedNewContract negotiates an initial file contract with the specified
// host, saves it, and returns it.
func (c *Contractor) managedNewContract(host modules.HostDBEntry, numSectors uint64, endHeight types.BlockHeight) (modules.RenterContract, error) {
// reject hosts that are too expensive
if host.StoragePrice.Cmp(maxStoragePrice) > 0 {
return modules.RenterContract{}, errTooExpensive
}
// cap host.MaxCollateral
if host.MaxCollateral.Cmp(maxCollateral) > 0 {
host.MaxCollateral = maxCollateral
}
// get an address to use for negotiation
uc, err := c.wallet.NextAddress()
if err != nil {
return modules.RenterContract{}, err
}
// create contract params
c.mu.RLock()
params := proto.ContractParams{
Host: host,
Filesize: numSectors * modules.SectorSize,
StartHeight: c.blockHeight,
EndHeight: endHeight,
RefundAddress: uc.UnlockHash(),
}
c.mu.RUnlock()
// create transaction builder
txnBuilder := c.wallet.StartTransaction()
contract, err := proto.FormContract(params, txnBuilder, c.tpool)
if err != nil {
txnBuilder.Drop()
return modules.RenterContract{}, err
}
contractValue := contract.RenterFunds()
c.log.Printf("Formed contract with %v for %v SC", host.NetAddress, contractValue.Div(types.SiacoinPrecision))
return contract, nil
}