Documentation ¶
Overview ¶
NOTE: Usage of x/params to manage parameters is deprecated in favor of x/gov controlled execution of MsgUpdateParams messages. These types remains solely for migration purposes and will be removed in a future release.
Index ¶
- Constants
- Variables
- func AddrPubkeyRelationKey(addr []byte) []byte
- func ParamKeyTable() paramtypes.KeyTabledeprecated
- func RegisterInterfaces(registry types.InterfaceRegistry)
- func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino)
- func ValidateGenesis(data GenesisState) error
- func ValidatorMissedBlockBitmapKey(v sdk.ConsAddress, chunkIndex int64) []byte
- func ValidatorMissedBlockBitmapPrefixKey(v sdk.ConsAddress) []byte
- func ValidatorSigningInfoAddress(key []byte) (v sdk.ConsAddress)
- func ValidatorSigningInfoKey(v sdk.ConsAddress) []byte
- type AccountKeeper
- type BankKeeper
- type ParamSubspace
- type QuerySigningInfosParams
- type StakingHooks
- type StakingKeeper
Constants ¶
const ( EventTypeSlash = "slash" EventTypeLiveness = "liveness" AttributeKeyAddress = "address" AttributeKeyHeight = "height" AttributeKeyPower = "power" AttributeKeyReason = "reason" AttributeKeyJailed = "jailed" AttributeKeyMissedBlocks = "missed_blocks" AttributeKeyBurnedCoins = "burned_coins" AttributeValueUnspecified = "unspecified" AttributeValueDoubleSign = "double_sign" AttributeValueMissingSignature = "missing_signature" )
Slashing module event types
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 // MissedBlockBitmapChunkSize defines the chunk size, in number of bits, of a // validator missed block bitmap. Chunks are used to reduce the storage and // write overhead of IAVL nodes. The total size of the bitmap is roughly in // the range [0, SignedBlocksWindow) where each bit represents a block. A // validator's IndexOffset modulo the SignedBlocksWindow is used to retrieve // the chunk in that bitmap range. Once the chunk is retrieved, the same index // is used to check or flip a bit, where if a bit is set, it indicates the // validator missed that block. // // For a bitmap of N items, i.e. a validator's signed block window, the amount // of write complexity per write with a factor of f being the overhead of // IAVL being un-optimized, i.e. 2-4, is as follows: // // ChunkSize + (f * 256 <IAVL leaf hash>) + 256 * log_2(N / ChunkSize) // // As for the storage overhead, with the same factor f, it is as follows: // (N - 256) + (N / ChunkSize) * (512 * f) MissedBlockBitmapChunkSize = 1024 // 2^10 bits )
const ( DefaultSignedBlocksWindow = int64(100) DefaultDowntimeJailDuration = 60 * 10 * time.Second )
Default parameter namespace
const ( QueryParameters = "parameters" QuerySigningInfo = "signingInfo" QuerySigningInfos = "signingInfos" )
Query endpoints supported by the slashing querier
Variables ¶
var ( ErrNoValidatorForAddress = types.ErrNoValidatorForAddress ErrBadValidatorAddr = types.ErrBadValidatorAddr ErrValidatorJailed = types.ErrValidatorJailed ErrValidatorNotJailed = types.ErrValidatorNotJailed ErrMissingSelfDelegation = types.ErrMissingSelfDelegation ErrSelfDelegationTooLowToUnjail = types.ErrSelfDelegationTooLowToUnjail ErrNoSigningInfoFound = types.ErrNoSigningInfoFound ErrValidatorTombstoned = types.ErrValidatorTombstoned )
x/slashing module sentinel errors
var ( ParamsKey = []byte{0x00} // Prefix for params key ValidatorSigningInfoKeyPrefix = []byte{0x01} // Prefix for signing info ValidatorMissedBlockBitmapKeyPrefix = []byte{0x02} // Prefix for missed block bitmap AddrPubkeyRelationKeyPrefix = []byte{0x03} // Prefix for address-pubkey relation )
var ( DefaultMinSignedPerWindow = math.LegacyNewDecWithPrec(5, 1) DefaultSlashFractionDoubleSign = math.LegacyNewDec(1).Quo(math.LegacyNewDec(20)) DefaultSlashFractionDowntime = math.LegacyNewDec(1).Quo(math.LegacyNewDec(100)) )
var ( KeySignedBlocksWindow = []byte("SignedBlocksWindow") KeyMinSignedPerWindow = []byte("MinSignedPerWindow") KeyDowntimeJailDuration = []byte("DowntimeJailDuration") KeySlashFractionDoubleSign = []byte("SlashFractionDoubleSign") KeySlashFractionDowntime = []byte("SlashFractionDowntime") )
Parameter store keys
Functions ¶
func AddrPubkeyRelationKey ¶
AddrPubkeyRelationKey gets pubkey relation key used to get the pubkey from the address
func ParamKeyTable
deprecated
func ParamKeyTable() paramtypes.KeyTable
Deprecated: ParamKeyTable for slashing module
func RegisterInterfaces ¶
func RegisterInterfaces(registry types.InterfaceRegistry)
RegisterInterfaces registers the interfaces types with the Interface Registry.
func RegisterLegacyAminoCodec ¶
func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino)
RegisterLegacyAminoCodec registers concrete types on LegacyAmino codec
func ValidateGenesis ¶
func ValidateGenesis(data GenesisState) error
ValidateGenesis validates the slashing genesis parameters
func ValidatorMissedBlockBitmapKey ¶
func ValidatorMissedBlockBitmapKey(v sdk.ConsAddress, chunkIndex int64) []byte
ValidatorMissedBlockBitmapKey returns the key for a validator's missed block bitmap chunk.
func ValidatorMissedBlockBitmapPrefixKey ¶
func ValidatorMissedBlockBitmapPrefixKey(v sdk.ConsAddress) []byte
ValidatorMissedBlockBitmapPrefixKey returns the key prefix for a validator's missed block bitmap.
func ValidatorSigningInfoAddress ¶
func ValidatorSigningInfoAddress(key []byte) (v sdk.ConsAddress)
ValidatorSigningInfoAddress - extract the address from a validator signing info key
func ValidatorSigningInfoKey ¶
func ValidatorSigningInfoKey(v sdk.ConsAddress) []byte
ValidatorSigningInfoKey - stored by *Consensus* address (not operator address)
Types ¶
type AccountKeeper ¶
type AccountKeeper interface { GetAccount(ctx context.Context, addr sdk.AccAddress) sdk.AccountI IterateAccounts(ctx context.Context, process func(sdk.AccountI) (stop bool)) }
AccountKeeper expected account keeper
type BankKeeper ¶
type BankKeeper interface { GetAllBalances(ctx context.Context, addr sdk.AccAddress) sdk.Coins GetBalance(ctx context.Context, addr sdk.AccAddress, denom string) sdk.Coin LockedCoins(ctx context.Context, addr sdk.AccAddress) sdk.Coins SpendableCoins(ctx context.Context, addr sdk.AccAddress) sdk.Coins }
BankKeeper defines the expected interface needed to retrieve account balances.
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 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 StakingHooks ¶
type StakingHooks interface { AfterValidatorCreated(ctx context.Context, valAddr sdk.ValAddress) error // Must be called when a validator is created BeforeValidatorModified(ctx context.Context, valAddr sdk.ValAddress) error // Must be called when a validator's state changes AfterValidatorRemoved(ctx context.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress) error // Must be called when a validator is deleted AfterValidatorBonded(ctx context.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress) error // Must be called when a validator is bonded AfterValidatorBeginUnbonding(ctx context.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress) error // Must be called when a validator begins unbonding BeforeDelegationCreated(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) error // Must be called when a delegation is created BeforeDelegationRemoved(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) error // Must be called when a delegation is removed AfterDelegationModified(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) error BeforeValidatorSlashed(ctx context.Context, valAddr sdk.ValAddress, fraction math.LegacyDec) error }
StakingHooks event hooks for staking validator object (noalias)
type StakingKeeper ¶
type StakingKeeper interface { ValidatorAddressCodec() address.Codec ConsensusAddressCodec() address.Codec // iterate through validators by operator address, execute func for each validator IterateValidators(context.Context, func(index int64, validator stakingtypes.ValidatorI) (stop bool)) error Validator(context.Context, sdk.ValAddress) (stakingtypes.ValidatorI, error) // get a particular validator by operator address ValidatorByConsAddr(context.Context, sdk.ConsAddress) (stakingtypes.ValidatorI, error) // get a particular validator by consensus address // slash the validator and delegators of the validator, specifying offense height, offense power, and slash fraction Slash(context.Context, sdk.ConsAddress, int64, int64, math.LegacyDec) (math.Int, error) SlashWithInfractionReason(context.Context, sdk.ConsAddress, int64, int64, math.LegacyDec, stakingtypes.Infraction) (math.Int, error) Jail(context.Context, sdk.ConsAddress) error // jail a validator Unjail(context.Context, sdk.ConsAddress) error // unjail a validator // Delegation allows for getting a particular delegation for a given validator // and delegator outside the scope of the staking module. Delegation(context.Context, sdk.AccAddress, sdk.ValAddress) (stakingtypes.DelegationI, error) GetAllValidators(ctx context.Context) ([]stakingtypes.Validator, error) // MaxValidators returns the maximum amount of bonded validators MaxValidators(context.Context) (uint32, error) // IsValidatorJailed returns if the validator is jailed. IsValidatorJailed(ctx context.Context, addr sdk.ConsAddress) (bool, error) }
StakingKeeper expected staking keeper