mesh

package
v0.2.15-beta.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 8, 2022 License: MIT Imports: 17 Imported by: 0

Documentation

Overview

Package mesh defines the main store point for all the persisted mesh objects such as ATXs, ballots and blocks.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AtxDB

type AtxDB interface {
	GetAtxHeader(id types.ATXID) (*types.ActivationTxHeader, error)
	GetFullAtx(id types.ATXID) (*types.ActivationTx, error)
	SyntacticallyValidateAtx(ctx context.Context, atx *types.ActivationTx) error
}

AtxDB holds logic for working with atxs.

type BallotFetcherDB

type BallotFetcherDB struct {
	// contains filtered or unexported fields
}

BallotFetcherDB implements API that allows fetcher to get a ballot from a remote database.

func (*BallotFetcherDB) Get

func (db *BallotFetcherDB) Get(hash []byte) ([]byte, error)

Get types.Block encoded in byte using hash.

type BlockFetcherDB

type BlockFetcherDB struct {
	// contains filtered or unexported fields
}

BlockFetcherDB implements API that allows fetcher to get a block from a remote database.

func (*BlockFetcherDB) Get

func (db *BlockFetcherDB) Get(hash []byte) ([]byte, error)

Get types.Block encoded in byte using hash.

type DB added in v0.1.11

type DB struct {
	log.Log
	// contains filtered or unexported fields
}

DB represents a mesh database instance.

func NewMemMeshDB

func NewMemMeshDB(logger log.Log) *DB

NewMemMeshDB is a mock used for testing.

func NewPersistentMeshDB

func NewPersistentMeshDB(db *sql.Database, logger log.Log) (*DB, error)

NewPersistentMeshDB creates an instance of a mesh database.

func (*DB) AddBallot

func (m *DB) AddBallot(b *types.Ballot) error

AddBallot adds a ballot to the database.

func (*DB) AddBlock added in v0.1.11

func (m *DB) AddBlock(b *types.Block) error

AddBlock adds a block to the database.

func (*DB) AddZeroBlockLayer added in v0.1.15

func (m *DB) AddZeroBlockLayer(lid types.LayerID) error

AddZeroBlockLayer tags lyr as a layer without blocks.

func (*DB) Ballots

func (m *DB) Ballots() database.Getter

Ballots exports the ballot database.

func (*DB) Blocks

func (m *DB) Blocks() database.Getter

Blocks exports the block database.

func (*DB) Close added in v0.1.11

func (m *DB) Close()

Close closes all resources.

func (*DB) ContextualValidity added in v0.1.11

func (m *DB) ContextualValidity(id types.BlockID) (bool, error)

ContextualValidity retrieves opinion on block from the database.

func (*DB) GetBallot

func (m *DB) GetBallot(id types.BallotID) (*types.Ballot, error)

GetBallot returns true if the database has Ballot specified by the BallotID and false otherwise.

func (*DB) GetBlock added in v0.1.11

func (m *DB) GetBlock(bid types.BlockID) (*types.Block, error)

GetBlock returns the block specified by the block ID.

func (*DB) GetBlockLayer

func (m *DB) GetBlockLayer(bid types.BlockID) (types.LayerID, error)

GetBlockLayer returns the layer of the block specified by the block ID.

func (*DB) GetCoinflip

func (m *DB) GetCoinflip(_ context.Context, layerID types.LayerID) (bool, bool)

GetCoinflip returns the weak coinflip result for the given layer.

func (*DB) GetHareConsensusOutput

func (m *DB) GetHareConsensusOutput(layerID types.LayerID) (types.BlockID, error)

GetHareConsensusOutput gets the input vote vector for a layer (hare results).

func (*DB) GetLatestLayer

func (m *DB) GetLatestLayer() (types.LayerID, error)

GetLatestLayer loads latest layer from database.

func (*DB) GetProcessedLayer

func (m *DB) GetProcessedLayer() (types.LayerID, error)

GetProcessedLayer loads processed layer from database.

func (*DB) GetRewards added in v0.1.11

func (m *DB) GetRewards(coinbase types.Address) ([]*types.Reward, error)

GetRewards retrieves account's rewards by the coinbase address.

func (*DB) GetVerifiedLayer

func (m *DB) GetVerifiedLayer() (types.LayerID, error)

GetVerifiedLayer loads verified layer from database.

func (*DB) HasBallot

func (m *DB) HasBallot(ballot types.BallotID) bool

HasBallot returns true if the ballot is stored in a database.

func (*DB) HasBlock

func (m *DB) HasBlock(bid types.BlockID) bool

HasBlock returns true if block exists in the database.

func (*DB) LastAppliedLayer

func (m *DB) LastAppliedLayer() (types.LayerID, error)

LastAppliedLayer returns the last applied layer.

func (*DB) LayerBallotIDs

func (m *DB) LayerBallotIDs(lid types.LayerID) ([]types.BallotID, error)

LayerBallotIDs returns list of the ballot ids in the layer.

func (*DB) LayerBallots

func (m *DB) LayerBallots(lid types.LayerID) ([]*types.Ballot, error)

LayerBallots retrieves all ballots from a layer by layer ID.

func (*DB) LayerBlockIds added in v0.1.11

func (m *DB) LayerBlockIds(lid types.LayerID) ([]types.BlockID, error)

LayerBlockIds retrieves all block IDs from the layer specified by layer ID.

func (*DB) LayerBlocks added in v0.1.11

func (m *DB) LayerBlocks(lid types.LayerID) ([]*types.Block, error)

LayerBlocks retrieves all blocks from the layer specified by layer ID.

func (*DB) LayerContextualValidity

func (m *DB) LayerContextualValidity(lid types.LayerID) ([]types.BlockContextualValidity, error)

LayerContextualValidity returns tuples with block id and contextual validity for all blocks in the layer.

func (*DB) PersistentData added in v0.1.11

func (m *DB) PersistentData() bool

PersistentData checks to see if db is empty.

func (*DB) RecordCoinflip

func (m *DB) RecordCoinflip(ctx context.Context, layerID types.LayerID, coinflip bool)

RecordCoinflip saves the weak coinflip result to memory for the given layer.

func (*DB) SaveContextualValidity added in v0.1.11

func (m *DB) SaveContextualValidity(id types.BlockID, lid types.LayerID, valid bool) error

SaveContextualValidity persists opinion on block to the database.

func (*DB) SaveHareConsensusOutput

func (m *DB) SaveHareConsensusOutput(ctx context.Context, id types.LayerID, blockID types.BlockID) error

SaveHareConsensusOutput gets the input vote vector for a layer (hare results).

func (*DB) SetIdentityMalicious

func (m *DB) SetIdentityMalicious(pubKey *signing.PublicKey) error

SetIdentityMalicious records an identity to be malicious.

func (*DB) SetMalicious

func (m *DB) SetMalicious(smesher *signing.PublicKey) error

SetMalicious updates smesher as malicious.

type Mesh

type Mesh struct {
	log.Log
	*DB
	AtxDB
	// contains filtered or unexported fields
}

Mesh is the logic layer above our mesh.DB database.

func NewMesh

func NewMesh(db *DB, atxDb AtxDB, trtl tortoise, state conservativeState, logger log.Log) *Mesh

NewMesh creates a new instant of a mesh.

func NewRecoveredMesh

func NewRecoveredMesh(db *DB, atxDb AtxDB, trtl tortoise, state conservativeState, logger log.Log) *Mesh

NewRecoveredMesh creates new instance of mesh with recovered mesh data fom database.

func (*Mesh) AddBallot added in v1.0.0

func (msh *Mesh) AddBallot(ballot *types.Ballot) error

AddBallot to the mesh.

func (*Mesh) AddBlockWithTXs added in v1.0.0

func (msh *Mesh) AddBlockWithTXs(ctx context.Context, block *types.Block) error

AddBlockWithTXs adds the block and its TXs in into the database.

func (*Mesh) AddTXsFromProposal added in v1.0.0

func (msh *Mesh) AddTXsFromProposal(ctx context.Context, layerID types.LayerID, proposalID types.ProposalID, txIDs []types.TransactionID) error

AddTXsFromProposal adds the TXs in a Proposal into the database.

func (*Mesh) GetATXs

func (msh *Mesh) GetATXs(ctx context.Context, atxIds []types.ATXID) (map[types.ATXID]*types.ActivationTx, []types.ATXID)

GetATXs uses GetFullAtx to return a list of atxs corresponding to atxIds requested.

func (*Mesh) GetAggregatedLayerHash

func (msh *Mesh) GetAggregatedLayerHash(layerID types.LayerID) (types.Hash32, error)

GetAggregatedLayerHash returns the aggregated layer hash up to the specified layer.

func (*Mesh) GetLayer

func (msh *Mesh) GetLayer(lid types.LayerID) (*types.Layer, error)

GetLayer returns Layer i from the database.

func (*Mesh) GetLayerHash

func (msh *Mesh) GetLayerHash(layerID types.LayerID) (types.Hash32, error)

GetLayerHash returns layer hash.

func (*Mesh) LatestLayer

func (msh *Mesh) LatestLayer() types.LayerID

LatestLayer - returns the latest layer we saw from the network.

func (*Mesh) LatestLayerInState

func (msh *Mesh) LatestLayerInState() types.LayerID

LatestLayerInState returns the latest layer we applied to state.

func (*Mesh) MissingLayer

func (msh *Mesh) MissingLayer() types.LayerID

MissingLayer is a layer in (latestLayerInState, processLayer]. this layer is missing critical data (valid blocks or transactions) and can't be applied to the state.

First valid layer starts with 1. 0 is empty layer and can be ignored.

func (*Mesh) ProcessLayer added in v1.0.0

func (msh *Mesh) ProcessLayer(ctx context.Context, layerID types.LayerID) error

ProcessLayer performs fairly heavy lifting: it triggers tortoise to process the full contents of the layer (i.e., all of its blocks), then to attempt to validate all unvalidated layers up to this layer. It also applies state for newly-validated layers.

func (*Mesh) ProcessLayerPerHareOutput added in v1.0.0

func (msh *Mesh) ProcessLayerPerHareOutput(ctx context.Context, layerID types.LayerID, blockID types.BlockID) error

ProcessLayerPerHareOutput receives hare output once it finishes running for a given layer.

func (*Mesh) ProcessedLayer

func (msh *Mesh) ProcessedLayer() types.LayerID

ProcessedLayer returns the last processed layer ID.

func (*Mesh) SetZeroBlockLayer added in v0.1.6

func (msh *Mesh) SetZeroBlockLayer(lyr types.LayerID) error

SetZeroBlockLayer tags lyr as a layer without blocks.

func (*Mesh) UpdateBlockValidity

func (msh *Mesh) UpdateBlockValidity(bid types.BlockID, lid types.LayerID, newValid bool) error

UpdateBlockValidity is the callback used when a block's contextual validity is updated by tortoise.

Directories

Path Synopsis
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL