mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2025-01-09 11:11:20 +00:00
55a29a4670
* implement beacon committee selections * fix build * fix lint * fix lint * Update beacon-chain/rpc/eth/shared/structs.go Co-authored-by: Radosław Kapka <rkapka@wp.pl> * Update validator/client/beacon-api/beacon_committee_selections.go Co-authored-by: Radosław Kapka <rkapka@wp.pl> * Update validator/client/beacon-api/beacon_committee_selections.go Co-authored-by: Radosław Kapka <rkapka@wp.pl> * Update validator/client/beacon-api/beacon_committee_selections.go Co-authored-by: Radosław Kapka <rkapka@wp.pl> * move beacon committee selection structs to validator module * fix bazel build files * add support for POST and GET endpoints for get state validators query * add a handler to return error from beacon node * move beacon committee selection to validator top-level module * fix bazel * re-arrange fields to fix lint * fix TestServer_InitializeRoutes * fix build and lint * fix build and lint * fix TestSubmitAggregateAndProof_Distributed --------- Co-authored-by: Radosław Kapka <rkapka@wp.pl>
37 lines
1004 B
Go
37 lines
1004 B
Go
package beacon_api
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"encoding/json"
|
|
|
|
"github.com/prysmaticlabs/prysm/v4/validator/client/iface"
|
|
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
type aggregatedSelectionResponse struct {
|
|
Data []iface.BeaconCommitteeSelection `json:"data"`
|
|
}
|
|
|
|
func (c *beaconApiValidatorClient) getAggregatedSelection(ctx context.Context, selections []iface.BeaconCommitteeSelection) ([]iface.BeaconCommitteeSelection, error) {
|
|
body, err := json.Marshal(selections)
|
|
if err != nil {
|
|
return nil, errors.Wrap(err, "failed to marshal selections")
|
|
}
|
|
|
|
var resp aggregatedSelectionResponse
|
|
err = c.jsonRestHandler.Post(ctx, "/eth/v1/validator/beacon_committee_selections", nil, bytes.NewBuffer(body), &resp)
|
|
if err != nil {
|
|
return nil, errors.Wrap(err, "error calling post endpoint")
|
|
}
|
|
if len(resp.Data) == 0 {
|
|
return nil, errors.New("no aggregated selection returned")
|
|
}
|
|
if len(selections) != len(resp.Data) {
|
|
return nil, errors.New("mismatching number of selections")
|
|
}
|
|
|
|
return resp.Data, nil
|
|
}
|