Skip to content

Commit 9a0c8f6

Browse files
committed
fix block num for object proof
1 parent a0dea78 commit 9a0c8f6

File tree

1 file changed

+7
-9
lines changed
  • code/go/0chain.net/validatorcore/storage

1 file changed

+7
-9
lines changed

code/go/0chain.net/validatorcore/storage/models.go

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -322,11 +322,6 @@ func (cr *ChallengeRequest) verifyBlockNum(challengeObj *Challenge) error {
322322

323323
func (cr *ChallengeRequest) VerifyChallenge(challengeObj *Challenge, allocationObj *Allocation) error {
324324
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-
}()
330325
if cr.ObjPath != nil && cr.StorageVersion == 0 {
331326
err := cr.ObjPath.Verify(challengeObj.AllocationID, challengeObj.RandomNumber)
332327
if err != nil {
@@ -363,7 +358,7 @@ func (cr *ChallengeRequest) VerifyChallenge(challengeObj *Challenge, allocationO
363358
if len(cr.ObjectProof) == 0 && latestWM.ChainSize == 0 {
364359
return nil
365360
}
366-
err = cr.verifyObjectProof(latestWM, challengeObj.BlobberID, allocationObj.OwnerPublicKey)
361+
err = cr.verifyObjectProof(latestWM, challengeObj.BlobberID, allocationObj.OwnerPublicKey, challengeObj.RandomNumber)
367362
if err != nil {
368363
logging.Logger.Error("Failed to verify object proof", zap.String("challenge_id", challengeObj.ID), zap.Error(err))
369364
return err
@@ -449,7 +444,7 @@ func (vt *ValidationTicket) Sign() error {
449444
return err
450445
}
451446

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 {
453448
if len(cr.ObjectProof) == 0 {
454449
return common.NewError("invalid_object_proof", "Object proof is missing")
455450
}
@@ -459,10 +454,13 @@ func (cr *ChallengeRequest) verifyObjectProof(latestWM *writemarker.WriteMarker,
459454
if cr.ChallengeProof == nil {
460455
return common.NewError("invalid_object_proof", "Challenge proof is missing")
461456
}
457+
rootBlocks := latestWM.ChainSize / CHUNK_SIZE
458+
r := rand.New(rand.NewSource(challengeRand))
459+
blockNum := r.Int63n(rootBlocks)
460+
blockNum++
462461

463462
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)
466464
if err != nil {
467465
return common.NewError("invalid_object_proof", "Failed to verify the object proof. "+err.Error())
468466
}

0 commit comments

Comments
 (0)