prysm-pulse/validator/keymanager/remote-web3signer
james-prysm 64f64f06bf
Remote Key Manager API(web3signer) (#10302)
* removing flag requirement, can run web3signer without predefined public keys

* placeholders for remote-keymanager-api

* adding proto and accountschangedfeed

* updating generated code

* fix imports

* fixing interface

* adding work in progress apimiddleware code

* started implementing functions for remote keymanager api

* fixing generted code from proto

* fixing protos

* fixing import format

* fixing proto generation again , didn't fix the first time

* fixing imports again

* continuing on implementing functions

* implementing add function

* implementing delete API function

* handling errors for API

* removing unusedcode and fixing format

* fixing bazel

* wip enable --web when running web3signer

* fixing wallet check for web3signer

* fixing apis

* adding list remote keys unit test

* import remote keys test

* delete pubkeys tests

* moving location of tests

* adding unit tests

* adding placeholder functions

* adding more unit tests

* fixing bazel

* fixing build

* fixing already slice issue with unit test

* fixing linting

* Update validator/client/validator.go

Co-authored-by: Raul Jordan <raul@prysmaticlabs.com>

* Update validator/keymanager/types.go

Co-authored-by: Raul Jordan <raul@prysmaticlabs.com>

* Update validator/node/node.go

Co-authored-by: Raul Jordan <raul@prysmaticlabs.com>

* Update validator/keymanager/types.go

Co-authored-by: Raul Jordan <raul@prysmaticlabs.com>

* Update validator/client/validator.go

Co-authored-by: Raul Jordan <raul@prysmaticlabs.com>

* adding comment on proto based on review

* Update validator/keymanager/remote-web3signer/keymanager.go

Co-authored-by: Radosław Kapka <rkapka@wp.pl>

* Update validator/keymanager/remote-web3signer/keymanager.go

Co-authored-by: Radosław Kapka <rkapka@wp.pl>

* Update validator/rpc/standard_api.go

Co-authored-by: Radosław Kapka <rkapka@wp.pl>

* Update validator/rpc/standard_api.go

Co-authored-by: Radosław Kapka <rkapka@wp.pl>

* Update validator/rpc/standard_api.go

Co-authored-by: Radosław Kapka <rkapka@wp.pl>

* Update validator/rpc/standard_api.go

Co-authored-by: Radosław Kapka <rkapka@wp.pl>

* adding generated code based on review

* updating based on feedback

* fixing imports

* fixing formatting

* Update validator/rpc/standard_api.go

Co-authored-by: Radosław Kapka <rkapka@wp.pl>

* fixing event call

* fixing dependency

* updating bazel

* Update validator/rpc/standard_api.go

Co-authored-by: Radosław Kapka <rkapka@wp.pl>

* Update validator/rpc/standard_api.go

Co-authored-by: Radosław Kapka <rkapka@wp.pl>

* Update validator/rpc/standard_api.go

Co-authored-by: Radosław Kapka <rkapka@wp.pl>

* Update validator/rpc/standard_api.go

Co-authored-by: Radosław Kapka <rkapka@wp.pl>

* addressing comment from review

Co-authored-by: Raul Jordan <raul@prysmaticlabs.com>
Co-authored-by: Radosław Kapka <rkapka@wp.pl>
2022-04-11 16:05:40 -04:00
..
internal web3signer: fixes for e2e (#10281) 2022-02-25 02:42:26 +00:00
v1 web3signer: fixes json altair block (#10490) 2022-04-07 08:24:30 +08:00
BUILD.bazel Remote Key Manager API(web3signer) (#10302) 2022-04-11 16:05:40 -04:00
keymanager_test.go Remote Key Manager API(web3signer) (#10302) 2022-04-11 16:05:40 -04:00
keymanager.go Remote Key Manager API(web3signer) (#10302) 2022-04-11 16:05:40 -04:00
metrics.go Web3Signer: metrics, tracing, and code coverage (#10161) 2022-02-01 18:28:41 +00:00
README.md Web3Signer: Object Mapper and Types (#10061) 2022-01-11 17:15:40 -05:00

Web3Signer

Web3Signer is a popular remote signer tool by Consensys to allow users to store validation keys outside the validation client and signed without the vc knowing the private keys. Web3Signer Specs are found by searching Consensys' Web3Signer API specification

issue: https://github.com/prysmaticlabs/prysm/issues/9994

Support

WIP

Features

CLI

WIP

API

  • Get Public keys: returns all public keys currently stored with web3signer excluding newly added keys if reload keys was not run.
  • Sign: Signs a message with a given public key. There are several types of messages that can be signed ( web3signer type to prysm type):
    • BLOCK <- *validatorpb.SignRequest_Block
    • ATTESTATION <- *validatorpb.SignRequest_AttestationData
    • AGGREGATE_AND_PROOF <- *validatorpb.SignRequest_AggregateAttestationAndProof
    • AGGREGATION_SLOT <- *validatorpb.SignRequest_Slot
    • BLOCK_V2 <- *validatorpb.SignRequest_BlockV2
    • BLOCK_V3 <- *validatorpb.SignRequest_BlockV3
    • DEPOSIT <- not supported
    • RANDAO_REVEAL <- *validatorpb.SignRequest_Epoch
    • VOLUNTARY_EXIT <- *validatorpb.SignRequest_Exit
    • SYNC_COMMITTEE_MESSAGE <- *validatorpb.SignRequest_SyncMessageBlockRoot
    • SYNC_COMMITTEE_SELECTION_PROOF <- *validatorpb.SignRequest_SyncAggregatorSelectionData
    • SYNC_COMMITTEE_CONTRIBUTION_AND_PROOF <- *validatorpb.SignRequest_ContributionAndProof
  • Reload Keys: reloads all public keys from the web3signer.
  • Get Server Status: returns OK if the web3signer is ok.

Files Added and Files Changed

  • Files Added:

    • validator/keymanager/remote-web3signer package
  • Files Modified:

    • modified: cmd/validator/flags/flags.go
    • modified: validator/accounts/accounts_backup.go
    • modified: validator/accounts/accounts_list.go
    • modified: validator/accounts/iface/wallet.go
    • modified: validator/accounts/userprompt/prompt.go
    • modified: validator/accounts/wallet/wallet.go
    • modified: validator/accounts/wallet_create.go
    • modified: validator/client/runner.go
    • modified: validator/client/validator.go
    • modified: validator/keymanager/remote-web3signer/keymanager.go
    • modified: validator/keymanager/types.go