bootstrap

package
v0.3.8-beta.1 Latest Latest
Warning

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

Go to latest
Published: Jun 15, 2023 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"
	SuffixBoostrap  = "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 MocklayerClockMockRecorder

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

MocklayerClockMockRecorder is the mock recorder for MocklayerClock.

func (*MocklayerClockMockRecorder) CurrentLayer

func (mr *MocklayerClockMockRecorder) CurrentLayer() *gomock.Call

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()

func (*Updater) DoIt

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

func (*Updater) Load

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

func (*Updater) Start

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

func (*Updater) Subscribe

func (u *Updater) Subscribe() chan *VerifiedUpdate

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