datastore

package
v0.9.1 Latest Latest
Warning

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

Go to latest
Published: Oct 10, 2022 License: AGPL-3.0 Imports: 14 Imported by: 3

Documentation

Overview

Package datastore helps storing data, utilizing Redis and Postgres as backends

Index

Constants

This section is empty.

Variables

View Source
var (
	RedisConfigFieldPubkey         = "pubkey"
	RedisStatsFieldLatestSlot      = "latest-slot"
	RedisStatsFieldValidatorsTotal = "validators-total"
)

Functions

func PubkeyHexToLowerStr

func PubkeyHexToLowerStr(pk types.PubkeyHex) string

Types

type BlockBuilderStatus added in v0.7.0

type BlockBuilderStatus string
var (
	RedisBlockBuilderStatusLowPrio     BlockBuilderStatus = ""
	RedisBlockBuilderStatusHighPrio    BlockBuilderStatus = "high-prio"
	RedisBlockBuilderStatusBlacklisted BlockBuilderStatus = "blacklisted"
)

func MakeBlockBuilderStatus added in v0.9.1

func MakeBlockBuilderStatus(isHighPrio, isBlacklisted bool) BlockBuilderStatus

type Datastore

type Datastore struct {
	GetPayloadResponsesLock sync.RWMutex
	GetPayloadResponses     map[GetPayloadResponseKey]*types.GetPayloadResponse
	// contains filtered or unexported fields
}

Datastore provides a local memory cache with a Redis and DB backend

func NewDatastore

func NewDatastore(log *logrus.Entry, redisCache *RedisCache, db database.IDatabaseService) (ds *Datastore, err error)

func (*Datastore) CleanupOldBidsAndBlocks

func (ds *Datastore) CleanupOldBidsAndBlocks(headSlot uint64) (numRemoved, numRemaining int)

func (*Datastore) GetGetHeaderResponse

func (ds *Datastore) GetGetHeaderResponse(slot uint64, parentHash, proposerPubkey string) (*types.GetHeaderResponse, error)

GetGetHeaderResponse returns the bid from memory or Redis

func (*Datastore) GetGetPayloadResponse

func (ds *Datastore) GetGetPayloadResponse(slot uint64, proposerPubkey, blockHash string) (*types.GetPayloadResponse, error)

GetGetPayloadResponse returns the getPayload response from memory or Redis or Database

func (*Datastore) GetKnownValidatorPubkeyByIndex

func (ds *Datastore) GetKnownValidatorPubkeyByIndex(index uint64) (types.PubkeyHex, bool)

func (*Datastore) GetValidatorRegistrationTimestamp

func (ds *Datastore) GetValidatorRegistrationTimestamp(pubkeyHex types.PubkeyHex) (uint64, error)

func (*Datastore) IsKnownValidator

func (ds *Datastore) IsKnownValidator(pubkeyHex types.PubkeyHex) bool

func (*Datastore) NumKnownValidators

func (ds *Datastore) NumKnownValidators() int

func (*Datastore) NumRegisteredValidators

func (ds *Datastore) NumRegisteredValidators() (uint64, error)

func (*Datastore) RefreshKnownValidators

func (ds *Datastore) RefreshKnownValidators() (cnt int, err error)

RefreshKnownValidators loads known validators from Redis into memory

func (*Datastore) SaveBlockSubmission added in v0.5.9

func (ds *Datastore) SaveBlockSubmission(signedBidTrace *types.SignedBidTrace, headerResp *types.GetHeaderResponse, payloadResp *types.GetPayloadResponse) error

SaveBlockSubmission stores getHeader and getPayload for later use, to memory and Redis. Note: saving to Postgres not needed, because getHeader doesn't currently check the database, getPayload finds the data it needs through a sql query.

func (*Datastore) SaveValidatorRegistration added in v0.9.1

func (ds *Datastore) SaveValidatorRegistration(entry types.SignedValidatorRegistration) error

SaveValidatorRegistration saves a validator registration into both Redis and the database

type GetHeaderResponseKey

type GetHeaderResponseKey struct {
	Slot           uint64
	ParentHash     string
	ProposerPubkey string
}

type GetPayloadResponseKey

type GetPayloadResponseKey struct {
	Slot           uint64
	ProposerPubkey string
	BlockHash      string
}

type RedisCache

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

func NewRedisCache

func NewRedisCache(redisURI, prefix string) (*RedisCache, error)

func (*RedisCache) GetActiveValidators added in v0.9.1

func (r *RedisCache) GetActiveValidators() (map[types.PubkeyHex]bool, error)

func (*RedisCache) GetBlockBuilderStatus added in v0.7.0

func (r *RedisCache) GetBlockBuilderStatus(builderPubkey string) (isHighPrio, isBlacklisted bool, err error)

func (*RedisCache) GetGetHeaderResponse

func (r *RedisCache) GetGetHeaderResponse(slot uint64, parentHash, proposerPubkey string) (*types.GetHeaderResponse, error)

func (*RedisCache) GetGetPayloadResponse

func (r *RedisCache) GetGetPayloadResponse(slot uint64, proposerPubkey, blockHash string) (*types.GetPayloadResponse, error)

func (*RedisCache) GetKnownValidators

func (r *RedisCache) GetKnownValidators() (map[types.PubkeyHex]uint64, error)

func (*RedisCache) GetObj

func (r *RedisCache) GetObj(key string, obj any) (err error)

func (*RedisCache) GetProposerDuties

func (r *RedisCache) GetProposerDuties() (proposerDuties []types.BuilderGetValidatorsResponseEntry, err error)

func (*RedisCache) GetRelayConfig

func (r *RedisCache) GetRelayConfig(field string) (string, error)

func (*RedisCache) GetStats

func (r *RedisCache) GetStats(field string) (value string, err error)

func (*RedisCache) GetValidatorRegistrationTimestamp

func (r *RedisCache) GetValidatorRegistrationTimestamp(proposerPubkey types.PubkeyHex) (uint64, error)

func (*RedisCache) SaveGetHeaderResponse

func (r *RedisCache) SaveGetHeaderResponse(slot uint64, parentHash, proposerPubkey string, headerResp *types.GetHeaderResponse) (err error)

func (*RedisCache) SaveGetPayloadResponse

func (r *RedisCache) SaveGetPayloadResponse(slot uint64, proposerPubkey string, resp *types.GetPayloadResponse) (err error)

func (*RedisCache) SetActiveValidator added in v0.9.1

func (r *RedisCache) SetActiveValidator(pubkeyHex types.PubkeyHex) error

func (*RedisCache) SetBlockBuilderStatus added in v0.7.0

func (r *RedisCache) SetBlockBuilderStatus(builderPubkey string, status BlockBuilderStatus) (err error)

func (*RedisCache) SetKnownValidator

func (r *RedisCache) SetKnownValidator(pubkeyHex types.PubkeyHex, proposerIndex uint64) error

func (*RedisCache) SetKnownValidatorNX added in v0.8.0

func (r *RedisCache) SetKnownValidatorNX(pubkeyHex types.PubkeyHex, proposerIndex uint64) error

func (*RedisCache) SetObj

func (r *RedisCache) SetObj(key string, value any, expiration time.Duration) (err error)

func (*RedisCache) SetProposerDuties

func (r *RedisCache) SetProposerDuties(proposerDuties []types.BuilderGetValidatorsResponseEntry) (err error)

func (*RedisCache) SetRelayConfig

func (r *RedisCache) SetRelayConfig(field, value string) (err error)

func (*RedisCache) SetStats

func (r *RedisCache) SetStats(field string, value any) (err error)

func (*RedisCache) SetValidatorRegistrationTimestamp added in v0.9.1

func (r *RedisCache) SetValidatorRegistrationTimestamp(proposerPubkey types.PubkeyHex, timestamp uint64) error

func (*RedisCache) SetValidatorRegistrationTimestampIfNewer added in v0.9.1

func (r *RedisCache) SetValidatorRegistrationTimestampIfNewer(proposerPubkey types.PubkeyHex, timestamp uint64) error

Jump to

Keyboard shortcuts

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