network

package
v1.11.1 Latest Latest
Warning

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

Go to latest
Published: Mar 6, 2024 License: BSD-3-Clause Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultConfig = Config{
	MaxValidatorSetStaleness:                    time.Minute,
	TargetGossipSize:                            20 * units.KiB,
	PullGossipPollSize:                          1,
	PullGossipFrequency:                         1500 * time.Millisecond,
	PullGossipThrottlingPeriod:                  10 * time.Second,
	PullGossipThrottlingLimit:                   2,
	ExpectedBloomFilterElements:                 8 * 1024,
	ExpectedBloomFilterFalsePositiveProbability: .01,
	MaxBloomFilterFalsePositiveProbability:      .05,
	LegacyPushGossipCacheSize:                   512,
}

Functions

This section is empty.

Types

type Atomic

type Atomic interface {
	common.AppHandler

	Set(common.AppHandler)
}

func NewAtomic

func NewAtomic(h common.AppHandler) Atomic

type Config added in v1.10.18

type Config struct {
	// MaxValidatorSetStaleness limits how old of a validator set the network
	// will use for peer sampling and rate limiting.
	MaxValidatorSetStaleness time.Duration `json:"max-validator-set-staleness"`
	// TargetGossipSize is the number of bytes that will be attempted to be
	// sent when pushing transactions and when responded to transaction pull
	// requests.
	TargetGossipSize int `json:"target-gossip-size"`
	// PullGossipPollSize is the number of validators to sample when performing
	// a round of pull gossip.
	PullGossipPollSize int `json:"pull-gossip-poll-size"`
	// PullGossipFrequency is how frequently rounds of pull gossip are
	// performed.
	PullGossipFrequency time.Duration `json:"pull-gossip-frequency"`
	// PullGossipThrottlingPeriod is how large of a window the throttler should
	// use.
	PullGossipThrottlingPeriod time.Duration `json:"pull-gossip-throttling-period"`
	// PullGossipThrottlingLimit is the number of pull querys that are allowed
	// by a validator in every throttling window.
	PullGossipThrottlingLimit int `json:"pull-gossip-throttling-limit"`
	// ExpectedBloomFilterElements is the number of elements to expect when
	// creating a new bloom filter. The larger this number is, the larger the
	// bloom filter will be.
	ExpectedBloomFilterElements int `json:"expected-bloom-filter-elements"`
	// ExpectedBloomFilterFalsePositiveProbability is the expected probability
	// of a false positive after having inserted ExpectedBloomFilterElements
	// into a bloom filter. The smaller this number is, the larger the bloom
	// filter will be.
	ExpectedBloomFilterFalsePositiveProbability float64 `json:"expected-bloom-filter-false-positive-probability"`
	// MaxBloomFilterFalsePositiveProbability is used to determine when the
	// bloom filter should be refreshed. Once the expected probability of a
	// false positive exceeds this value, the bloom filter will be regenerated.
	// The smaller this number is, the more frequently that the bloom filter
	// will be regenerated.
	MaxBloomFilterFalsePositiveProbability float64 `json:"max-bloom-filter-false-positive-probability"`
	// LegacyPushGossipCacheSize tracks the most recently received transactions
	// and ensures to only gossip them once.
	//
	// Deprecated: The legacy push gossip mechanism is deprecated in favor of
	// the p2p SDK's push gossip mechanism.
	LegacyPushGossipCacheSize int `json:"legacy-push-gossip-cache-size"`
}

type LockedTxVerifier added in v1.10.18

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

func NewLockedTxVerifier added in v1.10.18

func NewLockedTxVerifier(lock sync.Locker, txVerifier TxVerifier) *LockedTxVerifier

func (*LockedTxVerifier) VerifyTx added in v1.10.18

func (l *LockedTxVerifier) VerifyTx(tx *txs.Tx) error

type Network

type Network struct {
	*p2p.Network
	// contains filtered or unexported fields
}

func New

func New(
	ctx *snow.Context,
	parser txs.Parser,
	txVerifier TxVerifier,
	mempool mempool.Mempool,
	appSender common.AppSender,
	registerer prometheus.Registerer,
	config Config,
) (*Network, error)

func (*Network) AppGossip added in v1.10.18

func (n *Network) AppGossip(ctx context.Context, nodeID ids.NodeID, msgBytes []byte) error

func (*Network) Gossip added in v1.10.18

func (n *Network) Gossip(ctx context.Context)

func (*Network) IssueTx

func (n *Network) IssueTx(ctx context.Context, tx *txs.Tx) error

IssueTx attempts to add a tx to the mempool, after verifying it. If the tx is added to the mempool, it will attempt to push gossip the tx to random peers in the network using both the legacy and p2p SDK.

If the tx is already in the mempool, mempool.ErrDuplicateTx will be returned. If the tx is not added to the mempool, an error will be returned.

func (*Network) IssueVerifiedTx added in v1.10.18

func (n *Network) IssueVerifiedTx(ctx context.Context, tx *txs.Tx) error

IssueVerifiedTx attempts to add a tx to the mempool, without first verifying it. If the tx is added to the mempool, it will attempt to push gossip the tx to random peers in the network using both the legacy and p2p SDK.

If the tx is already in the mempool, mempool.ErrDuplicateTx will be returned. If the tx is not added to the mempool, an error will be returned.

type TxVerifier added in v1.10.18

type TxVerifier interface {
	// VerifyTx verifies that the transaction should be issued into the mempool.
	VerifyTx(tx *txs.Tx) error
}

Jump to

Keyboard shortcuts

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