diff --git a/airgapped/airgapped.go b/airgapped/airgapped.go index a6583b7..3a994d4 100644 --- a/airgapped/airgapped.go +++ b/airgapped/airgapped.go @@ -7,6 +7,7 @@ import ( "github.com/depools/dc4bc/dkg" "github.com/depools/dc4bc/fsm/fsm" "github.com/depools/dc4bc/fsm/state_machines/dkg_proposal_fsm" + "github.com/depools/dc4bc/fsm/state_machines/signature_proposal_fsm" "github.com/depools/dc4bc/fsm/types/requests" "github.com/depools/dc4bc/qr" "github.com/syndtr/goleveldb/leveldb" @@ -174,6 +175,8 @@ func (am *AirgappedMachine) HandleOperation(operation client.Operation) ([]clien // handler gets a pointer to an operation, do necessary things // and write a result (or an error) to .Result field of operation switch fsm.State(operation.Type) { + case signature_proposal_fsm.StateAwaitParticipantsConfirmations: + err = am.handleStateAwaitParticipantsConfirmations(&operation) case dkg_proposal_fsm.StateDkgCommitsAwaitConfirmations: err = am.handleStateDkgCommitsAwaitConfirmations(&operation) case dkg_proposal_fsm.StateDkgDealsAwaitConfirmations: diff --git a/client/client.go b/client/client.go index d91bc64..3b638db 100644 --- a/client/client.go +++ b/client/client.go @@ -164,9 +164,11 @@ func (c *Client) ProcessMessage(message storage.Message) error { } operation = &types.Operation{ - Type: types.OperationType(resp.State), - Payload: bz, + Type: types.OperationType(resp.State), + Payload: bz, + DKGIdentifier: message.DkgRoundID, } + fmt.Println("DKG - ", message.DkgRoundID) default: log.Printf("State %s does not require an operation", resp.State) } diff --git a/client/state.go b/client/state.go index c7b3ed8..76a1bc6 100644 --- a/client/state.go +++ b/client/state.go @@ -115,8 +115,10 @@ func (s *LevelDBState) SaveFSM(dkgRoundID string, dump []byte) error { } var fsmInstances = map[string][]byte{} - if err := json.Unmarshal(bz, &fsmInstances); err != nil { - return fmt.Errorf("failed to unmarshal FSM instances: %w", err) + if len(bz) > 0 { + if err := json.Unmarshal(bz, &fsmInstances); err != nil { + return fmt.Errorf("failed to unmarshal FSM instances: %w", err) + } } fsmInstances[dkgRoundID] = dump @@ -135,8 +137,10 @@ func (s *LevelDBState) LoadFSM(dkgRoundID string) (*state_machines.FSMInstance, } var fsmInstances = map[string][]byte{} - if err := json.Unmarshal(bz, &fsmInstances); err != nil { - return nil, false, fmt.Errorf("failed to unmarshal FSM instances: %w", err) + if len(bz) > 0 { + if err := json.Unmarshal(bz, &fsmInstances); err != nil { + return nil, false, fmt.Errorf("failed to unmarshal FSM instances: %w", err) + } } fsmInstanceBz, ok := fsmInstances[dkgRoundID]