202 lines
5.1 KiB
Go
202 lines
5.1 KiB
Go
package v040
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
"time"
|
|
|
|
yaml "gopkg.in/yaml.v2"
|
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
)
|
|
|
|
// Staking params default values
|
|
const (
|
|
// DefaultUnbondingTime reflects three weeks in seconds as the default
|
|
// unbonding time.
|
|
// TODO: Justify our choice of default here.
|
|
DefaultUnbondingTime time.Duration = time.Hour * 24 * 7 * 3
|
|
|
|
// Default maximum number of bonded validators
|
|
DefaultMaxValidators uint32 = 100
|
|
|
|
// Default maximum entries in a UBD/RED pair
|
|
DefaultMaxEntries uint32 = 7
|
|
|
|
// DefaultHistorical entries is 10000. Apps that don't use IBC can ignore this
|
|
// value by not adding the staking module to the application module manager's
|
|
// SetOrderBeginBlockers.
|
|
DefaultHistoricalEntries uint32 = 10000
|
|
)
|
|
|
|
// NewParams creates a new Params instance
|
|
func NewParams(unbondingTime time.Duration, maxValidators, maxEntries, historicalEntries uint32, bondDenom string) Params {
|
|
return Params{
|
|
UnbondingTime: unbondingTime,
|
|
MaxValidators: maxValidators,
|
|
MaxEntries: maxEntries,
|
|
HistoricalEntries: historicalEntries,
|
|
BondDenom: bondDenom,
|
|
}
|
|
}
|
|
|
|
// String returns a human readable string representation of the parameters.
|
|
func (p Params) String() string {
|
|
out, _ := yaml.Marshal(p)
|
|
return string(out)
|
|
}
|
|
|
|
func DefaultParams() Params {
|
|
return NewParams(
|
|
DefaultUnbondingTime,
|
|
DefaultMaxValidators,
|
|
DefaultMaxEntries,
|
|
DefaultHistoricalEntries,
|
|
sdk.DefaultBondDenom,
|
|
)
|
|
}
|
|
|
|
// String implements the Stringer interface for a Commission object.
|
|
func (c Commission) String() string {
|
|
out, _ := yaml.Marshal(c)
|
|
return string(out)
|
|
}
|
|
|
|
// String implements the Stringer interface for a CommissionRates object.
|
|
func (cr CommissionRates) String() string {
|
|
out, _ := yaml.Marshal(cr)
|
|
return string(out)
|
|
}
|
|
|
|
// String implements the Stringer interface for a DVPair object.
|
|
func (dv DVPair) String() string {
|
|
out, _ := yaml.Marshal(dv)
|
|
return string(out)
|
|
}
|
|
|
|
// String implements the Stringer interface for a DVVTriplet object.
|
|
func (dvv DVVTriplet) String() string {
|
|
out, _ := yaml.Marshal(dvv)
|
|
return string(out)
|
|
}
|
|
|
|
// String returns a human readable string representation of a Delegation.
|
|
func (d Delegation) String() string {
|
|
out, _ := yaml.Marshal(d)
|
|
return string(out)
|
|
}
|
|
|
|
// Delegations is a collection of delegations
|
|
type Delegations []Delegation
|
|
|
|
func (d Delegations) String() (out string) {
|
|
for _, del := range d {
|
|
out += del.String() + "\n"
|
|
}
|
|
|
|
return strings.TrimSpace(out)
|
|
}
|
|
|
|
// String implements the stringer interface for a UnbondingDelegationEntry.
|
|
func (e UnbondingDelegationEntry) String() string {
|
|
out, _ := yaml.Marshal(e)
|
|
return string(out)
|
|
}
|
|
|
|
// String returns a human readable string representation of an UnbondingDelegation.
|
|
func (ubd UnbondingDelegation) String() string {
|
|
out := fmt.Sprintf(`Unbonding Delegations between:
|
|
Delegator: %s
|
|
Validator: %s
|
|
Entries:`, ubd.DelegatorAddress, ubd.ValidatorAddress)
|
|
for i, entry := range ubd.Entries {
|
|
out += fmt.Sprintf(` Unbonding Delegation %d:
|
|
Creation Height: %v
|
|
Min time to unbond (unix): %v
|
|
Expected balance: %s`, i, entry.CreationHeight,
|
|
entry.CompletionTime, entry.Balance)
|
|
}
|
|
|
|
return out
|
|
}
|
|
|
|
// UnbondingDelegations is a collection of UnbondingDelegation
|
|
type UnbondingDelegations []UnbondingDelegation
|
|
|
|
func (ubds UnbondingDelegations) String() (out string) {
|
|
for _, u := range ubds {
|
|
out += u.String() + "\n"
|
|
}
|
|
|
|
return strings.TrimSpace(out)
|
|
}
|
|
|
|
// String implements the Stringer interface for a RedelegationEntry object.
|
|
func (e RedelegationEntry) String() string {
|
|
out, _ := yaml.Marshal(e)
|
|
return string(out)
|
|
}
|
|
|
|
// String returns a human readable string representation of a Redelegation.
|
|
func (red Redelegation) String() string {
|
|
out := fmt.Sprintf(`Redelegations between:
|
|
Delegator: %s
|
|
Source Validator: %s
|
|
Destination Validator: %s
|
|
Entries:
|
|
`,
|
|
red.DelegatorAddress, red.ValidatorSrcAddress, red.ValidatorDstAddress,
|
|
)
|
|
|
|
for i, entry := range red.Entries {
|
|
out += fmt.Sprintf(` Redelegation Entry #%d:
|
|
Creation height: %v
|
|
Min time to unbond (unix): %v
|
|
Dest Shares: %s
|
|
`,
|
|
i, entry.CreationHeight, entry.CompletionTime, entry.SharesDst,
|
|
)
|
|
}
|
|
|
|
return strings.TrimRight(out, "\n")
|
|
}
|
|
|
|
// Redelegations are a collection of Redelegation
|
|
type Redelegations []Redelegation
|
|
|
|
func (d Redelegations) String() (out string) {
|
|
for _, red := range d {
|
|
out += red.String() + "\n"
|
|
}
|
|
|
|
return strings.TrimSpace(out)
|
|
}
|
|
|
|
// String implements the Stringer interface for DelegationResponse.
|
|
func (d DelegationResponse) String() string {
|
|
return fmt.Sprintf("%s\n Balance: %s", d.Delegation.String(), d.Balance)
|
|
}
|
|
|
|
// String implements the Stringer interface for a Validator object.
|
|
func (v Validator) String() string {
|
|
out, _ := yaml.Marshal(v)
|
|
return string(out)
|
|
}
|
|
|
|
// Validators is a collection of Validator
|
|
type Validators []Validator
|
|
|
|
func (v Validators) String() (out string) {
|
|
for _, val := range v {
|
|
out += val.String() + "\n"
|
|
}
|
|
|
|
return strings.TrimSpace(out)
|
|
}
|
|
|
|
// String implements the Stringer interface for a Description object.
|
|
func (d Description) String() string {
|
|
out, _ := yaml.Marshal(d)
|
|
return string(out)
|
|
}
|