Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/multikey #4741

Merged
merged 150 commits into from Mar 6, 2023
Merged

Feat/multikey #4741

merged 150 commits into from Mar 6, 2023

Conversation

iulianpascalau
Copy link
Contributor

@iulianpascalau iulianpascalau commented Nov 29, 2022

Reasoning behind the pull request

  • added the possibility to have a node use more than one key. To work, the node will need to be an observer that won't change the allocated shard and use only those provided keys that are eligible validators in the current epoch.

Proposed changes

This feature added multikey support that will enable the node to sign on behalf of more than one key. To work, a multikey node will be required for each
shard of the chain (including the metachain) and the exact set of keys should be given to all the nodes.
A detailed description of the feature is available here https://docs.multiversx.com/validators/key-management/multikey-nodes
This feature does not require a flag and is known to not induce backward compatibility issues. This feature does not change API routes.
In terms of the configuration files, we have this change list:

  • in config.toml file there is a new config value PeerAuthenticationTimeBetweenChecksInSec set to 6 seconds
  • in prefs.toml file there is a new slice section called NamedIdentity to manually specify the named identity of a set of BLS keys
  • to work, the node will require a file called allValidatorsKeys.pem containing all handled keys

Testing procedure

  • [tbd]

Pre-requisites

Based on the Contributing Guidelines the PR author and the reviewers must check the following requirements are met:

  • was the PR targeted to the correct branch?
  • if this is a larger feature that probably needs more than one PR, is there a feat branch created?
  • if this is a feat branch merging, do all satellite projects have a proper tag inside go.mod?

iulianpascalau and others added 30 commits July 1, 2022 10:47
…r-support

Multisigner: added support in network messenger
Multisigner: added keysHolder struct
Multisigner: keys holder redundancy support
# Conflicts:
#	p2p/libp2p/netMessenger_test.go
…22.08.12

Update multisigner dev 2022.08.12
iulianpascalau and others added 23 commits December 23, 2022 17:29
…ikey-2022.12.19

Merge rc v1.5.0 feat multikey 2022.12.19
# Conflicts:
#	cmd/node/main.go
#	consensus/broadcast/commonMessenger_test.go
#	consensus/broadcast/metaChainMessenger_test.go
#	consensus/broadcast/shardChainMessenger_test.go
#	consensus/mock/consensusDataContainerMock.go
#	consensus/spos/bls/blsWorker_test.go
#	consensus/spos/bls/subroundEndRound_test.go
#	consensus/spos/consensusCore.go
#	consensus/spos/consensusState.go
#	consensus/spos/consensusState_test.go
#	consensus/spos/interface.go
#	consensus/spos/roundConsensus_test.go
#	consensus/spos/subround_test.go
#	factory/crypto/cryptoComponents.go
#	factory/crypto/cryptoComponentsHandler.go
#	factory/crypto/cryptoComponents_test.go
#	factory/crypto/export_test.go
#	factory/crypto/signingHandler.go
#	factory/crypto/signingHandler_test.go
#	factory/interface.go
#	factory/mock/cryptoComponentsMock.go
#	go.mod
#	go.sum
#	heartbeat/interface.go
#	heartbeat/sender/heartbeatSender.go
#	heartbeat/sender/peerAuthenticationSender.go
#	integrationTests/consensus/consensus_test.go
#	integrationTests/mock/cryptoComponentsStub.go
#	integrationTests/testConsensusNode.go
#	integrationTests/testInitializer.go
#	node/mock/factory/cryptoComponentsStub.go
added IsMultiKey method to managedPeersHolder interface
added few extra tests
# Conflicts:
#	cmd/node/config/config.toml
#	consensus/broadcast/commonMessenger_test.go
#	consensus/broadcast/metaChainMessenger_test.go
#	consensus/broadcast/shardChainMessenger_test.go
#	consensus/mock/messengerStub.go
#	consensus/mock/mockTestInitializer.go
#	go.mod
#	go.sum
#	integrationTests/factory/componentsHelper.go
#	integrationTests/testConsensusNode.go
…e_selection

Fix storage pruning node type selection
…23.02.24

Update multikey rc v1.6.0 2023.02.24
# Conflicts:
#	epochStart/bootstrap/metaStorageHandler.go
#	epochStart/bootstrap/metaStorageHandler_test.go
#	epochStart/bootstrap/process.go
#	epochStart/bootstrap/shardStorageHandler.go
#	epochStart/bootstrap/shardStorageHandler_test.go
#	factory/data/dataComponents.go
#	factory/processing/processComponents.go
#	integrationTests/multiShard/endOfEpoch/startInEpoch/startInEpoch_test.go
Proper release for feat multikey
@iulianpascalau iulianpascalau marked this pull request as ready for review March 6, 2023 14:16
@iulianpascalau iulianpascalau merged commit 7cf7751 into rc/v1.6.0 Mar 6, 2023
4 checks passed
@iulianpascalau iulianpascalau deleted the feat/multikey branch March 6, 2023 14:46
@schimih schimih added the type:feature New feature or request label May 25, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type:feature New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants