manifest

package
v0.8.10 Latest Latest
Warning

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

Go to latest
Published: Sep 1, 2025 License: Apache-2.0, MIT Imports: 10 Imported by: 24

Documentation

Index

Constants

View Source
const VersionCapability = 7

Variables

View Source
var (
	DefaultCommitteeLookback uint64 = 10

	// Default configuration for the EC Backend
	DefaultEcConfig = EcConfig{
		Finality:        900,
		Period:          30 * time.Second,
		DelayMultiplier: 2.,

		BaseDecisionBackoffTable: []float64{1.3, 1.69, 2.2, 2.86, 3.71, 4.83, 6.27, 7.5},
		HeadLookback:             0,
		Finalize:                 true,
	}

	DefaultGpbftConfig = GpbftConfig{
		Delta:                      6 * time.Second,
		DeltaBackOffExponent:       2.0,
		QualityDeltaMultiplier:     1.0,
		MaxLookaheadRounds:         5,
		ChainProposedLength:        gpbft.ChainDefaultLen,
		RebroadcastBackoffBase:     6 * time.Second,
		RebroadcastBackoffSpread:   0.1,
		RebroadcastBackoffExponent: 1.3,
		RebroadcastBackoffMax:      60 * time.Second,
	}

	DefaultCxConfig = CxConfig{
		ClientRequestTimeout: 10 * time.Second,
		ServerRequestTimeout: time.Minute,
		MinimumPollInterval:  DefaultEcConfig.Period,
		MaximumPollInterval:  4 * DefaultEcConfig.Period,
	}

	DefaultPubSubConfig = PubSubConfig{
		CompressionEnabled:             true,
		ChainCompressionEnabled:        true,
		GMessageSubscriptionBufferSize: 128,
		ValidatedMessageBufferSize:     128,
	}

	DefaultChainExchangeConfig = ChainExchangeConfig{
		SubscriptionBufferSize:         32,
		MaxChainLength:                 gpbft.ChainDefaultLen,
		MaxInstanceLookahead:           DefaultCommitteeLookback,
		MaxDiscoveredChainsPerInstance: 1_000,
		MaxWantedChainsPerInstance:     1_000,
		RebroadcastInterval:            2 * time.Second,
		MaxTimestampAge:                8 * time.Second,
	}

	DefaultPartialMessageManagerConfig = PartialMessageManagerConfig{
		PendingDiscoveredChainsBufferSize:     100,
		PendingPartialMessagesBufferSize:      100,
		PendingChainBroadcastsBufferSize:      100,
		PendingInstanceRemovalBufferSize:      10,
		CompletedMessagesBufferSize:           100,
		MaxBufferedMessagesPerInstance:        25_000,
		MaxCachedValidatedMessagesPerInstance: 25_000,
	}

	// Default instance alignment when catching up.
	DefaultCatchUpAlignment = DefaultEcConfig.Period / 2
)
View Source
var ErrNoManifest = errors.New("no known manifest")

ErrNoManifest is returned when no manifest is known.

Functions

func ChainExchangeTopicFromNetworkName added in v0.8.0

func ChainExchangeTopicFromNetworkName(nn gpbft.NetworkName) string

func PubSubTopicFromNetworkName

func PubSubTopicFromNetworkName(nn gpbft.NetworkName) string

Types

type ChainExchangeConfig added in v0.8.0

type ChainExchangeConfig struct {
	SubscriptionBufferSize         int
	MaxChainLength                 int
	MaxInstanceLookahead           uint64
	MaxDiscoveredChainsPerInstance int
	MaxWantedChainsPerInstance     int
	RebroadcastInterval            time.Duration
	MaxTimestampAge                time.Duration
}

func (*ChainExchangeConfig) Validate added in v0.8.0

func (cx *ChainExchangeConfig) Validate() error

type CxConfig

type CxConfig struct {
	// Request timeout for the certificate exchange client.
	ClientRequestTimeout time.Duration
	// Request timeout for the certificate exchange server.
	ServerRequestTimeout time.Duration
	// Minimum CX polling interval.
	MinimumPollInterval time.Duration
	// Maximum CX polling interval.
	MaximumPollInterval time.Duration
}

Certificate Exchange config

func (*CxConfig) Validate added in v0.0.5

func (c *CxConfig) Validate() error

type EcConfig

type EcConfig struct {
	// The delay between tipsets.
	Period time.Duration
	// Number of epochs required to reach EC defined finality
	Finality int64
	// The multiplier on top of the Period of the time we will wait before starting a new instance,
	// referencing the timestamp of the latest finalized tipset.
	DelayMultiplier float64
	// Table of incremental multipliers to backoff in units of Delay in case of base decisions
	BaseDecisionBackoffTable []float64
	// HeadLookback number of unfinalized tipsets to remove from the head
	HeadLookback int
	// Finalize indicates whether F3 should finalize tipsets as F3 agrees on them.
	Finalize bool
}

func (*EcConfig) Validate added in v0.0.5

func (e *EcConfig) Validate() error

type GpbftConfig

type GpbftConfig struct {
	Delta                  time.Duration
	DeltaBackOffExponent   float64
	QualityDeltaMultiplier float64
	MaxLookaheadRounds     uint64

	ChainProposedLength int

	RebroadcastBackoffBase     time.Duration
	RebroadcastBackoffExponent float64
	RebroadcastBackoffSpread   float64
	RebroadcastBackoffMax      time.Duration
}

func (*GpbftConfig) ToOptions added in v0.1.0

func (g *GpbftConfig) ToOptions() []gpbft.Option

func (*GpbftConfig) Validate added in v0.0.5

func (g *GpbftConfig) Validate() error

type Manifest

type Manifest struct {
	// ProtocolVersion specifies protocol version to be used
	ProtocolVersion uint64
	// Initial instance to used for the f3 instance
	InitialInstance uint64
	// BootstrapEpoch from which the manifest should be applied
	BootstrapEpoch int64
	// Network name to apply for this manifest.
	NetworkName gpbft.NetworkName
	// InitialPowerTable specifies the optional CID of the initial power table
	InitialPowerTable cid.Cid // !Defined() if nil
	// We take the current power table from the head tipset this many instances ago.
	CommitteeLookback uint64
	// The alignment of instances while catching up. This should be slightly larger than the
	// expected time to complete an instance.
	//
	// A good default is `4 * Manifest.Gpbft.Delta` (the expected time for a single-round
	// instance).
	CatchUpAlignment time.Duration
	// Config parameters for gpbft
	Gpbft GpbftConfig
	// EC-specific parameters
	EC EcConfig
	// Certificate Exchange specific parameters
	CertificateExchange CxConfig
	// PubSubConfig specifies the pubsub related configuration.
	PubSub PubSubConfig
	// ChainExchange specifies the chain exchange configuration parameters.
	ChainExchange ChainExchangeConfig
	// PartialMessageManager specifies the configuration for the partial message manager.
	PartialMessageManager PartialMessageManagerConfig
}

Manifest identifies the specific configuration for the F3 instance currently running.

func LocalDevnetManifest

func LocalDevnetManifest() Manifest

func Unmarshal added in v0.0.5

func Unmarshal(r io.Reader) (*Manifest, error)

func (*Manifest) Cid added in v0.8.0

func (m *Manifest) Cid() (cid.Cid, error)

func (*Manifest) DatastorePrefix

func (m *Manifest) DatastorePrefix() datastore.Key

func (*Manifest) GpbftOptions

func (m *Manifest) GpbftOptions() []gpbft.Option

func (*Manifest) Marshal

func (m *Manifest) Marshal() ([]byte, error)

Marshal the manifest into JSON We use JSON because we need to serialize a float and time.Duration and the cbor serializer we use do not support these types yet.

func (*Manifest) PubSubTopic

func (m *Manifest) PubSubTopic() string

func (*Manifest) Validate added in v0.0.5

func (m *Manifest) Validate() error

type PartialMessageManagerConfig added in v0.8.3

type PartialMessageManagerConfig struct {
	PendingDiscoveredChainsBufferSize     int
	PendingPartialMessagesBufferSize      int
	PendingChainBroadcastsBufferSize      int
	PendingInstanceRemovalBufferSize      int
	CompletedMessagesBufferSize           int
	MaxBufferedMessagesPerInstance        int
	MaxCachedValidatedMessagesPerInstance int
}

func (*PartialMessageManagerConfig) Validate added in v0.8.3

func (pmm *PartialMessageManagerConfig) Validate() error

type PubSubConfig added in v0.8.0

type PubSubConfig struct {
	CompressionEnabled      bool
	ChainCompressionEnabled bool

	GMessageSubscriptionBufferSize int
	ValidatedMessageBufferSize     int
}

func (*PubSubConfig) Validate added in v0.8.0

func (p *PubSubConfig) Validate() error

Jump to

Keyboard shortcuts

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