tendermint/abci

Table of Contents

tendermint/abci/types.proto

Top

CommitInfo

FieldTypeLabelDescription
round int32

votes VoteInfo repeated

Event

Event allows application developers to attach additional information to

ResponseFinalizeBlock and ResponseCheckTx.

Later, transactions may be queried using these events.

FieldTypeLabelDescription
type string

attributes EventAttribute repeated

EventAttribute

EventAttribute is a single key-value pair, associated with an event.

FieldTypeLabelDescription
key string

value string

index bool

nondeterministic

ExecTxResult

ExecTxResult contains results of executing one individual transaction.

* Its structure is equivalent to #ResponseDeliverTx which will be deprecated/deleted

FieldTypeLabelDescription
code uint32

data bytes

log string

nondeterministic

info string

nondeterministic

gas_wanted int64

gas_used int64

events Event repeated

nondeterministic

codespace string

ExtendedCommitInfo

ExtendedCommitInfo is similar to CommitInfo except that it is only used in

the PrepareProposal request such that CometBFT can provide vote extensions

to the application.

FieldTypeLabelDescription
round int32

The round at which the block proposer decided in the previous height.

votes ExtendedVoteInfo repeated

List of validators' addresses in the last validator set with their voting information, including vote extensions.

ExtendedVoteInfo

FieldTypeLabelDescription
validator Validator

The validator that sent the vote.

vote_extension bytes

Non-deterministic extension provided by the sending validator's application.

extension_signature bytes

Vote extension signature created by CometBFT

block_id_flag tendermint.types.BlockIDFlag

block_id_flag indicates whether the validator voted for a block, nil, or did not vote at all

Misbehavior

FieldTypeLabelDescription
type MisbehaviorType

validator Validator

The offending validator

height int64

The height when the offense occurred

time google.protobuf.Timestamp

The corresponding time where the offense occurred

total_voting_power int64

Total voting power of the validator set in case the ABCI application does not store historical validators. https://github.com/tendermint/tendermint/issues/4581

Request

FieldTypeLabelDescription
echo RequestEcho

flush RequestFlush

info RequestInfo

init_chain RequestInitChain

query RequestQuery

check_tx RequestCheckTx

commit RequestCommit

list_snapshots RequestListSnapshots

offer_snapshot RequestOfferSnapshot

load_snapshot_chunk RequestLoadSnapshotChunk

apply_snapshot_chunk RequestApplySnapshotChunk

prepare_proposal RequestPrepareProposal

process_proposal RequestProcessProposal

extend_vote RequestExtendVote

verify_vote_extension RequestVerifyVoteExtension

finalize_block RequestFinalizeBlock

RequestApplySnapshotChunk

Applies a snapshot chunk

FieldTypeLabelDescription
index uint32

chunk bytes

sender string

RequestCheckTx

FieldTypeLabelDescription
tx bytes

type CheckTxType

RequestCommit

RequestEcho

FieldTypeLabelDescription
message string

RequestExtendVote

Extends a vote with application-injected data

FieldTypeLabelDescription
hash bytes

the hash of the block that this vote may be referring to

height int64

the height of the extended vote

time google.protobuf.Timestamp

info of the block that this vote may be referring to

txs bytes repeated

proposed_last_commit CommitInfo

misbehavior Misbehavior repeated

next_validators_hash bytes

proposer_address bytes

address of the public key of the original proposer of the block.

RequestFinalizeBlock

FieldTypeLabelDescription
txs bytes repeated

decided_last_commit CommitInfo

misbehavior Misbehavior repeated

hash bytes

hash is the merkle root hash of the fields of the decided block.

height int64

time google.protobuf.Timestamp

next_validators_hash bytes

proposer_address bytes

proposer_address is the address of the public key of the original proposer of the block.

RequestFlush

RequestInfo

FieldTypeLabelDescription
version string

block_version uint64

p2p_version uint64

abci_version string

RequestInitChain

FieldTypeLabelDescription
time google.protobuf.Timestamp

chain_id string

consensus_params tendermint.types.ConsensusParams

validators ValidatorUpdate repeated

app_state_bytes bytes

initial_height int64

RequestListSnapshots

lists available snapshots

RequestLoadSnapshotChunk

loads a snapshot chunk

FieldTypeLabelDescription
height uint64

format uint32

chunk uint32

RequestOfferSnapshot

offers a snapshot to the application

FieldTypeLabelDescription
snapshot Snapshot

snapshot offered by peers

app_hash bytes

light client-verified app hash for snapshot height

RequestPrepareProposal

FieldTypeLabelDescription
max_tx_bytes int64

the modified transactions cannot exceed this size.

txs bytes repeated

txs is an array of transactions that will be included in a block, sent to the app for possible modifications.

local_last_commit ExtendedCommitInfo

misbehavior Misbehavior repeated

height int64

time google.protobuf.Timestamp

next_validators_hash bytes

proposer_address bytes

address of the public key of the validator proposing the block.

RequestProcessProposal

FieldTypeLabelDescription
txs bytes repeated

proposed_last_commit CommitInfo

misbehavior Misbehavior repeated

hash bytes

hash is the merkle root hash of the fields of the proposed block.

height int64

time google.protobuf.Timestamp

next_validators_hash bytes

proposer_address bytes

address of the public key of the original proposer of the block.

RequestQuery

FieldTypeLabelDescription
data bytes

path string

height int64

prove bool

RequestVerifyVoteExtension

Verify the vote extension

FieldTypeLabelDescription
hash bytes

the hash of the block that this received vote corresponds to

validator_address bytes

the validator that signed the vote extension

height int64

vote_extension bytes

Response

FieldTypeLabelDescription
exception ResponseException

echo ResponseEcho

flush ResponseFlush

info ResponseInfo

init_chain ResponseInitChain

query ResponseQuery

check_tx ResponseCheckTx

commit ResponseCommit

list_snapshots ResponseListSnapshots

offer_snapshot ResponseOfferSnapshot

load_snapshot_chunk ResponseLoadSnapshotChunk

apply_snapshot_chunk ResponseApplySnapshotChunk

prepare_proposal ResponsePrepareProposal

process_proposal ResponseProcessProposal

extend_vote ResponseExtendVote

verify_vote_extension ResponseVerifyVoteExtension

finalize_block ResponseFinalizeBlock

ResponseApplySnapshotChunk

FieldTypeLabelDescription
result ResponseApplySnapshotChunk.Result

refetch_chunks uint32 repeated

Chunks to refetch and reapply

reject_senders string repeated

Chunk senders to reject and ban

ResponseCheckTx

FieldTypeLabelDescription
code uint32

data bytes

log string

nondeterministic

info string

nondeterministic

gas_wanted int64

gas_used int64

events Event repeated

codespace string

ResponseCommit

FieldTypeLabelDescription
retain_height int64

ResponseEcho

FieldTypeLabelDescription
message string

ResponseException

nondeterministic

FieldTypeLabelDescription
error string

ResponseExtendVote

FieldTypeLabelDescription
vote_extension bytes

ResponseFinalizeBlock

FieldTypeLabelDescription
events Event repeated

set of block events emmitted as part of executing the block

tx_results ExecTxResult repeated

the result of executing each transaction including the events the particular transction emitted. This should match the order of the transactions delivered in the block itself

validator_updates ValidatorUpdate repeated

a list of updates to the validator set. These will reflect the validator set at current height + 2.

consensus_param_updates tendermint.types.ConsensusParams

updates to the consensus params, if any.

app_hash bytes

app_hash is the hash of the applications' state which is used to confirm that execution of the transactions was deterministic. It is up to the application to decide which algorithm to use.

ResponseFlush

ResponseInfo

FieldTypeLabelDescription
data string

version string

app_version uint64

last_block_height int64

last_block_app_hash bytes

ResponseInitChain

FieldTypeLabelDescription
consensus_params tendermint.types.ConsensusParams

validators ValidatorUpdate repeated

app_hash bytes

ResponseListSnapshots

FieldTypeLabelDescription
snapshots Snapshot repeated

ResponseLoadSnapshotChunk

FieldTypeLabelDescription
chunk bytes

ResponseOfferSnapshot

FieldTypeLabelDescription
result ResponseOfferSnapshot.Result

ResponsePrepareProposal

FieldTypeLabelDescription
txs bytes repeated

ResponseProcessProposal

FieldTypeLabelDescription
status ResponseProcessProposal.ProposalStatus

ResponseQuery

FieldTypeLabelDescription
code uint32

log string

bytes data = 2; // use "value" instead. nondeterministic

info string

nondeterministic

index int64

key bytes

value bytes

proof_ops tendermint.crypto.ProofOps

height int64

codespace string

ResponseVerifyVoteExtension

FieldTypeLabelDescription
status ResponseVerifyVoteExtension.VerifyStatus

Snapshot

FieldTypeLabelDescription
height uint64

The height at which the snapshot was taken

format uint32

The application-specific snapshot format

chunks uint32

Number of chunks in the snapshot

hash bytes

Arbitrary snapshot hash, equal only if identical

metadata bytes

Arbitrary application metadata

TxResult

TxResult contains results of executing the transaction.

One usage is indexing transaction results.

FieldTypeLabelDescription
height int64

index uint32

tx bytes

result ExecTxResult

Validator

FieldTypeLabelDescription
address bytes

The first 20 bytes of SHA256(public key)

power int64

PubKey pub_key = 2 [(gogoproto.nullable)=false]; The voting power

ValidatorUpdate

FieldTypeLabelDescription
pub_key tendermint.crypto.PublicKey

power int64

VoteInfo

FieldTypeLabelDescription
validator Validator

block_id_flag tendermint.types.BlockIDFlag

CheckTxType

NameNumberDescription
NEW 0

RECHECK 1

MisbehaviorType

NameNumberDescription
UNKNOWN 0

DUPLICATE_VOTE 1

LIGHT_CLIENT_ATTACK 2

ResponseApplySnapshotChunk.Result

NameNumberDescription
UNKNOWN 0

Unknown result, abort all snapshot restoration

ACCEPT 1

Chunk successfully accepted

ABORT 2

Abort all snapshot restoration

RETRY 3

Retry chunk (combine with refetch and reject)

RETRY_SNAPSHOT 4

Retry snapshot (combine with refetch and reject)

REJECT_SNAPSHOT 5

Reject this snapshot, try others

ResponseOfferSnapshot.Result

NameNumberDescription
UNKNOWN 0

Unknown result, abort all snapshot restoration

ACCEPT 1

Snapshot accepted, apply chunks

ABORT 2

Abort all snapshot restoration

REJECT 3

Reject this specific snapshot, try others

REJECT_FORMAT 4

Reject all snapshots of this format, try others

REJECT_SENDER 5

Reject all snapshots from the sender(s), try others

ResponseProcessProposal.ProposalStatus

NameNumberDescription
UNKNOWN 0

ACCEPT 1

REJECT 2

ResponseVerifyVoteExtension.VerifyStatus

NameNumberDescription
UNKNOWN 0

ACCEPT 1

REJECT 2

Rejecting the vote extension will reject the entire precommit by the sender. Incorrectly implementing this thus has liveness implications as it may affect CometBFT's ability to receive 2/3+ valid votes to finalize the block. Honest nodes should never be rejected.

ABCI

Method NameRequest TypeResponse TypeDescription
Echo RequestEcho ResponseEcho

Flush RequestFlush ResponseFlush

Info RequestInfo ResponseInfo

CheckTx RequestCheckTx ResponseCheckTx

Query RequestQuery ResponseQuery

Commit RequestCommit ResponseCommit

InitChain RequestInitChain ResponseInitChain

ListSnapshots RequestListSnapshots ResponseListSnapshots

OfferSnapshot RequestOfferSnapshot ResponseOfferSnapshot

LoadSnapshotChunk RequestLoadSnapshotChunk ResponseLoadSnapshotChunk

ApplySnapshotChunk RequestApplySnapshotChunk ResponseApplySnapshotChunk

PrepareProposal RequestPrepareProposal ResponsePrepareProposal

ProcessProposal RequestProcessProposal ResponseProcessProposal

ExtendVote RequestExtendVote ResponseExtendVote

VerifyVoteExtension RequestVerifyVoteExtension ResponseVerifyVoteExtension

FinalizeBlock RequestFinalizeBlock ResponseFinalizeBlock

Scalar Value Types

.proto Type Notes Python Type
double float
float float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int
int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int/long
uint32 Uses variable-length encoding. int/long
uint64 Uses variable-length encoding. int/long
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int/long
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. int
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. int/long
sfixed32 Always four bytes. int
sfixed64 Always eight bytes. int/long
bool boolean
string A string must always contain UTF-8 encoded or 7-bit ASCII text. str/unicode
bytes May contain any arbitrary sequence of bytes. str