mirror of https://github.com/certusone/dc4bc.git
feat: updated flow
This commit is contained in:
parent
33ecea0a9a
commit
19640adcf0
|
@ -380,6 +380,8 @@ func (f *FSM) do(trEvent *trEvent, args ...interface{}) (resp *Response, err err
|
|||
}
|
||||
}
|
||||
|
||||
resp.State = f.State()
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -114,12 +114,14 @@ func Init(machines ...MachineProvider) *FSMPool {
|
|||
p.states[state] = initMachineName
|
||||
continue
|
||||
}
|
||||
}
|
||||
if name, exists := p.states[state]; exists && name != machineName {
|
||||
panic(fmt.Sprintf("duplicate state for machines \"%s\"", state))
|
||||
} else {
|
||||
if name, exists := p.states[state]; exists && name != machineName {
|
||||
panic(fmt.Sprintf("duplicate state for machines \"%s\"", state))
|
||||
}
|
||||
|
||||
p.states[state] = machineName
|
||||
}
|
||||
|
||||
p.states[state] = machineName
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -3,13 +3,14 @@ package dkg_proposal_fsm
|
|||
import (
|
||||
"github.com/depools/dc4bc/fsm/fsm"
|
||||
"github.com/depools/dc4bc/fsm/state_machines/internal"
|
||||
spf "github.com/depools/dc4bc/fsm/state_machines/signature_proposal_fsm"
|
||||
"sync"
|
||||
)
|
||||
|
||||
const (
|
||||
FsmName = "dkg_proposal_fsm"
|
||||
|
||||
StateDkgInitial = StateDkgCommitsAwaitConfirmations
|
||||
StateDkgInitial = spf.StateSignatureProposalCollected
|
||||
|
||||
// Sending dkg commits
|
||||
StateDkgCommitsAwaitConfirmations = fsm.State("state_dkg_commits_await_confirmations")
|
||||
|
@ -41,7 +42,7 @@ const (
|
|||
StateDkgMasterKeyCollected = fsm.State("state_dkg_master_key_collected")
|
||||
|
||||
// Events
|
||||
eventAutoDKGInitialInternal = fsm.Event("event_dkg_init")
|
||||
EventDKGInitProcess = fsm.Event("event_dkg_init_process")
|
||||
|
||||
EventDKGCommitConfirmationReceived = fsm.Event("event_dkg_commit_confirm_received")
|
||||
EventDKGCommitConfirmationError = fsm.Event("event_dkg_commit_confirm_canceled_by_error")
|
||||
|
@ -92,13 +93,13 @@ func New() internal.DumpedMachineProvider {
|
|||
// Switch to pub keys required
|
||||
// {Name: eventDKGPubKeysSendingRequiredAuto, SrcState: []fsm.State{StateDkgInitial}, DstState: StateDkgPubKeysAwaitConfirmations, IsInternal: true, IsAuto: true, AutoRunMode: fsm.EventRunAfter},
|
||||
|
||||
// {Name: eventAutoDKGInitialInternal, SrcState: []fsm.State{StateDkgPubKeysAwaitConfirmations}, DstState: StateDkgPubKeysAwaitConfirmations, IsInternal: true, IsAuto: true, AutoRunMode: fsm.EventRunBefore},
|
||||
// {Name: EventDKGInitProcess, SrcState: []fsm.State{StateDkgPubKeysAwaitConfirmations}, DstState: StateDkgPubKeysAwaitConfirmations, IsInternal: true, IsAuto: true, AutoRunMode: fsm.EventRunBefore},
|
||||
|
||||
// StateDkgCommitsCollected = fsm.State("state_dkg_commits_collected")
|
||||
|
||||
// {Name: eventAutoDKGInitInternal, SrcState: []fsm.State{StateDkgInitial}, DstState: StateDkgCommitsAwaitConfirmations, IsInternal: true, IsAuto: true, AutoRunMode: fsm.EventRunBefore},
|
||||
// {Name: eventAutoDKGInitInternal, SrcState: []fsm.State{StateDkgInitial}, DstState: StateDkgCommitsAwaitConfirmations, IsInternal: true, IsAuto: true, AutoRunMode: fsm.EventRunBefore},
|
||||
|
||||
{Name: eventAutoDKGInitialInternal, SrcState: []fsm.State{StateDkgCommitsAwaitConfirmations}, DstState: StateDkgCommitsAwaitConfirmations, IsInternal: true, IsAuto: true, AutoRunMode: fsm.EventRunBefore},
|
||||
{Name: EventDKGInitProcess, SrcState: []fsm.State{StateDkgInitial}, DstState: StateDkgCommitsAwaitConfirmations},
|
||||
|
||||
// Commits
|
||||
{Name: EventDKGCommitConfirmationReceived, SrcState: []fsm.State{StateDkgCommitsAwaitConfirmations}, DstState: StateDkgCommitsAwaitConfirmations},
|
||||
|
@ -144,7 +145,7 @@ func New() internal.DumpedMachineProvider {
|
|||
// {Name: EventDKGMasterKeyRequiredInternal, SrcState: []fsm.State{StateDkgResponsesAwaitConfirmations}, DstState: fsm.StateGlobalDone, IsInternal: true},
|
||||
},
|
||||
fsm.Callbacks{
|
||||
eventAutoDKGInitialInternal: machine.actionInitDKGProposal,
|
||||
EventDKGInitProcess: machine.actionInitDKGProposal,
|
||||
|
||||
EventDKGCommitConfirmationReceived: machine.actionCommitConfirmationReceived,
|
||||
EventDKGCommitConfirmationError: machine.actionConfirmationError,
|
||||
|
|
|
@ -239,12 +239,22 @@ func Test_SignatureProposal_Positive(t *testing.T) {
|
|||
|
||||
if participantCounter > 0 {
|
||||
compareState(t, spf.StateAwaitParticipantsConfirmations, fsmResponse.State)
|
||||
} else {
|
||||
compareState(t, spf.StateSignatureProposalCollected, fsmResponse.State)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
compareState(t, spf.StateSignatureProposalCollected, fsmResponse.State)
|
||||
|
||||
testFSMInstance, err = FromDump(dump)
|
||||
|
||||
fsmResponse, dump, err = testFSMInstance.Do(dpf.EventDKGInitProcess)
|
||||
|
||||
compareErrNil(t, err)
|
||||
|
||||
compareDumpNotZero(t, dump)
|
||||
|
||||
compareFSMResponseNotNil(t, fsmResponse)
|
||||
|
||||
compareState(t, dpf.StateDkgCommitsAwaitConfirmations, fsmResponse.State)
|
||||
|
||||
// Commits
|
||||
|
|
|
@ -190,11 +190,6 @@ func (m *SignatureProposalFSM) actionValidateSignatureProposal(inEvent fsm.Event
|
|||
return
|
||||
}
|
||||
|
||||
err = m.SetState(eventSetProposalValidatedInternal)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
responseData := make(responses.SignatureProposalParticipantStatusResponse, 0)
|
||||
|
||||
for _, participant := range m.payload.SignatureProposalPayload.Quorum {
|
||||
|
@ -207,7 +202,7 @@ func (m *SignatureProposalFSM) actionValidateSignatureProposal(inEvent fsm.Event
|
|||
responseData = append(responseData, responseEntry)
|
||||
}
|
||||
|
||||
return eventDoneInternal, responseData, nil
|
||||
return eventSetProposalValidatedInternal, responseData, nil
|
||||
}
|
||||
|
||||
func (m *SignatureProposalFSM) actionSignatureProposalCanceledByTimeout(inEvent fsm.Event, args ...interface{}) (outEvent fsm.Event, response interface{}, err error) {
|
||||
|
|
|
@ -2,7 +2,6 @@ package signature_proposal_fsm
|
|||
|
||||
import (
|
||||
"github.com/depools/dc4bc/fsm/fsm"
|
||||
dpf "github.com/depools/dc4bc/fsm/state_machines/dkg_proposal_fsm"
|
||||
"github.com/depools/dc4bc/fsm/state_machines/internal"
|
||||
"sync"
|
||||
)
|
||||
|
@ -67,10 +66,9 @@ func New() internal.DumpedMachineProvider {
|
|||
// eventProposalValidate internal or from client?
|
||||
// yay
|
||||
|
||||
// Exit point
|
||||
{Name: eventSetProposalValidatedInternal, SrcState: []fsm.State{StateAwaitParticipantsConfirmations}, DstState: StateSignatureProposalCollected, IsInternal: true},
|
||||
|
||||
// Exit point
|
||||
{Name: eventDoneInternal, SrcState: []fsm.State{StateSignatureProposalCollected}, DstState: dpf.StateDkgInitial, IsInternal: true},
|
||||
// nan
|
||||
{Name: eventSetValidationCanceledByTimeout, SrcState: []fsm.State{StateAwaitParticipantsConfirmations}, DstState: StateValidationCanceledByTimeout, IsInternal: true},
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue