|
syntax = "proto3";
|
|
package tendermint.proto.types;
|
|
|
|
option go_package = "github.com/tendermint/tendermint/proto/types";
|
|
|
|
import "third_party/proto/gogoproto/gogo.proto";
|
|
import "google/protobuf/duration.proto";
|
|
|
|
option (gogoproto.equal_all) = true;
|
|
option (gogoproto.marshaler_all) = true;
|
|
option (gogoproto.unmarshaler_all) = true;
|
|
option (gogoproto.sizer_all) = true;
|
|
option (gogoproto.goproto_registration) = true;
|
|
|
|
// ConsensusParams contains consensus critical parameters that determine the
|
|
// validity of blocks.
|
|
message ConsensusParams {
|
|
BlockParams block = 1 [(gogoproto.nullable) = false];
|
|
EvidenceParams evidence = 2 [(gogoproto.nullable) = false];
|
|
ValidatorParams validator = 3 [(gogoproto.nullable) = false];
|
|
}
|
|
|
|
// BlockParams contains limits on the block size.
|
|
message BlockParams {
|
|
// Note: must be greater than 0
|
|
int64 max_bytes = 1;
|
|
// Note: must be greater or equal to -1
|
|
int64 max_gas = 2;
|
|
// Minimum time increment between consecutive blocks (in milliseconds)
|
|
// Not exposed to the application.
|
|
int64 time_iota_ms = 3;
|
|
}
|
|
|
|
// EvidenceParams determine how we handle evidence of malfeasance.
|
|
message EvidenceParams {
|
|
// Max age of evidence, in blocks.
|
|
//
|
|
// The basic formula for calculating this is: MaxAgeDuration / {average block
|
|
// time}.
|
|
int64 max_age_num_blocks = 1;
|
|
|
|
// Max age of evidence, in time.
|
|
//
|
|
// It should correspond with an app's "unbonding period" or other similar
|
|
// mechanism for handling [Nothing-At-Stake
|
|
// attacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed).
|
|
google.protobuf.Duration max_age_duration = 2
|
|
[(gogoproto.nullable) = false, (gogoproto.stdduration) = true];
|
|
|
|
// This sets the maximum number of evidence that can be committed in a single block.
|
|
// and should fall comfortably under the max block bytes when we consider the size of
|
|
// each evidence (See MaxEvidenceBytes). The maximum number is MaxEvidencePerBlock.
|
|
// Default is 50
|
|
uint32 max_num = 3;
|
|
}
|
|
|
|
// ValidatorParams restrict the public key types validators can use.
|
|
// NOTE: uses ABCI pubkey naming, not Amino names.
|
|
message ValidatorParams {
|
|
option (gogoproto.populate) = true;
|
|
option (gogoproto.equal) = true;
|
|
|
|
repeated string pub_key_types = 1;
|
|
}
|
|
|
|
// HashedParams is a subset of ConsensusParams.
|
|
// It is amino encoded and hashed into
|
|
// the Header.ConsensusHash.
|
|
message HashedParams {
|
|
int64 block_max_bytes = 1;
|
|
int64 block_max_gas = 2;
|
|
}
|