Documentation ¶
Index ¶
- func RecoverLayer(ctx context.Context, trtl *Tortoise, db *datastore.CachedDB, ...) error
- type Config
- type DecodedBallot
- type EncodeVotesOpts
- type Opt
- type Tortoise
- func (t *Tortoise) DecodeBallot(ballot *types.Ballot) (*DecodedBallot, error)
- func (t *Tortoise) EncodeVotes(ctx context.Context, opts ...EncodeVotesOpts) (*types.Opinion, error)
- func (t *Tortoise) GetMissingActiveSet(epoch types.EpochID, atxs []types.ATXID) []types.ATXID
- func (t *Tortoise) LatestComplete() types.LayerID
- func (t *Tortoise) OnAtx(atx *types.ActivationTxHeader)
- func (t *Tortoise) OnBallot(ballot *types.Ballot)
- func (t *Tortoise) OnBeacon(eid types.EpochID, beacon types.Beacon)
- func (t *Tortoise) OnBlock(header types.BlockHeader)
- func (t *Tortoise) OnHareOutput(lid types.LayerID, bid types.BlockID)
- func (t *Tortoise) OnValidBlock(header types.BlockHeader)
- func (t *Tortoise) OnWeakCoin(lid types.LayerID, coin bool)
- func (t *Tortoise) Results(from, to types.LayerID) ([]result.Layer, error)
- func (t *Tortoise) StoreBallot(decoded *DecodedBallot) error
- func (t *Tortoise) TallyVotes(ctx context.Context, lid types.LayerID)
- func (t *Tortoise) Updates() map[types.LayerID]map[types.BlockID]bool
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
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.
type DecodedBallot ¶ added in v1.0.0
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
WithConfig defines protocol parameters.
func WithContext ¶
WithContext defines context for tortoise.
func WithLogger ¶ added in v1.0.0
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 (*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
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 ¶
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
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) 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
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 (*Tortoise) Results ¶ added in v1.0.0
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
TallyVotes up to the specified layer.