github.com/ari-anchor/sei-tendermint@v0.0.0-20230519144642-dc826b7b56bb/proto/tendermint/types/params.proto (about)

     1  syntax = "proto3";
     2  package seitendermint.types;
     3  
     4  option go_package = "github.com/ari-anchor/sei-tendermint/proto/tendermint/types";
     5  
     6  import "gogoproto/gogo.proto";
     7  import "google/protobuf/duration.proto";
     8  
     9  option (gogoproto.equal_all) = true;
    10  
    11  // ConsensusParams contains consensus critical parameters that determine the
    12  // validity of blocks.
    13  message ConsensusParams {
    14    BlockParams     block     = 1;
    15    EvidenceParams  evidence  = 2;
    16    ValidatorParams validator = 3;
    17    VersionParams   version   = 4;
    18    SynchronyParams synchrony = 5;
    19    TimeoutParams   timeout   = 6;
    20    ABCIParams      abci      = 7;
    21  }
    22  
    23  // BlockParams contains limits on the block size.
    24  message BlockParams {
    25    // Max block size, in bytes.
    26    // Note: must be greater than 0
    27    int64 max_bytes = 1;
    28    // Max gas per block.
    29    // Note: must be greater or equal to -1
    30    int64 max_gas = 2;
    31  }
    32  
    33  // EvidenceParams determine how we handle evidence of malfeasance.
    34  message EvidenceParams {
    35    // Max age of evidence, in blocks.
    36    //
    37    // The basic formula for calculating this is: MaxAgeDuration / {average block
    38    // time}.
    39    int64 max_age_num_blocks = 1;
    40  
    41    // Max age of evidence, in time.
    42    //
    43    // It should correspond with an app's "unbonding period" or other similar
    44    // mechanism for handling [Nothing-At-Stake
    45    // attacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed).
    46    google.protobuf.Duration max_age_duration = 2
    47        [(gogoproto.nullable) = false, (gogoproto.stdduration) = true];
    48  
    49    // This sets the maximum size of total evidence in bytes that can be committed
    50    // in a single block. and should fall comfortably under the max block bytes.
    51    // Default is 1048576 or 1MB
    52    int64 max_bytes = 3;
    53  }
    54  
    55  // ValidatorParams restrict the public key types validators can use.
    56  // NOTE: uses ABCI pubkey naming, not Amino names.
    57  message ValidatorParams {
    58    repeated string pub_key_types = 1;
    59  }
    60  
    61  // VersionParams contains the ABCI application version.
    62  message VersionParams {
    63    uint64 app_version = 1;
    64  }
    65  
    66  // HashedParams is a subset of ConsensusParams.
    67  //
    68  // It is hashed into the Header.ConsensusHash.
    69  message HashedParams {
    70    int64 block_max_bytes = 1;
    71    int64 block_max_gas   = 2;
    72  }
    73  
    74  // SynchronyParams configure the bounds under which a proposed block's timestamp is considered valid.
    75  // These parameters are part of the proposer-based timestamps algorithm. For more information,
    76  // see the specification of proposer-based timestamps:
    77  // https://github.com/tendermint/tendermint/tree/master/spec/consensus/proposer-based-timestamp
    78  message SynchronyParams {
    79    // message_delay bounds how long a proposal message may take to reach all validators on a network
    80    // and still be considered valid.
    81    google.protobuf.Duration message_delay = 1 [(gogoproto.stdduration) = true];
    82    // precision bounds how skewed a proposer's clock may be from any validator
    83    // on the network while still producing valid proposals.
    84    google.protobuf.Duration precision = 2 [(gogoproto.stdduration) = true];
    85  }
    86  
    87  // TimeoutParams configure the timeouts for the steps of the Tendermint consensus algorithm.
    88  message TimeoutParams {
    89    // These fields configure the timeouts for the propose step of the Tendermint
    90    // consensus algorithm: propose is the initial timeout and propose_delta
    91    // determines how much the timeout grows in subsequent rounds.
    92    // For the first round, this propose timeout is used and for every subsequent
    93    // round, the timeout grows by propose_delta.
    94    //
    95    // For example:
    96    // With propose = 10ms, propose_delta = 5ms, the first round's propose phase
    97    // timeout would be 10ms, the second round's would be 15ms, the third 20ms and so on.
    98    //
    99    // If a node waiting for a proposal message does not receive one matching its
   100    // current height and round before this timeout, the node will issue a
   101    // nil prevote for the round and advance to the next step.
   102    google.protobuf.Duration propose       = 1 [(gogoproto.stdduration) = true];
   103    google.protobuf.Duration propose_delta = 2 [(gogoproto.stdduration) = true];
   104  
   105    // vote along with vote_delta configure the timeout for both of the prevote and
   106    // precommit steps of the Tendermint consensus algorithm.
   107    //
   108    // These parameters influence the vote step timeouts in the the same way that
   109    // the propose and propose_delta parameters do to the proposal step.
   110    //
   111    // The vote timeout does not begin until a quorum of votes has been received. Once
   112    // a quorum of votes has been seen and this timeout elapses, Tendermint will
   113    // procced to the next step of the consensus algorithm. If Tendermint receives
   114    // all of the remaining votes before the end of the timeout, it will proceed
   115    // to the next step immediately.
   116    google.protobuf.Duration vote       = 3 [(gogoproto.stdduration) = true];
   117    google.protobuf.Duration vote_delta = 4 [(gogoproto.stdduration) = true];
   118  
   119    // commit configures how long Tendermint will wait after receiving a quorum of
   120    // precommits before beginning consensus for the next height. This can be
   121    // used to allow slow precommits to arrive for inclusion in the next height before progressing.
   122    google.protobuf.Duration commit = 5 [(gogoproto.stdduration) = true];
   123  
   124    // bypass_commit_timeout configures the node to proceed immediately to
   125    // the next height once the node has received all precommits for a block, forgoing
   126    // the remaining commit timeout.
   127    // Setting bypass_commit_timeout false (the default) causes Tendermint to wait
   128    // for the full commit timeout.
   129    bool bypass_commit_timeout = 6;
   130  }
   131  
   132  // ABCIParams configure functionality specific to the Application Blockchain Interface.
   133  message ABCIParams {
   134    // vote_extensions_enable_height configures the first height during which
   135    // vote extensions will be enabled. During this specified height, and for all
   136    // subsequent heights, precommit messages that do not contain valid extension data
   137    // will be considered invalid. Prior to this height, vote extensions will not
   138    // be used or accepted by validators on the network.
   139    //
   140    // Once enabled, vote extensions will be created by the application in ExtendVote,
   141    // passed to the application for validation in VerifyVoteExtension and given
   142    // to the application to use when proposing a block during PrepareProposal.
   143    int64 vote_extensions_enable_height = 1;
   144  
   145    // Indicates if CheckTx should be called on all the transactions
   146    // remaining in the mempool after a block is executed.
   147    bool recheck_tx = 2;
   148  }