MCPcopy Create free account
hub / github.com/DOSNetwork/core / handleCR

Method handleCR

dosnode/dos_chain_handler.go:329–373  ·  view source on GitHub ↗
(cr *onchain.LogStartCommitReveal, randSeed *big.Int)

Source from the content-addressed store, hash-verified

327}
328
329func (d *DosNode) handleCR(cr *onchain.LogStartCommitReveal, randSeed *big.Int) {
330
331 // Generate random numbers in range [0..randSeed]
332 if randSeed.Cmp(big.NewInt(1)) == -1 {
333 randSeed, _ = new(big.Int).SetString("21888242871839275222246405745257275088548364400416034343698204186575808495617", 10)
334 }
335 sec, err := rand.Int(rand.Reader, randSeed)
336 if err != nil {
337 d.logger.Error(err)
338 return
339 }
340 h := sha3.NewKeccak256()
341 h.Write(abi.U256(sec))
342 b := h.Sum(nil)
343 hash := byte32(b)
344 currentBlockNumber, err := d.chain.CurrentBlock()
345 if err != nil {
346 d.logger.Error(err)
347 return
348 }
349
350 cid := cr.Cid
351 waitCommit := cr.StartBlock.Uint64() - currentBlockNumber + 1
352 waitReveal := cr.CommitDuration.Uint64() + 1
353 waitRandom := cr.RevealDuration.Uint64() + 1
354 if waitCommit < 0 {
355 waitReveal = waitReveal - waitCommit
356 waitRandom = waitRandom - waitCommit
357 waitCommit = 0
358 }
359
360 time.Sleep(time.Duration(waitCommit*15) * time.Second)
361 d.logger.Info("[DOS] Commit")
362 d.logger.Event("Commit", map[string]interface{}{"CID": fmt.Sprintf("%x", cid)})
363 if err := d.chain.Commit(cid, *hash); err != nil {
364 d.logger.Error(err)
365 }
366 <-time.After(time.Duration(waitReveal*15) * time.Second)
367
368 d.logger.Info("[DOS] Reveal")
369 d.logger.Event("Reveal", map[string]interface{}{"CID": fmt.Sprintf("%x", cid)})
370 if err := d.chain.Reveal(cid, sec); err != nil {
371 d.logger.Error(err)
372 }
373}
374
375func byte32(s []byte) (a *[32]byte) {
376 if len(a) <= len(s) {

Callers 1

onchainLoopMethod · 0.95

Calls 11

byte32Function · 0.85
CmpMethod · 0.80
SetStringMethod · 0.80
Uint64Method · 0.80
ErrorMethod · 0.65
CurrentBlockMethod · 0.65
InfoMethod · 0.65
EventMethod · 0.65
CommitMethod · 0.65
RevealMethod · 0.65
WriteMethod · 0.45

Tested by

no test coverage detected