Skip to content

Commit 7a7a0c3

Browse files
james-prysmnalepae
authored andcommitted
Builder ssz (#14976)
* wip * refactoring functions for easier readability * allow ssz for register validator * changelog * adding in blinded block submission tests * adding in tests for header ssz * fixing linting and tests * adding in custom errors and fixing ssz validator registration * Update api/client/builder/client.go Co-authored-by: Manu NALEPA <[email protected]> * Update api/client/builder/client.go Co-authored-by: Manu NALEPA <[email protected]> * manu's feedback * linting * adding in info log to notify that this setting was turned on * fixing linting * manu's feedback * fixing import --------- Co-authored-by: Manu NALEPA <[email protected]>
1 parent c2031f9 commit 7a7a0c3

File tree

20 files changed

+2050
-452
lines changed

20 files changed

+2050
-452
lines changed

api/client/builder/client.go

Lines changed: 363 additions & 82 deletions
Large diffs are not rendered by default.

api/client/builder/client_test.go

Lines changed: 678 additions & 46 deletions
Large diffs are not rendered by default.

api/client/builder/errors.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,9 @@ var ErrBadRequest = errors.Wrap(ErrNotOK, "recv 400 BadRequest response from API
1515
// ErrNoContent specifically means that a '204 - No Content' response was received from the API.
1616
// Typically, a 204 is a success but in this case for the Header API means No header is available
1717
var ErrNoContent = errors.New("recv 204 no content response from API, No header is available")
18+
19+
// ErrUnsupportedMediaType specifically means that a '415 - Unsupported Media Type' was received from the API.
20+
var ErrUnsupportedMediaType = errors.Wrap(ErrNotOK, "The media type in \"Content-Type\" header is unsupported, and the request has been rejected. This occurs when a HTTP request supplies a payload in a content-type that the server is not able to handle.")
21+
22+
// ErrNotAcceptable specifically means that a '406 - Not Acceptable' was received from the API.
23+
var ErrNotAcceptable = errors.Wrap(ErrNotOK, "The accept header value is not acceptable")

beacon-chain/builder/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ load("@prysm//tools/go:def.bzl", "go_library", "go_test")
33
go_library(
44
name = "go_default_library",
55
srcs = [
6+
"log.go",
67
"metric.go",
78
"option.go",
89
"service.go",

beacon-chain/builder/log.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package builder
2+
3+
import "github.com/sirupsen/logrus"
4+
5+
var log = logrus.WithField("prefix", "builder")

beacon-chain/builder/option.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,16 @@ type Option func(s *Service) error
1414
// FlagOptions for builder service flag configurations.
1515
func FlagOptions(c *cli.Context) ([]Option, error) {
1616
endpoint := c.String(flags.MevRelayEndpoint.Name)
17+
sszEnabled := c.Bool(flags.EnableBuilderSSZ.Name)
1718
var client *builder.Client
1819
if endpoint != "" {
20+
var opts []builder.ClientOpt
21+
if sszEnabled {
22+
log.Info("Using APIs with SSZ enabled")
23+
opts = append(opts, builder.WithSSZ())
24+
}
1925
var err error
20-
client, err = builder.NewClient(endpoint)
26+
client, err = builder.NewClient(endpoint, opts...)
2127
if err != nil {
2228
return nil, err
2329
}

beacon-chain/builder/service.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import (
1717
"github.com/prysmaticlabs/prysm/v5/monitoring/tracing/trace"
1818
v1 "github.com/prysmaticlabs/prysm/v5/proto/engine/v1"
1919
ethpb "github.com/prysmaticlabs/prysm/v5/proto/prysm/v1alpha1"
20-
log "github.com/sirupsen/logrus"
2120
)
2221

2322
// ErrNoBuilder is used when builder endpoint is not configured.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
### Added
2+
3+
- enable SSZ for builder API calls

cmd/beacon-chain/flags/base.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,14 @@ var (
2828
Usage: "A MEV builder relay string http endpoint, this will be used to interact MEV builder network using API defined in: https://ethereum.github.io/builder-specs/#/Builder",
2929
Value: "",
3030
}
31+
32+
// EnableBuilderSSZ enables Builder APIs to send and receive in SSZ format
33+
EnableBuilderSSZ = &cli.BoolFlag{
34+
Name: "enable-builder-ssz",
35+
Aliases: []string{"builder-ssz"},
36+
Usage: "Enables Builder APIs to send and receive in SSZ format",
37+
}
38+
3139
MaxBuilderConsecutiveMissedSlots = &cli.IntFlag{
3240
Name: "max-builder-consecutive-missed-slots",
3341
Usage: "Number of consecutive skip slot to fallback from using relay/builder to local execution engine for block construction",

cmd/beacon-chain/main.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ var appFlags = []cli.Flag{
8484
flags.MinBuilderDiff,
8585
flags.BeaconDBPruning,
8686
flags.PrunerRetentionEpochs,
87+
flags.EnableBuilderSSZ,
8788
cmd.BackupWebhookOutputDir,
8889
cmd.MinimalConfigFlag,
8990
cmd.E2EConfigFlag,

0 commit comments

Comments
 (0)