statetracker

package
v0.23.4 Latest Latest
Warning

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

Go to latest
Published: Sep 19, 2023 License: Apache-2.0 Imports: 39 Imported by: 0

Documentation

Index

Constants

View Source
const (
	FlagTimeout   = "timeout"
	FlagValue     = "value"
	FlagEventName = "event"
)
View Source
const (
	CacheMaxCost                = 10 * 1024 // 10K cost
	CacheNumCounters            = 100000    // expect 10K items
	DefaultTimeToLiveExpiration = 30 * time.Minute
	PairingRespKey              = "pairing-resp"
	VerifyPairingRespKey        = "verify-pairing-resp"
	MaxCuResponseKey            = "max-cu-resp"
	EffectivePolicyRespKey      = "effective-policy-resp"
)
View Source
const (
	BlocksToSaveLavaChainTracker   = 1 // we only need the latest block
	TendermintConsensusParamsQuery = "consensus_params"
)
View Source
const (
	CallbackKeyForEpochUpdate = "epoch-update"
)
View Source
const (
	CallbackKeyForFinalizationConsensusUpdate = "finalization-consensus-update"
)
View Source
const (
	CallbackKeyForMetricUpdate = "metric-update"
)
View Source
const (
	CallbackKeyForPairingUpdate = "pairing-update"
)
View Source
const (
	CallbackKeyForPaymentUpdate = "payment-update"
)
View Source
const (
	CallbackKeyForSpecUpdate = "spec-update"
)
View Source
const (
	CallbackKeyForVersionUpdate = "version-update"
)
View Source
const (
	CallbackKeyForVoteUpdate = "vote-update"
)
View Source
const (

	// same account can continue failing the more providers you have under the same account
	// for example if you have a provider staked at 20 chains you will ask for 20 payments per epoch.
	// therefore currently our best solution is to continue retrying increasing sequence number until successful
	RETRY_INCORRECT_SEQUENCE = 100
)

Variables

This section is empty.

Functions

func CreateEventsCobraCommand

func CreateEventsCobraCommand() *cobra.Command

Types

type ConsumerStateQuery added in v0.5.1

type ConsumerStateQuery struct {
	StateQuery
	// contains filtered or unexported fields
}

func NewConsumerStateQuery added in v0.5.1

func NewConsumerStateQuery(ctx context.Context, clientCtx client.Context) *ConsumerStateQuery

func (*ConsumerStateQuery) GetEffectivePolicy added in v0.20.1

func (csq *ConsumerStateQuery) GetEffectivePolicy(ctx context.Context, consumerAddress, specID string) (*plantypes.Policy, error)

func (*ConsumerStateQuery) GetMaxCUForUser added in v0.5.1

func (csq *ConsumerStateQuery) GetMaxCUForUser(ctx context.Context, chainID string, epoch uint64) (maxCu uint64, err error)

func (*ConsumerStateQuery) GetPairing added in v0.5.1

func (csq *ConsumerStateQuery) GetPairing(ctx context.Context, chainID string, latestBlock int64) (pairingList []epochstoragetypes.StakeEntry, epoch, nextBlockForUpdate uint64, errRet error)

type ConsumerStateTracker

type ConsumerStateTracker struct {
	ConsumerTxSenderInf
	*StateTracker
	// contains filtered or unexported fields
}

ConsumerStateTracker CSTis a class for tracking consumer data from the lava blockchain, such as epoch changes. it allows also to query specific data form the blockchain and acts as a single place to send transactions

func NewConsumerStateTracker

func NewConsumerStateTracker(ctx context.Context, txFactory tx.Factory, clientCtx client.Context, chainFetcher chaintracker.ChainFetcher) (ret *ConsumerStateTracker, err error)

func (*ConsumerStateTracker) GetConsumerPolicy

func (cst *ConsumerStateTracker) GetConsumerPolicy(ctx context.Context, consumerAddress, chainID string) (*plantypes.Policy, error)

func (*ConsumerStateTracker) GetProtocolVersion

func (cst *ConsumerStateTracker) GetProtocolVersion(ctx context.Context) (*protocoltypes.Version, error)

func (*ConsumerStateTracker) RegisterConsumerSessionManagerForPairingUpdates

func (cst *ConsumerStateTracker) RegisterConsumerSessionManagerForPairingUpdates(ctx context.Context, consumerSessionManager *lavasession.ConsumerSessionManager)

func (*ConsumerStateTracker) RegisterFinalizationConsensusForUpdates

func (cst *ConsumerStateTracker) RegisterFinalizationConsensusForUpdates(ctx context.Context, finalizationConsensus *lavaprotocol.FinalizationConsensus)

func (*ConsumerStateTracker) RegisterForSpecUpdates

func (cst *ConsumerStateTracker) RegisterForSpecUpdates(ctx context.Context, specUpdatable SpecUpdatable, endpoint lavasession.RPCEndpoint) error

func (*ConsumerStateTracker) RegisterForVersionUpdates

func (cst *ConsumerStateTracker) RegisterForVersionUpdates(ctx context.Context, version *protocoltypes.Version, versionValidator VersionValidationInf)

func (*ConsumerStateTracker) TxConflictDetection

func (cst *ConsumerStateTracker) TxConflictDetection(ctx context.Context, finalizationConflict *conflicttypes.FinalizationConflict, responseConflict *conflicttypes.ResponseConflict, sameProviderConflict *conflicttypes.FinalizationConflict, conflictHandler lavaprotocol.ConflictHandlerInterface) error

type ConsumerTxSender

type ConsumerTxSender struct {
	*TxSender
}

func NewConsumerTxSender

func NewConsumerTxSender(ctx context.Context, clientCtx client.Context, txFactory tx.Factory) (ret *ConsumerTxSender, err error)

func (*ConsumerTxSender) TxSenderConflictDetection

func (ts *ConsumerTxSender) TxSenderConflictDetection(ctx context.Context, finalizationConflict *conflicttypes.FinalizationConflict, responseConflict *conflicttypes.ResponseConflict, sameProviderConflict *conflicttypes.FinalizationConflict) error

type ConsumerTxSenderInf

type ConsumerTxSenderInf interface {
	TxSenderConflictDetection(ctx context.Context, finalizationConflict *conflicttypes.FinalizationConflict, responseConflict *conflicttypes.ResponseConflict, sameProviderConflict *conflicttypes.FinalizationConflict) error
}

type EpochStateQuery added in v0.10.1

type EpochStateQuery struct {
	StateQuery
}

func NewEpochStateQuery added in v0.10.1

func NewEpochStateQuery(stateQuery *StateQuery) *EpochStateQuery

func (*EpochStateQuery) CurrentEpochStart added in v0.10.1

func (esq *EpochStateQuery) CurrentEpochStart(ctx context.Context) (uint64, error)

type EpochUpdatable added in v0.5.0

type EpochUpdatable interface {
	UpdateEpoch(epoch uint64)
}

type EpochUpdater added in v0.9.0

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

func NewEpochUpdater added in v0.9.0

func NewEpochUpdater(stateQuery *EpochStateQuery) *EpochUpdater

func (*EpochUpdater) RegisterEpochUpdatable added in v0.9.0

func (eu *EpochUpdater) RegisterEpochUpdatable(ctx context.Context, epochUpdatable EpochUpdatable)

func (*EpochUpdater) Update added in v0.9.0

func (eu *EpochUpdater) Update(latestBlock int64)

func (*EpochUpdater) UpdaterKey added in v0.9.0

func (eu *EpochUpdater) UpdaterKey() string

type EventTracker added in v0.12.0

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

type FinalizationConsensusUpdater added in v0.4.5

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

func NewFinalizationConsensusUpdater added in v0.4.5

func NewFinalizationConsensusUpdater(stateQuery *ConsumerStateQuery) *FinalizationConsensusUpdater

func (*FinalizationConsensusUpdater) RegisterFinalizationConsensus added in v0.4.5

func (fcu *FinalizationConsensusUpdater) RegisterFinalizationConsensus(finalizationConsensus *lavaprotocol.FinalizationConsensus)

func (*FinalizationConsensusUpdater) Update added in v0.4.5

func (fcu *FinalizationConsensusUpdater) Update(latestBlock int64)

func (*FinalizationConsensusUpdater) UpdaterKey added in v0.4.5

func (fcu *FinalizationConsensusUpdater) UpdaterKey() string

type MetricsManagerInf added in v0.12.0

type MetricsManagerInf interface {
	SetBlock(int64)
}

type MetricsUpdater added in v0.12.0

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

func NewMetricsUpdater added in v0.12.0

func NewMetricsUpdater(consumerMetricsManager MetricsManagerInf) *MetricsUpdater

func (*MetricsUpdater) Update added in v0.12.0

func (mu *MetricsUpdater) Update(latestBlock int64)

func (*MetricsUpdater) UpdaterKey added in v0.12.0

func (mu *MetricsUpdater) UpdaterKey() string

type PairingUpdater added in v0.4.5

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

func NewPairingUpdater added in v0.4.5

func NewPairingUpdater(stateQuery *ConsumerStateQuery) *PairingUpdater

func (*PairingUpdater) RegisterPairing added in v0.4.5

func (pu *PairingUpdater) RegisterPairing(ctx context.Context, consumerSessionManager *lavasession.ConsumerSessionManager) error

func (*PairingUpdater) Update added in v0.4.5

func (pu *PairingUpdater) Update(latestBlock int64)

func (*PairingUpdater) UpdaterKey added in v0.4.5

func (pu *PairingUpdater) UpdaterKey() string

type PaymentUpdatable added in v0.9.0

type PaymentUpdatable interface {
	PaymentHandler(*rewardserver.PaymentRequest)
	Description() string
}

type PaymentUpdater added in v0.9.0

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

func NewPaymentUpdater added in v0.9.0

func NewPaymentUpdater(eventTracker *EventTracker) *PaymentUpdater

func (*PaymentUpdater) RegisterPaymentUpdatable added in v0.9.0

func (pu *PaymentUpdater) RegisterPaymentUpdatable(ctx context.Context, paymentUpdatable *PaymentUpdatable)

func (*PaymentUpdater) Update added in v0.9.0

func (pu *PaymentUpdater) Update(latestBlock int64)

func (*PaymentUpdater) UpdaterKey added in v0.9.0

func (pu *PaymentUpdater) UpdaterKey() string

type ProviderStateQuery added in v0.9.0

type ProviderStateQuery struct {
	StateQuery
	EpochStateQuery
	// contains filtered or unexported fields
}

func NewProviderStateQuery added in v0.9.0

func NewProviderStateQuery(ctx context.Context, clientCtx client.Context) *ProviderStateQuery

func (*ProviderStateQuery) EarliestBlockInMemory added in v0.9.0

func (psq *ProviderStateQuery) EarliestBlockInMemory(ctx context.Context) (uint64, error)

func (*ProviderStateQuery) GetEpochSize added in v0.9.0

func (psq *ProviderStateQuery) GetEpochSize(ctx context.Context) (uint64, error)

func (*ProviderStateQuery) GetEpochSizeMultipliedByRecommendedEpochNumToCollectPayment added in v0.9.0

func (psq *ProviderStateQuery) GetEpochSizeMultipliedByRecommendedEpochNumToCollectPayment(ctx context.Context) (uint64, error)

func (*ProviderStateQuery) GetMaxCuForUser added in v0.12.0

func (psq *ProviderStateQuery) GetMaxCuForUser(ctx context.Context, consumerAddress, chainID string, epoch uint64) (maxCu uint64, err error)

func (*ProviderStateQuery) GetRecommendedEpochNumToCollectPayment added in v0.9.0

func (psq *ProviderStateQuery) GetRecommendedEpochNumToCollectPayment(ctx context.Context) (uint64, error)

func (*ProviderStateQuery) VerifyPairing added in v0.9.0

func (psq *ProviderStateQuery) VerifyPairing(ctx context.Context, consumerAddress, providerAddress string, epoch uint64, chainID string) (valid bool, total int64, projectId string, err error)

func (*ProviderStateQuery) VoteEvents added in v0.9.0

func (psq *ProviderStateQuery) VoteEvents(ctx context.Context, latestBlock int64) (votes []*reliabilitymanager.VoteParams, err error)

type ProviderStateTracker

type ProviderStateTracker struct {
	*StateTracker
	// contains filtered or unexported fields
}

ProviderStateTracker PST is a class for tracking provider data from the lava blockchain, such as epoch changes. it allows also to query specific data form the blockchain and acts as a single place to send transactions

func NewProviderStateTracker

func NewProviderStateTracker(ctx context.Context, txFactory tx.Factory, clientCtx client.Context, chainFetcher chaintracker.ChainFetcher) (ret *ProviderStateTracker, err error)

func (*ProviderStateTracker) EarliestBlockInMemory

func (pst *ProviderStateTracker) EarliestBlockInMemory(ctx context.Context) (uint64, error)

func (*ProviderStateTracker) GetEpochSize

func (pst *ProviderStateTracker) GetEpochSize(ctx context.Context) (uint64, error)

func (*ProviderStateTracker) GetEpochSizeMultipliedByRecommendedEpochNumToCollectPayment

func (pst *ProviderStateTracker) GetEpochSizeMultipliedByRecommendedEpochNumToCollectPayment(ctx context.Context) (uint64, error)

func (*ProviderStateTracker) GetMaxCuForUser

func (pst *ProviderStateTracker) GetMaxCuForUser(ctx context.Context, consumerAddress, chainID string, epoch uint64) (maxCu uint64, err error)

func (*ProviderStateTracker) GetProtocolVersion

func (pst *ProviderStateTracker) GetProtocolVersion(ctx context.Context) (*protocoltypes.Version, error)

func (*ProviderStateTracker) GetRecommendedEpochNumToCollectPayment

func (pst *ProviderStateTracker) GetRecommendedEpochNumToCollectPayment(ctx context.Context) (uint64, error)

func (*ProviderStateTracker) LatestBlock

func (pst *ProviderStateTracker) LatestBlock() int64

func (*ProviderStateTracker) RegisterForEpochUpdates

func (pst *ProviderStateTracker) RegisterForEpochUpdates(ctx context.Context, epochUpdatable EpochUpdatable)

func (*ProviderStateTracker) RegisterForSpecUpdates

func (pst *ProviderStateTracker) RegisterForSpecUpdates(ctx context.Context, specUpdatable SpecUpdatable, endpoint lavasession.RPCEndpoint) error

func (*ProviderStateTracker) RegisterForVersionUpdates

func (pst *ProviderStateTracker) RegisterForVersionUpdates(ctx context.Context, version *protocoltypes.Version, versionValidator VersionValidationInf)

func (*ProviderStateTracker) RegisterPaymentUpdatableForPayments

func (pst *ProviderStateTracker) RegisterPaymentUpdatableForPayments(ctx context.Context, paymentUpdatable PaymentUpdatable)

func (*ProviderStateTracker) RegisterReliabilityManagerForVoteUpdates

func (pst *ProviderStateTracker) RegisterReliabilityManagerForVoteUpdates(ctx context.Context, voteUpdatable VoteUpdatable, endpointP *lavasession.RPCProviderEndpoint)

func (*ProviderStateTracker) SendVoteCommitment

func (pst *ProviderStateTracker) SendVoteCommitment(voteID string, vote *reliabilitymanager.VoteData) error

func (*ProviderStateTracker) SendVoteReveal

func (pst *ProviderStateTracker) SendVoteReveal(voteID string, vote *reliabilitymanager.VoteData) error

func (*ProviderStateTracker) TxRelayPayment

func (pst *ProviderStateTracker) TxRelayPayment(ctx context.Context, relayRequests []*pairingtypes.RelaySession, description string) error

func (*ProviderStateTracker) VerifyPairing

func (pst *ProviderStateTracker) VerifyPairing(ctx context.Context, consumerAddress, providerAddress string, epoch uint64, chainID string) (valid bool, total int64, projectId string, err error)

type ProviderTxSender

type ProviderTxSender struct {
	*TxSender
}

func NewProviderTxSender

func NewProviderTxSender(ctx context.Context, clientCtx client.Context, txFactory tx.Factory) (ret *ProviderTxSender, err error)

func (*ProviderTxSender) SendVoteCommitment

func (pts *ProviderTxSender) SendVoteCommitment(voteID string, vote *reliabilitymanager.VoteData) error

func (*ProviderTxSender) SendVoteReveal

func (pts *ProviderTxSender) SendVoteReveal(voteID string, vote *reliabilitymanager.VoteData) error

func (*ProviderTxSender) TxRelayPayment

func (pts *ProviderTxSender) TxRelayPayment(ctx context.Context, relayRequests []*pairingtypes.RelaySession, description string) error

type SpecGetter added in v0.12.0

type SpecGetter interface {
	GetSpec(ctx context.Context, chainID string) (*spectypes.Spec, error)
}

type SpecUpdatable added in v0.12.0

type SpecUpdatable interface {
	SetSpec(spectypes.Spec)
}

type SpecUpdater added in v0.12.0

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

func NewSpecUpdater added in v0.12.0

func NewSpecUpdater(chainId string, specGetter SpecGetter, eventTracker *EventTracker) *SpecUpdater

func (*SpecUpdater) RegisterSpecUpdatable added in v0.12.0

func (su *SpecUpdater) RegisterSpecUpdatable(ctx context.Context, specUpdatable *SpecUpdatable, endpoint lavasession.RPCEndpoint) error

func (*SpecUpdater) Update added in v0.12.0

func (su *SpecUpdater) Update(latestBlock int64)

func (*SpecUpdater) UpdaterKey added in v0.12.0

func (su *SpecUpdater) UpdaterKey() string

type StateQuery added in v0.4.5

type StateQuery struct {
	SpecQueryClient         spectypes.QueryClient
	PairingQueryClient      pairingtypes.QueryClient
	EpochStorageQueryClient epochstoragetypes.QueryClient
	ProtocolClient          protocoltypes.QueryClient
	ResponsesCache          *ristretto.Cache
}

func NewStateQuery added in v0.5.1

func NewStateQuery(ctx context.Context, clientCtx client.Context) *StateQuery

func (*StateQuery) GetProtocolVersion added in v0.20.4

func (csq *StateQuery) GetProtocolVersion(ctx context.Context) (*protocoltypes.Version, error)

func (*StateQuery) GetSpec added in v0.9.0

func (csq *StateQuery) GetSpec(ctx context.Context, chainID string) (*spectypes.Spec, error)

type StateTracker

type StateTracker struct {
	EventTracker *EventTracker
	// contains filtered or unexported fields
}

ConsumerStateTracker CSTis a class for tracking consumer data from the lava blockchain, such as epoch changes. it allows also to query specific data form the blockchain and acts as a single place to send transactions

func NewStateTracker

func NewStateTracker(ctx context.Context, txFactory tx.Factory, clientCtx client.Context, chainFetcher chaintracker.ChainFetcher) (ret *StateTracker, err error)

func (*StateTracker) GetEventTracker

func (s *StateTracker) GetEventTracker() *EventTracker

For lavavisor access

func (*StateTracker) RegisterForUpdates

func (st *StateTracker) RegisterForUpdates(ctx context.Context, updater Updater) Updater

type TxSender

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

func NewTxSender

func NewTxSender(ctx context.Context, clientCtx client.Context, txFactory tx.Factory) (ret *TxSender, err error)

func (*TxSender) SendTxAndVerifyCommit

func (ts *TxSender) SendTxAndVerifyCommit(txfactory tx.Factory, msg sdk.Msg) (parsedResult common.TxResultData, err error)

func (*TxSender) SimulateAndBroadCastTxWithRetryOnSeqMismatch

func (ts *TxSender) SimulateAndBroadCastTxWithRetryOnSeqMismatch(msg sdk.Msg, checkProfitability bool) error

type Updater

type Updater interface {
	Update(int64)
	UpdaterKey() string
}

type VersionStateQuery added in v0.20.4

type VersionStateQuery interface {
	GetProtocolVersion(ctx context.Context) (*protocoltypes.Version, error)
}

type VersionUpdater added in v0.20.4

type VersionUpdater struct {
	VersionValidationInf // embedding the interface, this tells: VersionUpdater has ValidateProtocolVersion method
	// contains filtered or unexported fields
}

func NewVersionUpdater added in v0.20.4

func NewVersionUpdater(versionStateQuery VersionStateQuery, eventTracker *EventTracker, version *protocoltypes.Version, versionValidator VersionValidationInf) *VersionUpdater

func (*VersionUpdater) RegisterVersionUpdatable added in v0.20.4

func (vu *VersionUpdater) RegisterVersionUpdatable()

func (*VersionUpdater) Update added in v0.20.4

func (vu *VersionUpdater) Update(latestBlock int64)

func (*VersionUpdater) UpdaterKey added in v0.20.4

func (vu *VersionUpdater) UpdaterKey() string

type VersionValidationInf added in v0.22.0

type VersionValidationInf interface {
	ValidateProtocolVersion(lastKnownVersion *protocoltypes.Version) error
}

type VoteUpdatable added in v0.9.0

type VoteUpdatable interface {
	VoteHandler(*reliabilitymanager.VoteParams, uint64) error
}

type VoteUpdater added in v0.9.0

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

func NewVoteUpdater added in v0.9.0

func NewVoteUpdater(eventTracker *EventTracker) *VoteUpdater

func (*VoteUpdater) RegisterVoteUpdatable added in v0.9.0

func (vu *VoteUpdater) RegisterVoteUpdatable(ctx context.Context, voteUpdatable *VoteUpdatable, endpoint lavasession.RPCEndpoint)

func (*VoteUpdater) Update added in v0.9.0

func (vu *VoteUpdater) Update(latestBlock int64)

func (*VoteUpdater) UpdaterKey added in v0.9.0

func (vu *VoteUpdater) UpdaterKey() string

Jump to

Keyboard shortcuts

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