Documentation ¶
Index ¶
- Constants
- Variables
- func SubmissionToKey(submission *types.BuilderSubmitBlockRequest) structs.PayloadKey
- type Auctioneer
- type Beacon
- type BlockValidationClient
- type DataAPIStore
- type Datastore
- type PayloadCache
- type Relay
- func (r *Relay) AttachMetrics(m *metrics.Metrics)
- func (rs *Relay) Close(ctx context.Context)
- func (r *Relay) GetBlockReceived(ctx context.Context, w io.Writer, query structs.SubmissionTraceQuery) error
- func (rs *Relay) GetHeader(ctx context.Context, m *structs.MetricGroup, uc structs.UserContent, ...) (structs.GetHeaderResponse, error)
- func (rs *Relay) GetPayload(ctx context.Context, m *structs.MetricGroup, uc structs.UserContent, ...) (structs.GetPayloadResponse, error)
- func (r *Relay) GetPayloadDelivered(ctx context.Context, w io.Writer, query structs.PayloadTraceQuery) error
- func (rs *Relay) RunSubscribersParallel(ctx context.Context, num uint)
- func (rs *Relay) SubmitBlock(ctx context.Context, m *structs.MetricGroup, uc structs.UserContent, ...) error
- type RelayConfig
- type RelayMetrics
- type State
- type Streamer
- type TimeoutWaitGroup
- type ValidatorCache
- type ValidatorStore
- type Verifier
- type Warehouse
Constants ¶
View Source
const (
StateRecheckDelay = time.Second
)
Variables ¶
View Source
var ( ErrUnknownValue = errors.New("value is unknown") ErrPayloadDiffBlockHash = errors.New("slot payload already delivered with different blockHash") ErrHigherSlotDelivered = errors.New("slot already delivered with higher slot") ErrNoPayloadFound = errors.New("no payload found") ErrMissingRequest = errors.New("req is nil") ErrMissingSecretKey = errors.New("secret key is nil") ErrNoBuilderBid = errors.New("no builder bid") ErrTraceMismatch = errors.New("trace and payload mismatch") ErrZeroBid = errors.New("zero valued builder bid") ErrOldSlot = errors.New("requested slot is old") ErrBadHeader = errors.New("invalid block header from datastore") ErrInvalidSignature = errors.New("invalid signature") ErrStore = errors.New("failed to store") ErrMarshal = errors.New("failed to marshal") ErrInternal = errors.New("internal server error") ErrUnknownValidator = errors.New("unknown validator") ErrVerification = errors.New("failed to verify") ErrInvalidTimestamp = errors.New("invalid timestamp") ErrInvalidSlot = errors.New("invalid slot") ErrEmptyBlock = errors.New("block is empty") ErrWrongPayload = errors.New("wrong publish payload") ErrFailedToPublish = errors.New("failed to publish block") ErrLateRequest = errors.New("request too late") ErrInvalidExecutionPayload = errors.New("invalid execution payload") )
Functions ¶
func SubmissionToKey ¶
func SubmissionToKey(submission *types.BuilderSubmitBlockRequest) structs.PayloadKey
Types ¶
type Auctioneer ¶
type Auctioneer interface { AddBlock(bid structs.BuilderBidExtended) (newMax bool) MaxProfitBlock(slot structs.Slot, parentHash types.Hash) (structs.BuilderBidExtended, bool) }
type Beacon ¶
type Beacon interface {
PublishBlock(ctx context.Context, block structs.SignedBeaconBlock) error
}
type BlockValidationClient ¶
type DataAPIStore ¶
type DataAPIStore interface { PutDelivered(context.Context, structs.Slot, structs.DeliveredTrace) error GetDeliveredPayloads(ctx context.Context, w io.Writer, headSlot uint64, queryArgs structs.PayloadTraceQuery) error PutBuilderBlockSubmission(ctx context.Context, bid structs.BidTraceWithTimestamp, isMostProfitable bool) (err error) GetBuilderBlockSubmissions(ctx context.Context, w io.Writer, headSlot uint64, payload structs.SubmissionTraceQuery) error }
type Datastore ¶
type Datastore interface { PutPayload(context.Context, structs.PayloadKey, structs.BlockAndTraceExtended, time.Duration) error GetPayload(context.Context, structs.ForkVersion, structs.PayloadKey) (structs.BlockAndTraceExtended, error) }
type PayloadCache ¶ added in v0.5.0
type PayloadCache interface { ContainsOrAdd(structs.PayloadKey, structs.BlockAndTraceExtended) (ok, evicted bool) Add(structs.PayloadKey, structs.BlockAndTraceExtended) (evicted bool) Get(structs.PayloadKey) (structs.BlockAndTraceExtended, bool) }
type Relay ¶
type Relay struct {
// contains filtered or unexported fields
}
func NewRelay ¶
func NewRelay(l log.Logger, config RelayConfig, beacon Beacon, vcache ValidatorCache, vstore ValidatorStore, ver Verifier, beaconState State, pcache PayloadCache, d Datastore, das DataAPIStore, a Auctioneer, bvc BlockValidationClient, wh Warehouse, s Streamer) *Relay
NewRelay relay service
func (*Relay) AttachMetrics ¶
func (*Relay) GetBlockReceived ¶
func (*Relay) GetHeader ¶
func (rs *Relay) GetHeader(ctx context.Context, m *structs.MetricGroup, uc structs.UserContent, request structs.HeaderRequest) (structs.GetHeaderResponse, error)
GetHeader is called by a block proposer communicating through mev-boost and returns a bid along with an execution payload header
func (*Relay) GetPayload ¶
func (rs *Relay) GetPayload(ctx context.Context, m *structs.MetricGroup, uc structs.UserContent, payloadRequest structs.SignedBlindedBeaconBlock) (structs.GetPayloadResponse, error)
GetPayload is called by a block proposer communicating through mev-boost and reveals execution payload of given signed beacon block if stored
func (*Relay) GetPayloadDelivered ¶
func (*Relay) RunSubscribersParallel ¶ added in v0.5.0
func (*Relay) SubmitBlock ¶
func (rs *Relay) SubmitBlock(ctx context.Context, m *structs.MetricGroup, uc structs.UserContent, sbr structs.SubmitBlockRequest) error
SubmitBlock Accepts block from trusted builder and stores
type RelayConfig ¶
type RelayConfig struct { BuilderSigningDomain types.Domain ProposerSigningDomain map[structs.ForkVersion]types.Domain PubKey types.PublicKey SecretKey *bls.SecretKey GetPayloadResponseDelay time.Duration GetPayloadRequestTimeLimit time.Duration PayloadDataTTL time.Duration RegistrationCacheTTL time.Duration Distributed, StreamServedBids, PublishBlock bool AllowedListedBuilders map[[48]byte]struct{} }
func (*RelayConfig) OnConfigChange ¶ added in v0.6.0
func (rc *RelayConfig) OnConfigChange(c structs.OldNew) (err error)
func (*RelayConfig) ParseInitialConfig ¶ added in v0.6.0
func (rc *RelayConfig) ParseInitialConfig(keys []string) (err error)
type RelayMetrics ¶
type RelayMetrics struct { MissHeaderCount *prometheus.CounterVec CacheHitCount *prometheus.CounterVec RetryCount *prometheus.CounterVec }
type State ¶
type State interface { KnownValidators() structs.ValidatorsState HeadSlot() structs.Slot Genesis() structs.GenesisInfo Withdrawals(uint64, types.Hash) structs.WithdrawalsState Randao(uint64, types.Hash) structs.RandaoState ForkVersion(slot structs.Slot) structs.ForkVersion }
type Streamer ¶ added in v0.5.0
type Streamer interface { BlockCache() <-chan structs.BlockAndTraceExtended PublishBlockCache(ctx context.Context, block structs.BlockAndTraceExtended) error BuilderBid() <-chan structs.BuilderBidExtended PublishBuilderBid(ctx context.Context, bid structs.BuilderBidExtended) error }
type TimeoutWaitGroup ¶ added in v0.4.4
type TimeoutWaitGroup struct {
// contains filtered or unexported fields
}
type ValidatorCache ¶
type ValidatorStore ¶
Click to show internal directories.
Click to hide internal directories.