@@ -322,11 +322,6 @@ func (cr *ChallengeRequest) verifyBlockNum(challengeObj *Challenge) error {
322
322
323
323
func (cr * ChallengeRequest ) VerifyChallenge (challengeObj * Challenge , allocationObj * Allocation ) error {
324
324
logging .Logger .Info ("Verifying object path" , zap .String ("challenge_id" , challengeObj .ID ), zap .Int64 ("seed" , challengeObj .RandomNumber ), zap .Int ("storage_version" , cr .StorageVersion ))
325
- defer func () {
326
- if r := recover (); r != nil {
327
- logging .Logger .Error ("Panic in VerifyChallenge" , zap .Any ("recover" , r ), zap .Stack ("recover_stack" ))
328
- }
329
- }()
330
325
if cr .ObjPath != nil && cr .StorageVersion == 0 {
331
326
err := cr .ObjPath .Verify (challengeObj .AllocationID , challengeObj .RandomNumber )
332
327
if err != nil {
@@ -363,7 +358,7 @@ func (cr *ChallengeRequest) VerifyChallenge(challengeObj *Challenge, allocationO
363
358
if len (cr .ObjectProof ) == 0 && latestWM .ChainSize == 0 {
364
359
return nil
365
360
}
366
- err = cr .verifyObjectProof (latestWM , challengeObj .BlobberID , allocationObj .OwnerPublicKey )
361
+ err = cr .verifyObjectProof (latestWM , challengeObj .BlobberID , allocationObj .OwnerPublicKey , challengeObj . RandomNumber )
367
362
if err != nil {
368
363
logging .Logger .Error ("Failed to verify object proof" , zap .String ("challenge_id" , challengeObj .ID ), zap .Error (err ))
369
364
return err
@@ -449,7 +444,7 @@ func (vt *ValidationTicket) Sign() error {
449
444
return err
450
445
}
451
446
452
- func (cr * ChallengeRequest ) verifyObjectProof (latestWM * writemarker.WriteMarker , blobberID , OwnerPublicKey string ) error {
447
+ func (cr * ChallengeRequest ) verifyObjectProof (latestWM * writemarker.WriteMarker , blobberID , OwnerPublicKey string , challengeRand int64 ) error {
453
448
if len (cr .ObjectProof ) == 0 {
454
449
return common .NewError ("invalid_object_proof" , "Object proof is missing" )
455
450
}
@@ -459,10 +454,13 @@ func (cr *ChallengeRequest) verifyObjectProof(latestWM *writemarker.WriteMarker,
459
454
if cr .ChallengeProof == nil {
460
455
return common .NewError ("invalid_object_proof" , "Challenge proof is missing" )
461
456
}
457
+ rootBlocks := latestWM .ChainSize / CHUNK_SIZE
458
+ r := rand .New (rand .NewSource (challengeRand ))
459
+ blockNum := r .Int63n (rootBlocks )
460
+ blockNum ++
462
461
463
462
trie := wmpt .New (nil , nil )
464
- blockNum := uint64 (cr .ChallengeProof .LeafInd )
465
- hash , value , err := trie .VerifyBlockProof (blockNum , cr .ObjectProof )
463
+ hash , value , err := trie .VerifyBlockProof (uint64 (blockNum ), cr .ObjectProof )
466
464
if err != nil {
467
465
return common .NewError ("invalid_object_proof" , "Failed to verify the object proof. " + err .Error ())
468
466
}
0 commit comments