Documentation ¶
Index ¶
- Constants
- Variables
- func DecEq(t *testing.T, exp, got Dec) (*testing.T, bool, string, string, string)
- func DecsEqual(d1s, d2s []Dec) bool
- func HeimdallAddressToAccAddress(b HeimdallAddress) sdk.AccAddress
- func IntEq(t *testing.T, exp, got Int) (*testing.T, bool, string, string, string)
- func KVStorePrefixIteratorPaginated(kvs sdk.KVStore, prefix []byte, page, limit uint) sdk.Iterator
- func KVStoreReversePrefixIteratorPaginated(kvs sdk.KVStore, prefix []byte, page, limit uint) sdk.Iterator
- func MarshallDividendAccount(cdc *codec.Codec, dividendAccount DividendAccount) (bz []byte, err error)
- func MarshallDividendAccountProof(cdc *codec.Codec, dividendAccountProof DividendAccountProof) (bz []byte, err error)
- func MarshallValidator(cdc *codec.Codec, validator Validator) (bz []byte, err error)
- func SortSpanByID(a []*Span)
- func ValidatorListString(vals []*Validator) string
- type BaseTx
- type CheckpointBlockHeader
- type Coin
- func (coin Coin) Add(coinB Coin) Coin
- func (coin Coin) IsEqual(other Coin) bool
- func (coin Coin) IsGTE(other Coin) bool
- func (coin Coin) IsLT(other Coin) bool
- func (coin Coin) IsNegative() bool
- func (coin Coin) IsPositive() bool
- func (coin Coin) IsValid() bool
- func (coin Coin) IsZero() bool
- func (coin Coin) String() string
- func (coin Coin) Sub(coinB Coin) Coin
- type Coins
- func (coins Coins) Add(coinsB Coins) Coins
- func (coins Coins) AmountOf(denom string) Int
- func (coins Coins) DenomsSubsetOf(coinsB Coins) bool
- func (coins Coins) Empty() bool
- func (coins Coins) IsAllGT(coinsB Coins) bool
- func (coins Coins) IsAllGTE(coinsB Coins) bool
- func (coins Coins) IsAllLT(coinsB Coins) bool
- func (coins Coins) IsAllLTE(coinsB Coins) bool
- func (coins Coins) IsAllPositive() bool
- func (coins Coins) IsAnyGT(coinsB Coins) bool
- func (coins Coins) IsAnyGTE(coinsB Coins) bool
- func (coins Coins) IsAnyNegative() bool
- func (coins Coins) IsEqual(coinsB Coins) bool
- func (coins Coins) IsValid() bool
- func (coins Coins) IsZero() bool
- func (coins Coins) Len() int
- func (coins Coins) Less(i, j int) bool
- func (coins Coins) MarshalJSON() ([]byte, error)
- func (coins Coins) SafeSub(coinsB Coins) (Coins, bool)
- func (coins Coins) Sort() Coins
- func (coins Coins) String() string
- func (coins Coins) Sub(coinsB Coins) Coins
- func (coins Coins) Swap(i, j int)
- type Contract
- type Dec
- func MaxDec(d1, d2 Dec) Dec
- func MinDec(d1, d2 Dec) Dec
- func MustNewDecFromStr(s string) Dec
- func NewDec(i int64) Dec
- func NewDecFromBigInt(i *big.Int) Dec
- func NewDecFromBigIntWithPrec(i *big.Int, prec int64) Dec
- func NewDecFromInt(i Int) Dec
- func NewDecFromIntWithPrec(i Int, prec int64) Dec
- func NewDecFromStr(str string) (d Dec, err sdk.Error)
- func NewDecWithPrec(i, prec int64) Dec
- func OneDec() Dec
- func ZeroDec() Dec
- func (d Dec) Abs() Dec
- func (d Dec) Add(d2 Dec) Dec
- func (d Dec) Ceil() Dec
- func (d Dec) Equal(d2 Dec) bool
- func (d Dec) Format(s fmt.State, verb rune)
- func (d Dec) GT(d2 Dec) bool
- func (d Dec) GTE(d2 Dec) bool
- func (d Dec) IsInteger() bool
- func (d Dec) IsNegative() bool
- func (d Dec) IsNil() bool
- func (d Dec) IsPositive() bool
- func (d Dec) IsZero() bool
- func (d Dec) LT(d2 Dec) bool
- func (d Dec) LTE(d2 Dec) bool
- func (d Dec) MarshalAmino() (string, error)
- func (d Dec) MarshalJSON() ([]byte, error)
- func (d Dec) Mul(d2 Dec) Dec
- func (d Dec) MulInt(i Int) Dec
- func (d Dec) MulInt64(i int64) Dec
- func (d Dec) MulTruncate(d2 Dec) Dec
- func (d Dec) Neg() Dec
- func (d Dec) Quo(d2 Dec) Dec
- func (d Dec) QuoInt(i Int) Dec
- func (d Dec) QuoInt64(i int64) Dec
- func (d Dec) QuoRoundUp(d2 Dec) Dec
- func (d Dec) QuoTruncate(d2 Dec) Dec
- func (d Dec) RoundInt() Int
- func (d Dec) RoundInt64() int64
- func (d Dec) String() string
- func (d Dec) Sub(d2 Dec) Dec
- func (d Dec) TruncateDec() Dec
- func (d Dec) TruncateInt() Int
- func (d Dec) TruncateInt64() int64
- func (d *Dec) UnmarshalAmino(text string) (err error)
- func (d *Dec) UnmarshalJSON(bz []byte) error
- type DecCoin
- func (coin DecCoin) Add(coinB DecCoin) DecCoin
- func (coin DecCoin) IsEqual(other DecCoin) bool
- func (coin DecCoin) IsGTE(other DecCoin) bool
- func (coin DecCoin) IsLT(other DecCoin) bool
- func (coin DecCoin) IsNegative() bool
- func (coin DecCoin) IsPositive() bool
- func (coin DecCoin) IsZero() bool
- func (coin DecCoin) String() string
- func (coin DecCoin) Sub(coinB DecCoin) DecCoin
- func (coin DecCoin) TruncateDecimal() (Coin, DecCoin)
- type DecCoins
- func (coins DecCoins) Add(coinsB DecCoins) DecCoins
- func (coins DecCoins) AmountOf(denom string) Dec
- func (coins DecCoins) Empty() bool
- func (coins DecCoins) Intersect(coinsB DecCoins) DecCoins
- func (coins DecCoins) IsAllPositive() bool
- func (coins DecCoins) IsAnyNegative() bool
- func (coins DecCoins) IsEqual(coinsB DecCoins) bool
- func (coins DecCoins) IsValid() bool
- func (coins DecCoins) IsZero() bool
- func (coins DecCoins) Len() int
- func (coins DecCoins) Less(i, j int) bool
- func (coins DecCoins) MulDec(d Dec) DecCoins
- func (coins DecCoins) MulDecTruncate(d Dec) DecCoins
- func (coins DecCoins) QuoDec(d Dec) DecCoins
- func (coins DecCoins) QuoDecTruncate(d Dec) DecCoins
- func (coins DecCoins) SafeSub(coinsB DecCoins) (DecCoins, bool)
- func (coins DecCoins) Sort() DecCoins
- func (coins DecCoins) String() string
- func (coins DecCoins) Sub(coinsB DecCoins) DecCoins
- func (coins DecCoins) Swap(i, j int)
- func (coins DecCoins) TruncateDecimal() (truncatedCoins Coins, changeCoins DecCoins)
- type DividendAccount
- type DividendAccountID
- type DividendAccountProof
- type HeimdallAddress
- func (aa HeimdallAddress) Bytes() []byte
- func (aa HeimdallAddress) Empty() bool
- func (aa HeimdallAddress) Equals(aa2 sdk.Address) bool
- func (aa HeimdallAddress) EthAddress() common.Address
- func (aa HeimdallAddress) Format(s fmt.State, verb rune)
- func (aa HeimdallAddress) Marshal() ([]byte, error)
- func (aa HeimdallAddress) MarshalJSON() ([]byte, error)
- func (aa HeimdallAddress) MarshalYAML() (interface{}, error)
- func (aa HeimdallAddress) String() string
- func (aa *HeimdallAddress) Unmarshal(data []byte) error
- func (aa *HeimdallAddress) UnmarshalJSON(data []byte) error
- func (aa *HeimdallAddress) UnmarshalYAML(data []byte) error
- type HeimdallHash
- func (aa HeimdallHash) Bytes() []byte
- func (aa HeimdallHash) Empty() bool
- func (aa HeimdallHash) Equals(aa2 sdk.Address) bool
- func (aa HeimdallHash) EthHash() common.Hash
- func (aa HeimdallHash) Format(s fmt.State, verb rune)
- func (aa HeimdallHash) Hex() string
- func (aa HeimdallHash) Marshal() ([]byte, error)
- func (aa HeimdallHash) MarshalJSON() ([]byte, error)
- func (aa HeimdallHash) MarshalYAML() (interface{}, error)
- func (aa HeimdallHash) String() string
- func (aa *HeimdallHash) Unmarshal(data []byte) error
- func (aa *HeimdallHash) UnmarshalJSON(data []byte) error
- func (aa *HeimdallHash) UnmarshalYAML(data []byte) error
- type HeimdallModuleBasic
- type HexBytes
- func (bz HexBytes) Bytes() []byte
- func (bz HexBytes) Empty() bool
- func (bz HexBytes) Equals(bz2 HexBytes) bool
- func (bz HexBytes) Format(s fmt.State, verb rune)
- func (bz HexBytes) Marshal() ([]byte, error)
- func (bz HexBytes) MarshalJSON() ([]byte, error)
- func (bz HexBytes) MarshalYAML() (interface{}, error)
- func (bz HexBytes) String() string
- func (bz *HexBytes) Unmarshal(data []byte) error
- func (bz *HexBytes) UnmarshalJSON(data []byte) error
- func (bz *HexBytes) UnmarshalYAML(data []byte) error
- type Int
- func (i Int) Add(i2 Int) (res Int)
- func (i Int) AddRaw(i2 int64) Int
- func (i Int) BigInt() *big.Int
- func (i Int) Equal(i2 Int) bool
- func (i Int) GT(i2 Int) bool
- func (i Int) GTE(i2 Int) bool
- func (i Int) Int64() int64
- func (i Int) IsInt64() bool
- func (i Int) IsNegative() bool
- func (i Int) IsPositive() bool
- func (i Int) IsZero() bool
- func (i Int) LT(i2 Int) bool
- func (i Int) LTE(i2 Int) bool
- func (i Int) MarshalAmino() (string, error)
- func (i Int) MarshalJSON() ([]byte, error)
- func (i Int) Mod(i2 Int) Int
- func (i Int) ModRaw(i2 int64) Int
- func (i Int) Mul(i2 Int) (res Int)
- func (i Int) MulRaw(i2 int64) Int
- func (i Int) Neg() (res Int)
- func (i Int) Quo(i2 Int) (res Int)
- func (i Int) QuoRaw(i2 int64) Int
- func (i Int) Sign() int
- func (i Int) String() string
- func (i Int) Sub(i2 Int) (res Int)
- func (i Int) SubRaw(i2 int64) Int
- func (i Int) ToDec() Dec
- func (i *Int) UnmarshalAmino(text string) error
- func (i *Int) UnmarshalJSON(bz []byte) error
- type MinimalVal
- type PaginatedIterator
- type PubKey
- func (a PubKey) ABCIPubKey() abci.PubKey
- func (a PubKey) Address() common.Address
- func (a PubKey) Bytes() []byte
- func (a PubKey) CryptoPubKey() crypto.PubKey
- func (a PubKey) Marshal() ([]byte, error)
- func (a PubKey) MarshalJSON() ([]byte, error)
- func (a PubKey) MarshalText() ([]byte, error)
- func (a PubKey) MarshalYAML() (interface{}, error)
- func (a PubKey) String() string
- func (a *PubKey) Unmarshal(data []byte) error
- func (a *PubKey) UnmarshalJSON(data []byte) error
- func (a *PubKey) UnmarshalText(input []byte) error
- func (a *PubKey) UnmarshalYAML(data []byte) error
- type QueryPaginationParams
- type Span
- type Validator
- func (v *Validator) Bytes() []byte
- func (v *Validator) CompareProposerPriority(other *Validator) *Validator
- func (v *Validator) Copy() *Validator
- func (v *Validator) IsCurrentValidator(ackCount uint64) bool
- func (v *Validator) MinimalVal() MinimalVal
- func (v *Validator) String() string
- func (v *Validator) UpdatedAt() string
- func (v *Validator) ValidateBasic() bool
- type ValidatorID
- type ValidatorSet
- func (vals *ValidatorSet) Copy() *ValidatorSet
- func (vals *ValidatorSet) CopyIncrementProposerPriority(times int) *ValidatorSet
- func (vals *ValidatorSet) GetByAddress(address []byte) (index int, val *Validator)
- func (vals *ValidatorSet) GetByIndex(index int) (address []byte, val *Validator)
- func (vals *ValidatorSet) GetProposer() (proposer *Validator)
- func (vals *ValidatorSet) HasAddress(address []byte) bool
- func (vals *ValidatorSet) Hash() []byte
- func (vals *ValidatorSet) IncrementProposerPriority(times int)
- func (vals *ValidatorSet) IsNilOrEmpty() bool
- func (vals *ValidatorSet) Iterate(fn func(index int, val *Validator) bool)
- func (vals *ValidatorSet) RescalePriorities(diffMax int64)
- func (vals *ValidatorSet) Size() int
- func (vals *ValidatorSet) String() string
- func (vals *ValidatorSet) StringIndented(indent string) string
- func (vals *ValidatorSet) TotalVotingPower() int64
- func (vals *ValidatorSet) UpdateWithChangeSet(changes []*Validator) error
- type ValidatorsByAddress
Constants ¶
const ( Precision = 18 // bytes required to represent the above precision // Ceiling[Log2[999 999 999 999 999 999]] DecimalPrecisionBits = 60 )
number of decimal places
const ( MaxTotalVotingPower = int64(math.MaxInt64) / 8 PriorityWindowSizeFactor = 2 )
const (
// AddrLen defines a valid address length
AddrLen = 20
)
const (
// DefaultLogIndexUnit default tx hash + log index unit
DefaultLogIndexUnit = 100000
)
Variables ¶
var ( // CoinDecimals is the amount of staking tokens required for 1 unit CoinDecimals = new(big.Int).Exp(big.NewInt(10), big.NewInt(18), nil) )
var ZeroHeimdallAddress = HeimdallAddress{}
ZeroHeimdallAddress represents zero address
var ZeroHeimdallHash = HeimdallHash{}
ZeroHeimdallHash represents zero address
var ZeroPubKey = PubKey{}
ZeroPubKey represents empty pub key
Functions ¶
func HeimdallAddressToAccAddress ¶
func HeimdallAddressToAccAddress(b HeimdallAddress) sdk.AccAddress
HeimdallAddressToAccAddress returns Address with value b.
func KVStorePrefixIteratorPaginated ¶
KVStorePrefixIteratorPaginated returns iterator over items in the selected page. Items iterated and skipped in ascending order.
func KVStoreReversePrefixIteratorPaginated ¶
func KVStoreReversePrefixIteratorPaginated(kvs sdk.KVStore, prefix []byte, page, limit uint) sdk.Iterator
KVStoreReversePrefixIteratorPaginated returns iterator over items in the selected page. Items iterated and skipped in descending order.
func MarshallDividendAccount ¶
func MarshallDividendAccount(cdc *codec.Codec, dividendAccount DividendAccount) (bz []byte, err error)
MarshallDividendAccount - amino Marshall DividendAccount
func MarshallDividendAccountProof ¶ added in v0.1.5
func MarshallDividendAccountProof(cdc *codec.Codec, dividendAccountProof DividendAccountProof) (bz []byte, err error)
MarshallDividendAccountProof - amino Marshall DividendAccountProof
func MarshallValidator ¶
amino marshall validator
func ValidatorListString ¶
ValidatorListString returns a prettified validator list for logging purposes.
Types ¶
type BaseTx ¶
BaseTx represents base tx tendermint needs
func (BaseTx) ValidateBasic ¶
ValidateBasic does a simple and lightweight validation check that doesn't require access to any other information.
type CheckpointBlockHeader ¶
type CheckpointBlockHeader struct { Proposer HeimdallAddress `json:"proposer"` StartBlock uint64 `json:"startBlock"` EndBlock uint64 `json:"endBlock"` RootHash HeimdallHash `json:"rootHash"` AccountRootHash HeimdallHash `json:"accountRootHash"` TimeStamp uint64 `json:"timestamp"` }
CheckpointBlockHeader block header struct
func CreateBlock ¶
func CreateBlock(start uint64, end uint64, rootHash HeimdallHash, accountRootHash HeimdallHash, proposer HeimdallAddress, timestamp uint64) CheckpointBlockHeader
CreateBlock generate new block
func SortHeaders ¶
func SortHeaders(headers []CheckpointBlockHeader) []CheckpointBlockHeader
SortHeaders sorts array of headers on the basis for timestamps
func (CheckpointBlockHeader) String ¶
func (m CheckpointBlockHeader) String() string
String returns human redable string
type Coin ¶
type Coin struct { Denom string `json:"denom"` // To allow the use of unsigned integers (see: #1273) a larger refactor will // need to be made. So we use signed integers for now with safety measures in // place preventing negative values being used. Amount Int `json:"amount"` }
Coin hold some amount of one currency.
CONTRACT: A coin will never hold a negative amount of any denomination.
TODO: Make field members private for further safety.
func NewCoin ¶
NewCoin returns a new coin with a denomination and amount. It will panic if the amount is negative.
func NewInt64Coin ¶
NewInt64Coin returns a new coin with a denomination and amount. It will panic if the amount is negative.
func ParseCoin ¶
ParseCoin parses a cli input for one coin type, returning errors if invalid. This returns an error on an empty string as well.
func (Coin) Add ¶
Adds amounts of two coins with same denom. If the coins differ in denom then it panics.
func (Coin) IsGTE ¶
IsGTE returns true if they are the same type and the receiver is an equal or greater value
func (Coin) IsNegative ¶
IsNegative returns true if the coin amount is negative and false otherwise.
TODO: Remove once unsigned integers are used.
func (Coin) IsPositive ¶
IsPositive returns true if coin amount is positive.
TODO: Remove once unsigned integers are used.
func (Coin) IsValid ¶
IsValid returns true if the Coin has a non-negative amount and the denom is vaild.
type Coins ¶
type Coins []Coin
Coins is a set of Coin, one per currency
func ParseCoins ¶
ParseCoins will parse out a list of coins separated by commas. If nothing is provided, it returns nil Coins. Returned coins are sorted.
func (Coins) Add ¶
Add adds two sets of coins.
e.g. {2A} + {A, 2B} = {3A, 2B} {2A} + {0B} = {2A}
NOTE: Add operates under the invariant that coins are sorted by denominations.
CONTRACT: Add will never return Coins where one Coin has a non-positive amount. In otherwords, IsValid will always return true.
func (Coins) DenomsSubsetOf ¶
DenomsSubsetOf returns true if receiver's denom set is subset of coinsB's denoms.
func (Coins) IsAllGT ¶
IsAllGT returns true if for every denom in coinsB, the denom is present at a greater amount in coins.
func (Coins) IsAllGTE ¶
IsAllGTE returns false if for any denom in coinsB, the denom is present at a smaller amount in coins; else returns true.
func (Coins) IsAllLT ¶
IsAllLT returns True iff for every denom in coins, the denom is present at a smaller amount in coinsB.
func (Coins) IsAllLTE ¶
IsAllLTE returns true iff for every denom in coins, the denom is present at a smaller or equal amount in coinsB.
func (Coins) IsAllPositive ¶
IsAllPositive returns true if there is at least one coin and all currencies have a positive value.
func (Coins) IsAnyGT ¶
IsAnyGT returns true iff for any denom in coins, the denom is present at a greater amount in coinsB.
e.g. {2A, 3B}.IsAnyGT{A} = true {2A, 3B}.IsAnyGT{5C} = false {}.IsAnyGT{5C} = false {2A, 3B}.IsAnyGT{} = false
func (Coins) IsAnyGTE ¶
IsAnyGTE returns true iff coins contains at least one denom that is present at a greater or equal amount in coinsB; it returns false otherwise.
NOTE: IsAnyGTE operates under the invariant that both coin sets are sorted by denominations and there exists no zero coins.
func (Coins) IsAnyNegative ¶
IsAnyNegative returns true if there is at least one coin whose amount is negative; returns false otherwise. It returns false if the coin set is empty too.
TODO: Remove once unsigned integers are used.
func (Coins) IsValid ¶
IsValid asserts the Coins are sorted, have positive amount, and Denom does not contain upper case characters.
func (Coins) MarshalJSON ¶
MarshalJSON implements a custom JSON marshaller for the Coins type to allow nil Coins to be encoded as an empty array.
func (Coins) SafeSub ¶
SafeSub performs the same arithmetic as Sub but returns a boolean if any negative coin amount was returned.
type Contract ¶
type Contract struct {
// contains filtered or unexported fields
}
Contract is how we represent contracts at heimdall
func NewContract ¶
func NewContract(name string, address common.Address, abi abi.ABI, location int, instance bind.ContractBackend) Contract
NewContract creates new contract instance
func (*Contract) Instance ¶
func (c *Contract) Instance() bind.ContractBackend
Instance returns the instance of contract
type Dec ¶
NOTE: never use new(Dec) or else we will panic unmarshalling into the nil embedded big.Int
func NewDecFromBigInt ¶
create a new Dec from big integer assuming whole numbers CONTRACT: prec <= Precision
func NewDecFromBigIntWithPrec ¶
create a new Dec from big integer assuming whole numbers CONTRACT: prec <= Precision
func NewDecFromInt ¶
create a new Dec from big integer assuming whole numbers CONTRACT: prec <= Precision
func NewDecFromIntWithPrec ¶
create a new Dec from big integer with decimal place at prec CONTRACT: prec <= Precision
func NewDecFromStr ¶
create a decimal from an input decimal string. valid must come in the form:
(-) whole integers (.) decimal integers
examples of acceptable input include:
-123.456 456.7890 345 -456789
NOTE - An error will return if more decimal places are provided in the string than the constant Precision.
CONTRACT - This function does not mutate the input str.
func NewDecWithPrec ¶
create a new Dec from integer with decimal place at prec CONTRACT: prec <= Precision
func (Dec) Ceil ¶
Ceil returns the smallest interger value (as a decimal) that is greater than or equal to the given decimal.
func (Dec) IsNegative ¶
func (Dec) IsNil ¶
______________________________________________________________________________________________ nolint
func (Dec) IsPositive ¶
func (Dec) MarshalJSON ¶
MarshalJSON marshals the decimal
func (Dec) RoundInt64 ¶
RoundInt64 rounds the decimal using bankers rounding
func (Dec) TruncateDec ¶
TruncateDec truncates the decimals from the number and returns a Dec
func (Dec) TruncateInt ¶
TruncateInt truncates the decimals from the number and returns an Int
func (Dec) TruncateInt64 ¶
TruncateInt64 truncates the decimals from the number and returns an int64
func (*Dec) UnmarshalAmino ¶
requires a valid JSON string - strings quotes and calls UnmarshalText
func (*Dec) UnmarshalJSON ¶
UnmarshalJSON defines custom decoding scheme
type DecCoin ¶
Coins which can have additional decimal points
func NewDecCoin ¶
func NewDecCoinFromCoin ¶
func NewDecCoinFromDec ¶
func NewInt64DecCoin ¶
NewInt64DecCoin returns a new DecCoin with a denomination and amount. It will panic if the amount is negative or denom is invalid.
func ParseDecCoin ¶
ParseDecCoin parses a decimal coin from a string, returning an error if invalid. An empty string is considered invalid.
func (DecCoin) IsGTE ¶
IsGTE returns true if they are the same type and the receiver is an equal or greater value.
func (DecCoin) IsLT ¶
IsLT returns true if they are the same type and the receiver is a smaller value.
func (DecCoin) IsNegative ¶
IsNegative returns true if the coin amount is negative and false otherwise.
TODO: Remove once unsigned integers are used.
func (DecCoin) IsPositive ¶
IsPositive returns true if coin amount is positive.
TODO: Remove once unsigned integers are used.
func (DecCoin) String ¶
String implements the Stringer interface for DecCoin. It returns a human-readable representation of a decimal coin.
func (DecCoin) TruncateDecimal ¶
TruncateDecimal returns a Coin with a truncated decimal and a DecCoin for the change. Note, the change may be zero.
type DecCoins ¶
type DecCoins []DecCoin
coins with decimal
func NewDecCoins ¶
func ParseDecCoins ¶
ParseDecCoins will parse out a list of decimal coins separated by commas. If nothing is provided, it returns nil DecCoins. Returned decimal coins are sorted.
func (DecCoins) Add ¶
Add adds two sets of DecCoins.
NOTE: Add operates under the invariant that coins are sorted by denominations.
CONTRACT: Add will never return Coins where one Coin has a non-positive amount. In otherwords, IsValid will always return true.
func (DecCoins) Intersect ¶
Intersect will return a new set of coins which contains the minimum DecCoin for common denoms found in both `coins` and `coinsB`. For denoms not common to both `coins` and `coinsB` the minimum is considered to be 0, thus they are not added to the final set.In other words, trim any denom amount from coin which exceeds that of coinB, such that (coin.Intersect(coinB)).IsLTE(coinB).
func (DecCoins) IsAllPositive ¶
IsAllPositive returns true if there is at least one coin and all currencies have a positive value.
TODO: Remove once unsigned integers are used.
func (DecCoins) IsAnyNegative ¶
IsAnyNegative returns true if there is at least one coin whose amount is negative; returns false otherwise. It returns false if the DecCoins set is empty too.
TODO: Remove once unsigned integers are used.
func (DecCoins) IsValid ¶
IsValid asserts the DecCoins are sorted, have positive amount, and Denom does not contain upper case characters.
func (DecCoins) MulDec ¶
MulDec multiplies all the coins by a decimal.
CONTRACT: No zero coins will be returned.
func (DecCoins) MulDecTruncate ¶
MulDecTruncate multiplies all the decimal coins by a decimal, truncating. It panics if d is zero.
CONTRACT: No zero coins will be returned.
func (DecCoins) QuoDec ¶
QuoDec divides all the decimal coins by a decimal. It panics if d is zero.
CONTRACT: No zero coins will be returned.
func (DecCoins) QuoDecTruncate ¶
QuoDecTruncate divides all the decimal coins by a decimal, truncating. It panics if d is zero.
CONTRACT: No zero coins will be returned.
func (DecCoins) SafeSub ¶
SafeSub performs the same arithmetic as Sub but returns a boolean if any negative coin amount was returned.
func (DecCoins) String ¶
String implements the Stringer interface for DecCoins. It returns a human-readable representation of decimal coins.
func (DecCoins) TruncateDecimal ¶
TruncateDecimal returns the coins with truncated decimals and returns the change. Note, it will not return any zero-amount coins in either the truncated or change coins.
type DividendAccount ¶
type DividendAccount struct { ID DividendAccountID `json:"ID"` FeeAmount string `json:"feeAmount"` // string representation of big.Int SlashedAmount string `json:"slashedAmount"` // string representation of big.Int }
DividendAccount contains Fee, Slashed amount
func NewDividendAccount ¶
func NewDividendAccount(id DividendAccountID, fee string, slashedAmount string) DividendAccount
func SortDividendAccountByID ¶
func SortDividendAccountByID(dividendAccounts []DividendAccount) []DividendAccount
SortDividendAccountByID - Sorts DividendAccounts By ID
func UnMarshallDividendAccount ¶
func UnMarshallDividendAccount(cdc *codec.Codec, value []byte) (DividendAccount, error)
UnMarshallDividendAccount - amino Unmarshall DividendAccount
func (DividendAccount) CalculateHash ¶
func (da DividendAccount) CalculateHash() ([]byte, error)
CalculateHash hashes the values of a DividendAccount
func (DividendAccount) Equals ¶
func (da DividendAccount) Equals(other merkletree.Content) (bool, error)
Equals tests for equality of two Contents
func (*DividendAccount) String ¶
func (da *DividendAccount) String() string
type DividendAccountID ¶
type DividendAccountID uint64
DividendAccountID dividend account ID and helper functions
func NewDividendAccountID ¶
func NewDividendAccountID(id uint64) DividendAccountID
NewDividendAccountID generate new dividendAccount ID
func (DividendAccountID) Bytes ¶
func (dividendAccountID DividendAccountID) Bytes() []byte
Bytes get bytes of dividendAccountID
func (DividendAccountID) Int ¶
func (dividendAccountID DividendAccountID) Int() int
Int converts dividendAccount ID to int
func (DividendAccountID) Uint64 ¶
func (dividendAccountID DividendAccountID) Uint64() uint64
Uint64 converts dividendAccount ID to int
type DividendAccountProof ¶ added in v0.1.5
type DividendAccountProof struct { ID DividendAccountID `json:"ID"` Proof []byte `json:"accountProof"` Index uint64 `json:"index"` }
DividendAccount contains ID, merkle proof, leaf index in merketree
func NewDividendAccountProof ¶ added in v0.1.5
func NewDividendAccountProof(id DividendAccountID, proof []byte, index uint64) DividendAccountProof
func UnMarshallDividendAccountProof ¶ added in v0.1.5
func UnMarshallDividendAccountProof(cdc *codec.Codec, value []byte) (DividendAccountProof, error)
UnMarshallDividendAccountProof - amino Unmarshall DividendAccountProof
func (*DividendAccountProof) String ¶ added in v0.1.5
func (ap *DividendAccountProof) String() string
type HeimdallAddress ¶
HeimdallAddress represents heimdall address
func AccAddressToHeimdallAddress ¶
func AccAddressToHeimdallAddress(b sdk.AccAddress) HeimdallAddress
AccAddressToHeimdallAddress returns Address with value b.
func BytesToHeimdallAddress ¶
func BytesToHeimdallAddress(b []byte) HeimdallAddress
BytesToHeimdallAddress returns Address with value b.
func HexToHeimdallAddress ¶
func HexToHeimdallAddress(b string) HeimdallAddress
HexToHeimdallAddress returns Address with value b.
func SampleHeimdallAddress ¶
func SampleHeimdallAddress(s string) HeimdallAddress
SampleHeimdallAddress returns sample address
func (HeimdallAddress) Bytes ¶
func (aa HeimdallAddress) Bytes() []byte
Bytes returns the raw address bytes.
func (HeimdallAddress) Empty ¶
func (aa HeimdallAddress) Empty() bool
Empty returns boolean for whether an AccAddress is empty
func (HeimdallAddress) Equals ¶
func (aa HeimdallAddress) Equals(aa2 sdk.Address) bool
Equals returns boolean for whether two AccAddresses are Equal
func (HeimdallAddress) EthAddress ¶
func (aa HeimdallAddress) EthAddress() common.Address
EthAddress get eth address
func (HeimdallAddress) Format ¶
func (aa HeimdallAddress) Format(s fmt.State, verb rune)
Format implements the fmt.Formatter interface. nolint: errcheck
func (HeimdallAddress) Marshal ¶
func (aa HeimdallAddress) Marshal() ([]byte, error)
Marshal returns the raw address bytes. It is needed for protobuf compatibility.
func (HeimdallAddress) MarshalJSON ¶
func (aa HeimdallAddress) MarshalJSON() ([]byte, error)
MarshalJSON marshals to JSON using Bech32.
func (HeimdallAddress) MarshalYAML ¶
func (aa HeimdallAddress) MarshalYAML() (interface{}, error)
MarshalYAML marshals to YAML using Bech32.
func (HeimdallAddress) String ¶
func (aa HeimdallAddress) String() string
String implements the Stringer interface.
func (*HeimdallAddress) Unmarshal ¶
func (aa *HeimdallAddress) Unmarshal(data []byte) error
Unmarshal sets the address to the given data. It is needed for protobuf compatibility.
func (*HeimdallAddress) UnmarshalJSON ¶
func (aa *HeimdallAddress) UnmarshalJSON(data []byte) error
UnmarshalJSON unmarshals from JSON assuming Bech32 encoding.
func (*HeimdallAddress) UnmarshalYAML ¶
func (aa *HeimdallAddress) UnmarshalYAML(data []byte) error
UnmarshalYAML unmarshals from JSON assuming Bech32 encoding.
type HeimdallHash ¶
HeimdallHash represents heimdall address
func BytesToHeimdallHash ¶
func BytesToHeimdallHash(b []byte) HeimdallHash
BytesToHeimdallHash returns Address with value b.
func HexToHeimdallHash ¶
func HexToHeimdallHash(b string) HeimdallHash
HexToHeimdallHash returns Address with value b.
func (HeimdallHash) Bytes ¶
func (aa HeimdallHash) Bytes() []byte
Bytes returns the raw address bytes.
func (HeimdallHash) Empty ¶
func (aa HeimdallHash) Empty() bool
Empty returns boolean for whether an AccAddress is empty
func (HeimdallHash) Equals ¶
func (aa HeimdallHash) Equals(aa2 sdk.Address) bool
Equals returns boolean for whether two AccAddresses are Equal
func (HeimdallHash) Format ¶
func (aa HeimdallHash) Format(s fmt.State, verb rune)
Format implements the fmt.Formatter interface. nolint: errcheck
func (HeimdallHash) Marshal ¶
func (aa HeimdallHash) Marshal() ([]byte, error)
Marshal returns the raw address bytes. It is needed for protobuf compatibility.
func (HeimdallHash) MarshalJSON ¶
func (aa HeimdallHash) MarshalJSON() ([]byte, error)
MarshalJSON marshals to JSON using Bech32.
func (HeimdallHash) MarshalYAML ¶
func (aa HeimdallHash) MarshalYAML() (interface{}, error)
MarshalYAML marshals to YAML using Bech32.
func (HeimdallHash) String ¶
func (aa HeimdallHash) String() string
String implements the Stringer interface.
func (*HeimdallHash) Unmarshal ¶
func (aa *HeimdallHash) Unmarshal(data []byte) error
Unmarshal sets the address to the given data. It is needed for protobuf compatibility.
func (*HeimdallHash) UnmarshalJSON ¶
func (aa *HeimdallHash) UnmarshalJSON(data []byte) error
UnmarshalJSON unmarshals from JSON assuming Bech32 encoding.
func (*HeimdallHash) UnmarshalYAML ¶
func (aa *HeimdallHash) UnmarshalYAML(data []byte) error
UnmarshalYAML unmarshals from JSON assuming Bech32 encoding.
type HeimdallModuleBasic ¶
type HeimdallModuleBasic interface { module.AppModuleBasic // verify genesis VerifyGenesis(map[string]json.RawMessage) error }
HeimdallModuleBasic is the standard form for basic non-dependant elements of an application module.
type HexBytes ¶
type HexBytes []byte
HexBytes the main purpose of HexBytes is to enable HEX-encoding for json/encoding.
func BytesToHexBytes ¶
BytesToHexBytes returns HexBytes with value b.
func (HexBytes) MarshalJSON ¶
MarshalJSON this is the point of Bytes.
func (HexBytes) MarshalYAML ¶
MarshalYAML marshals to YAML using Bech32.
func (*HexBytes) UnmarshalJSON ¶
UnmarshalJSON this is the point of Bytes.
func (*HexBytes) UnmarshalYAML ¶
UnmarshalYAML unmarshals from YAML assuming Bech32 encoding.
type Int ¶
Int wraps integer with 256 bit range bound Checks overflow, underflow and division by zero Exists in range from -(2^maxBitLen-1) to 2^maxBitLen-1
func NewIntFromBigInt ¶
NewIntFromBigInt constructs Int from big.Int
func NewIntFromString ¶
NewIntFromString constructs Int from string
func NewIntWithDecimal ¶
NewIntWithDecimal constructs Int with decimal Result value is n*10^dec
func (Int) MarshalAmino ¶
MarshalAmino defines custom encoding scheme
func (Int) MarshalJSON ¶
MarshalJSON defines custom encoding scheme
func (*Int) UnmarshalAmino ¶
UnmarshalAmino defines custom decoding scheme
func (*Int) UnmarshalJSON ¶
UnmarshalJSON defines custom decoding scheme
type MinimalVal ¶
type MinimalVal struct { ID ValidatorID `json:"ID"` VotingPower uint64 `json:"power"` // TODO add 10^-18 here so that we dont overflow easily Signer HeimdallAddress `json:"signer"` }
MinimalVal is the minimal validator representation Used to send validator information to bor validator contract
func SortMinimalValByAddress ¶
func SortMinimalValByAddress(a []MinimalVal) []MinimalVal
SortMinimalValByAddress sorts validators
func ValToMinVal ¶
func ValToMinVal(vals []Validator) (minVals []MinimalVal)
ValToMinVal converts array of validators to minimal validators
type PaginatedIterator ¶
PaginatedIterator is a wrapper around Iterator that iterates over values starting for given page and limit.
func (*PaginatedIterator) Next ¶
func (pi *PaginatedIterator) Next()
Next will panic after limit is reached.
func (*PaginatedIterator) Valid ¶
func (pi *PaginatedIterator) Valid() bool
Valid if below limit and underlying iterator is valid.
type PubKey ¶
type PubKey [65]byte
PubKey pubkey
func (PubKey) ABCIPubKey ¶
ABCIPubKey returns abci pubkey for cosmos
func (PubKey) CryptoPubKey ¶
CryptoPubKey returns crypto pub key for tendermint
func (PubKey) Marshal ¶
Marshal returns the raw address bytes. It is needed for protobuf compatibility.
func (PubKey) MarshalJSON ¶
MarshalJSON marshals to JSON using Bech32.
func (PubKey) MarshalText ¶
MarshalText returns the hex representation of a.
func (PubKey) MarshalYAML ¶
MarshalYAML marshals to YAML using Bech32.
func (*PubKey) Unmarshal ¶
Unmarshal sets the address to the given data. It is needed for protobuf compatibility.
func (*PubKey) UnmarshalJSON ¶
UnmarshalJSON unmarshals from JSON assuming Bech32 encoding.
func (*PubKey) UnmarshalText ¶
UnmarshalText parses a hash in hex syntax.
func (*PubKey) UnmarshalYAML ¶
UnmarshalYAML unmarshals from JSON assuming Bech32 encoding.
type QueryPaginationParams ¶
QueryPaginationParams defines the params for querying accounts.
func NewQueryPaginationParams ¶
func NewQueryPaginationParams(page uint64, limit uint64) QueryPaginationParams
NewQueryPaginationParams creates a new instance of QueryPaginationParams.
type Span ¶
type Span struct { ID uint64 `json:"span_id" yaml:"span_id"` StartBlock uint64 `json:"start_block" yaml:"start_block"` EndBlock uint64 `json:"end_block" yaml:"end_block"` ValidatorSet ValidatorSet `json:"validator_set" yaml:"validator_set"` SelectedProducers []Validator `json:"selected_producers" yaml:"selected_producers"` ChainID string `json:"bor_chain_id" yaml:"bor_chain_id"` }
Span stores details for a span on Bor chain span is indexed by start block
type Validator ¶
type Validator struct { ID ValidatorID `json:"ID"` StartEpoch uint64 `json:"startEpoch"` EndEpoch uint64 `json:"endEpoch"` VotingPower int64 `json:"power"` // TODO add 10^-18 here so that we dont overflow easily PubKey PubKey `json:"pubKey"` Signer HeimdallAddress `json:"signer"` LastUpdated string `json:"last_updated"` ProposerPriority int64 `json:"accum"` }
Validator heimdall validator
func NewValidator ¶
func NewValidator(id ValidatorID, startEpoch uint64, endEpoch uint64, power int64, pubKey PubKey, signer HeimdallAddress) *Validator
func SortValidatorByAddress ¶
SortValidatorByAddress sorts a slice of validators by address
func UnmarshallValidator ¶
amono unmarshall validator
func (*Validator) Bytes ¶
Bytes computes the unique encoding of a validator with a given voting power. These are the bytes that gets hashed in consensus. It excludes address as its redundant with the pubkey. This also excludes ProposerPriority which changes every round.
func (*Validator) CompareProposerPriority ¶
Returns the one with higher ProposerPriority.
func (*Validator) Copy ¶
Copy creates a new copy of the validator so we can mutate accum. Panics if the validator is nil.
func (*Validator) IsCurrentValidator ¶
IsCurrentValidator checks if validator is in current validator set
func (*Validator) MinimalVal ¶
func (v *Validator) MinimalVal() MinimalVal
MinimalVal returns block number of last validator update
type ValidatorID ¶
type ValidatorID uint64
ValidatorID validator ID and helper functions
func NewValidatorID ¶
func NewValidatorID(id uint64) ValidatorID
NewValidatorID generate new validator ID
func (ValidatorID) String ¶
func (valID ValidatorID) String() string
Uint64 converts validator ID to int
func (ValidatorID) Uint64 ¶
func (valID ValidatorID) Uint64() uint64
Uint64 converts validator ID to int
type ValidatorSet ¶
type ValidatorSet struct { // NOTE: persisted via reflect, must be exported. Validators []*Validator `json:"validators"` Proposer *Validator `json:"proposer"` // contains filtered or unexported fields }
ValidatorSet represent a set of *Validator at a given height. The validators can be fetched by address or index. The index is in order of .Address, so the indices are fixed for all rounds of a given blockchain height - ie. the validators are sorted by their address. On the other hand, the .ProposerPriority of each validator and the designated .GetProposer() of a set changes every round, upon calling .IncrementProposerPriority(). NOTE: Not goroutine-safe. NOTE: All get/set to validators should copy the value for safety.
func NewValidatorSet ¶
func NewValidatorSet(valz []*Validator) *ValidatorSet
NewValidatorSet initializes a ValidatorSet by copying over the values from `valz`, a list of Validators. If valz is nil or empty, the new ValidatorSet will have an empty list of Validators. The addresses of validators in `valz` must be unique otherwise the function panics.
func (*ValidatorSet) Copy ¶
func (vals *ValidatorSet) Copy() *ValidatorSet
Copy each validator into a new ValidatorSet.
func (*ValidatorSet) CopyIncrementProposerPriority ¶
func (vals *ValidatorSet) CopyIncrementProposerPriority(times int) *ValidatorSet
Increment ProposerPriority and update the proposer on a copy, and return it.
func (*ValidatorSet) GetByAddress ¶
func (vals *ValidatorSet) GetByAddress(address []byte) (index int, val *Validator)
GetByAddress returns an index of the validator with address and validator itself if found. Otherwise, -1 and nil are returned.
func (*ValidatorSet) GetByIndex ¶
func (vals *ValidatorSet) GetByIndex(index int) (address []byte, val *Validator)
GetByIndex returns the validator's address and validator itself by index. It returns nil values if index is less than 0 or greater or equal to len(ValidatorSet.Validators).
func (*ValidatorSet) GetProposer ¶
func (vals *ValidatorSet) GetProposer() (proposer *Validator)
GetProposer returns the current proposer. If the validator set is empty, nil is returned.
func (*ValidatorSet) HasAddress ¶
func (vals *ValidatorSet) HasAddress(address []byte) bool
HasAddress returns true if address given is in the validator set, false - otherwise.
func (*ValidatorSet) Hash ¶
func (vals *ValidatorSet) Hash() []byte
Hash returns the Merkle root hash build using validators (as leaves) in the set.
func (*ValidatorSet) IncrementProposerPriority ¶
func (vals *ValidatorSet) IncrementProposerPriority(times int)
IncrementProposerPriority increments ProposerPriority of each validator and updates the proposer. Panics if validator set is empty. `times` must be positive.
func (*ValidatorSet) IsNilOrEmpty ¶
func (vals *ValidatorSet) IsNilOrEmpty() bool
Nil or empty validator sets are invalid.
func (*ValidatorSet) Iterate ¶
func (vals *ValidatorSet) Iterate(fn func(index int, val *Validator) bool)
Iterate will run the given function over the set.
func (*ValidatorSet) RescalePriorities ¶
func (vals *ValidatorSet) RescalePriorities(diffMax int64)
func (*ValidatorSet) Size ¶
func (vals *ValidatorSet) Size() int
Size returns the length of the validator set.
func (*ValidatorSet) String ¶
func (vals *ValidatorSet) String() string
func (*ValidatorSet) StringIndented ¶
func (vals *ValidatorSet) StringIndented(indent string) string
StringIndented return string
func (*ValidatorSet) TotalVotingPower ¶
func (vals *ValidatorSet) TotalVotingPower() int64
TotalVotingPower returns the sum of the voting powers of all validators. It recomputes the total voting power if required.
func (*ValidatorSet) UpdateWithChangeSet ¶
func (vals *ValidatorSet) UpdateWithChangeSet(changes []*Validator) error
UpdateWithChangeSet attempts to update the validator set with 'changes'. It performs the following steps:
- validates the changes making sure there are no duplicates and splits them in updates and deletes
- verifies that applying the changes will not result in errors
- computes the total voting power BEFORE removals to ensure that in the next steps the priorities across old and newly added validators are fair
- computes the priorities of new validators against the final set
- applies the updates against the validator set
- applies the removals against the validator set
- performs scaling and centering of priority values
If an error is detected during verification steps, it is returned and the validator set is not changed.
type ValidatorsByAddress ¶
type ValidatorsByAddress []*Validator
ValidatorsByAddress sorts validators by address.
func (ValidatorsByAddress) Len ¶
func (valz ValidatorsByAddress) Len() int
func (ValidatorsByAddress) Less ¶
func (valz ValidatorsByAddress) Less(i, j int) bool
func (ValidatorsByAddress) Swap ¶
func (valz ValidatorsByAddress) Swap(i, j int)