global

package
v0.1.2-alpha Latest Latest
Warning

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

Go to latest
Published: Oct 8, 2024 License: MIT Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MultiStateDBName     = "proximadb"
	TxStoreDBName        = "proximadb.txstore"
	ConfigKeyTxStoreType = "txstore.type"

	// MaxSyncPortionSlots max number of slots in the sync portion
	MaxSyncPortionSlots = 100

	// DefaultSyncToleranceThresholdSlots specifies threshold of diff between current slot and latest slot in DB
	// when start pulling sync portions
	DefaultSyncToleranceThresholdSlots = 50
)
View Source
const (
	PullRepeatPeriodDefault = 2 * time.Second
	PullMaxAttemptsDefault  = 60
	PullFromNumPeersDefault = 2
)

PullTimeout maximum time allowed for the virtual txid become transaction (full vertex)

View Source
const TimeLayoutDefault = "01-02 15:04:05.000"
View Source
const TraceTag = "global"
View Source
const (
	Version = "v0.1.2-alpha"
)

Version is the version of the Proxima node

Variables

View Source
var (
	FractionHalf = Fraction{
		Numerator:   1,
		Denominator: 2,
	}

	Fraction23 = Fraction{
		Numerator:   2,
		Denominator: 3,
	}

	FractionHealthyBranch = FractionHalf

	ErrInterrupted = errors.New("interrupted by global stop")
)

Functions

func BannerString

func BannerString() string

func IsHealthyCoverage

func IsHealthyCoverage(coverage, supply uint64, fraction Fraction) bool

IsHealthyCoverage coverage is healthy if it is bigger than 2 times the fraction of supply

func IsHealthyCoverageString

func IsHealthyCoverageString(coverage, supply uint64, fraction Fraction) string

func NewLogger

func NewLogger(name string, level zapcore.Level, outputs []string, timeLayout string) *zap.SugaredLogger

func SetGlobalLogger

func SetGlobalLogger(l *Global)

SetGlobalLogger not thread safe

Types

type Fraction

type Fraction struct {
	Numerator   int
	Denominator int
}

func (*Fraction) String

func (f *Fraction) String() string

type Global

type Global struct {
	*zap.SugaredLogger
	// contains filtered or unexported fields
}

func NewDefault

func NewDefault() *Global

func NewFromConfig

func NewFromConfig() *Global

func (*Global) AssertMustError

func (l *Global) AssertMustError(err error)

func (*Global) AssertNoError

func (l *Global) AssertNoError(err error, prefix ...string)

func (*Global) Assertf

func (l *Global) Assertf(cond bool, format string, args ...any)

func (*Global) AttachmentFinished

func (l *Global) AttachmentFinished(started ...time.Time)

func (*Global) ClockCatchUpWithLedgerTime

func (l *Global) ClockCatchUpWithLedgerTime(ts ledger.Time)

func (*Global) Counter

func (l *Global) Counter(name string) int

func (*Global) CounterLines

func (l *Global) CounterLines(prefix ...string) *lines.Lines

func (*Global) Ctx

func (l *Global) Ctx() context.Context

func (*Global) DecCounter

func (l *Global) DecCounter(name string)

func (*Global) IncCounter

func (l *Global) IncCounter(name string)

func (*Global) Infof0

func (l *Global) Infof0(template string, args ...any)

func (*Global) Infof1

func (l *Global) Infof1(template string, args ...any)

func (*Global) Infof2

func (l *Global) Infof2(template string, args ...any)

func (*Global) InfofAtLevel

func (l *Global) InfofAtLevel(level int, template string, args ...any)

func (*Global) IsBootstrapMode

func (l *Global) IsBootstrapMode() bool

func (*Global) IsShuttingDown

func (l *Global) IsShuttingDown() bool

func (*Global) Log

func (l *Global) Log() *zap.SugaredLogger

func (*Global) MarkWorkProcessStarted

func (l *Global) MarkWorkProcessStarted(name string)

func (*Global) MarkWorkProcessStopped

func (l *Global) MarkWorkProcessStopped(name string)

func (*Global) MetricsRegistry

func (l *Global) MetricsRegistry() *prometheus.Registry

func (*Global) RepeatInBackground

func (l *Global) RepeatInBackground(name string, period time.Duration, fun func() bool, skipFirst ...bool)

func (*Global) StartTracingTags

func (l *Global) StartTracingTags(tags ...string)

func (*Global) StartTracingTx

func (l *Global) StartTracingTx(txid ledger.TransactionID)

func (*Global) Stop

func (l *Global) Stop()

func (*Global) StopTracingTag

func (l *Global) StopTracingTag(tag string)

func (*Global) StopTracingTx

func (l *Global) StopTracingTx(txid ledger.TransactionID)

func (*Global) TraceTx

func (l *Global) TraceTx(txid *ledger.TransactionID, format string, args ...any)

func (*Global) TraceTxEnable

func (l *Global) TraceTxEnable()

func (*Global) Tracef

func (l *Global) Tracef(tag string, format string, args ...any)

func (*Global) TxPullParameters

func (l *Global) TxPullParameters() (time.Duration, int, int)

func (*Global) VerbosityLevel

func (l *Global) VerbosityLevel() int

func (*Global) WaitAllWorkProcessesStop

func (l *Global) WaitAllWorkProcessesStop(timeout ...time.Duration) bool

type IndexedStateReader

type IndexedStateReader interface {
	StateReader
	StateIndexReader
}

IndexedStateReader state and indexer readers packing together

type Logging

type Logging interface {
	Log() *zap.SugaredLogger
	Tracef(tag string, format string, args ...any)
	TraceTxEnable()
	TraceTx(txid *ledger.TransactionID, format string, args ...any)
	// Assertf asserts only if global shutdown wasn't issued
	Assertf(cond bool, format string, args ...any)
	AssertNoError(err error, prefix ...string)
	VerbosityLevel() int
	Infof0(template string, args ...any)
	Infof1(template string, args ...any)
	Infof2(template string, args ...any)

	IncCounter(name string)
	DecCounter(nane string)
	Counter(name string) int
	CounterLines(prefix ...string) *lines.Lines
	AttachmentFinished(started ...time.Time)

	// TxPullParameters repeat after period, max attempts, num peers
	TxPullParameters() (time.Duration, int, int)
}

type Metrics

type Metrics interface {
	MetricsRegistry() *prometheus.Registry
}

type NodeGlobal

type NodeGlobal interface {
	Logging
	TraceTx
	StartStop
	Metrics
	IsBootstrapMode() bool
}

type NodeInfo

type NodeInfo struct {
	ID              peer.ID         `json:"id"`
	Version         string          `json:"version"`
	NumStaticAlive  uint16          `json:"num_static_peers"`
	NumDynamicAlive uint16          `json:"num_dynamic_alive"`
	Sequencer       *ledger.ChainID `json:"sequencers,omitempty"`
}

func NodeInfoFromBytes

func NodeInfoFromBytes(data []byte) (*NodeInfo, error)

func (*NodeInfo) Bytes

func (ni *NodeInfo) Bytes() []byte

func (*NodeInfo) Lines

func (ni *NodeInfo) Lines(prefix ...string) *lines.Lines

type StartStop

type StartStop interface {
	Ctx() context.Context // global context of the node. Canceling means stopping the node
	Stop()
	IsShuttingDown() bool
	ClockCatchUpWithLedgerTime(ts ledger.Time)
	MarkWorkProcessStarted(name string)
	MarkWorkProcessStopped(name string)
	RepeatInBackground(name string, period time.Duration, fun func() bool, skipFirst ...bool) // runs background goroutine
}

StartStop interface of the global objects which coordinates graceful shutdown

type StateIndexReader

type StateIndexReader interface {
	// GetIDsLockedInAccount TODO limit maximum number of output
	GetIDsLockedInAccount(addr ledger.AccountID) ([]ledger.OutputID, error)
	// GetUTXOsLockedInAccount TODO limit maximum number of output
	GetUTXOsLockedInAccount(accountID ledger.AccountID) ([]*ledger.OutputDataWithID, error)
	GetUTXOForChainID(id *ledger.ChainID) (*ledger.OutputDataWithID, error)
	Root() common.VCommitment
	MustLedgerIdentityBytes() []byte // either state identity consistent or panic
}

type StateReader

type StateReader interface {
	GetUTXO(id *ledger.OutputID) ([]byte, bool)
	HasUTXO(id *ledger.OutputID) bool
	KnowsCommittedTransaction(txid *ledger.TransactionID) bool // all txids are kept in the state for some time
}

type StateStore

type StateStore interface {
	StateStoreReader
	common.BatchedUpdatable
}

type StateStoreReader

type StateStoreReader interface {
	common.KVReader
	common.Traversable
	IsClosed() bool
}

type TraceTx

type TraceTx interface {
	StartTracingTx(txid ledger.TransactionID)
	StopTracingTx(txid ledger.TransactionID)
	StartTracingTags(tags ...string)
	StopTracingTag(string)
}

type TxBytesGet

type TxBytesGet interface {
	// GetTxBytesWithMetadata return empty slice on absence, otherwise returns concatenated metadata bytes and transaction bytes
	GetTxBytesWithMetadata(id *ledger.TransactionID) []byte
	HasTxBytes(txid *ledger.TransactionID) bool
}

type TxBytesPersist

type TxBytesPersist interface {
	// PersistTxBytesWithMetadata saves txBytes prefixed with metadata bytes.
	// metadata == nil is interpreted as empty metadata (one 0 byte as prefix)
	PersistTxBytesWithMetadata(txBytes []byte, metadata *txmetadata.TransactionMetadata) (ledger.TransactionID, error)
}

type TxBytesStore

type TxBytesStore interface {
	TxBytesGet
	TxBytesPersist
}

Jump to

Keyboard shortcuts

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