Skip to content

Commit 46b0787

Browse files
committed
Revert "Add support for selected nodes in wallet creation and key generation"
This reverts commit 3c09a2f.
1 parent 3c09a2f commit 46b0787

5 files changed

Lines changed: 17 additions & 81 deletions

File tree

pkg/client/client.go

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ const (
2121
type MPCClient interface {
2222
CreateWallet(walletID string) error
2323
CreateWalletWithAuthorizers(walletID string, authorizerSignatures []types.AuthorizerSignature) error
24-
CreateWalletWithSelectedNodes(walletID string, nodes []string) error
2524
OnWalletCreationResult(callback func(event event.KeygenResultEvent)) error
2625

2726
SignTransaction(msg *types.SignTxMessage) error
@@ -106,19 +105,14 @@ func NewMPCClient(opts Options) MPCClient {
106105

107106
// CreateWallet generates a GenerateKeyMessage, signs it, and publishes it.
108107
func (c *mpcClient) CreateWallet(walletID string) error {
109-
return c.createWalletWithAuthorizers(walletID, nil, nil)
110-
}
111-
112-
func (c *mpcClient) CreateWalletWithAuthorizers(walletID string, authorizerSignatures []types.AuthorizerSignature) error {
113-
return c.createWalletWithAuthorizers(walletID, nil, authorizerSignatures)
108+
return c.CreateWalletWithAuthorizers(walletID, nil)
114109
}
115110

116111
// CreateWalletWithAuthorizers generates a GenerateKeyMessage with authorizer signatures, signs it, and publishes it.
117-
func (c *mpcClient) createWalletWithAuthorizers(walletID string, selectedNodeIDs []string, authorizerSignatures []types.AuthorizerSignature) error {
112+
func (c *mpcClient) CreateWalletWithAuthorizers(walletID string, authorizerSignatures []types.AuthorizerSignature) error {
118113
// build the message
119114
msg := &types.GenerateKeyMessage{
120115
WalletID: walletID,
121-
SelectedNodeIDs: selectedNodeIDs,
122116
AuthorizerSignatures: authorizerSignatures,
123117
}
124118
// compute the canonical raw bytes
@@ -143,10 +137,6 @@ func (c *mpcClient) createWalletWithAuthorizers(walletID string, selectedNodeIDs
143137
return nil
144138
}
145139

146-
func (c *mpcClient) CreateWalletWithSelectedNodes(walletID string, nodes []string) error {
147-
return c.createWalletWithAuthorizers(walletID, nodes, nil)
148-
}
149-
150140
// The callback will be invoked whenever a wallet creation result is received.
151141
func (c *mpcClient) OnWalletCreationResult(callback func(event event.KeygenResultEvent)) error {
152142
err := c.genKeySuccessQueue.Dequeue(GenerateWalletSuccessTopic, func(msg []byte) error {

pkg/event/keygen.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
package event
22

33
const (
4-
KeygenBrokerStream = "mpc-keygen"
5-
KeygenConsumerStream = "mpc-keygen-consumer"
6-
KeygenRequestTopic = "mpc.keygen_request.*"
7-
KeygenRequestTopicFmt = "mpc.keygen_request.%s"
4+
KeygenBrokerStream = "mpc-keygen"
5+
KeygenConsumerStream = "mpc-keygen-consumer"
6+
KeygenRequestTopic = "mpc.keygen_request.*"
87
)
98

109
type KeygenResultEvent struct {

pkg/eventconsumer/event_consumer.go

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -173,35 +173,13 @@ func (ec *eventConsumer) handleKeyGenEvent(natMsg *nats.Msg) {
173173
}
174174

175175
walletID := msg.WalletID
176-
var nodeIDs []string
177-
if len(msg.SelectedNodeIDs) > 0 {
178-
nodeIDs = msg.SelectedNodeIDs
179-
logger.Info("Using selected node IDs for keygen", "walletID", walletID, "nodeIDs", nodeIDs)
180-
}
181-
182-
ecdsaSession, err := ec.node.CreateKeyGenSession(mpc.SessionTypeECDSA, walletID, ec.mpcThreshold, ec.genKeyResultQueue, nodeIDs)
176+
ecdsaSession, err := ec.node.CreateKeyGenSession(mpc.SessionTypeECDSA, walletID, ec.mpcThreshold, ec.genKeyResultQueue)
183177
if err != nil {
184-
if errors.Is(err, mpc.ErrNotInParticipantList) {
185-
logger.Info("Node is not in selected node list for this wallet, skipping keygen",
186-
"walletID", walletID,
187-
"nodeID", ec.node.ID(),
188-
)
189-
// Skip keygen instead of treating as error, same behavior as sign
190-
return
191-
}
192178
ec.handleKeygenSessionError(walletID, err, "Failed to create ECDSA key generation session", natMsg)
193179
return
194180
}
195-
eddsaSession, err := ec.node.CreateKeyGenSession(mpc.SessionTypeEDDSA, walletID, ec.mpcThreshold, ec.genKeyResultQueue, nodeIDs)
181+
eddsaSession, err := ec.node.CreateKeyGenSession(mpc.SessionTypeEDDSA, walletID, ec.mpcThreshold, ec.genKeyResultQueue)
196182
if err != nil {
197-
if errors.Is(err, mpc.ErrNotInParticipantList) {
198-
logger.Info("Node is not in selected node list for this wallet, skipping keygen",
199-
"walletID", walletID,
200-
"nodeID", ec.node.ID(),
201-
)
202-
// Skip keygen instead of treating as error, same behavior as sign
203-
return
204-
}
205183
ec.handleKeygenSessionError(walletID, err, "Failed to create EdDSA key generation session", natMsg)
206184
return
207185
}

pkg/mpc/node.go

Lines changed: 10 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ func (p *Node) CreateKeyGenSession(
8383
walletID string,
8484
threshold int,
8585
resultQueue messaging.MessageQueue,
86-
selectedNodeIDs []string,
8786
) (KeyGenSession, error) {
8887
if !p.peerRegistry.ArePeersReady() {
8988
return nil, errors.New("All nodes are not ready!")
@@ -94,43 +93,24 @@ func (p *Node) CreateKeyGenSession(
9493
return nil, fmt.Errorf("Key already exists: %s", walletID)
9594
}
9695

97-
var nodeIDs []string
98-
if len(selectedNodeIDs) > 0 {
99-
// Use selected node IDs, but filter to only include ready peers
100-
readyPeerIDs := p.peerRegistry.GetReadyPeersIncludeSelf()
101-
nodeIDs = p.filterReadyPeers(selectedNodeIDs, readyPeerIDs)
102-
103-
// Validate that we have enough ready nodes
104-
if len(nodeIDs) < threshold+1 {
105-
return nil, fmt.Errorf("not enough ready nodes in selected list: expected at least %d, got %d", threshold+1, len(nodeIDs))
106-
}
107-
108-
// Validate that self is in the selected list - return special error to skip, same as sign
109-
if !slices.Contains(nodeIDs, p.nodeID) {
110-
return nil, ErrNotInParticipantList
111-
}
112-
} else {
113-
// Use all ready peers if no selection provided
114-
nodeIDs = p.peerRegistry.GetReadyPeersIncludeSelf()
115-
}
116-
11796
switch sessionType {
11897
case SessionTypeECDSA:
119-
return p.createECDSAKeyGenSession(walletID, threshold, DefaultVersion, resultQueue, nodeIDs)
98+
return p.createECDSAKeyGenSession(walletID, threshold, DefaultVersion, resultQueue)
12099
case SessionTypeEDDSA:
121-
return p.createEDDSAKeyGenSession(walletID, threshold, DefaultVersion, resultQueue, nodeIDs)
100+
return p.createEDDSAKeyGenSession(walletID, threshold, DefaultVersion, resultQueue)
122101
default:
123102
return nil, fmt.Errorf("Unknown session type: %s", sessionType)
124103
}
125104
}
126105

127-
func (p *Node) createECDSAKeyGenSession(walletID string, threshold int, version int, resultQueue messaging.MessageQueue, nodeIDs []string) (KeyGenSession, error) {
128-
selfPartyID, allPartyIDs := p.generatePartyIDs(PurposeKeygen, nodeIDs, version)
106+
func (p *Node) createECDSAKeyGenSession(walletID string, threshold int, version int, resultQueue messaging.MessageQueue) (KeyGenSession, error) {
107+
readyPeerIDs := p.peerRegistry.GetReadyPeersIncludeSelf()
108+
selfPartyID, allPartyIDs := p.generatePartyIDs(PurposeKeygen, readyPeerIDs, version)
129109
session := newECDSAKeygenSession(
130110
walletID,
131111
p.pubSub,
132112
p.direct,
133-
nodeIDs,
113+
readyPeerIDs,
134114
selfPartyID,
135115
allPartyIDs,
136116
threshold,
@@ -143,13 +123,14 @@ func (p *Node) createECDSAKeyGenSession(walletID string, threshold int, version
143123
return session, nil
144124
}
145125

146-
func (p *Node) createEDDSAKeyGenSession(walletID string, threshold int, version int, resultQueue messaging.MessageQueue, nodeIDs []string) (KeyGenSession, error) {
147-
selfPartyID, allPartyIDs := p.generatePartyIDs(PurposeKeygen, nodeIDs, version)
126+
func (p *Node) createEDDSAKeyGenSession(walletID string, threshold int, version int, resultQueue messaging.MessageQueue) (KeyGenSession, error) {
127+
readyPeerIDs := p.peerRegistry.GetReadyPeersIncludeSelf()
128+
selfPartyID, allPartyIDs := p.generatePartyIDs(PurposeKeygen, readyPeerIDs, version)
148129
session := newEDDSAKeygenSession(
149130
walletID,
150131
p.pubSub,
151132
p.direct,
152-
nodeIDs,
133+
readyPeerIDs,
153134
selfPartyID,
154135
allPartyIDs,
155136
threshold,
@@ -269,17 +250,6 @@ func (p *Node) getReadyPeersForSession(keyInfo *keyinfo.KeyInfo, readyPeers []st
269250
return readyParticipantIDs
270251
}
271252

272-
func (p *Node) filterReadyPeers(selectedNodeIDs []string, readyPeers []string) []string {
273-
// Filter selected node IDs to only include ready peers
274-
filtered := make([]string, 0, len(selectedNodeIDs))
275-
for _, nodeID := range selectedNodeIDs {
276-
if slices.Contains(readyPeers, nodeID) {
277-
filtered = append(filtered, nodeID)
278-
}
279-
}
280-
return filtered
281-
}
282-
283253
func (p *Node) ensureNodeIsParticipant(keyInfo *keyinfo.KeyInfo) error {
284254
if !slices.Contains(keyInfo.ParticipantPeerIDs, p.nodeID) {
285255
return ErrNotInParticipantList

pkg/types/initiator_msg.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ type InitiatorMessage interface {
3636

3737
type GenerateKeyMessage struct {
3838
WalletID string `json:"wallet_id"`
39-
SelectedNodeIDs []string `json:"selected_node_ids"`
4039
Signature []byte `json:"signature"`
4140
AuthorizerSignatures []AuthorizerSignature `json:"authorizer_signatures,omitempty"`
4241
}

0 commit comments

Comments
 (0)