share

package
v0.7.0-rc7 Latest Latest
Warning

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

Go to latest
Published: Feb 17, 2023 License: Apache-2.0 Imports: 27 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNegativeInterval = errors.New("interval must be positive")
)

Functions

func ConstructModule

func ConstructModule(tp node.Type, cfg *Config, options ...fx.Option) fx.Option

Types

type API added in v0.5.0

type API struct {
	Internal struct {
		SharesAvailable           func(context.Context, *share.Root) error `perm:"public"`
		ProbabilityOfAvailability func(context.Context) float64            `perm:"public"`
		GetShare                  func(
			ctx context.Context,
			dah *share.Root,
			row, col int,
		) (share.Share, error) `perm:"public"`
		GetEDS func(
			ctx context.Context,
			root *share.Root,
		) (*rsmt2d.ExtendedDataSquare, error) `perm:"public"`
		GetSharesByNamespace func(
			ctx context.Context,
			root *share.Root,
			namespace namespace.ID,
		) (share.NamespacedShares, error) `perm:"public"`
	}
}

API is a wrapper around Module for the RPC. TODO(@distractedm1nd): These structs need to be autogenerated.

func (*API) GetEDS added in v0.6.2

func (api *API) GetEDS(ctx context.Context, root *share.Root) (*rsmt2d.ExtendedDataSquare, error)

func (*API) GetShare added in v0.5.0

func (api *API) GetShare(ctx context.Context, dah *share.Root, row, col int) (share.Share, error)

func (*API) GetSharesByNamespace added in v0.5.0

func (api *API) GetSharesByNamespace(
	ctx context.Context,
	root *share.Root,
	namespace namespace.ID,
) (share.NamespacedShares, error)

func (*API) ProbabilityOfAvailability added in v0.5.0

func (api *API) ProbabilityOfAvailability(ctx context.Context) float64

func (*API) SharesAvailable added in v0.5.0

func (api *API) SharesAvailable(ctx context.Context, root *share.Root) error

type Config

type Config struct {
	// PeersLimit defines how many peers will be added during discovery.
	PeersLimit uint
	// DiscoveryInterval is an interval between discovery sessions.
	DiscoveryInterval time.Duration
	// AdvertiseInterval is a interval between advertising sessions.
	// NOTE: only full and bridge can advertise themselves.
	AdvertiseInterval time.Duration
	// UseShareExchange is a flag toggling the usage of shrex protocols for blocksync.
	// NOTE: This config variable only has an effect on full and bridge nodes.
	UseShareExchange bool
}

func DefaultConfig

func DefaultConfig() Config

func (*Config) Validate

func (cfg *Config) Validate() error

Validate performs basic validation of the config.

type Module

type Module interface {
	// SharesAvailable subjectively validates if Shares committed to the given Root are available on
	// the Network.
	SharesAvailable(context.Context, *share.Root) error
	// ProbabilityOfAvailability calculates the probability of the data square
	// being available based on the number of samples collected.
	ProbabilityOfAvailability(context.Context) float64
	// GetShare gets a Share by coordinates in EDS.
	GetShare(ctx context.Context, dah *share.Root, row, col int) (share.Share, error)
	// GetEDS gets the full EDS identified by the given root.
	GetEDS(ctx context.Context, root *share.Root) (*rsmt2d.ExtendedDataSquare, error)
	// GetSharesByNamespace gets all shares from an EDS within the given namespace.
	// Shares are returned in a row-by-row order if the namespace spans multiple rows.
	GetSharesByNamespace(ctx context.Context, root *share.Root, namespace namespace.ID) (share.NamespacedShares, error)
}

Module provides access to any data square or block share on the network.

All Get methods provided on Module follow the following flow:

  1. Check local storage for the requested Share.
  2. If exists * Load from disk * Return
  3. If not * Find provider on the network * Fetch the Share from the provider * Store the Share * Return

Any method signature changed here needs to also be changed in the API struct.

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