bootstrap

package
v1.5.1 Latest Latest
Warning

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

Go to latest
Published: Apr 29, 2024 License: MIT Imports: 23 Imported by: 0

Documentation

Overview

Package bootstrap is a generated GoMock package.

Package bootstrap checks for the bootstrap/fallback data update from the spacemesh administrator (a centralized entity controlled by the spacemesh team). This is intended as a short-term solution at the beginning of the network deployment to facilitate recovering from network failures and should be removed once the network is stable.

The updater periodically checks for the latest update from a URL provided by the spacemesh administrator, verifies the data, persists on disk and notifies subscribers of a new update.

Subscribers register by calling `Subscribe()` to receive a channel for the latest update.

Index

Constants

View Source
const (
	DefaultURL = "http://localhost:3000/bootstrap"
	DirName    = "bootstrap"

	SuffixBeacon    = "bc"
	SuffixActiveSet = "as"
	SuffixBootstrap = "bs"
)

Variables

View Source
var (
	ErrWrongVersion  = errors.New("wrong schema version")
	ErrInvalidBeacon = errors.New("invalid beacon")
)
View Source
var Schema string

Functions

func PersistFilename

func PersistFilename(dataDir string, epoch types.EpochID, basename string) string

func UpdateName

func UpdateName(epoch types.EpochID, suffix string) string

func ValidateSchema

func ValidateSchema(data []byte) error

Types

type Config

type Config struct {
	URL     string `mapstructure:"bootstrap-url"`
	Version string `mapstructure:"bootstrap-version"`

	DataDir  string
	Interval time.Duration
}

func DefaultConfig

func DefaultConfig() Config

type EpochData

type EpochData struct {
	ID        uint32   `json:"number"`
	Beacon    string   `json:"beacon"`
	ActiveSet []string `json:"activeSet"`
}

type EpochOverride

type EpochOverride struct {
	Epoch     types.EpochID
	Beacon    types.Beacon
	ActiveSet []types.ATXID
}

type InnerData

type InnerData struct {
	Epoch EpochData `json:"epoch"`
}

type MocklayerClock

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

MocklayerClock is a mock of layerClock interface.

func NewMocklayerClock

func NewMocklayerClock(ctrl *gomock.Controller) *MocklayerClock

NewMocklayerClock creates a new mock instance.

func (*MocklayerClock) CurrentLayer

func (m *MocklayerClock) CurrentLayer() types.LayerID

CurrentLayer mocks base method.

func (*MocklayerClock) EXPECT

EXPECT returns an object that allows the caller to indicate expected use.

type MocklayerClockCurrentLayerCall added in v1.4.0

type MocklayerClockCurrentLayerCall struct {
	*gomock.Call
}

MocklayerClockCurrentLayerCall wrap *gomock.Call

func (*MocklayerClockCurrentLayerCall) Do added in v1.4.0

Do rewrite *gomock.Call.Do

func (*MocklayerClockCurrentLayerCall) DoAndReturn added in v1.4.0

DoAndReturn rewrite *gomock.Call.DoAndReturn

func (*MocklayerClockCurrentLayerCall) Return added in v1.4.0

Return rewrite *gomock.Call.Return

type MocklayerClockMockRecorder

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

MocklayerClockMockRecorder is the mock recorder for MocklayerClock.

func (*MocklayerClockMockRecorder) CurrentLayer

CurrentLayer indicates an expected call of CurrentLayer.

type Opt

type Opt func(*Updater)

func WithConfig

func WithConfig(cfg Config) Opt

func WithFilesystem

func WithFilesystem(fs afero.Fs) Opt

func WithHttpClient

func WithHttpClient(c *http.Client) Opt

func WithLogger

func WithLogger(logger log.Log) Opt

type Update

type Update struct {
	Version string    `json:"version"`
	Data    InnerData `json:"data"`
}

type Updater

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

func New

func New(clock layerClock, opts ...Opt) *Updater

func (*Updater) Close

func (u *Updater) Close() error

func (*Updater) DoIt

func (u *Updater) DoIt(ctx context.Context) error

func (*Updater) Downloaded added in v1.1.0

func (u *Updater) Downloaded(epoch types.EpochID, suffix string) bool

func (*Updater) Load

func (u *Updater) Load(ctx context.Context) error

func (*Updater) Start

func (u *Updater) Start() error

func (*Updater) Subscribe

func (u *Updater) Subscribe() (<-chan *VerifiedUpdate, error)

type VerifiedUpdate

type VerifiedUpdate struct {
	Data      *EpochOverride
	Persisted string
}

func (*VerifiedUpdate) MarshalLogObject

func (vd *VerifiedUpdate) MarshalLogObject(encoder log.ObjectEncoder) error

Jump to

Keyboard shortcuts

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