func HandleV2CommitEntry(state interfaces.IState, params interface{}) (interface{}, *primitives.JSONError) { commitEntryMsg := new(EntryRequest) err := MapToObject(params, commitEntryMsg) if err != nil { return nil, NewInvalidParamsError() } commit := entryCreditBlock.NewCommitEntry() if p, err := hex.DecodeString(commitEntryMsg.Entry); err != nil { return nil, NewInvalidCommitEntryError() } else { _, err := commit.UnmarshalBinaryData(p) if err != nil { return nil, NewInvalidCommitEntryError() } } msg := new(messages.CommitEntryMsg) msg.CommitEntry = commit state.APIQueue() <- msg state.IncECommits() resp := new(CommitEntryResponse) resp.Message = "Entry Commit Success" resp.TxID = commit.GetSigHash().String() return resp, nil }
func (s *State) UpdateECs(ec interfaces.IEntryCreditBlock) { now := s.GetTimestamp() for _, entry := range ec.GetEntries() { cc, ok := entry.(*entryCreditBlock.CommitChain) if ok && s.Replay.IsTSValid_(constants.INTERNAL_REPLAY, cc.GetSigHash().Fixed(), cc.GetTimestamp(), now) { if s.NoEntryYet(cc.EntryHash, cc.GetTimestamp()) { cmsg := new(messages.CommitChainMsg) cmsg.CommitChain = cc s.PutCommit(cc.EntryHash, cmsg) } continue } ce, ok := entry.(*entryCreditBlock.CommitEntry) if ok && s.Replay.IsTSValid_(constants.INTERNAL_REPLAY, ce.GetSigHash().Fixed(), ce.GetTimestamp(), now) { if s.NoEntryYet(ce.EntryHash, ce.GetTimestamp()) { emsg := new(messages.CommitEntryMsg) emsg.CommitEntry = ce s.PutCommit(ce.EntryHash, emsg) } continue } } }