tortoise

package
v0.3.3-beta.2 Latest Latest
Warning

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

Go to latest
Published: May 19, 2023 License: MIT Imports: 25 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func RecoverLayer added in v1.0.0

func RecoverLayer(ctx context.Context, trtl *Tortoise, db *datastore.CachedDB, beacon system.BeaconGetter, lid types.LayerID) error

Types

type Config added in v1.0.0

type Config struct {
	Hdist uint32 `mapstructure:"tortoise-hdist"` // hare output lookback distance
	Zdist uint32 `mapstructure:"tortoise-zdist"` // hare result wait distance
	// how long we are waiting for a switch from verifying to full. relevant during rerun.
	WindowSize    uint32 `mapstructure:"tortoise-window-size"`    // size of the tortoise sliding window (in layers)
	MaxExceptions int    `mapstructure:"tortoise-max-exceptions"` // if candidate for base ballot has more than max exceptions it will be ignored
	// number of layers to delay votes for blocks with bad beacon values during self-healing. ideally a full epoch.
	BadBeaconVoteDelayLayers uint32 `mapstructure:"tortoise-delay-layers"`

	LayerSize uint32
}

Config for protocol parameters.

func DefaultConfig added in v1.0.0

func DefaultConfig() Config

DefaultConfig for Tortoise.

type DecodedBallot added in v1.0.0

type DecodedBallot struct {
	*types.Ballot
	// contains filtered or unexported fields
}

DecodedBallot created after unwrapping exceptions list and computing internal opinion.

type EncodeVotesOpts added in v1.0.0

type EncodeVotesOpts func(*encodeConf)

EncodeVotesOpts is for configuring EncodeVotes options.

func EncodeVotesWithCurrent added in v1.0.0

func EncodeVotesWithCurrent(current types.LayerID) EncodeVotesOpts

EncodeVotesWithCurrent changes last known layer that will be used for encoding votes.

NOTE(dshulyak) why do we need this? tortoise computes threshold from last non-verified till the last known layer, since we dont download atxs before starting tortoise we won't be able to compute threshold based on the last clock layer (see https://github.com/spacemeshos/go-spacemesh/issues/3003)

type Opt added in v1.0.0

type Opt func(t *Tortoise)

Opt for configuring tortoise.

func WithConfig added in v1.0.0

func WithConfig(cfg Config) Opt

WithConfig defines protocol parameters.

func WithContext

func WithContext(ctx context.Context) Opt

WithContext defines context for tortoise.

func WithLogger added in v1.0.0

func WithLogger(logger log.Log) Opt

WithLogger defines logger for tortoise.

type Tortoise

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

Tortoise is a thread safe verifying tortoise wrapper, it just locks all actions.

func New added in v1.0.0

func New(opts ...Opt) (*Tortoise, error)

New creates Tortoise instance.

func Recover added in v1.0.0

func Recover(db *datastore.CachedDB, beacon system.BeaconGetter, opts ...Opt) (*Tortoise, error)

Recover tortoise state from database.

func (*Tortoise) DecodeBallot added in v1.0.0

func (t *Tortoise) DecodeBallot(ballot *types.Ballot) (*DecodedBallot, error)

DecodeBallot decodes ballot if it wasn't processed earlier.

func (*Tortoise) EncodeVotes added in v1.0.0

func (t *Tortoise) EncodeVotes(ctx context.Context, opts ...EncodeVotesOpts) (*types.Opinion, error)

EncodeVotes chooses a base ballot and creates a differences list. needs the hare results for latest layers.

func (*Tortoise) GetMissingActiveSet added in v1.0.0

func (t *Tortoise) GetMissingActiveSet(epoch types.EpochID, atxs []types.ATXID) []types.ATXID

GetMissingActiveSet returns unknown atxs from the original list. It is done for a specific epoch as active set atxs never cross epoch boundary.

func (*Tortoise) LatestComplete

func (t *Tortoise) LatestComplete() types.LayerID

LatestComplete returns the latest verified layer.

func (*Tortoise) OnAtx added in v1.0.0

func (t *Tortoise) OnAtx(atx *types.ActivationTxHeader)

OnAtx is expected to be called before ballots that use this atx.

func (*Tortoise) OnBallot added in v1.0.0

func (t *Tortoise) OnBallot(ballot *types.Ballot)

OnBallot should be called every time new ballot is received. Dependencies (base ballot, ref ballot, active set and its own atx) must be processed before ballot.

func (*Tortoise) OnBeacon added in v1.0.0

func (t *Tortoise) OnBeacon(eid types.EpochID, beacon types.Beacon)

func (*Tortoise) OnBlock added in v1.0.0

func (t *Tortoise) OnBlock(header types.BlockHeader)

OnBlock updates tortoise with information that data is available locally.

func (*Tortoise) OnHareOutput added in v1.0.0

func (t *Tortoise) OnHareOutput(lid types.LayerID, bid types.BlockID)

OnHareOutput should be called when hare terminated or certificate for a block was synced from a peer. This method is expected to be called any number of times, with layers in any order.

This method should be called with EmptyBlockID if node received proof of malicious behavior, such as signing same block id by members of the same committee.

func (*Tortoise) OnValidBlock added in v1.0.0

func (t *Tortoise) OnValidBlock(header types.BlockHeader)

OnValidBlock inserts block, updates that data is stored locally and that block was previously considered valid by tortoise.

func (*Tortoise) OnWeakCoin added in v1.0.0

func (t *Tortoise) OnWeakCoin(lid types.LayerID, coin bool)

func (*Tortoise) Results added in v1.0.0

func (t *Tortoise) Results(from, to types.LayerID) ([]result.Layer, error)

Results returns layers that crossed threshold in range [from, to].

func (*Tortoise) StoreBallot added in v1.0.0

func (t *Tortoise) StoreBallot(decoded *DecodedBallot) error

StoreBallot stores previously decoded ballot.

func (*Tortoise) TallyVotes added in v1.0.0

func (t *Tortoise) TallyVotes(ctx context.Context, lid types.LayerID)

TallyVotes up to the specified layer.

func (*Tortoise) Updates added in v1.0.0

func (t *Tortoise) Updates() map[types.LayerID]map[types.BlockID]bool

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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