subnets

package
v1.20.2 Latest Latest
Warning

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

Go to latest
Published: Oct 30, 2025 License: BSD-3-Clause Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetPOAConsensusParameters added in v1.1.11

func GetPOAConsensusParameters() config.Parameters

GetPOAConsensusParameters returns consensus parameters for POA mode When POASingleNodeMode is true, returns K=1 parameters for single validator

Types

type Allower

type Allower interface {
	// IsAllowed filters out nodes that are not allowed to connect to this subnet
	IsAllowed(nodeID ids.NodeID, isValidator bool) bool
}
var NoOpAllower Allower = noOpAllower{}

NoOpAllower is an Allower that always returns true

type Config

type Config struct {
	// ValidatorOnly indicates that this Subnet's Chains are available to only subnet validators.
	// No chain related messages will go out to non-validators.
	// Validators will drop messages received from non-validators.
	// Also see [AllowedNodes] to allow non-validators to connect to this Subnet.
	ValidatorOnly bool `json:"validatorOnly" yaml:"validatorOnly"`
	// AllowedNodes is the set of node IDs that are explicitly allowed to connect to this Subnet when
	// ValidatorOnly is enabled.
	AllowedNodes        set.Set[ids.NodeID] `json:"allowedNodes"        yaml:"allowedNodes"`
	ConsensusParameters config.Parameters   `json:"consensusParameters" yaml:"consensusParameters"`

	// ProposerMinBlockDelay is the minimum delay this node will enforce when
	// building a chain++ block.
	//
	// TODO: Remove this flag once all VMs throttle their own block production.
	ProposerMinBlockDelay time.Duration `json:"proposerMinBlockDelay" yaml:"proposerMinBlockDelay"`
	// ProposerNumHistoricalBlocks is the number of historical chain++ blocks
	// this node will index per chain. If set to 0, the node will index all
	// chain++ blocks.
	//
	// Note: The last accepted block is not considered a historical block. This
	// prevents the user from only storing the last accepted block, which can
	// never be safe due to the non-atomic commits between the proposervm
	// database and the innerVM's database.
	//
	// Invariant: This value must be set such that the proposervm never needs to
	// rollback more blocks than have been deleted. On startup, the proposervm
	// rolls back its accepted chain to match the innerVM's accepted chain. If
	// the innerVM is not persisting its last accepted block quickly enough, the
	// database can become corrupted.
	//
	// TODO: Move this flag once the proposervm is configurable on a per-chain
	// basis.
	ProposerNumHistoricalBlocks uint64 `json:"proposerNumHistoricalBlocks" yaml:"proposerNumHistoricalBlocks"`

	// POA Mode Configuration
	POAEnabled        bool          `json:"poaEnabled"         yaml:"poaEnabled"`        // Enable Proof of Authority mode
	POASingleNodeMode bool          `json:"poaSingleNodeMode"  yaml:"poaSingleNodeMode"` // Enable single node validation (K=1)
	POAMinBlockTime   time.Duration `json:"poaMinBlockTime"    yaml:"poaMinBlockTime"`   // Minimum time between blocks in POA mode
}

func (*Config) Valid

func (c *Config) Valid() error

type Subnet

type Subnet interface {
	core.BootstrapTracker

	// AddChain adds a chain to this Subnet
	AddChain(chainID ids.ID) bool

	// Bootstrapped marks a chain as bootstrapped
	Bootstrapped(chainID ids.ID)

	// Config returns config of this Subnet
	Config() Config

	Allower

	// AllBootstrapped returns a channel that is closed when all chains have finished bootstrapping
	AllBootstrapped() <-chan struct{}
}

Subnet keeps track of the currently bootstrapping chains in a subnet. If no chains in the subnet are currently bootstrapping, the subnet is considered bootstrapped.

func New

func New(myNodeID ids.NodeID, config Config) Subnet

Jump to

Keyboard shortcuts

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