Documentation
¶
Index ¶
- Constants
- Variables
- type AckRes
- type BlockGetter
- type BlockResultsStorer
- type BlockStore
- type BlockStorer
- type ConsensusReset
- type DiscoveryRequest
- type DiscoveryResponse
- type Hash
- type HexBytes
- type MemPool
- type NackStatus
- type OutOfSyncProof
- type QualifiedBlock
- type RawGetter
- type Role
- type Tx
- type TxGetter
Constants ¶
const HashLen = types.HashLen
Variables ¶
var ( ErrNotFound = types.ErrNotFound ErrTxNotFound = types.ErrTxNotFound ErrTxAlreadyExists = types.ErrTxAlreadyExists )
The following errors must be aliases for errors.Is to work properly.
Functions ¶
This section is empty.
Types ¶
type AckRes ¶
type AckRes struct { ACK bool // only required if ACK is false NackStatus *NackStatus Height int64 BlkHash Hash // only required if ACK is true AppHash *Hash // optional, only required if the nack status is NackStatusOutOfSync OutOfSyncProof *OutOfSyncProof // Signature Signature *types.Signature }
func (AckRes) MarshalBinary ¶
func (*AckRes) OutOfSync ¶
func (ar *AckRes) OutOfSync() (*OutOfSyncProof, bool)
func (*AckRes) UnmarshalBinary ¶
type BlockGetter ¶
type BlockResultsStorer ¶
type BlockStore ¶
type BlockStore interface { BlockGetter RawGetter BlockStorer TxGetter BlockResultsStorer Best() (height int64, blkHash, appHash Hash, stamp time.Time) PreFetch(Hash) (bool, func()) // should be app level instead (TODO: remove) Close() error }
type BlockStorer ¶
type BlockStorer interface {
Store(*types.Block, *types.CommitInfo) error
}
type ConsensusReset ¶
func (ConsensusReset) Bytes ¶
func (cr ConsensusReset) Bytes() []byte
func (ConsensusReset) MarshalBinary ¶
func (cr ConsensusReset) MarshalBinary() ([]byte, error)
func (ConsensusReset) String ¶
func (cr ConsensusReset) String() string
func (*ConsensusReset) UnmarshalBinary ¶
func (cr *ConsensusReset) UnmarshalBinary(data []byte) error
type DiscoveryRequest ¶
type DiscoveryRequest struct{}
func (DiscoveryRequest) String ¶
func (dr DiscoveryRequest) String() string
type DiscoveryResponse ¶
type DiscoveryResponse struct {
BestHeight int64
}
func (DiscoveryResponse) Bytes ¶
func (dr DiscoveryResponse) Bytes() []byte
func (DiscoveryResponse) MarshalBinary ¶
func (dr DiscoveryResponse) MarshalBinary() ([]byte, error)
func (DiscoveryResponse) String ¶
func (dr DiscoveryResponse) String() string
func (*DiscoveryResponse) UnmarshalBinary ¶
func (dr *DiscoveryResponse) UnmarshalBinary(data []byte) error
type NackStatus ¶
type NackStatus string
NackStatus desribes the reason for a nack response.
const ( // If the block validation fails either due to invalid header info such as // AppHash or the ValidatorHash or Invalid Merkle hash etc. NackStatusInvalidBlock NackStatus = "invalid_block" // If leader proposes a new block for an already committed height, indicating // that the leader may potentially be out of sync with the rest of the network. // This requires the validator to prove to the leader that the block is indeed // committed by sending the block header with the leaders signature in the Vote. NackStatusOutOfSync NackStatus = "out_of_sync" // other unknown miscellaneous reasons for nack NackStatusUnknown NackStatus = "unknown" )
func (NackStatus) String ¶
func (ns NackStatus) String() string
type OutOfSyncProof ¶
type OutOfSyncProof struct { // Header is the block header corresponding to the best height the node is at. Header *types.BlockHeader // Signature is the signature of the block header provided by the leader. Signature []byte }
OutOfSyncProof is the evidence that the validator provides to the leader in the NACK vote to inform leader that it is out of sync with the network.
type QualifiedBlock ¶
type Tx ¶
type Tx struct { *types.Transaction // contains filtered or unexported fields }
Tx represents an immutable transaction. The constructor will compute the hash, which it will return directly from the Hash method. This means that the hash is only computed once. However, it is important note that the transaction fields should not be changed, because the hash will not be correct.
This is intended for use in node internals, primarily mempool and consensus engine where the hash is repeatedly accessed on deep call stacks.
In most cases, you should use the Tx type from the core/types package. Be aware of the cost of computing the hash, and avoid recomputing it.
If you use this type, be aware of the mutability caveat, and consider the cost of the memory allocation, and the persistence of the hash potentially after it is no longer needed.