MCPcopy
hub / github.com/canopy-network/canopy / ValidatorParams

Struct ValidatorParams

fsm/gov.pb.go:314–371  ·  view source on GitHub ↗

ValidatorParams is the parameter space that defines the rules and criteria for validators in the blockchain

Source from the content-addressed store, hash-verified

312
313// ValidatorParams is the parameter space that defines the rules and criteria for validators in the blockchain
314type ValidatorParams struct {
315 state protoimpl.MessageState `protogen:"open.v1"`
316 // unstaking_blocks: is the number of blocks a validator's staked tokens must remain locked and slashable after
317 // sending 'unstake_validator'. Without unstaking blocks, validators could withdraw their stake right after attempting
318 // malicious behavior, like double-signing or failing to validate correctly
319 UnstakingBlocks uint64 `protobuf:"varint,1,opt,name=unstaking_blocks,json=unstakingBlocks,proto3" json:"unstakingBlocks"` // @gotags: json:"unstakingBlocks"
320 // max_pause_blocks: is the maximum number of blocks a validator may be paused before being 'force unstaked'.
321 // This is necessary to prevent dead validators from forever existing in the state
322 MaxPauseBlocks uint64 `protobuf:"varint,2,opt,name=max_pause_blocks,json=maxPauseBlocks,proto3" json:"maxPauseBlocks"` // @gotags: json:"maxPauseBlocks"
323 // double_sign_slash_percentage: is the percentage of staked tokens that are slashed when a Validator is caught
324 // performing a double-sign (signing two different blocks for the same block height and round,
325 // supporting conflicting versions of the blockchain)
326 DoubleSignSlashPercentage uint64 `protobuf:"varint,3,opt,name=double_sign_slash_percentage,json=doubleSignSlashPercentage,proto3" json:"doubleSignSlashPercentage"` // @gotags: json:"doubleSignSlashPercentage"
327 // non_sign_slash_percentage: is the percentage of staked tokens that are slashed when a Validator doesn't sign a
328 // number of blocks over the max_non_sign threshold within the non_sign_window blocks.
329 NonSignSlashPercentage uint64 `protobuf:"varint,4,opt,name=non_sign_slash_percentage,json=nonSignSlashPercentage,proto3" json:"nonSignSlashPercentage"` // @gotags: json:"nonSignSlashPercentage"
330 // max_non_sign: is the maximum number of blocks a Validator may not sign before being slashed, a threshold system
331 // provides lee-way for accidental non-sign faults
332 MaxNonSign uint64 `protobuf:"varint,5,opt,name=max_non_sign,json=maxNonSign,proto3" json:"maxNonSign"` // @gotags: json:"maxNonSign"
333 // non_sign_window: is the period of blocks in which a validator’s count of missed signatures (non-signs) is tracked
334 // before it is reset. During this window, if a validator fails to sign blocks, the missed count is incremented
335 // Once the window expires, the non-sign count is reset, providing the validator a chance to recover without immediate
336 // penalties
337 NonSignWindow uint64 `protobuf:"varint,6,opt,name=non_sign_window,json=nonSignWindow,proto3" json:"nonSignWindow"` // @gotags: json:"nonSignWindow"
338 // max_committees: is the maximum number of committees a validator is allowed to stake for
339 MaxCommittees uint64 `protobuf:"varint,7,opt,name=max_committees,json=maxCommittees,proto3" json:"maxCommittees"` // @gotags: json:"maxCommittees"
340 // max_committee_size: is the maximum number of active validators a committee may have participating in BFT at any
341 // one view
342 MaxCommitteeSize uint64 `protobuf:"varint,8,opt,name=max_committee_size,json=maxCommitteeSize,proto3" json:"maxCommitteeSize"` // @gotags: json:"maxCommitteeSize"
343 // early_withdrawal_penalty: is the percent reward deduction if NOT compounding validator rewards
344 EarlyWithdrawalPenalty uint64 `protobuf:"varint,9,opt,name=early_withdrawal_penalty,json=earlyWithdrawalPenalty,proto3" json:"earlyWithdrawalPenalty"` // @gotags: json:"earlyWithdrawalPenalty"
345 // delegate_unstaking_blocks: is the number of blocks a delegate validator's staked tokens must remain locked.
346 // Since there's no slashing of delegates, this variable affects economic stability more than security
347 DelegateUnstakingBlocks uint64 `protobuf:"varint,10,opt,name=delegate_unstaking_blocks,json=delegateUnstakingBlocks,proto3" json:"delegateUnstakingBlocks"` // @gotags: json:"delegateUnstakingBlocks"
348 // minimum_order_size: is the minimum amount a 'sell order' must sell in order to be valid
349 MinimumOrderSize uint64 `protobuf:"varint,11,opt,name=minimum_order_size,json=minimumOrderSize,proto3" json:"minimumOrderSize"` // @gotags: json:"minimumOrderSize"
350 // stake_percent_for_subsidized_committee: is the minimum percentage of total stake that a committee must have
351 // committed to it in order to be considered "subsidized" by the protocol
352 StakePercentForSubsidizedCommittee uint64 `protobuf:"varint,12,opt,name=stake_percent_for_subsidized_committee,json=stakePercentForSubsidizedCommittee,proto3" json:"stakePercentForSubsidizedCommittee"` // @gotags: json:"stakePercentForSubsidizedCommittee"
353 // max_slash_per_committee: is the maximum slash per committee per block that a validator may receive.
354 // If the slash exceeds maximum, the validator will be auto-removed from the committee to protect all parties from
355 // cascading failures.
356 MaxSlashPerCommittee uint64 `protobuf:"varint,13,opt,name=max_slash_per_committee,json=maxSlashPerCommittee,proto3" json:"maxSlashPerCommittee"` // @gotags: json:"maxSlashPerCommittee"
357 // delegate_reward_percentage: is the percentage of the block reward that is awarded to the delegates
358 DelegateRewardPercentage uint64 `protobuf:"varint,14,opt,name=delegate_reward_percentage,json=delegateRewardPercentage,proto3" json:"delegateRewardPercentage"` // @gotags: json:"delegateRewardPercentage"
359 // buy_deadline_blocks: amount of blocks a 'buyer' has to complete an order they 'reserved'
360 BuyDeadlineBlocks uint64 `protobuf:"varint,15,opt,name=buy_deadline_blocks,json=buyDeadlineBlocks,proto3" json:"buyDeadlineBlocks"` // @gotags: json:"buyDeadlineBlocks"
361 // lock_order_fee_multiplier: the fee multiplier of the 'send' fee that is required to execute a lock order
362 LockOrderFeeMultiplier uint64 `protobuf:"varint,16,opt,name=lock_order_fee_multiplier,json=lockOrderFeeMultiplier,proto3" json:"lockOrderFeeMultiplier"` // @gotags: json:"lockOrderFeeMultiplier"
363 // minimum_stake_for_validators: is the least amount a validator must stake to qualify as staked
364 MinimumStakeForValidators uint64 `protobuf:"varint,17,opt,name=minimum_stake_for_validators,json=minimumStakeForValidators,proto3" json:"minimumStakeForValidators"` // @gotags: json:"minimumStakeForValidators"
365 // minimum_stake_for_delegates: is the least amount a delegator must stake to qualify as staked
366 MinimumStakeForDelegates uint64 `protobuf:"varint,18,opt,name=minimum_stake_for_delegates,json=minimumStakeForDelegates,proto3" json:"minimumStakeForDelegates"` // @gotags: json:"minimumStakeForDelegates"
367 // maximum_delegates_per_committee: is the maximum number of delegates that can be chose as lottery winners
368 MaximumDelegatesPerCommittee uint64 `protobuf:"varint,19,opt,name=maximum_delegates_per_committee,json=maximumDelegatesPerCommittee,proto3" json:"maximumDelegatesPerCommittee"` // @gotags: json:"maximumDelegatesPerCommittee"
369 unknownFields protoimpl.UnknownFields
370 sizeCache protoimpl.SizeCache
371}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected