github.com/prysmaticlabs/prysm@v1.4.4/proto/validator/accounts/v2/keymanager.proto (about)

     1  syntax = "proto3";
     2  package ethereum.validator.accounts.v2;
     3  
     4  import "proto/eth/ext/options.proto";
     5  import "proto/eth/v1alpha1/attestation.proto";
     6  import "proto/eth/v1alpha1/beacon_block.proto";
     7  import "proto/prysm/v2/beacon_block.proto";
     8  import "google/api/annotations.proto";
     9  import "google/protobuf/empty.proto";
    10  
    11  // RemoteSigner service API.
    12  //
    13  // Defines a remote-signing keymanager which manages eth2
    14  // validator accounts and can sign respective messages.
    15  service RemoteSigner {
    16      // ListPublicKeysResponse managed by a remote signer.
    17      rpc ListValidatingPublicKeys(google.protobuf.Empty) returns (ListPublicKeysResponse) {
    18          option (google.api.http) = {
    19              get: "/accounts/v2/remote/accounts"
    20          };
    21      }
    22  
    23      // Sign a remote request via gRPC.
    24      rpc Sign(SignRequest) returns (SignResponse) {
    25          option (google.api.http) = {
    26              post: "/accounts/v2/remote/sign"
    27          };
    28      }
    29  }
    30  
    31  // ListPublicKeysResponse contains public keys
    32  // for the validator secrets managed by the remote signer.
    33  message ListPublicKeysResponse {
    34      // List of 48 byte, BLS12-381 validating public keys.
    35      repeated bytes validating_public_keys = 2;
    36  }
    37  
    38  // SignRequest is a message type used by a keymanager
    39  // as part of Prysm's accounts v2 implementation.
    40  message SignRequest {
    41      // 48 byte public key corresponding to an associated private key
    42      // being requested to sign data.
    43      bytes public_key = 1;
    44  
    45      // Raw bytes signing root the client is requesting to sign. The client is
    46      // expected to determine these raw bytes from the appropriate BLS
    47      // signing domain as well as the signing root of the data structure
    48      // the bytes represent.
    49      bytes signing_root = 2;
    50  
    51      // Signature domain and the beacon chain objects to allow server to verify
    52      // the contents and to prevent slashing.
    53      bytes signature_domain = 3;
    54      // Beacon chain objects. [100-200]
    55      oneof object {
    56          // Phase0 objects.
    57          ethereum.eth.v1alpha1.BeaconBlock block = 101;
    58          ethereum.eth.v1alpha1.AttestationData attestation_data = 102;
    59          ethereum.eth.v1alpha1.AggregateAttestationAndProof aggregate_attestation_and_proof = 103;
    60          ethereum.eth.v1alpha1.VoluntaryExit exit = 104;
    61          uint64 slot = 105 [(ethereum.eth.ext.cast_type) = "github.com/prysmaticlabs/eth2-types.Slot"];
    62          uint64 epoch = 106 [(ethereum.eth.ext.cast_type) = "github.com/prysmaticlabs/eth2-types.Epoch"];
    63  
    64          // Altair objects.
    65          ethereum.prysm.v2.BeaconBlockAltair blockV2 = 107;
    66      }
    67  }
    68  
    69  // SignResponse returned by a RemoteSigner gRPC service.
    70  message SignResponse {
    71      enum Status {
    72          UNKNOWN = 0;
    73          SUCCEEDED = 1;
    74          DENIED = 2;
    75          FAILED = 3;
    76      }
    77  
    78      // BLS12-381 signature for the data specified in the request.
    79      bytes signature = 1;
    80  
    81      // Status of the signing response, standardized as an enum
    82      // to ensure different remote signing servers follow the
    83      // same conventions.
    84      Status status = 2;
    85  }