MCPcopy Create free account
hub / github.com/DNAProject/DNA / CheckSignatures

Method CheckSignatures

consensus/dbft/dbft_service.go:195–242  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

193}
194
195func (ds *DbftService) CheckSignatures() error {
196 log.Debug()
197
198 //check if get enough signatures
199 if ds.context.GetSignaturesCount() >= ds.context.M() {
200 //build block
201 block := ds.context.MakeHeader()
202 sigs := make([]SignaturesData, ds.context.M())
203 for i, j := 0, 0; i < len(ds.context.Bookkeepers) && j < ds.context.M(); i++ {
204 if ds.context.Signatures[i] != nil {
205 sig := ds.context.Signatures[i]
206 sigs[j].Index = uint16(i)
207 sigs[j].Signature = sig
208
209 block.Header.SigData = append(block.Header.SigData, sig)
210 j++
211 }
212 }
213
214 block.Header.Bookkeepers = ds.context.Bookkeepers
215
216 //fill transactions
217 block.Transactions = ds.context.Transactions
218
219 hash := block.Hash()
220 isExist, err := ds.ledger.IsContainBlock(hash)
221 if err != nil {
222 log.Errorf("DefLedger.IsContainBlock Hash:%x error:%s", hash, err)
223 return err
224 }
225 if !isExist {
226 // save block
227 result, err := ds.ledger.ExecuteBlock(block)
228 if err != nil {
229 return fmt.Errorf("CheckSignatures DefLedgerPid.RequestFuture Height:%d error:%s", block.Header.Height, err)
230 }
231 err = ds.ledger.SubmitBlock(block, result)
232 if err != nil {
233 return fmt.Errorf("CheckSignatures DefLedgerPid.RequestFuture Height:%d error:%s", block.Header.Height, err)
234 }
235
236 ds.context.State |= BlockGenerated
237 payload := ds.context.MakeBlockSignatures(sigs)
238 ds.SignAndRelay(payload)
239 }
240 }
241 return nil
242}
243
244func (ds *DbftService) ChangeViewReceived(payload *p2pmsg.ConsensusPayload, message *ChangeView) {
245 log.Debug()

Callers 2

Calls 12

SignAndRelayMethod · 0.95
DebugFunction · 0.92
ErrorfFunction · 0.92
GetSignaturesCountMethod · 0.80
MMethod · 0.80
MakeHeaderMethod · 0.80
ErrorfMethod · 0.80
MakeBlockSignaturesMethod · 0.80
HashMethod · 0.65
IsContainBlockMethod · 0.65
ExecuteBlockMethod · 0.65
SubmitBlockMethod · 0.65

Tested by

no test coverage detected