types

package
v1.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 25, 2022 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Overview

noalias

noalias DONTCOVER

Index

Constants

View Source
const (
	EventTypeSlash    = "slash"
	EventTypeLiveness = "liveness"

	AttributeKeyAddress      = "address"
	AttributeKeyHeight       = "height"
	AttributeKeyPower        = "power"
	AttributeKeyReason       = "reason"
	AttributeKeyJailed       = "jailed"
	AttributeKeyMissedBlocks = "missed_blocks"

	AttributeValueDoubleSign       = "double_sign"
	AttributeValueMissingSignature = "missing_signature"
	AttributeValueCategory         = ModuleName
)

Slashing module event types

View Source
const (
	// ModuleName is the name of the module
	ModuleName = "slashing"

	// StoreKey is the store key string for slashing
	StoreKey = ModuleName

	// RouterKey is the message route for slashing
	RouterKey = ModuleName

	// QuerierRoute is the querier route for slashing
	QuerierRoute = ModuleName

	DefaultCodespace = ModuleName
)
View Source
const (
	DefaultSignedBlocksWindow   = int64(100)
	DefaultDowntimeJailDuration = 60 * 10 * time.Second
)

Default parameter namespace

View Source
const (
	QueryParameters   = "parameters"
	QuerySigningInfo  = "signingInfo"
	QuerySigningInfos = "signingInfos"
)

Query endpoints supported by the slashing querier

View Source
const (
	TypeMsgUnjail = "unjail"
)

slashing message types

Variables

View Source
var (
	ErrNoValidatorForAddress        = sdkerrors.Register(ModuleName, 2, "address is not associated with any known validator")
	ErrBadValidatorAddr             = sdkerrors.Register(ModuleName, 3, "validator does not exist for that address")
	ErrValidatorJailed              = sdkerrors.Register(ModuleName, 4, "validator still jailed; cannot be unjailed")
	ErrValidatorNotJailed           = sdkerrors.Register(ModuleName, 5, "validator not jailed; cannot be unjailed")
	ErrMissingSelfDelegation        = sdkerrors.Register(ModuleName, 6, "validator has no self-delegation; cannot be unjailed")
	ErrSelfDelegationTooLowToUnjail = sdkerrors.Register(ModuleName, 7, "validator's self delegation less than minimum; cannot be unjailed")
	ErrNoSigningInfoFound           = sdkerrors.Register(ModuleName, 8, "no validator signing info found")
)

x/slashing module sentinel errors

View Source
var (
	ValidatorSigningInfoKeyPrefix         = []byte{0x01} // Prefix for signing info
	ValidatorMissedBlockBitArrayKeyPrefix = []byte{0x02} // Prefix for missed block bit array
	AddrPubkeyRelationKeyPrefix           = []byte{0x03} // Prefix for address-pubkey relation
)

Keys for slashing store Items are stored with the following key: values

- 0x01<consAddress_Bytes>: ValidatorSigningInfo

- 0x02<consAddress_Bytes><period_Bytes>: bool

- 0x03<accAddr_Bytes>: crypto.PubKey

View Source
var (
	DefaultMinSignedPerWindow      = sdk.NewDecWithPrec(5, 1)
	DefaultSlashFractionDoubleSign = sdk.NewDec(1).Quo(sdk.NewDec(20))
	DefaultSlashFractionDowntime   = sdk.NewDec(1).Quo(sdk.NewDec(100))
)
View Source
var (
	KeySignedBlocksWindow      = []byte("SignedBlocksWindow")
	KeyMinSignedPerWindow      = []byte("MinSignedPerWindow")
	KeyDowntimeJailDuration    = []byte("DowntimeJailDuration")
	KeySlashFractionDoubleSign = []byte("SlashFractionDoubleSign")
	KeySlashFractionDowntime   = []byte("SlashFractionDowntime")
)

Parameter store keys

View Source
var SlashingCodec *codec.Codec

Functions

func AddrPubkeyRelationKey

func AddrPubkeyRelationKey(address []byte) []byte

AddrPubkeyRelationKey gets pubkey relation key used to get the pubkey from the address

func ParamKeyTable

func ParamKeyTable() paramtypes.KeyTable

ParamKeyTable for slashing module

func RegisterCodec

func RegisterCodec(cdc *codec.Codec)

RegisterLegacyAminoCodec registers concrete types on LegacyAmino codec

func ValidateGenesis

func ValidateGenesis(data GenesisState) error

ValidateGenesis validates the slashing genesis parameters

func ValidatorMissedBlockBitArrayKey

func ValidatorMissedBlockBitArrayKey(v sdk.AccAddress, i int64) []byte

ValidatorMissedBlockBitArrayKey - stored by *Consensus* address (not operator address)

func ValidatorMissedBlockBitArrayPrefixKey

func ValidatorMissedBlockBitArrayPrefixKey(v sdk.AccAddress) []byte

ValidatorMissedBlockBitArrayPrefixKey - stored by *Consensus* address (not operator address)

func ValidatorSigningInfoAddress

func ValidatorSigningInfoAddress(key []byte) (v sdk.AccAddress)

ValidatorSigningInfoAddress - extract the address from a validator signing info key

func ValidatorSigningInfoKey

func ValidatorSigningInfoKey(v sdk.AccAddress) []byte

ValidatorSigningInfoKey - stored by *Consensus* address (not operator address)

Types

type AccountKeeper

type AccountKeeper interface {
	GetAccount(ctx sdk.Context, addr sdk.AccAddress) exported.Account
	IterateAccounts(ctx sdk.Context, process func(exported.Account) (stop bool))
}

AccountKeeper expected account keeper

type BankKeeper

type BankKeeper interface {
	GetAllBalances(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins
	GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) sdk.Coin
	SetBalances(ctx sdk.Context, addr sdk.AccAddress, balances sdk.Coins) error
	LockedCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins
	SpendableCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins
}

BankKeeper defines the expected interface needed to retrieve account balances.

type GenesisState

type GenesisState struct {
	// params defines all the paramaters of related to deposit.
	Params Params `json:"params"`
	// signing_infos represents a map between validator addresses and their
	// signing infos.
	SigningInfos []SigningInfo `json:"signing_infos" yaml:"signing_infos"`
	// signing_infos represents a map between validator addresses and their
	// missed blocks.
	MissedBlocks []ValidatorMissedBlocks `json:"missed_blocks" yaml:"missed_blocks"`
}

func DefaultGenesisState

func DefaultGenesisState() *GenesisState

DefaultGenesisState - default GenesisState used by Cosmos Hub

func NewGenesisState

func NewGenesisState(
	params Params, signingInfos []SigningInfo, missedBlocks []ValidatorMissedBlocks,
) *GenesisState

NewGenesisState creates a new GenesisState object

type MissedBlock

type MissedBlock struct {
	// index is the height at which the block was missed.
	Index int64 `json:"index,omitempty"`
	// missed is the missed status.
	Missed bool `json:"missed,omitempty"`
}

MissedBlock contains height and missed status as boolean.

func NewMissedBlock

func NewMissedBlock(index int64, missed bool) MissedBlock

NewMissedBlock creates a new MissedBlock instance

type MsgServer

type MsgServer interface {
	// Unjail defines a method for unjailing a jailed validator, thus returning
	// them into the bonded validator set, so they can begin receiving provisions
	// and rewards again.
	Unjail(context.Context, *MsgUnjail) (*MsgUnjailResponse, error)
}

type MsgUnjail

type MsgUnjail struct {
	ValidatorAddr string `json:"validator_addr"`
}

func NewMsgUnjail

func NewMsgUnjail(validatorAddr sdk.AccAddress) *MsgUnjail

NewMsgUnjail creates a new MsgUnjail instance

func (MsgUnjail) Bytes

func (msg MsgUnjail) Bytes() []byte

func (MsgUnjail) GetFromAddress

func (msg MsgUnjail) GetFromAddress() sdk.AccAddress

func (MsgUnjail) GetSignBytes

func (msg MsgUnjail) GetSignBytes() []byte

GetSignBytes gets the bytes for the message signer to sign on

func (MsgUnjail) GetSigners

func (msg MsgUnjail) GetSigners() []sdk.AccAddress

func (MsgUnjail) MsgType

func (msg MsgUnjail) MsgType() string

func (MsgUnjail) Route

func (msg MsgUnjail) Route() string

func (MsgUnjail) ValidateBasic

func (msg MsgUnjail) ValidateBasic() error

ValidateBasic validity check for the AnteHandler

type MsgUnjailResponse

type MsgUnjailResponse struct {
}

type ParamSubspace

type ParamSubspace interface {
	HasKeyTable() bool
	WithKeyTable(table paramtypes.KeyTable) paramtypes.Subspace
	Get(ctx sdk.Context, key []byte, ptr interface{})
	GetParamSet(ctx sdk.Context, ps paramtypes.ParamSet)
	SetParamSet(ctx sdk.Context, ps paramtypes.ParamSet)
}

ParamSubspace defines the expected Subspace interfacace

type Params

type Params struct {
	SignedBlocksWindow      int64         `json:"signed_blocks_window,omitempty" yaml:"signed_blocks_window"`
	MinSignedPerWindow      sdk.Dec       `json:"min_signed_per_window" yaml:"min_signed_per_window"`
	DowntimeJailDuration    time.Duration `json:"downtime_jail_duration" yaml:"downtime_jail_duration"`
	SlashFractionDoubleSign sdk.Dec       `json:"slash_fraction_double_sign" yaml:"slash_fraction_double_sign"`
	SlashFractionDowntime   sdk.Dec       `json:"slash_fraction_downtime" yaml:"slash_fraction_downtime"`
}

Params represents the parameters used for by the slashing module.

func DefaultParams

func DefaultParams() Params

DefaultParams defines the parameters for this module

func NewParams

func NewParams(
	signedBlocksWindow int64, minSignedPerWindow sdk.Dec, downtimeJailDuration time.Duration,
	slashFractionDoubleSign, slashFractionDowntime sdk.Dec,
) Params

NewParams creates a new Params object

func (*Params) ParamSetPairs

func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs

ParamSetPairs - Implements params.ParamSet

type QueryParamsRequest

type QueryParamsRequest struct {
}

type QueryParamsResponse

type QueryParamsResponse struct {
	Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"`
}

type QuerySigningInfoRequest

type QuerySigningInfoRequest struct {
	// cons_address is the address to query signing info of
	ConsAddress string `protobuf:"bytes,1,opt,name=cons_address,json=consAddress,proto3" json:"cons_address,omitempty"`
}

QuerySigningInfoRequest is the request type for the Query/SigningInfo RPC method

func (*QuerySigningInfoRequest) GetConsAddress

func (m *QuerySigningInfoRequest) GetConsAddress() string

type QuerySigningInfoResponse

type QuerySigningInfoResponse struct {
	// val_signing_info is the signing info of requested val cons address
	ValSigningInfo ValidatorSigningInfo `protobuf:"bytes,1,opt,name=val_signing_info,json=valSigningInfo,proto3" json:"val_signing_info"`
}

func (*QuerySigningInfoResponse) GetValSigningInfo

func (m *QuerySigningInfoResponse) GetValSigningInfo() ValidatorSigningInfo

type QuerySigningInfosParams

type QuerySigningInfosParams struct {
	Page, Limit int
}

QuerySigningInfosParams defines the params for the following queries: - 'custom/slashing/signingInfos'

func NewQuerySigningInfosParams

func NewQuerySigningInfosParams(page, limit int) QuerySigningInfosParams

NewQuerySigningInfosParams creates a new QuerySigningInfosParams instance

type QuerySigningInfosRequest

type QuerySigningInfosRequest struct {
	Pagination *pagination.PageRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"`
}

QuerySigningInfosRequest is the request type for the Query/SigningInfos RPC method

func (*QuerySigningInfosRequest) GetPagination

func (m *QuerySigningInfosRequest) GetPagination() *pagination.PageRequest

type QuerySigningInfosResponse

type QuerySigningInfosResponse struct {
	// info is the signing info of all validators
	Info       []ValidatorSigningInfo   `protobuf:"bytes,1,rep,name=info,proto3" json:"info"`
	Pagination *pagination.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"`
}

func (*QuerySigningInfosResponse) GetInfo

func (*QuerySigningInfosResponse) GetPagination

type SigningInfo

type SigningInfo struct {
	// address is the validator address.
	Address string `json:"address,omitempty"`
	// validator_signing_info represents the signing info of this validator.
	ValidatorSigningInfo ValidatorSigningInfo `json:"validator_signing_info" yaml:"validator_signing_info"`
}

SigningInfo stores validator signing info of corresponding address.

type StakingHooks

type StakingHooks interface {
	AfterValidatorCreated(ctx sdk.Context, valAddr sdk.AccAddress)                          // Must be called when a validator is created
	AfterValidatorRemoved(ctx sdk.Context, consAddr sdk.AccAddress, valAddr sdk.AccAddress) // Must be called when a validator is deleted

	AfterValidatorBonded(ctx sdk.Context, consAddr sdk.AccAddress, valAddr sdk.AccAddress) // Must be called when a validator is bonded
}

StakingHooks event hooks for staking validator object (noalias)

type StakingKeeper

type StakingKeeper interface {
	// iterate through validators by operator address, execute func for each validator
	IterateValidators(sdk.Context,
		func(index int64, validator stakingtypes.Validator) (stop bool))

	Validator(sdk.Context, sdk.AccAddress) stakingtypes.Validator           // get a particular validator by operator address
	ValidatorByConsAddr(sdk.Context, sdk.AccAddress) stakingtypes.Validator // get a particular validator by consensus address

	// slash the validator and delegators of the validator, specifying offence height, offence power, and slash fraction
	Slash(sdk.Context, sdk.AccAddress, int64, int64, sdk.Dec)
	Jail(sdk.Context, sdk.AccAddress)   // jail a validator
	Unjail(sdk.Context, sdk.AccAddress) // unjail a validator

	// Delegation allows for getting a particular delegation for a given validator
	// and delegator outside the scope of the staking module.
	Delegation(sdk.Context, sdk.AccAddress, sdk.AccAddress) stakingtypes.Delegation

	// MaxValidators returns the maximum amount of bonded validators
	MaxValidators(sdk.Context) uint32
}

StakingKeeper expected staking keeper

type UnimplementedMsgServer

type UnimplementedMsgServer struct {
}

UnimplementedMsgServer can be embedded to have forward compatible implementations.

func (*UnimplementedMsgServer) Unjail

type ValidatorMissedBlocks

type ValidatorMissedBlocks struct {
	// address is the validator address.
	Address string `json:"address,omitempty"`
	// missed_blocks is an array of missed blocks by the validator.
	MissedBlocks []MissedBlock `json:"missed_blocks" yaml:"missed_blocks"`
}

ValidatorMissedBlocks contains array of missed blocks of corresponding address.

type ValidatorSigningInfo

type ValidatorSigningInfo struct {
	Address string `json:"address,omitempty"`
	// Height at which validator was first a candidate OR was unjailed
	StartHeight int64 `json:"start_height,omitempty" yaml:"start_height"`
	// Index which is incremented each time the validator was a bonded
	// in a block and may have signed a precommit or not. This in conjunction with the
	// `SignedBlocksWindow` param determines the index in the `MissedBlocksBitArray`.
	IndexOffset int64 `json:"index_offset,omitempty" yaml:"index_offset"`
	// Timestamp until which the validator is jailed due to liveness downtime.
	JailedUntil time.Time `json:"jailed_until" yaml:"jailed_until"`
	// Whether or not a validator has been tombstoned (killed out of validator set). It is set
	// once the validator commits an equivocation or for any other configured misbehiavor.
	Tombstoned bool `json:"tombstoned,omitempty"`
	// A counter kept to avoid unnecessary array reads.
	// Note that `Sum(MissedBlocksBitArray)` always equals `MissedBlocksCounter`.
	MissedBlocksCounter int64 `json:"missed_blocks_counter,omitempty" yaml:"missed_blocks_counter"`
}

ValidatorSigningInfo defines a validator's signing info for monitoring their liveness activity.

func NewValidatorSigningInfo

func NewValidatorSigningInfo(
	condAddr sdk.AccAddress, startHeight, indexOffset int64,
	jailedUntil time.Time, tombstoned bool, missedBlocksCounter int64,
) ValidatorSigningInfo

NewValidatorSigningInfo creates a new ValidatorSigningInfo instance

func UnmarshalValSigningInfo

func UnmarshalValSigningInfo(cdc *codec.Codec, value []byte) (signingInfo ValidatorSigningInfo, err error)

unmarshal a validator signing info from a store value

func (ValidatorSigningInfo) String

func (i ValidatorSigningInfo) String() string

String implements the stringer interface for ValidatorSigningInfo

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL