slashing

package
v0.26.0 Latest Latest
Warning

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

Go to latest
Published: Nov 9, 2018 License: Apache-2.0 Imports: 21 Imported by: 6

Documentation

Overview

nolint

Index

Constants

View Source
const (
	DefaultParamspace = "slashing"
)

Default parameter namespace

View Source
const MsgRoute = "slashing"

name to identify transaction types

Variables

View Source
var (
	ValidatorSigningInfoKey         = []byte{0x01} // Prefix for signing info
	ValidatorMissedBlockBitArrayKey = []byte{0x02} // Prefix for missed block bit array
	ValidatorSlashingPeriodKey      = []byte{0x03} // Prefix for slashing period
	AddrPubkeyRelationKey           = []byte{0x04} // Prefix for address-pubkey relation
)

key prefix bytes

View Source
var (
	KeyMaxEvidenceAge           = []byte("MaxEvidenceAge")
	KeySignedBlocksWindow       = []byte("SignedBlocksWindow")
	KeyMinSignedPerWindow       = []byte("MinSignedPerWindow")
	KeyDoubleSignUnbondDuration = []byte("DoubleSignUnbondDuration")
	KeyDowntimeUnbondDuration   = []byte("DowntimeUnbondDuration")
	KeySlashFractionDoubleSign  = []byte("SlashFractionDoubleSign")
	KeySlashFractionDowntime    = []byte("SlashFractionDowntime")
)

Parameter store key

Functions

func BeginBlocker

func BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock, sk Keeper) (tags sdk.Tags)

slashing begin block functionality

func ErrBadValidatorAddr

func ErrBadValidatorAddr(codespace sdk.CodespaceType) sdk.Error

func ErrMissingSelfDelegation

func ErrMissingSelfDelegation(codespace sdk.CodespaceType) sdk.Error

func ErrNoValidatorForAddress

func ErrNoValidatorForAddress(codespace sdk.CodespaceType) sdk.Error

func ErrValidatorJailed

func ErrValidatorJailed(codespace sdk.CodespaceType) sdk.Error

func ErrValidatorNotJailed

func ErrValidatorNotJailed(codespace sdk.CodespaceType) sdk.Error

func GetValidatorMissedBlockBitArrayKey

func GetValidatorMissedBlockBitArrayKey(v sdk.ConsAddress, i int64) []byte

stored by *Tendermint* address (not operator address)

func GetValidatorMissedBlockBitArrayPrefixKey

func GetValidatorMissedBlockBitArrayPrefixKey(v sdk.ConsAddress) []byte

stored by *Tendermint* address (not operator address)

func GetValidatorSigningInfoAddress

func GetValidatorSigningInfoAddress(key []byte) (v sdk.ConsAddress)

extract the address from a validator signing info key

func GetValidatorSigningInfoKey

func GetValidatorSigningInfoKey(v sdk.ConsAddress) []byte

stored by *Tendermint* address (not operator address)

func GetValidatorSlashingPeriodKey added in v0.25.0

func GetValidatorSlashingPeriodKey(v sdk.ConsAddress, startHeight int64) []byte

stored by *Tendermint* address (not operator address) followed by start height

func GetValidatorSlashingPeriodPrefix added in v0.25.0

func GetValidatorSlashingPeriodPrefix(v sdk.ConsAddress) []byte

stored by *Tendermint* address (not operator address)

func InitGenesis

func InitGenesis(ctx sdk.Context, keeper Keeper, data GenesisState, sdata types.GenesisState)

InitGenesis initialize default parameters and the keeper's address to pubkey map

func NewHandler

func NewHandler(k Keeper) sdk.Handler

func NewTestMsgCreateValidator added in v0.25.0

func NewTestMsgCreateValidator(address sdk.ValAddress, pubKey crypto.PubKey, amt sdk.Int) stake.MsgCreateValidator

func ParamTypeTable added in v0.25.0

func ParamTypeTable() params.TypeTable

ParamTypeTable for slashing module

func RegisterCodec

func RegisterCodec(cdc *codec.Codec)

Register concrete types on codec codec

Types

type CodeType added in v0.18.0

type CodeType = sdk.CodeType

Local code type

const (
	// Default slashing codespace
	DefaultCodespace sdk.CodespaceType = 10

	CodeInvalidValidator      CodeType = 101
	CodeValidatorJailed       CodeType = 102
	CodeValidatorNotJailed    CodeType = 103
	CodeMissingSelfDelegation CodeType = 104
)

type GenesisState

type GenesisState struct {
	Params          Params
	SigningInfos    map[string]ValidatorSigningInfo
	MissedBlocks    map[string][]MissedBlock
	SlashingPeriods []ValidatorSlashingPeriod
}

GenesisState - all slashing state that must be provided at genesis

func DefaultGenesisState

func DefaultGenesisState() GenesisState

HubDefaultGenesisState - default GenesisState used by Cosmos Hub

func ExportGenesis

func ExportGenesis(ctx sdk.Context, keeper Keeper) (data GenesisState)

ExportGenesis writes the current store values to a genesis file, which can be imported again with InitGenesis

type Hooks

type Hooks struct {
	// contains filtered or unexported fields
}

Wrapper struct

func (Hooks) OnDelegationCreated added in v0.25.0

func (h Hooks) OnDelegationCreated(_ sdk.Context, _ sdk.AccAddress, _ sdk.ValAddress)

func (Hooks) OnDelegationRemoved added in v0.25.0

func (h Hooks) OnDelegationRemoved(_ sdk.Context, _ sdk.AccAddress, _ sdk.ValAddress)

func (Hooks) OnDelegationSharesModified added in v0.25.0

func (h Hooks) OnDelegationSharesModified(_ sdk.Context, _ sdk.AccAddress, _ sdk.ValAddress)

func (Hooks) OnValidatorBeginUnbonding added in v0.25.0

func (h Hooks) OnValidatorBeginUnbonding(ctx sdk.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress)

Implements sdk.ValidatorHooks

func (Hooks) OnValidatorBonded added in v0.25.0

func (h Hooks) OnValidatorBonded(ctx sdk.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress)

Implements sdk.ValidatorHooks

func (Hooks) OnValidatorCreated added in v0.25.0

func (h Hooks) OnValidatorCreated(ctx sdk.Context, valAddr sdk.ValAddress)

Implements sdk.ValidatorHooks

func (Hooks) OnValidatorModified added in v0.25.0

func (h Hooks) OnValidatorModified(_ sdk.Context, _ sdk.ValAddress)

func (Hooks) OnValidatorPowerDidChange added in v0.25.0

func (h Hooks) OnValidatorPowerDidChange(ctx sdk.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress)

nolint - unused hooks

func (Hooks) OnValidatorRemoved added in v0.25.0

func (h Hooks) OnValidatorRemoved(ctx sdk.Context, consAddr sdk.ConsAddress, _ sdk.ValAddress)

Implements sdk.ValidatorHooks

type Keeper

type Keeper struct {
	// contains filtered or unexported fields
}

Keeper of the slashing store

func NewKeeper

func NewKeeper(cdc *codec.Codec, key sdk.StoreKey, vs sdk.ValidatorSet, paramspace params.Subspace, codespace sdk.CodespaceType) Keeper

NewKeeper creates a slashing keeper

func (Keeper) DoubleSignUnbondDuration added in v0.24.0

func (k Keeper) DoubleSignUnbondDuration(ctx sdk.Context) (res time.Duration)

Double-sign unbond duration

func (Keeper) DowntimeUnbondDuration added in v0.24.0

func (k Keeper) DowntimeUnbondDuration(ctx sdk.Context) (res time.Duration)

Downtime unbond duration

func (Keeper) Hooks added in v0.25.0

func (k Keeper) Hooks() Hooks

Return the wrapper struct

func (Keeper) MaxEvidenceAge added in v0.24.0

func (k Keeper) MaxEvidenceAge(ctx sdk.Context) (res time.Duration)

MaxEvidenceAge - Max age for evidence - 21 days (3 weeks) MaxEvidenceAge = 60 * 60 * 24 * 7 * 3

func (Keeper) MinSignedPerWindow added in v0.24.0

func (k Keeper) MinSignedPerWindow(ctx sdk.Context) int64

Downtime slashing thershold - default 50% of the SignedBlocksWindow

func (Keeper) SignedBlocksWindow added in v0.24.0

func (k Keeper) SignedBlocksWindow(ctx sdk.Context) (res int64)

SignedBlocksWindow - sliding window for downtime slashing

func (Keeper) SlashFractionDoubleSign added in v0.24.0

func (k Keeper) SlashFractionDoubleSign(ctx sdk.Context) (res sdk.Dec)

SlashFractionDoubleSign - currently default 5%

func (Keeper) SlashFractionDowntime added in v0.24.0

func (k Keeper) SlashFractionDowntime(ctx sdk.Context) (res sdk.Dec)

SlashFractionDowntime - currently default 1%

type MissedBlock

type MissedBlock struct {
	Index  int64 `json:"index"`
	Missed bool  `json:"missed"`
}

MissedBlock

type MsgUnjail

type MsgUnjail struct {
	ValidatorAddr sdk.ValAddress `json:"address"` // address of the validator operator
}

MsgUnjail - struct for unjailing jailed validator

func NewMsgUnjail

func NewMsgUnjail(validatorAddr sdk.ValAddress) MsgUnjail

func (MsgUnjail) GetSignBytes added in v0.25.0

func (msg MsgUnjail) GetSignBytes() []byte

get the bytes for the message signer to sign on

func (MsgUnjail) GetSigners added in v0.25.0

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

func (MsgUnjail) Route added in v0.25.0

func (msg MsgUnjail) Route() string

nolint

func (MsgUnjail) Type added in v0.25.0

func (msg MsgUnjail) Type() string

func (MsgUnjail) ValidateBasic added in v0.25.0

func (msg MsgUnjail) ValidateBasic() sdk.Error

quick validity check

type Params

type Params struct {
	MaxEvidenceAge           time.Duration `json:"max-evidence-age"`
	SignedBlocksWindow       int64         `json:"signed-blocks-window"`
	MinSignedPerWindow       sdk.Dec       `json:"min-signed-per-window"`
	DoubleSignUnbondDuration time.Duration `json:"double-sign-unbond-duration"`
	DowntimeUnbondDuration   time.Duration `json:"downtime-unbond-duration"`
	SlashFractionDoubleSign  sdk.Dec       `json:"slash-fraction-double-sign"`
	SlashFractionDowntime    sdk.Dec       `json:"slash-fraction-downtime"`
}

Params - used for initializing default parameter for slashing at genesis

func DefaultParams

func DefaultParams() Params

Default parameters used by Cosmos Hub

func (*Params) KeyValuePairs added in v0.25.0

func (p *Params) KeyValuePairs() params.KeyValuePairs

Implements params.ParamStruct

type ValidatorSigningInfo

type ValidatorSigningInfo struct {
	StartHeight         int64     `json:"start_height"`          // height at which validator was first a candidate OR was unjailed
	IndexOffset         int64     `json:"index_offset"`          // index offset into signed block bit array
	JailedUntil         time.Time `json:"jailed_until"`          // timestamp validator cannot be unjailed until
	MissedBlocksCounter int64     `json:"missed_blocks_counter"` // missed blocks counter (to avoid scanning the array every time)
}

Signing info for a validator

func NewValidatorSigningInfo

func NewValidatorSigningInfo(startHeight int64, indexOffset int64, jailedUntil time.Time, missedBlocksCounter int64) ValidatorSigningInfo

Construct a new `ValidatorSigningInfo` struct

func (ValidatorSigningInfo) HumanReadableString added in v0.18.0

func (i ValidatorSigningInfo) HumanReadableString() string

Return human readable signing info

type ValidatorSlashingPeriod added in v0.25.0

type ValidatorSlashingPeriod struct {
	ValidatorAddr sdk.ConsAddress `json:"validator_addr"` // validator which this slashing period is for
	StartHeight   int64           `json:"start_height"`   // starting height of the slashing period
	EndHeight     int64           `json:"end_height"`     // ending height of the slashing period, or sentinel value of 0 for in-progress
	SlashedSoFar  sdk.Dec         `json:"slashed_so_far"` // fraction of validator stake slashed so far in this slashing period
}

Slashing period for a validator

func NewValidatorSlashingPeriod added in v0.25.0

func NewValidatorSlashingPeriod(startHeight int64, endHeight int64, slashedSoFar sdk.Dec) ValidatorSlashingPeriod

Construct a new `ValidatorSlashingPeriod` struct

func (ValidatorSlashingPeriod) HumanReadableString added in v0.25.0

func (p ValidatorSlashingPeriod) HumanReadableString() string

Return human readable slashing period

type ValidatorSlashingPeriodValue added in v0.25.0

type ValidatorSlashingPeriodValue struct {
	EndHeight    int64   `json:"end_height"`
	SlashedSoFar sdk.Dec `json:"slashed_so_far"`
}

Value part of slashing period (validator address & start height are stored in the key)

Directories

Path Synopsis
client
cli

Jump to

Keyboard shortcuts

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