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 }