prysm-pulse/proto/prysm/v1alpha1/validator-client/keymanager.proto
james-prysm d907cae595
persistent validator settings in validator client (#12354)
* WIP

* improving proposer settings store

* WIP persistent validator settings

* WIP persistent validator settings

* changing visibility level

* fixing some deepsource issues

* fixing more deepsource issues

* fixing json marshalling

* fix linting

* fixing tests

* fixing more tests

* fixing more tests

* fixing more tests

* fixing linting

* WIP fixing unit tests

* fixing remaining db tests

* converting json to protobuf

* fixing e2e

* k8s yaml library is used directly

* fixing linting

* fixing broken unit test

* reverting changes on e2e

* fixing linting

* fixing deepsource issue

* resolving some internal comments

* resolving some comments and adding more tests

* adding more unit tests

* gaz

* fixing flaking test

* fixing unit test contamination

* fixing deepsource issue

* resolving review item

* gaz
2023-05-16 14:08:49 -05:00

128 lines
4.9 KiB
Protocol Buffer

syntax = "proto3";
package ethereum.validator.accounts.v2;
import "proto/eth/ext/options.proto";
import "proto/prysm/v1alpha1/attestation.proto";
import "proto/prysm/v1alpha1/beacon_block.proto";
import "proto/prysm/v1alpha1/beacon_state.proto";
import "proto/prysm/v1alpha1/sync_committee.proto";
import "google/api/annotations.proto";
import "google/protobuf/empty.proto";
option csharp_namespace = "Ethereum.Validator.Accounts.V2";
option go_package = "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1/validator-client;validatorpb";
option java_multiple_files = true;
option java_outer_classname = "KeymanagerProto";
option java_package = "org.ethereum.validator.accounts.v2";
option php_namespace = "Ethereum\\Validator\\Accounts\\V2";
// RemoteSigner service API.
//
// Defines a remote-signing keymanager which manages eth2
// validator accounts and can sign respective messages.
service RemoteSigner {
// ListPublicKeysResponse managed by a remote signer.
rpc ListValidatingPublicKeys(google.protobuf.Empty) returns (ListPublicKeysResponse) {
option (google.api.http) = {
get: "/accounts/v2/remote/accounts"
};
}
// Sign a remote request via gRPC.
rpc Sign(SignRequest) returns (SignResponse) {
option (google.api.http) = {
post: "/accounts/v2/remote/sign"
};
}
}
// ListPublicKeysResponse contains public keys
// for the validator secrets managed by the remote signer.
message ListPublicKeysResponse {
// List of 48 byte, BLS12-381 validating public keys.
repeated bytes validating_public_keys = 2;
}
// SignRequest is a message type used by a keymanager
// as part of Prysm's accounts v2 implementation.
message SignRequest {
// 48 byte public key corresponding to an associated private key
// being requested to sign data.
bytes public_key = 1;
// Raw bytes signing root the client is requesting to sign. The client is
// expected to determine these raw bytes from the appropriate BLS
// signing domain as well as the signing root of the data structure
// the bytes represent.
bytes signing_root = 2;
// Signature domain and the beacon chain objects to allow server to verify
// the contents and to prevent slashing.
bytes signature_domain = 3;
// Beacon chain objects. [100-200]
oneof object {
// Phase0 objects.
ethereum.eth.v1alpha1.BeaconBlock block = 101;
ethereum.eth.v1alpha1.AttestationData attestation_data = 102;
ethereum.eth.v1alpha1.AggregateAttestationAndProof aggregate_attestation_and_proof = 103;
ethereum.eth.v1alpha1.VoluntaryExit exit = 104;
uint64 slot = 105 [(ethereum.eth.ext.cast_type) = "github.com/prysmaticlabs/prysm/v4/consensus-types/primitives.Slot"];
uint64 epoch = 106 [(ethereum.eth.ext.cast_type) = "github.com/prysmaticlabs/prysm/v4/consensus-types/primitives.Epoch"];
// Altair objects.
ethereum.eth.v1alpha1.BeaconBlockAltair block_altair = 107;
ethereum.eth.v1alpha1.SyncAggregatorSelectionData sync_aggregator_selection_data = 108;
ethereum.eth.v1alpha1.ContributionAndProof contribution_and_proof = 109;
bytes sync_message_block_root = 110;
// Bellatrix objects.
ethereum.eth.v1alpha1.BeaconBlockBellatrix block_bellatrix = 111;
ethereum.eth.v1alpha1.BlindedBeaconBlockBellatrix blinded_block_bellatrix = 112;
// Builder objects.
ethereum.eth.v1alpha1.ValidatorRegistrationV1 registration = 113;
// Capella objects.
ethereum.eth.v1alpha1.BeaconBlockCapella block_capella = 114;
ethereum.eth.v1alpha1.BlindedBeaconBlockCapella blinded_block_capella = 115;
}
reserved 4, 5; // Reserving old, deleted fields.
uint64 signing_slot = 6 [(ethereum.eth.ext.cast_type) = "github.com/prysmaticlabs/prysm/v4/consensus-types/primitives.Slot"];
}
// SignResponse returned by a RemoteSigner gRPC service.
message SignResponse {
enum Status {
UNKNOWN = 0;
SUCCEEDED = 1;
DENIED = 2;
FAILED = 3;
}
// BLS12-381 signature for the data specified in the request.
bytes signature = 1;
// Status of the signing response, standardized as an enum
// to ensure different remote signing servers follow the
// same conventions.
Status status = 2;
}
// ProposerOptionPayload is a property of ProposerSettingsPayload
message ProposerOptionPayload {
string fee_recipient = 1;
BuilderConfig builder = 2;
}
// BuilderConfig is a property of ProposerOptionPayload
message BuilderConfig {
bool enabled = 1;
uint64 gas_limit = 2 [(ethereum.eth.ext.cast_type) = "github.com/prysmaticlabs/prysm/v4/consensus-types/validator.Uint64"];
repeated string relays = 3;
}
// ProposerSettingsPayload is used to unmarshal files sent from the validator flag as well as safe to bolt db bucket
message ProposerSettingsPayload {
map<string, ProposerOptionPayload> proposer_config = 1;
ProposerOptionPayload default_config = 2;
}