Documentation
¶
Overview ¶
Package api provides the implementation agnostic consensus API.
Index ¶
- Constants
- type Block
- type BlockMetadata
- type EstimateGasRequest
- type Evidence
- type FeatureMask
- type GetSignerNonceRequest
- type HaltHook
- type LightBlock
- type LightClientStatus
- type NextBlockState
- type NoOpSubmissionManager
- type P2PStatus
- type Parameters
- type Status
- type StatusState
- type TransactionsWithProofs
- type TransactionsWithResults
- type Vote
- type Votes
Constants ¶
const ( // ModuleName is the module name used for error definitions. ModuleName = "consensus" // HeightLatest is the height that represents the most recent block height. HeightLatest int64 = 0 )
const BlockMetadataMaxSize = 16_384
BlockMetadataMaxSize is the maximum size of a fully populated and signed block metadata transaction.
This should be less than any reasonably configured MaxTxSize.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Block ¶
type Block struct {
// Height contains the block height.
Height int64 `json:"height"`
// Hash contains the block header hash.
Hash hash.Hash `json:"hash"`
// Time is the second-granular consensus time.
Time time.Time `json:"time"`
// StateRoot is the Merkle root of the consensus state tree.
StateRoot mkvsNode.Root `json:"state_root"`
// Meta contains the consensus backend specific block metadata.
Meta cbor.RawMessage `json:"meta"`
}
Block is a consensus block.
While some common fields are provided, most of the structure is dependent on the actual backend implementation.
type BlockMetadata ¶
type BlockMetadata struct {
// StateRoot is the state root after executing all logic in the block.
StateRoot hash.Hash `json:"state_root"`
// EventsRoot is the provable events root.
EventsRoot []byte `json:"events_root"`
}
BlockMetadata contains additional metadata related to the executing block.
The metadata is included in the form of a special transaction where this structure is the transaction body.
type EstimateGasRequest ¶
type EstimateGasRequest struct {
Signer signature.PublicKey `json:"signer"`
Transaction *transaction.Transaction `json:"transaction"`
}
EstimateGasRequest is a EstimateGas request.
type Evidence ¶
type Evidence struct {
// Meta contains the consensus backend specific evidence.
Meta []byte `json:"meta"`
}
Evidence is evidence of a node's Byzantine behavior.
type FeatureMask ¶
type FeatureMask uint8
FeatureMask is the consensus backend feature bitmask.
const ( // FeatureServices indicates support for communicating with consensus services. FeatureServices FeatureMask = 1 << 0 // FeatureFullNode indicates that the consensus backend is independently fully verifying all // consensus-layer blocks. FeatureFullNode FeatureMask = 1 << 1 // FeatureArchiveNode indicates that the node is an archive node. FeatureArchiveNode FeatureMask = 1 << 2 )
func (FeatureMask) String ¶
func (m FeatureMask) String() string
String returns a string representation of the consensus backend feature bitmask.
type GetSignerNonceRequest ¶
type GetSignerNonceRequest struct {
AccountAddress staking.Address `json:"account_address"`
Height int64 `json:"height"`
}
GetSignerNonceRequest is a GetSignerNonce request.
type HaltHook ¶
HaltHook is a function that gets called when consensus needs to halt for some reason.
type LightBlock ¶
type LightBlock struct {
// Height contains the block height.
Height int64 `json:"height"`
// Meta contains the consensus backend specific light block.
Meta []byte `json:"meta"`
}
LightBlock is a light consensus block suitable for syncing light clients.
type LightClientStatus ¶
type LightClientStatus struct {
// LatestHeight is the height of the latest block.
LatestHeight int64 `json:"latest_height"`
// LatestHash is the hash of the latest block.
LatestHash hash.Hash `json:"latest_hash"`
// LatestTime is the timestamp of the latest block.
LatestTime time.Time `json:"latest_time"`
// OldestHeight is the height of the oldest block.
OldestHeight int64 `json:"oldest_height"`
// LatestHash is the hash of the oldest block.
OldestHash hash.Hash `json:"oldest_hash"`
// OldestTime is the timestamp of the oldest block.
OldestTime time.Time `json:"oldest_time"`
// PeersIDs are the light client provider peer identifiers.
PeerIDs []string `json:"peer_ids"`
}
LightClientStatus is the current light client status overview.
type NextBlockState ¶
type NextBlockState struct {
Height int64 `json:"height"`
NumValidators uint64 `json:"num_validators"`
VotingPower uint64 `json:"voting_power"`
Prevotes Votes `json:"prevotes"`
Precommits Votes `json:"precommits"`
}
NextBlockState has the state of the next block being voted on by validators.
type NoOpSubmissionManager ¶
type NoOpSubmissionManager struct{}
NoOpSubmissionManager implements a submission manager that doesn't support submitting transactions.
type P2PStatus ¶
type P2PStatus struct {
// PubKey is the public key used for consensus P2P communication.
PubKey signature.PublicKey `json:"pub_key"`
// PeerID is the peer ID derived by hashing peer's public key.
PeerID string `json:"peer_id"`
// Addresses is a list of configured P2P addresses used when registering the node.
Addresses []node.ConsensusAddress `json:"addresses"`
// Peers is a list of node's peers.
Peers []string `json:"peers"`
}
P2PStatus is the P2P status of a node.
type Parameters ¶
type Parameters struct {
// Height contains the block height these consensus parameters are for.
Height int64 `json:"height"`
// Parameters are the backend agnostic consensus parameters.
Parameters genesis.Parameters `json:"parameters"`
// Meta contains the consensus backend specific consensus parameters.
Meta []byte `json:"meta"`
}
Parameters are the consensus backend parameters.
type Status ¶
type Status struct {
// Status is an concise status of the consensus backend.
Status StatusState `json:"status"`
// Version is the version of the consensus protocol that the node is using.
Version version.Version `json:"version"`
// Backend is the consensus backend identifier.
Backend string `json:"backend"`
// Features are the indicated consensus backend features.
Features FeatureMask `json:"features"`
// LatestHeight is the height of the latest block.
LatestHeight int64 `json:"latest_height"`
// LatestHash is the hash of the latest block.
LatestHash hash.Hash `json:"latest_hash"`
// LatestTime is the timestamp of the latest block.
LatestTime time.Time `json:"latest_time"`
// LatestEpoch is the epoch of the latest block.
LatestEpoch beacon.EpochTime `json:"latest_epoch"`
// LatestStateRoot is the Merkle root of the consensus state tree.
LatestStateRoot mkvsNode.Root `json:"latest_state_root"`
// GenesisHeight is the height of the genesis block.
GenesisHeight int64 `json:"genesis_height"`
// GenesisHash is the hash of the genesis block.
GenesisHash hash.Hash `json:"genesis_hash"`
// LastRetainedHeight is the height of the oldest retained block.
LastRetainedHeight int64 `json:"last_retained_height"`
// LastRetainedHash is the hash of the oldest retained block.
LastRetainedHash hash.Hash `json:"last_retained_hash"`
// ChainContext is the chain domain separation context.
ChainContext string `json:"chain_context"`
// IsValidator returns whether the current node is part of the validator set.
IsValidator bool `json:"is_validator"`
// P2P is the P2P status of the node.
P2P *P2PStatus `json:"p2p,omitempty"`
}
Status is the current status overview.
type StatusState ¶
type StatusState uint8
StatusState is the concise status state of the consensus backend.
var ( // StatusStateReady is the ready status state. StatusStateReady StatusState // StatusStateSyncing is the syncing status state. StatusStateSyncing StatusState = 1 )
func (StatusState) MarshalText ¶
func (s StatusState) MarshalText() ([]byte, error)
MarshalText encodes a StatusState into text form.
func (StatusState) String ¶
func (s StatusState) String() string
String returns a string representation of a status state.
func (*StatusState) UnmarshalText ¶
func (s *StatusState) UnmarshalText(text []byte) error
UnmarshalText decodes a text slice into a StatusState.
type TransactionsWithProofs ¶
type TransactionsWithProofs struct {
Transactions [][]byte `json:"transactions"`
Proofs [][]byte `json:"proofs"`
}
TransactionsWithProofs is GetTransactionsWithProofs response.
Proofs[i] is a proof of block inclusion for Transactions[i].
type TransactionsWithResults ¶
type TransactionsWithResults struct {
Transactions [][]byte `json:"transactions"`
Results []*results.Result `json:"results"`
}
TransactionsWithResults is GetTransactionsWithResults response.
Results[i] are the results of executing Transactions[i].